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
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_idaai"
,
     }     }
  },
  "demands": {
    "vGMuxInfra": [
      {
        "inventory_provider": "aai",
        "inventory"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": {
      "colocationtype": {
        "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": {
          "evaluatecontroller": {
   "multicloud",
        "cpu_min_guaranteerequest": true,{
            "mem_min_guarantee"vCPU": true10,
          }"Memory": {
       }     "quantity": {
}     },     {
      "check_cloud_capacity": null,
      "typeget_param": "vimREQUIRED_fitMEM",
      "demands": [     },
   "vG"       ],       "properties": {"unit": "GB"
         "vim-controller": "multicloud", },
          "requestStorage": {
            "vCPUquantity": 10,{
          "mem": {   "get_param": "REQUIRED_DISK"
         "quantity": {  },
            "get_paramunit": "REQUIRED_MEMGB"
            },
        }
   "unit": "GB"  }
     }
  },
  "optimization": {
      "diskminimize": {
      "sum":  [
   "quantity": {    {
          "getdistance_parambetween": "REQUIRED_DISK"[
            }"customer_loc",
            "unitvGMuxInfra":
"GB"          ]
}        },
}        }{
    }   ],   "optimizationdistance_between": {[
    "minimize": {       "sumcustomer_loc":,
[         {   "vG"
       "distance_between": [  ]
        }
 "customer_loc",     ]
    }
  "vGMuxInfra"}
}



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:
    "distance_between"customer_loc:
[    latitude:
      get_param:  "customer_loc",lat
    longitude:
      get_param:  "vG"customer_long
demands:
  vGMuxInfra:
  - inventory_provider: aai
  ]  inventory_type: service
    attributes:
}       ]equipment_type: vG_Mux
    }   }
}customer_id: some_company
   
Code Block
languagetext
titlevCPE 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 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:
    latitudetype: distance_to_location
    demands:
 get_param: customer_lat   - vGMuxInfra
    properties:
      longitudedistance: "< 100 km"
    get_param  location: customer_longloc
  brg_loccolocation:
    pnf_host_nametype: zone
    demands:
get_param: pnf_id demands:  - vGMuxInfra:
    - inventory_provider:vG
aai    properties:
inventory_type: service     attributesqualifier: same
      equipment_typecategory: vG_Muxregion
  hpa_constraint:
    customer_idtype: some_companyhpa
    excluded_candidatesdemands:
    - vG
candidate_id: 1ac71fb8-ad43-4e16-9459-c3f372b8236d   properties:
 existing_placement:     - candidate_idevaluate:
21d5f3e8-e714-4383-8f99-cc480144505a   vG:   - inventory_providerflavorLabel: aaiflavor_label_1
    inventory_type: cloud constraints: - constraint_vgmux_customerflavorProperties:
    type: distance_to_location   -  demands:hpa-feature: basicCapabilities
    - vGMuxInfra     propertieshpa-version: v1
     distance: "< 100 km"  architecture:  generic
  location: customer_loc - colocation:     typehpa-feature-attributes:
zone     demands:     - hpa-attribute-key: numVirtualCpu
vGMuxInfra      - vG     propertieshpa-attribute-value: '4'
      qualifier:   same   operator: "="
  category:  region - hpa_constraint:    - typehpa-attribute-key: hpavirtualMemSize
    demands:     - vG  hpa-attribute-value: '4'
 properties:       evaluate:    operator: "="
 - label: flavor_label_1         featuresunit: GB
        - hpa-feature: basicCapabilitiesnuma
          hpa-version: v1
          architecture: generic
          hpa-feature-attributes:
          - hpa-attribute-key: numVirtualCpunumaNodes
            hpa-attribute-value: '42'
            operator: "="
          - hpa-attribute-key: virtualMemSizenumaCpu-0
            hpa-attribute-value: '42'
            operator: "="
          -  unit: GB
        - hpa-feature: numahpa-attribute-key: numaCpu-1
            hpa-versionattribute-value: v1'4'
            architectureoperator: generic"="
          - hpa-featureattribute-attributeskey: numaMem-0
         -   hpa-attribute-keyvalue: numaNodes'2'
            hpa-attribute-valueoperator: '2'"="
            operatorunit: "="GB
          - hpa-attribute-key: numaCpunumaMem-01
            hpa-attribute-value: '24'
            operator: "="
          - hpa-attribute-key  unit: numaCpu-1GB
           - hpa-attribute-valuefeature: '4'cpuPinning
          hpa-version:  operator: "="v1
          architecture: generic
          - hpa-attributefeature-keyattributes:
numaMem-0          -   hpa-attribute-valuekey: '2'logicalCpuThreadPinningPolicy
            operatorhpa-attribute-value: "="prefer
            unitoperator: GB"="
          - hpa-attribute-key: numaMem-1logicalCpuPinningPolicy
            hpa-attribute-value: '4'dedicated
            operator: "="
      - flavorLabel: flavor_label_2
   unit     flavorProperties:
GB         - hpa-feature: cpuPinningbasicCapabilities
          hpa-version: v1
          architecture: generic
          hpa-feature-attributes:
          - hpa-attribute-key: logicalCpuThreadPinningPolicynumVirtualCpu
            hpa-attribute-value: prefer'8'
            operator: "="
          - hpa-attribute-key: logicalCpuPinningPolicyvirtualMemSize
            hpa-attribute-value: dedicated'16'
            operator: "="

     - label: flavor_label_2     unit: GB
  features:      -   hpa- hpa-feature: basicCapabilitiesnuma
          hpa-version: v1
          architecture: generic
          hpa-feature-attributes:
          - hpa-attribute-key: numVirtualCpunumaNodes
            hpa-attribute-value: '82'
            operator: "="
          - hpa-attribute-key: virtualMemSizenumaCpu-0
            hpa-attribute-value: '162'
            operator: "="
            unit: GB
        - hpa-feature: numa- hpa-attribute-key: numaCpu-1
            hpa-attribute-versionvalue: v1'4'
            architectureoperator: generic"="
          - hpa-featureattribute-attributeskey: numaMem-0
         -   hpa-attribute-keyvalue: numaNodes'2'
            hpa-attribute-valueoperator: '2'"="
            operatorunit: "="GB
          - hpa-attribute-key: numaCpunumaMem-01
            hpa-attribute-value: '24'
            operator: "="
          - hpa-attribute-key: numaCpu-1
  unit: GB
        - hpa-feature: memoryPageSize
           hpa-attribute-value: '4'
 version: v1
          architecture: generic
          operator: "="hpa-feature-attributes:
          - hpa-attribute-key: numaMem-0memoryPageSize
            hpa-attribute-value: '2'
            operator: "="
            unit: GB
  check_cloud_capacity: 
    type: vim_fit
- hpa-attribute-key: numaMem-1  demands:
    - vG
    hpa-attribute-valueproperties:
'4'      controller: multicloud
      operatorrequest:
"="        vCPU: 10
   unit: GB         - hpa-featureMemory:
memoryPageSize          quantity:
hpa-version: v1           architectureget_param: genericREQUIRED_MEM
          hpa-feature-attributesunit: GB
         - hpa-attribute-keyStorage:
memoryPageSize             hpa-attribute-value: '2'quantity:
            operatorget_param: "="REQUIRED_DISK
          unit: GB
unitoptimization:
GB - cloud_min_guaranteeminimize:
    typesum:
attribute    - demandsdistance_between:
      - customer_loc
 vG     properties:- vGMuxInfra
    - evaluatedistance_between:
      -  cpu_min_guarantee: truecustomer_loc
      - vG


mem_min_guarantee:
true

HAS Homing Response

State -

...

Done

Code Block
languagejs
titlevCPE homing response (JSON)
collapsetrue
{
  "plans": [
    {
      "status": "done",
      "id": "plan_id",
      "name": "Plan vCPU: 10Name 1",
      mem"links": [
       quantity: [
         get_param: REQUIRED_MEM {
        unit: GB   "href": "http://conductor:8091/v1/plans/plan_id",
   disk:         quantity"rel":  "self"
        get_param: REQUIRED_DISK  }
      unit: GB optimization:]
  minimize:    ],
sum:     - distance_between "recommendations": [
     - customer_loc  {
    - vGMuxInfra     - distance_between"vG": {
     - customer_loc       - 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
languagejs
titleHAS Error Response
collapsetrue
{
  "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
languagejs
titleHAS Plan in Template State
collapsetrue
{
  "status": 

...

"template",
  "name": "Plan Name 1",
  "links": [
    [
      {
        "href": "http://conductor:8091/v1/plans/plan_id",
        "rel": "self"
      }
    ]
  ],
  "id": "plan_id"
}


State - Solving

Code Block
languagejs
titleHAS Plan in Solving state
collapsetrue
{
  "plans": [
    {
      "status": "solving",
      "name": "Plan Name 1",
      "links": [
        [
         

...

 {

...


            

...

"href": "http://conductor:8091/v1/plans/plan_id",
            

...

"rel": "self"
   

...

 

...

      }

...

 

...

       

...

]

...

     

...

 ],
      

...

"id": "plan_id"
    }
  

...

]

...

}