Versions Compared

Key

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

...

Thus a data block called 'directives' and some attributes(type and vduNameid) will be added inside policy to transfer the information that needed by OOF. And it also contains two parts, one includes the flavor at a VNFC level, the other contains the specific information needed by such hpa-feature.

The newly added attributes 'id' and 'type' will be used by VF-C to identify each vdu(a corresponding concept to VNFC) and the 'directive' data block will be used as a placeholder for the values provided by both SO and VF-C. 

Code Block
languagepy
themeDJango
titleR3 HPA Policy example
linenumberstrue
collapsetrue
#
#Example 1: vFW, Basic Capability
#one VNFC(VFC) with one basic capability requirement
#
{
  "service": "hpaPolicy",
  "policyName": "oofCasablanca.hpaPolicy_vFW",
  "description": "HPA policy for vFW",
  "templateVersion": "0.0.1",
  "version": "1.0",
  "priority": "3",
  "riskType": "test",
  "riskLevel": "2",
  "guard": "False",
  "content": {
    "resources": "vFW",
    "identity": "hpaPolicy_vFW",
    "policyScope": ["vFW", "US", "INTERNATIONAL", "ip", "vFW"],
    "policyType": "hpaPolicy",
    "flavorFeatures": [
      {
        "vduNameid" : "<vdu.Name>",
        "type":"vnfc/tocsa.nodes.nfv.Vdu.Compute",
        "directives":[  
           {  
             "directive_name":"flavor",
             "attributes":[  
                {  
                  "attribute_name":" oof_returned_flavor_for_firewall ", //Admin needs to ensure that this value is same as flavor parameter in HOT 
                  "attribute_value": "<Blank>" 
                } 
               ]
           }
          ]
        "flavorProperties": [
          {
            "hpa-feature": "basicCapabilities",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": "" }
            ]
          },
          {
            "hpa-feature": "basicCapabilities",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "virtualMemSize", "hpa-attribute-value": "6", "operator": "=", "unit": "GB" },
            ]
          }
        ]
      }
    ]
  }
}






#
#Example 2: vFW, Pcie Passthrough
#one VNFC(VFC) with two Pcie Passthrough requirements
#
{
  "service": "hpaPolicy",
  "policyName": "oofCasablanca.hpaPolicy_vFW",
  "description": "HPA policy for vFW",
  "templateVersion": "0.0.1",
  "version": "1.0",
  "priority": "3",
  "riskType": "test",
  "riskLevel": "2",
  "guard": "False",
  "content": {
    "resources": "vFW",
    "identity": "hpaPolicy_vFW",
    "policyScope": ["vFW", "US", "INTERNATIONAL", "ip", "vFW"],
    "policyType": "hpaPolicy",
    "flavorFeatures": [
      {
        "vduNameid" : "<vdu.Name>",
        "type":"vnfc/tocsa.nodes.nfv.Vdu.Compute",
        "directives":[  
           {  
             "directive_name":"flavor",
             "attributes":[  
                {  
                  "attribute_name":" oof_returned_flavor_for_firewall ", //Admin needs to ensure that this value is same as flavor parameter in HOT 
                  "attribute_value": "<Blank>” 
                } 
               ]
           }
          ]
        "flavorProperties": [
          {
            "hpa-feature": "pciePassthrough",
            "mandatory": "True",
            "architecture": "generic",
            "directives" : [
              {
                "directive_name": "pciePassthrough_directive"?
                "attributes": [
                   { "attribute_name": "oof_returned_vnic_type_for_firewall_protected",
                     "attribute_value": "direct"
                   },
                   { "attribute_name": "oof_returned_provider_network_for_firewall_protected",
                     "attribute_value": "physnet1"
                   }
                ]
              }
            ],
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "pciVendorId", "hpa-attribute-value": "1234", "operator": "=", "unit": "" },
              { "hpa-attribute-key": "pciDeviceId", "hpa-attribute-value": "5678", "operator": "=", "unit": "" },
              { "hpa-attribute-key": "pciCount", "hpa-attribute-value": "1", "operator": ">=", "unit": "" }
            ]
          },
          {
            "hpa-feature": "pciePassthrough",
            "mandatory": "True",
            "architecture": "generic",
            "directives" : [
              {
                "directive_name": "pciePassthrough_directive"?
                "attributes": [
                   { "attribute_name": "oof_returned_vnic_type_for_firewall_unprotected",
                     "attribute_value": "direct"
                   }
                   { "attribute_name": "oof_returned_provider_for_firewall_unprotected",
                     "attribute_value": "physnet2"
                   }
                ]
              }
            ],
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "pciVendorId", "hpa-attribute-value": "3333", "operator": "=", "unit": "" },
              { "hpa-attribute-key": "pciDeviceId", "hpa-attribute-value": "7777", "operator": "=", "unit": "" },
              { "hpa-attribute-key": "pciCount", "hpa-attribute-value": "1", "operator": ">=", "unit": "" }
            ]
          }
        ]
      }
    ]
  }
}


...

HAS Homing Response after changes

Status - Done

...

languagejs
themeDJango
titleHAS Homing response (JSON)
linenumberstrue
collapsetrue

...

Accordingly, the data structure 'directives' will also be added inside OOF HAS response. Since currently the pcie_directives can be get from either Policy or AAI,  HAS still need to process the pcie_directives.

vduName and type will help VF-C to filter one VDU(VNFC in HEAT accordingly), and attributes inside will be used to pass down values of SRIOV NIC information. 

All the attributes added will be add inside that 'directive' data block. 

In order to make the response more generic and extensible, keep the 'directive' structure inside. Please find the sample below for vG.

Status - Done

Code Block
languagejs
themeDJango
titleHAS Homing response (JSON)
linenumberstrue
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": {
              "directives": [
                {"id": "<vdu.Name>",
                 "type": "<vnfc/vdu>",
                 "directives": [
                   {"type": "flavor_directives",
                    "attributes": [
                      {"attribute_name":"flavor_label_1",
                       "attribute_value": "vim_flavor_X",
                      }
                    ]
                   },
                   {"type": "pcie_directives",
                    "attributes": [
                      {"attribute_name": "vnic_label_1",
                       "attribute_value": "direct"
                     "status": "done", }, 
       "id               {"attribute_name": "plan_idphysicalNetwork",
         "name              "attribute_value": "physnet1"Plan
Name 1",        "links": [         [   }
       {             "href": "http://conductor:8091/v1/plans/plan_id", ]
            "rel": "self"      },
    }         ]       ]{"type": "pcie_directives",
      "recommendations": [         {    "attributes": [
       "vG":  {             {"inventoryattribute_providername": "aaivnic_label_2",
            "candidate           "attribute_value": {"direct"
              "candidate_id": "DLLSTX1A",       }, 
      "cloud_owner": "CloudOwner1",               {"inventoryattribute_typename": "cloudphysicalNetwork",
      
       "location_id": "DLLSTX1A",               "locationattribute_typevalue": "openstack-cloudphysnet2"
            },          }
    "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"
            }
          }
        }
      ]
    }
  ]
}