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_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",
                  "hpa-hw-arch"architecture": "generic",
                  "hpa-feature-attributes": [
                    {
 
                    "hpa-attrattribute-key": "numVirtualCpu",

                     "hpa-attrattribute-value": "4",
                      "operator": "="
                    },

                   {
                      "hpa-attrattribute-key": "virtualMemSize",
 
                    "hpa-attrattribute-value": "4",
 
                    "operator": "=",
 
                    "unit": "GB"
                    }
                  ]
                },
 
              {
                  "hpa-feature": "numa",
                  "hpa-version": "v1",

                 "hpa-hw-archarchitecture": "generic",

                 "hpa-feature-attributes": [
                    {
 
                    "hpa-attrattribute-key": "numaNodes",
 
                    "hpa-attrattribute-value": "2",

                     "operator": "="
                    },
 
                  {
                      "hpa-attrattribute-key": "numaCpu-0",
                      "hpa-attrattribute-value": ["2",
                    "operator": "="
   0,               },
         1         {
             ],       "hpa-attribute-key": "numaCpu-1",
              "operator": "="      "hpa-attribute-value": "4",
                    },"operator": "="
                  },
                {  {
                    "hpa-attrattribute-key": "numaCpunumaMem-10",
 
                    "hpa-attrattribute-value": ["2",
                    "operator": "=",
   2,                 "unit": "GB"
      3,            },
            4,      {
                  5  "hpa-attribute-key": "numaMem-1",
                   ],
  "hpa-attribute-value": "4",
                    "operator": "=",
                    },"unit": "GB"
                  }
     {           ]
           "hpa-attr-key": "numaMem-0",   },
              {
                "hpa-attr-valuefeature": "2cpuPinning",
                      "operator"hpa-version": "=v1",
  
                   "unitarchitecture": "GBgeneric",
                "hpa-feature-attributes": [
  },                {
    {                       ""hpa-attrattribute-key": "numaMem-1logicalCpuThreadPinningPolicy",
 
                    "hpa-attrattribute-value": "4prefer",
                      "operator": "=",
                  },
   "unit": "GB"              {
      }              "hpa-attribute-key": "logicalCpuPinningPolicy",
   ]                 }"hpa-attribute-value": "dedicated",
                {    "operator": "="
              "hpa-feature": "cpuPinning",   }
               "hpa-version": "v1", ]
              }
   "hpa-hw-arch": "generic",        ]
          "hpa-feature-attributes": [},
          {
          {  "flavorLabel": "flavor_label_2",
            "flavorProperties": [
       "hpa-attr-key": "logicalCpuThreadPinningPolicy",      {
                "hpa-attr-valuefeature": "preferbasicCapabilities",
                      "operator"hpa-version": "=v1",
                "architecture": "generic",
  },              "hpa-feature-attributes": [
     {             {
         "hpa-attr-key": "logicalCpuPinningPolicy",          "hpa-attribute-key": "numVirtualCpu",
                    "hpa-attrattribute-value": "dedicated8",
                      "operator": "="
 
                  },
                  ]{
                }    "hpa-attribute-key": "virtualMemSize",
         ]             },
  "hpa-attribute-value": "16",
         {               "labeloperator": "flavor_label_2=",
               "features": [    "unit": "GB"
           {       }
           "hpa-feature": "basicCapabilities",    ]
              },
              {
                "hpa-versionfeature": "v1numa",
                  "hpa-hw-archversion": "genericv1",
                "architecture": "generic",
                "hpa-feature-attributes": [
 
                  {

                     "hpa-attrattribute-key": "numVirtualCpunumaNodes",
                      "hpa-attrattribute-value": "82",
 
                    "operator": "="
                    },
                    {
 
                    "hpa-attrattribute-key": "virtualMemSizenumaCpu-0",
                      "hpa-attrattribute-value": "162",
                      "operator": "=",
                  },
   "unit": "GB"              {
      }              "hpa-attribute-key": "numaCpu-1",
   ]                 },"hpa-attribute-value": "4",
                   {
 "operator": "="
                 "hpa-feature": "numa" },
                  "hpa-version": "v1", {
                    "hpa-hwattribute-archkey": "genericnumaMem-0",
                    "hpa-featureattribute-attributesvalue": ["2",
                    {
"operator": "=",
                     "hpa-attr-keyunit": "numaNodesGB",
                      "hpa-attr-value": "2"},
                  {
   "operator": "="                     }"hpa-attribute-key": "numaMem-1",
                    {
 "hpa-attribute-value": "4",
                    "hpa-attr-keyoperator": "numaCpu-0=",
 
                    "hpa-attr-valueunit": ["GB"
                  }
     0,           ]
             1 },
              {
       ],         "hpa-feature": "memoryPageSize",
                "operatorhpa-version": "=v1",
                "architecture": "generic",
    },            "hpa-feature-attributes": [
          {        {
                    "hpa-attrattribute-key": "numaCpu-1memoryPageSize",
 
                    "hpa-attrattribute-value": ["2",
                    "operator": "=",
  2,                  "unit": "GB"
     3,             }
           4,     ]
              }
    5        ]
          }
   ],     ]
      }
    },
     "operatorcheck_cloud_capacity": "="{
      "type": "vim_fit",
      "demands": [
    },    "vG"
      ],
        "properties": {
   
                  "hpa-attr-key"controller": "numaMem-0multicloud",
           "request": {
          "hpa-attr-valuevCPU": "2"10,
          "Memory": {
            "operatorquantity": "=",{
                      "unit"get_param": "GBREQUIRED_MEM"
            },
       },     "unit": "GB"
          },
   {       "Storage":  {
             "hpa-attr-keyquantity": "numaMem-1",{
                      "hpa-attr-value"get_param": "4",REQUIRED_DISK"
            },
            "operatorunit": "=GB",
          }
        }
  "unit": "GB"   }
    }
  },
  "optimization": {
    "minimize": }{
      "sum": [
        {
 ]         "distance_between": [
      },      "customer_loc",
          {  "vGMuxInfra"
          ]
     "hpa-feature": "memoryPageSize",   },
        {
          "hpa-versiondistance_between": "v1",[
                  "hpa-hw-arch": "generic",
  "customer_loc",
               "hpa-feature-attributes": ["vG"
          ]
        }
 {     ]
    }
  }
}



     "hpa-attr-key": "memoryPageSize",
      
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:
    "hpa-attr-value"type: "2",zone
    demands:
    - vGMuxInfra
    - vG
     "operator"properties:
"=",      qualifier: same
      category: region
  hpa_constraint:
    "unit"type: "GB"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: "cloud_min_guarantee": {="
          "type": "attribute",
- hpa-attribute-key: virtualMemSize
       "demands": [    hpa-attribute-value: '4'
     "vG"         ],operator: "="
        "properties": {    unit: GB
     "evaluate": {  - hpa-feature: numa
        "cpu_min_guarantee": true, hpa-version: v1
          "mem_min_guarantee"architecture: truegeneric
          }hpa-feature-attributes:
        }  - hpa-attribute-key: numaNodes
  }     },     {
hpa-attribute-value: '2'
     "check_cloud_capacity": null,       "type"operator: "vim_fit=",
      "demands": [   - hpa-attribute-key: numaCpu-0
   "vG"       ],       "properties": {hpa-attribute-value: '2'
            "vim-controller"operator: "multicloud=",
           "request": {- hpa-attribute-key: numaCpu-1
            "vCPU": 10,hpa-attribute-value: '4'
            operator: "mem=":
{             "quantity": {- hpa-attribute-key: numaMem-0
            hpa-attribute-value:  "get_param": "REQUIRED_MEM"'2'
              },operator: "="
            "unit": "GB"
 
        },  - hpa-attribute-key: numaMem-1
      "disk": {     hpa-attribute-value: '4'
      "quantity": {     operator: "="
        "get_param": "REQUIRED_DISK"   unit: GB
        },
 - hpa-feature: cpuPinning
          "unit"hpa-version: "GB"v1
          }architecture: generic
       }   hpa-feature-attributes:
   }     }   ],
  "optimization": {- hpa-attribute-key: logicalCpuThreadPinningPolicy
    "minimize": {       "sum"hpa-attribute-value: [prefer
        {    operator: "="
     "distance_between": [    - hpa-attribute-key: logicalCpuPinningPolicy
      "customer_loc",      hpa-attribute-value: dedicated
     "vGMuxInfra"       operator: "="
  ]    - flavorLabel: flavor_label_2
  },      flavorProperties:
  {      - hpa-feature: basicCapabilities
  "distance_between": [       hpa-version: v1
    "customer_loc",      architecture: generic
     "vG"     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
languagejs
titlevCPE homing response (JSON)
collapsetrue
{
  "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
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"
    }
  

...

]

...

}