You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 46 Next »

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

vCPEPoliciesAndInformationSources


Homing Workflow


SO - HAS API (R) - before retrieving homing policies

SO - HAS API (R)
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 (JSON)
{
  "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"
          ]
        }
      ]
    }
  }
}



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
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

vCPE homing response (JSON)
{
  "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 

HAS Error Response
{
  "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 

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


State - Solving

HAS Plan in Solving state
{
  "plans": [
    {
      "status": "solving",
      "name": "Plan Name 1",
      "links": [
        [
          {
            "href": "http://conductor:8091/v1/plans/plan_id",
            "rel": "self"
          }
        ]
      ],
      "id": "plan_id"
    }
  ]
}


vCPE use case testing

Here's the list of requirements that need to be met at each of the components for the homing block from SO to succeed for the vCPE use case. 

AAI

Data needed

  • vGMuxInfra (run the vcpe flows that create the vGMuxInfra)
  • list of Cloud regions, one of which should have the vGMuxInfra

MultiCloud

Data needed

Policy

Policy models to be created:

Policies to be uploaded: 

  • vG demand

vGMuxInfra demand

  • objective function (distance) 
  • colocation constraint 

HAS


OSDF 


SO


HPA

  • upload HPA policies into policy framework


Capacity checks

  • upload Capacity check policy into policy framework


Sequence of actions (how to..)

  • populate the cloud region data into AAI
  • upload the policies into policy framework 
  • Run the vcpe flows that create the vGMuxInfra


  • No labels