Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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 Diagram
size1200
namevCPEPoliciesAndInformationSources
pagePin18


Homing Workflow

...


SO - HAS API (R) -

...

 before retrieving homing policies

Code Block
languagetext
titleSO - HAS API (R)
collapsetrue
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
languagejs
titlevCPE Homing Template (JSON)
collapsetrue
{
  "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_locdemands": {
      "pnf_host_namevGMuxInfra": [
      {
        "getinventory_paramprovider": "pnf_id"
      }
    }
  }aai",
  "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": {
    {
      "colocation": {
        "type": "zone",
        "demands": [
          "vGMuxInfra",
          "vG"
        ],
        "properties": {
          "qualifier": "same",
          "category": "region"
        }
      }
    },
    {
      "hpa_constraint": {
        "type": "hpa",
        "demands": [
          "vG"
        ],
        "properties": {
          "evaluate": [
            {
              "labelflavorLabel": "flavor_label_1",
              "featuresflavorProperties": [
                {
                  "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": "="
                    }
                  ]
                }
              ]
            },
            {
              "labelflavorLabel": "flavor_label_2",
              "featuresflavorProperties": [
                {
                  "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_min_guaranteecapacity": {
        "type": "attributevim_fit",
        "demands": [
          "vG"
        ],
        "properties": {
        "controller": "multicloud",
        "evaluaterequest": {
            "cpu_min_guarantee"vCPU": true10,
            "mem_min_guaranteeMemory": true{
          }
  "quantity": {
     }
      }
    },"get_param": "REQUIRED_MEM"
    {
       "check_cloud_capacity": null },
            "typeunit": "vim_fitGB",
      "demands": [
   },
     "vG"
      ],
      "properties"Storage": {
        "vim-controller": "multicloud",
        "requestquantity": {
          "vCPU    "get_param": 10,
"REQUIRED_DISK"
           "mem": { },
            "quantityunit": {"GB"
          }
      "get_param": "REQUIRED_MEM"  }
      }
    }
  },
  "optimization": {
    "minimize": {
      "unitsum": "GB"[
          },{
          "diskdistance_between": {[
            "quantity": {
customer_loc",
            "vGMuxInfra"
     "get_param": "REQUIRED_DISK"
    ]
        },
        {
    "unit": "GB"
     "distance_between": [
    }
        }
  "customer_loc",
    }
    }
  ],
  "optimizationvG": {
    "minimize": {
      "sum": []
        {}
      ]
    "distance_between": [
}
  }
}



Code Block
languagetext
titlevCPE Homing Template (YAML)
collapsetrue
---
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: "customer_loc",="
            unit: GB
          - hpa-attribute-key: numaMem-1
            hpa-attribute-value: '4'
            operator: "vGMuxInfra="
            unit: GB
      ]
  - hpa-feature: cpuPinning
    },
        {hpa-version: v1
          "distance_between"architecture: [generic
          hpa-feature-attributes:
  "customer_loc",
        - hpa-attribute-key: logicalCpuThreadPinningPolicy
   "vG"
          ]hpa-attribute-value: prefer
        }
    operator: "="
  ]
    }
  }
}


Code Block
languagetext
titlevCPE Homing Template (YAML)
collapsetrue
---
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:    - hpa-attribute-key: logicalCpuPinningPolicy
            hpa-attribute-value: dedicated
            operator: "="
      - flavorLabel: flavor_label_2
        flavorProperties:
        - hpa-feature: basicCapabilities
          hpa-version: v1
          architecture: generic
      get_param: pnf_id
demands:
  vGMuxInfra:
  - inventory_provider: aai
    hpa-feature-attributes:
      inventory_type: service
   - attributes:hpa-attribute-key: numVirtualCpu
      equipment_type: vG_Mux
      customer_id: some_companyhpa-attribute-value: '8'
    excluded_candidates:
       - candidate_id: 1ac71fb8-ad43-4e16-9459-c3f372b8236doperator: "="
    existing_placement:
    - candidate_id: 21d5f3e8-e714 hpa-4383-8f99-cc480144505a
  vG:
  - inventory_provider: aai
attribute-key: virtualMemSize
            inventory_typehpa-attribute-value: cloud
constraints:
- constraint_vgmux_customer:
'16'
       type: distance_to_location
    demandsoperator: "="
    -    vGMuxInfra
    propertiesunit: GB
      distance: "< 100 km"
  - hpa-feature: numa
          locationhpa-version: customer_locv1
- colocation:
    type: zone
    demandsarchitecture: generic
    -  vGMuxInfra
    hpa-feature-attributes:
 vG
    properties:
     - qualifierhpa-attribute-key: samenumaNodes
      category: region
- hpa_constraint:      hpa-attribute-value: '2'
    type: hpa
    demands:
    - vGoperator: "="
    properties:
      - evaluate:hpa-attribute-key: numaCpu-0
      - label: flavor_label_1
    hpa-attribute-value: '2'
   features:
        - hpa-featureoperator: basicCapabilities"="
          - hpa-attribute-versionkey: v1numaCpu-1
            architecturehpa-attribute-value: generic'4'
          hpa-feature-attributes:  operator: "="
          - hpa-attribute-key: numVirtualCpunumaMem-0
            hpa-attribute-value: '42'
            operator: "="
            unit: GB
          - hpa-attribute-key: virtualMemSizenumaMem-1
            hpa-attribute-value: '4'
            operator: "="
            unit: GB
        - hpa-feature: numamemoryPageSize
          hpa-version: v1
          architecture: generic
          hpa-feature-attributes:
          - hpa-attribute-key: numaNodesmemoryPageSize
            hpa-attribute-value: '2'
            operator: "="
          - hpa-attribute-key  unit: numaCpu-0GB
  check_cloud_capacity: 
         hpa-attribute-value: '2'type: vim_fit
            operator: "="demands:
          - hpa-attribute-key: numaCpu-1
   - vG
    properties:
      hpa-attribute-valuecontroller: '4'multicloud
      request:
        operatorvCPU: "="10
          - hpa-attribute-key: numaMem-0Memory:
            hpa-attribute-value: '2'quantity:
            operatorget_param: "="
  REQUIRED_MEM
          unit: GB
          - hpa-attribute-key: numaMem-1Storage:
            hpa-attribute-value: '4'quantity:
            operatorget_param: "="
 REQUIRED_DISK
           unit: GB
optimization:
  minimize:
    sum:
    - hpa-feature: cpuPinningdistance_between:
      - customer_loc
   hpa-version: v1
  - vGMuxInfra
       architecture: generic- distance_between:
          hpa-feature-attributes:
   - customer_loc
       - hpa-attribute-key: logicalCpuThreadPinningPolicy
            hpa-attribute-value: prefervG




HAS Homing Response

State - Done

Code Block
languagejs
titlevCPE homing response (JSON)
collapsetrue
{
  "plans": [
    {
        operator"status": "=done",
          - hpa-attribute-key: logicalCpuPinningPolicy"id": "plan_id",
      "name": "Plan     hpa-attribute-value: dedicatedName 1",
            operator"links": "="[
      - label: flavor_label_2
 [
          features:{
        - hpa-feature: basicCapabilities    "href": "http://conductor:8091/v1/plans/plan_id",
          hpa-version  "rel": v1"self"
          }
   architecture: generic
    ]
      hpa-feature-attributes:],
      "recommendations": [
    - hpa-attribute-key: numVirtualCpu
  {
          hpa-attribute-value"vG": '8'{
            operator"inventory_provider": "=aai",
           - hpa-attribute-key "candidate": virtualMemSize{
              hpa-attribute-value: '16'"candidate_id": "DLLSTX1A",
            operator  "cloud_owner": "=CloudOwner1",
              unit"inventory_type": GB"cloud",
        - hpa-feature: numa
          hpa-version: v1"location_id": "DLLSTX1A",
          architecture: generic
          hpa-feature-attributes:"location_type": "openstack-cloud"
          - hpa-attribute-key: numaNodes },
            hpa-attribute-value"attributes": '2'{
             operator: "=flavors": {
          - hpa-attribute-key: numaCpu-0
    "flavor_label_1": "vim_flavor_X",
       hpa-attribute-value: '2'
            operator"flavor_label_2": "=vim_flavor_Y"
           - hpa-attribute-key: numaCpu-1   },
            hpa-attribute-value: '4'  "cloud_owner": "CloudOwner1",
            operator  "physical-location-id": "=DLLSTX1A",
          - hpa-attribute-key: numaMem-0
      "cloud_version": "3.0",
			  "vim-id": "CloudOwner1_DLLSTX1A"
          hpa-attribute-value: '2'  }
          }
  operator: "="
     },
       unit: GB{
          - hpa-attribute-key: numaMem-1 "vGMuxInfra": {
            hpa-attribute-value"attributes": '4'{
            operator  "host_id": "=vgmux_host_name",
              unit"cloud_owner": GB"CloudOwner1",
        - hpa-feature: memoryPageSize
      "physical-location-id": "DLLSTX1A",
    hpa-version: v1
          architecture: generic"service_instance_id": "21d5f3e8-e714-4383-8f99-cc480144505a",
          hpa-feature-attributes:
    "cloud_version": "3.0",
			     - hpa-attribute-key: memoryPageSize"vim-id": "CloudOwner1_DLLSTX1A"
            hpa-attribute-value: '2'},
            operator"inventory_provider": "=aai",
            unit: GB
- cloud_min_guarantee:"service_resource_id": "12345",
    type: attribute
    demands:
    - vG
    properties:"candidate": {
      evaluate:
        cpu_min_guarantee: true
"is_rehome": "false",
           mem_min_guarantee: true
- check_cloud_capacity:    "location_id": "DLLSTX1A",
  type: vim_fit
  demands:
  - vG
  properties:
    vim-controller"inventory_type": multicloud
  "service",
  request:
      vCPU: 10
      mem:"candidate_id": "21d5f3e8-e714-4383-8f99-cc480144505a",
        quantity:
          get_param: REQUIRED_MEM"host_id": "vgmux_host_name",
        unit: GB
      disk:"cloud_owner": "CloudOwner1",
        quantity:
          get_param: REQUIRED_DISK"location_type": "openstack-cloud"
        unit: GB
optimization:
  minimize:
    sum:}
    - distance_between:
      - customer_loc
   }
   - vGMuxInfra
    - distance_between:}
      - customer_loc]
    }
  - vG

...

]
}


State - Error 

Code Block
languagejs
titlevCPE homing responseHAS Error Response
collapsetrue
{
  "recommendationsplans": [
    {
      "vGstatus": {
  "error",
      "inventory_providermessage": "aaiSome error message",
        "candidatename": {
"Plan    Name 1",
      "candidate_idlinks": "DLLSTX1A",[
          "cloud_owner": "rackspace",[
          "inventory_type": "cloud",
{
            "location_idhref": "DLLSTX1Ahttp://conductor:8091/v1/plans/plan_id",
            "location_typerel": "openstack-cloudself"
          },
        "attributes": {
]
      ],
      "flavorsid": {"plan_id"
    }
          "flavor_label_1]
}


State - Template 

Code Block
languagejs
titleHAS Plan in Template State
collapsetrue
{
  "status": "vim_flavor_Xtemplate",
  "name": "Plan Name 1",
         "flavor_label_2"links": "vim_flavor_Y"[
    [
      },{
          "physical-location-idhref": "DLLSTX1223"http://conductor:8091/v1/plans/plan_id",
        }
      }"rel": "self"
    },
    {
      "vGMuxInfra": { }
    ]
  ],
  "inventory_providerid": "plan_id"
}


State - Solving

Code Block
languagejs
titleHAS Plan in Solving state
collapsetrue
{
  "plans": [aai",
        "candidate": {
    {
      "candidate_idstatus": "21d5f3e8-e714-4383-8f99-cc480144505asolving",
          "cloud_ownername": "rackspacePlan Name 1",
          "host_id": "vgmux_host_name",
 "links": [
        [
         "inventory_type": "service", {
            "location_idhref": "DLLSTX1Ahttp://conductor:8091/v1/plans/plan_id",
            "location_typerel": "openstack-cloudself"
          },
        ]
 "attributes": {
    ],
      "physical-location-id": "DLLSTX1223plan_id"
        }
      }
    }
  ]
}