Versions Compared

Key

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

Background

In R2, SO is the only consumer of OOF. When it sends out homing requests, OOF will respond with the most appropriate flavors accordingly.

...

When SO sends out a request containing the vG VNF information to OOF,  OOF will respond with flavor for each VFC inside vG VNF Resources. And let SO do the extra steps of deployments.

 

Now in R3, OOF is going to support both two orchestrators (SO and VF-C) in ONAP. As they are using two different Models(HEAT and Pure Tosca), the expression differs from each other. In order to make OOF capable to process these two different requests within the same engine, we'd like to combine these expressions together inside a single Policy. 


Sample Policy Schema

Thus a data block called 'directives' and some attributes(type and id) 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.

...

Code Block
languagepy
themeDJango
titleR3 HPA Policy example
linenumberstrue
collapsetrue
#
#Example 1: vFW, Basic Capability and sriovNICNetwork
#one VNFC(VFC) with one basic capability requirement and two sriovNICNetworkF 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": [
      {
        "id" : "<vdu.Name>",
        "type":"vnfc/tocsa.nodes.nfv.Vdu.Compute",
        "directives":[  
           {  
             "directive_nametype":"flavor_directives",
             "attributes":[  
                {  
                  "attribute_name":" oof_returned_flavor_label_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-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": "" }
            ]
          },
          {
            "hpa-feature": "basicCapabilities",
            "mandatory": "True",
            "architecture": "generic",
            "directives": [],
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "virtualMemSize", "hpa-attribute-value": "6", "operator": "=", "unit": "GB" },
            ]
          },
         ] {
        }     ]"hpa-feature": "sriovNICNetwork",
  } }       # #Example 2"mandatory": vFW"True",
Pcie Passthrough #one VNFC(VFC) with two Pcie Passthrough requirements # {   "servicearchitecture": "hpaPolicygeneric",
  "policyName": "oofCasablanca.hpaPolicy_vFW",   "description": "HPA policy for vFW",   "templateVersionhpa-version": "0.0.1v1",
  "version": "1.0",      "priority": "3",   "riskTypedirectives" : "test", [
     "riskLevel": "2",   "guard": "False",   "content": {
    "resources": "vFW",            "identitytype": "hpaPolicysriovNICNetwork_vFWdirectives",
    "policyScope": ["vFW", "US", "INTERNATIONAL", "ip", "vFW"],       "policyTypeattributes": "hpaPolicy",[
    "flavorFeatures": [       {        { "idattribute_name" : "<vdu.Name>",oof_returned_vnic_type_for_firewall_protected",
                     "typeattribute_value":"vnfc/tocsa.nodes.nfv.Vdu.Compute", "direct"
         "directives":[          },
   {                { "directiveattribute_name":"flavor", "oof_returned_provider_network_for_firewall_protected",
                     "attributesattribute_value":[ "physnet1"
                  { }
                ]
  "attribute_name":" oof_returned_flavor_for_firewall ", //Admin needs to ensure that this value is same as flavor parameter in HOT          }
            ],
            "attribute_valuehpa-feature-attributes": [
"<Blank>"              { "hpa-attribute-key": "pciVendorId",  } 
   "hpa-attribute-value": "1234", "operator": "=", "unit": "" },
           ]   { "hpa-attribute-key": "pciDeviceId", "hpa-attribute-value": "5678", "operator": "=", "unit": "" }
,
         ]      {   "flavorProperties"hpa-attribute-key": [
          {"pciCount", "hpa-attribute-value": "1", "operator": ">=", "unit": "" },
              { "hpa-attribute-featurekey": "pciePassthroughphysicalNetwork", "hpa-attribute-value": "physnet1", "operator":          "mandatory"=", "unit": "True", }
            "architecture": "generic",]
          },
   "directives" : [     {
         {   "hpa-feature": "sriovNICNetwork",
            "directive_namemandatory": "pciePassthrough_directiveTrue",
            "architecture": "generic",
    "attributes": [       "hpa-version": "v1",
           { "attribute_name"directives" : [
              {
                "type": "sriovNICNetwork_directives",
                "attributes": [
                   { "attribute_name": "oof_returned_vnic_type_for_firewall_protectedunprotected",
                     "attribute_value": "direct"
                   },
                   { "attribute_name": "oof_returned_provider_network_for_firewall_protectedunprotected",
                     "attribute_value": "physnet1physnet2"
                   }
                ]
              }
            ],
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "pciVendorId", "hpa-attribute-value": "12343333", "operator": "=", "unit": "" },
              { "hpa-attribute-key": "pciDeviceId", "hpa-attribute-value": "56787777", "operator": "=", "unit": "" },
              { "hpa-attribute-key": "pciCount", "hpa-attribute-value": "1", "operator": ">=", "unit": "" },
            ]  { "hpa-attribute-key": "physicalNetwork", "hpa-attribute-value": "physnet2", "operator": "=", "unit": "" },
           { ]
          }
"hpa-feature": "pciePassthrough",       ]
     "mandatory": "True", }
    ]
  }
}

#
#Example "architecture"2: "generic"vFW, basicCapabilities, hugePages, sriovNICNetwork, cpuPinning.
#one VNFC(VFC) with basic capablity requirements, cpuPinning requirement "directives"and :huge [page requirement.
#the other VNFC(VFC) with basic capability requirements and sriovNICNetwork requirements.
#
{
 { "service": "hpaPolicy",
  "policyName": "oofCasablanca.hpaPolicy_vFW",
  "description": "HPA policy for  vFW",
  "directive_nametemplateVersion": "pciePassthrough_directive0.0.1",
  "version": "1.0",
  "priority": "3",
     "riskType": "test",
  "attributesriskLevel": ["2",
  "guard": "False",
  "content": {
       "resources": "vFW",
   { "attribute_nameidentity": "oof_returned_vnic_type_for_firewall_unprotectedhpaPolicy_vFW",
    "policyScope": ["vFW", "US", "INTERNATIONAL",   "ip", "vFW"],
          "attribute_value"policyType": "directhpaPolicy",
    "flavorFeatures": [
      {
      }  "id"   : "<vdu.Name>",
        "type":"vnfc/tocsa.nodes.nfv.Vdu.Compute",
       { "attribute_namedirectives": "oof_returned_provider_for_firewall_unprotected",[  
           {  
       "attribute_value": "physnet2"     "type":"flavor_directives",
             "attributes":[ } 
               ] {  
           }       "attribute_name":" oof_returned_flavor_label_for_firewall ", //Admin needs to ],ensure that this value is same as flavor parameter in HOT 
 "hpa-feature-attributes": [               { "hpa-attribute-key_value": "pciVendorId<Blank>", "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": "" } ],
        "flavorProperties": [
 ]         {
 }         ]  "hpa-feature": "basicCapabilities",
   }     ]   }
}


HAS Homing Response after changes

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.

...

titleSample directive data in AAI

hpa-feature=”pciePassthrough”,

architecture=”{hw_arch}",

version=”v1”,

...

Hpa-attribute-key

...

Hpa-attribute-value

...

pciVendorId

...

2345

...

pciDeviceId

...

6789

...

pciCount

...

1

...

directive

...

[

{"attribute_name": "vnic-type", "attribute_value": "direct"},

{"attribute_name": "physical-network", "attribute_value": "physnet2"},

]

'id' 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. 

In order to make the response more generic and extensible, all the attributes added will be add inside that 'directive' data block.  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 "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": "" }
            ]
          },
          {
            "hpa-feature": "basicCapabilities",
            "mandatory": "True",
            "architecture": "generic",
            "directives": [],
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "virtualMemSize", "hpa-attribute-value": "6", "operator": "=", "unit": "GB" }
            ]
          },
          {
            "hpa-feature": "sriovNICNetwork",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives" : [
              {
                "type": "sriovNICNetwork_directives",
                "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-attribute-key": "physicalNetwork", "hpa-attribute-value": "physnet1", "operator": "=", "unit": "" }
            ]
          },
          {
            "hpa-feature": "sriovNICNetwork",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives" : [
              {
                "type": "sriovNICNetwork_directives",
                "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": "" },
              { "hpa-attribute-key": "physicalNetwork", "hpa-attribute-value": "physnet2", "operator": "=", "unit": "" }
            ]
          }
        ]
      },
      {
        "id" : "<vdu.Name>",
        "type":"vnfc/tocsa.nodes.nfv.Vdu.Compute",
        "directives":[  
           {  
             "type":"flavor_directives",
             "attributes":[  
                {  
                  "attribute_name":" oof_returned_flavor_label_for_generator ", //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-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": "" }
            ]
          },
          {
            "hpa-feature": "basicCapabilities",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "virtualMemSize", "hpa-attribute-value": "6", "operator": "=", "unit": "GB" }
            ]
          },
          {
            "hpa-feature": "cpuPinning",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "logicalCpuThreadPinningPolicy", "hpa-attribute-value": "prefer", "operator": "=", "unit": "" }
            ]
          },
          {
            "hpa-feature": "cpuPinning",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "logicalCpuPinningPolicy", "hpa-attribute-value": "dedicated", "operator": "=", "unit": "" }
            ]
          },
          {
            "hpa-feature": "hugePages",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "memoryPageSize", "hpa-attribute-value": "2", "operator": "=", "unit": "GB" }
            ]
          }
        ]
      }
    ]
  }
}


Code Block
languagepy
themeEmacs
titleR3 Cloud Agnostic Policy Example
linenumberstrue
collapsetrue
#
#Example 1: virtual firewall vpg, Burstable QoS
#vCPE: Infrastructure Resource Isolation for VNF with Burstable QoS
#
{
  "service": "cloudPolicy",
  "policyName": "oofCasablanca.cloudPolicy_vpg",
  "description": "Cloud policy for vpg",
  "templateVersion": "0.0.1",
  "version": "1.0",
  "priority": "3",
  "riskType": "test",
  "riskLevel": "2",
  "guard": "False",
  "content": {
    "resources": "vpg",
    "identity": "cloudPolicy_vpg",
    "policyScope": ["vgw", "US", "INTERNATIONAL", "ip", "vpg"],
    "policyType": "hpaPolicy",
    "flavorFeatures": [
      {
        "id" : "<vdu.Name>",
        "type":"vnfc/tocsa.nodes.nfv.Vdu.Compute",
        "directives":[  
           {  
             "type":"flavor_directives",
             "attributes":[  
                {  
                  "attribute_name":" oof_returned_flavor_label_for_vpg ", //Admin needs to ensure that this value is same as flavor parameter in HOT 
                  "attribute_value": "<Blank>" 
                } 
               ]
           }
          ],
        "flavorProperties": [
          {
            "hpa-feature": "qosIntentCapabilities",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1", 
            "directives": [],
            "hpa-feature-attributes": [
              {"hpa-attribute-key":"Infrastructure Resource Isolation for VNF", "hpa-attribute-value": "Burstable QoS","operator": "=", "unit": ""},
			  {"hpa-attribute-key":"Burstable QoS Oversubscription Percentage", "hpa-attribute-value": "25","operator": "=", "unit": ""},
            ]
          },
        ]
      }
    ]
  }
}

#
#Example 2: virtual firewall vfw, Guaranteed QoS
#vCPE: Infrastructure Resource Isolation for VNF with Guaranteed QoS
#
{
  "service": "cloudPolicy",
  "policyName": "oofCasablanca.cloudPolicy_vfw",
  "description": "Cloud policy for vfw",
  "templateVersion": "0.0.1",
  "version": "1.0",
  "priority": "3",
  "riskType": "test",
  "riskLevel": "2",
  "guard": "False",
  "content": {
    "resources": "vfw",
    "identity": "cloudPolicy_vfw",
    "policyScope": ["vfw", "US", "INTERNATIONAL", "ip", "vfw"],
    "policyType": "hpaPolicy",
    "flavorFeatures": [
      {
        "id" : "<vdu.Name>",
        "type":"vnfc/tocsa.nodes.nfv.Vdu.Compute",
        "directives":[  
           {  
             "type":"flavor_directives",
             "attributes":[  
                {  
                  "attribute_name":" oof_returned_flavor_label_for_vfw ", //Admin needs to ensure that this value is same as flavor parameter in HOT 
                  "attribute_value": "<Blank>" 
                } 
               ]
           }
          ],
        "flavorProperties": [
          {
            "hpa-feature": "qosIntentCapabilities",
            "mandatory": "True",
            "architecture": "generic", 
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              {"hpa-attribute-key":"Infrastructure Resource Isolation for VNF", "hpa-attribute-value": "Guaranteed QoS","operator": "=", "unit": ""},
            ]
          },
        ]
      }
    ]
  }
}

#
#Example 3: vDNS, Burstable QoS & Infra HA
#vDNS: Infrastructure Resource Isolation for VNF with Burstable QoS & Infrastructure HA
#
{
  "service": "cloudPolicy",
  "policyName": "oofCasablanca.cloudPolicy_vdns",
  "description": "Cloud policy for vdns",
  "templateVersion": "0.0.1",
  "version": "1.0",
  "priority": "3",
  "riskType": "test",
  "riskLevel": "2",
  "guard": "False",
  "content": {
    "resources": "vdns",
    "identity": "cloudPolicy_vdns",
    "policyScope": ["vgw", "US", "INTERNATIONAL", "ip", "vdns"],
    "policyType": "hpaPolicy",
    "flavorFeatures": [
      {
        "id" : "<vdu.Name>",
        "type":"vnfc/tocsa.nodes.nfv.Vdu.Compute",
        "directives":[  
           {  
             "type":"flavor_directives",
             "attributes":[  
                {  
                  "attribute_name":" oof_returned_flavor_label_for_vdns ", //Admin needs to ensure that this value is same as flavor parameter in HOT 
                  "attribute_value": "<Blank>" 
                } 
               ]
           }
          ],
        "flavorProperties": [
          {
            "hpa-feature": "qosIntentCapabilities",
            "mandatory": "True",
            "architecture": "generic", 
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              {"hpa-attribute-key":"Infrastructure Resource Isolation for VNF", "hpa-attribute-value": "Burstable QoS","operator": "=", "unit": ""},
			  {"hpa-attribute-key":"Burstable QoS Oversubscription Percentage", "hpa-attribute-value": "25","operator": "=", "unit": ""},
            ]
          },
          {
            "hpa-feature": "basicCapabilities",
            "mandatory": "True",
            "architecture": "generic", 
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
			  {"hpa-attribute-key":"Infrastructure High Availability for VNF", "hpa-attribute-value": "","operator": "", "unit": ""},
            ]
          },
        ]
      }
    ]
  }
}

#
#Example 4: vDNS, Guaranteed QoS & Infra HA
#vDNS: Infrastructure Resource Isolation for VNF with Burstable QoS & Infrastructure HA
#
{
  "service": "cloudPolicy",
  "policyName": "oofCasablanca.cloudPolicy_vdns",
  "description": "Cloud policy for vdns",
  "templateVersion": "0.0.1",
  "version": "1.0",
  "priority": "3",
  "riskType": "test",
  "riskLevel": "2",
  "guard": "False",
  "content": {
    "resources": "vdns",
    "identity": "cloudPolicy_vdns",
    "policyScope": ["vgw", "US", "INTERNATIONAL", "ip", "vdns"],
    "policyType": "hpaPolicy",
    "flavorFeatures": [
      {
        "id" : "<vdu.Name>",
        "type":"vnfc/tocsa.nodes.nfv.Vdu.Compute",
        "directives":[  
           {  
             "type":"flavor_directives",
             "attributes":[  
                {  
                  "attribute_name":" oof_returned_flavor_label_for_vdns ", //Admin needs to ensure that this value is same as flavor parameter in HOT 
                  "attribute_value": "<Blank>" 
                } 
               ]
           }
          ],
        "flavorProperties": [
          {
            "hpa-feature": "qosIntentCapabilities",
            "mandatory": "True",
            "architecture": "generic", 
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              {"hpa-attribute-key":"Infrastructure Resource Isolation for VNF", "hpa-attribute-value": "Guaranteed QoS","operator": "=", "unit": ""},
            ]
          },
          {
            "hpa-feature": "basicCapabilities",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1", 
            "directives": [],
            "hpa-feature-attributes": [
			  {"hpa-attribute-key":"Infrastructure High Availability for VNF", "hpa-attribute-value": "","operator": "", "unit": ""},
            ]
          },
        ]
      }
    ]
  }
}

Code Block
languagepy
themeEmacs
titleR3 HPA & Cloud Agnostic Policy Example
linenumberstrue
collapsetrue
#
#Example 1: vFW, Basic Capability + sriovNICNetwork + Cloud Agnostic Guaranteed QoS
#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": [
      {
        "id" : "<vdu.Name>",
        "type":"vnfc/tocsa.nodes.nfv.Vdu.Compute",
        "directives":[  
           {  
             "type":"flavor_directives",
             "attributes":[  
                {  
                  "attribute_name":" oof_returned_flavor_label_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-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": "" }
            ]
          },
          {
            "hpa-feature": "basicCapabilities",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "virtualMemSize", "hpa-attribute-value": "6", "operator": "=", "unit": "GB" }
            ]
          },
          {
            "hpa-feature": "sriovNICNetwork",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives" : [
              {
                "type": "sriovNICNetwork_directives",
                "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-attribute-key": "physicalNetwork", "hpa-attribute-value": "physnet1", "operator": "=", "unit": "" }
            ]
          },
          {
            "hpa-feature": "sriovNICNetwork",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives" : [
              {
                "type": "sriovNICNetwork_directives",
                "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": "" },
              { "hpa-attribute-key": "physicalNetwork", "hpa-attribute-value": "physnet1", "operator": "=", "unit": "" }
            ]
          },
          {
            "hpa-feature": "qosIntentCapabilities",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              {"hpa-attribute-key":"Infrastructure Resource Isolation for VNF", "hpa-attribute-value": "Guaranteed QoS","operator": "=", "unit": ""},
            ]
          }
        ]
      }
    ]
  }
}

#
#Example two: vFW, basicCapabilities, hugePages, sriovNICNetwork, cpuPinning.
#one VNFC(VFC) with basic capablity requirements, cpuPinning requirement and huge page requirement.
#the other VNFC(VFC) with basic capability requirements and sriovNICNetwork 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": [
      {
        "id": "<vdu.Name>",
        "type": "vnfc/tocsa.nodes.nfv.Vdu.Compute",
        "directives": [
          {
            "type": "flavor_directives",
            "attributes": [
              {
                "attribute_name": " oof_returned_flavor_label_for_firewall ",
                "attribute_value": "<Blank>"
              }
            ]
          }
        ],
        "flavorProperties": [
          {
            "hpa-feature": "qosIntentCapabilities",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              {"hpa-attribute-key": "Infrastructure Resource Isolation for VNF", "hpa-attribute-value": "Guaranteed QoS", "operator": "=", "unit": ""}
            ]
          },
          {
            "hpa-feature": "basicCapabilities",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": "" }
            ]
          },
          {
            "hpa-feature": "basicCapabilities",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "virtualMemSize", "hpa-attribute-value": "6", "operator": "=", "unit": "GB" }
            ]
          },
          {
            "hpa-feature": "sriovNICNetwork",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives": [
              {
                "type": "sriovNICNetwork_directives",
                "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-attribute-key": "physicalNetwork", "hpa-attribute-value": "physnet1", "operator": "=", "unit": "" }
            ]
          },
          {
            "hpa-feature": "sriovNICNetwork",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives": [
              {
                "type": "sriovNICNetwork_directives",
                "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": ""},
              { "hpa-attribute-key": "physicalNetwork", "hpa-attribute-value": "physnet1", "operator": "=", "unit": "" }
            ]
          }
        ]
      },
      {
        "id": "<vdu.Name>",
        "type": "vnfc/tocsa.nodes.nfv.Vdu.Compute",
        "directives": [
          {
            "type": "flavor_directives",
            "attributes": [
              {
                "attribute_name": " oof_returned_flavor_label_for_generator ",
                "attribute_value": "<Blank>"
              }
            ]
          }
        ],
        "flavorProperties": [
          {
            "hpa-feature": "qosIntentCapabilities",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              {"hpa-attribute-key": "Infrastructure Resource Isolation for VNF", "hpa-attribute-value": "Guaranteed QoS", "operator": "=", "unit": ""}
            ]
          },
          {
            "hpa-feature": "basicCapabilities",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": "" }
            ]
          },
          {
            "hpa-feature": "basicCapabilities",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              { "hpa-attribute-key": "virtualMemSize", "hpa-attribute-value": "6", "operator": "=", "unit": "GB" }
            ]
          },
          {
            "hpa-feature": "cpuPinning",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              {"hpa-attribute-key": "logicalCpuThreadPinningPolicy", "hpa-attribute-value": "prefer", "operator": "=", "unit": ""}
            ]
          },
          {
            "hpa-feature": "cpuPinning",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              {"hpa-attribute-key": "logicalCpuPinningPolicy", "hpa-attribute-value": "dedicated", "operator": "=", "unit": ""}
            ]
          },
          {
            "hpa-feature": "hugePages",
            "mandatory": "True",
            "architecture": "generic",
            "hpa-version": "v1",
            "directives": [],
            "hpa-feature-attributes": [
              {"hpa-attribute-key": "memoryPageSize", "hpa-attribute-value": "2", "operator": "=", "unit": "GB"}
            ]
          }
        ]
      }
    ]
  }
}




Sample HPA capability data in AAI 

Here lists the sample HPA capability data inside AAI for the examples above:

Section
Section
Column
width20%

HPA – basicCapabilities

Column
width20%

HPA – hugePages

Column
width20%

HPA – cpuPinning

Column
width20%

HPA – sriovNICNetwork

Column
width20%

CloudAgnostic

Section
Column
width20%

hpa-capability-id="b369fd3d-0b15-44e1-81b2-6210efc6dff9",

hpa-feature=”basicCapabilities”,

architecture=”generic",

hpa-version=”v1”,

hpa-attribute-keyhpa-attribute-value

numVirtualCpu

{value:6}

virtualMemSize

{value:6, unit:”GB”}

Column
width20%

hpa-capability-id="e769fd3d-0b15-77b3-81b2-6210efc6dffa",

hpa-feature=”hugePages”,

architecture=”generic",

hpa-version=”v1”,

hpa-attribute-keyhpa-attribute-value

memoryPageSize

{value:2, unit:”GB”}

Column
width20%

hpa-capability-id="c369fd3d-0b15-44e1-81b2-6210efc6dffa",

hpa-feature=”cpuPinning”,

architecture=”generic",

hpa-version=”v1”,

hpa-attribute-keyhpa-attribute-value

logicalCpuThreadPinningPolicy

{value:”prefer”}

logicalCpuPinningPolicy

{value:”dedicated”}

Column
width20%

hpa-capability-id="f453fd3d-0b15-11w4-81b2-6210efc6dff9",

hpa-feature=”sriovNICNetwork”,

architecture=”intel64",

hpa-version=”v1”,

hpa-attribute-keyhpa-attribute-value

pciCount

{value: 1}

pciVendorId

{value: "1234"}

pciDeviceId{value: "5678"}
physicalNetwork

{value: "physnet1"}

Column
width20%

hpa-capability-id="5cc869ef-fc37-47b5-b304-ad8fabcbf955",

hpa-feature="qosIntentCapabilities",

architecture=”generic",

hpa-version=”v1”,

hpa-attribute-keyhpa-attribute-value
Infrastructure Resource Isolation for VNF

{"value": "Burstable QoS"}

Burstable QoS Oversubscription Percentage{"value": "25"}





HAS Homing Response after changes

Accordingly, the data structure 'directives' will also be added inside OOF HAS response.

'id' 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. 

In order to make the response more generic and extensible, all the attributes added will be add inside that 'directive' data block.  Please find the sample below for the two examples for vFW.

Status - Done

Code Block
languagejs
themeDJango
titleHAS Homing response (JSON)
linenumberstrue
collapsetrue
# 
# Example one: Only one vnfc/vdu inside such VNF, with requirements on basic capability and sriovNICNetwork.
#
{
  "plans": [
    {
      "status": "done",
      "id": "plan_id",
      "name": "Plan Name 1",
      "links": [
        [
          {
            "href": "http://conductor:8091/v1/plans/plan_id",
            "rel": "self"
          }
        ]
      ],
      "recommendations": [
        {
          "vFW": {
            "inventory_provider": "aai",
            "candidate": {
              "candidate_id": "DLLSTX1A",
              "cloud_owner": "CloudOwner1",
              "inventory_type": "cloud",
              "location_id": "DLLSTX1A",
              "location_type": "openstack-cloud"
            },
            "attributes": {
              "directives": {
                "directives": [
                  {
                    "id": "<vdu.Name>",
                    "type": "<vnfc/tocsa.nodes.nfv.Vdu.Compute>",
                    "directives": [
                      {
                        "type": "flavor_directives",
                        "attributes": [
                          {
                            "attribute_name": "oof_returned_flavor_label_for_firewall",
                            "attribute_value": "vim_flavor_X"
                          }
                        ]
                      },
                      {
                        "type": "sriovNICNetwork_directives",
                        "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"
                          }
                        ]
                      },
                      {
                        "type": "sriovNICNetwork_directives",
                        "attributes": [
                          {
                            "attribute_name": "oof_returned_vnic_type_for_firewall_unprotected",
                            "attribute_value": "direct"
                          },
                          {
                            "attribute_name": "oof_returned_provider_network_for_firewall_unprotected",
                            "attribute_value": "physnet2"
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              "cloud_owner": "CloudOwner1",
              "physical-location-id": "DLLSTX1A",
              "cloud_version": "3.0",
              "vim-id": "CloudOwner1_DLLSTX1A"
            }
          }
        }
      ]
    }
  ]
}


# 
# Example two: Two vnfc/vdu inside such VNF. One with requirements on basic capability and sriovNICNetwork and the other one with requirements on basic capabilities, cpu pinning and huge pages.
#

{
  "plans": [
    {
      "status": "done",
      "id": "plan_id",
      "name": "Plan Name 2",
      "links": [
        [
          {
            "href": "http://conductor:8091/v1/plans/plan_id",
            "rel": "self"
          }
        ]
      ],
      "recommendations": [
        {
          "vFW": {
            "inventory_provider": "aai",
            "candidate": {
              "candidate_id": "DLLSTX1A",
              "cloud_owner": "CloudOwner1",
              "inventory_type": "cloud",
              "location_id": "DLLSTX1A",
              "location_type": "openstack-cloud"
            },
            "attributes": {
              "directives":{
               "directives": [
                {
                  "id": "<vdu.Name>",
                  "type": "<vnfc/tocsa.nodes.nfv.Vdu.Compute>",
                  "directives": [
                    {
                      "type": "flavor_directives",
                      "attributes": [
                        {
                          "attribute_name": "oof_returned_flavor_label_for_firewall",
                          "attribute_value": "vim_flavor_X"
                        }
                      ]
                    },
                    {
                      "type": "sriovNICNetwork_directives",
                      "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"
                        }
                      ]
                    },
                    {
                      "type": "sriovNICNetwork_directives",
                      "attributes": [
                        {
                          "attribute_name": "oof_returned_vnic_type_for_firewall_unprotected",
                          "attribute_value": "direct"
                        },
                        {
                          "attribute_name": "oof_returned_provider_network_for_firewall_unprotected",
                          "attribute_value": "physnet2"
                        }
                      ]
                    }
                  ]
                },
                {
                  "id": "<vdu.Name>",
                  "type": "<vnfc/tocsa.nodes.nfv.Vdu.Compute>",
                  "directives": [
                    {
                      "type": "flavor_directives",
                      "attributes": [
                        {
                          "attribute_name": "oof_returned_flavor_label_for_generator",
                          "attribute_value": "vim_flavor_Y"
                        }
                      ]
                    }
                  ]
                }
              ]
             }
            },
            "cloud_owner": "CloudOwner1",
            "physical-location-id": "DLLSTX1A",
            "cloud_version": "3.0",
            "vim-id": "CloudOwner1_DLLSTX1A"
          }
        }
      ]
    }
  ]
}



OOF Asynchronous Response after changes

The asynchronous will be changed accordingly. And it also aligns with the schema from Multicloud( Gerrit link: https://gerrit.onap.org/r/#/c/60691/).

Here provides two asynchronous responses according to the two examples.

Code Block
languagejs
themeDJango
titleOOF Asynchronous Homing response (JSON)
linenumberstrue
collapsetrue
#
# Example one: Only one vnfc/vdu inside such VNF, with requirements on basic capability and sriovNICNetwork.
#
{
  "requestId": "xxxx",
  "transactionId": " xxxx ",
  "statusMessage": " xxxx ",
  "requestStatus": "completed",
  "solutions": {
    "placementSolutions": [
      [
        {
          "resourceModuleName": " vFW ",
          "serviceResourceId": " xxxx ",
          "solution": {
            "identifierType": "serviceInstanceId",
            "identifiers": [
              " xxxx "
            ],
            "cloudOwner": "CloudOwner1 "
          },
          "assignmentInfo": [
            { "key": "isRehome",
              "value": "false"
            },
            { "key": "locationId",
              "value": "DLLSTX1A"
            },
            { "key": "locationType",
              "value": "openstack-cloud"
            },
            { "key": "vimId",
              "value": "CloudOwner1_DLLSTX1A"
            },
            { "key": "physicalLocationId",
              "value": "DLLSTX1223"
            },
            { "key": "oof_directives",
              "value": {
                "directives": [
                  {
                    "id": "<vdu.name>",
                    "type": "vnfc/tocsa.nodes.nfv.Vdu.Compute",
                    "directives": [
                      {
                        "type": "flavor_directives",
                        "attributes": [
                          {
                            "attribute_name": "oof_returned_flavor_label_for_firewall",
                            "attribute_value": "<flavor_name>"
                          }
                        ]
                      },
                      {
                        "type": "sriovNICNetwork_directives",
                        "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"
                          }
                        ]
                      },
                      {
                        "type": "sriovNICNetwork_directives",
                        "attributes": [
                          {
                            "attribute_name": "oof_returned_vnic_type_for_firewall_unprotected",
                            "attribute_value": "direct"
                          },
                          {
                            "attribute_name": "oof_returned_provider_network_for_firewall_unprotected",
                            "attribute_value": "physnet2"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "id": "",
                    "type": "vnf",
                    "directives": [
                      { "type": " ",
                        "attributes": [
        [                  {
              "href              "attribute_name": "http://conductor:8091/v1/plans/plan_id ",
            "rel": "self"                "attribute_value": " "
 }         ]       ],       "recommendations": [ }
       {           "vG": {     ]
       "inventory_provider": "aai",             "candidate": {}
              "candidate_id": "DLLSTX1A",     ]
         "cloud_owner": "CloudOwner1",        }
      "inventory_type": "cloud",         ]
     "location_id": "DLLSTX1A",        }
      "location_type": "openstack-cloud"     }
       },   ]
        }
"attributes": {     ]
    ],
    "directiveslicenseSoutions": [
      {
         {"idresourceModuleName": "<vdu.Name>string",
        "serviceResourceId": "string",
        "typeentitlementPoolUUID": "<vnfc/vdu>", [
          "string"
       "directives": [ ],
        "licenseKeyGroupUUID": [
         {"type": "flavor_directivesstring",
           ],
        "attributesentitlementPoolInvariantUUID": [
          "string"
           {"attribute_name":"flavor_label_1"],
        "licenseKeyGroupInvariantUUID": [
             "attribute_value": "vim_flavor_X","string"
        ]
      }
    ]
  }
}


#
# Example two: Two vnfc/vdu inside such VNF. One with requirements on basic capability and sriovNICNetwork ]and the other one with requirements on basic capabilities, cpu pinning and huge pages.
#
{
    }"requestId": "xxxx",
  "transactionId": " xxxx ",
  "statusMessage": " xxxx ",
    "requestStatus": "completed",
  {"typesolutions": "pciePassthrough_directive",{
    "placementSolutions": [
      [
        {
"attributes": [         "resourceModuleName": " vFW ",
          {"attribute_nameserviceResourceId": "vnic_label_1 xxxx ",
          "solution": {
            "attribute_valueidentifierType": "directserviceInstanceId",
            "identifiers": [
        },      " xxxx "
            ],
  {"attribute_name":"physicalNetwork",          "cloudOwner": "CloudOwner1 "
           "attribute_value": "physnet1"},
          "assignmentInfo": [
            }{ "key": "isRehome",
              "value": "false"
   ]         },
          },  {   "key": "locationId",
              {"typevalue": "pciePassthrough_directiveDLLSTX1A",
            },
       "attributes": [    { "key": "locationType",
                {"attribute_name"value": "vnic_label_2",openstack-cloud"
            },
            { "attribute_valuekey": "directvimId",
              "value": "CloudOwner1_DLLSTX1A"
      },      },
             {    {"attribute_name"key": "physicalNetworkphysicalLocationId",
              "value": "DLLSTX1223"
         "attribute_value": "physnet2"  },
            { "key": "oof_directives",
     }         "value": {
           ]     "directives": [
             }     {
           ]         "id": "<vdu.name>",
    },                 "cloud_ownertype": "CloudOwner1vnfc/vdu",
                    "physical-location-iddirectives": "DLLSTX1A", [
                   "cloud_version": "3.0", 			 { "vim-idtype": "CloudOwner1flavor_DLLSTX1Adirectives",
            }           } "attributes":  [
     },         {           "vGMuxInfra": {
            "attributes": {               "hostattribute_idname": "vgmux_host_name",oof_returned_flavor_label_for_firewall",
                            "cloudattribute_ownervalue": "CloudOwner1",<flavor_name>"
                     "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_idtype": "12345sriovNICNetwork_directives",
            "candidate": {
              "is_rehomeattributes": "false",[
              "location_id": "DLLSTX1A",               "inventory_type": "service",
 {
            "candidate_id": "21d5f3e8-e714-4383-8f99-cc480144505a",               "hostattribute_idname": "vgmux_host_nameoof_returned_vnic_type_for_firewall_protected",
              "cloud_owner              "attribute_value": "CloudOwner1",direct"
                   "location_type": "openstack-cloud"      },
      }           }         }{
      ]     }   ] }


OOF Asynchronous Response after changes

The asynchronous will be changed accordingly. And it also aligns with the schema from Multicloud( Gerrit link: https://gerrit.onap.org/r/#/c/60691/).

Code Block
languagejs
themeDJango
titleOOF Asynchronous Homing response (JSON)
linenumberstrue
collapsetrue
{
  "requestId": "xxxx",
  "transactionId": " xxxx ",
  "statusMessage": " xxxx ",
  "requestStatus": "completed",
  "solutions": {
    "placementSolutions": [             "attribute_name": "oof_returned_provider_network_for_firewall_protected",
                            "attribute_value": "physnet1"
                          }
                    [    ]
    { "resourceModuleName": " vG ",           "serviceResourceId": " xxxx "},
          "solution": {           { "identifierTypetype": "serviceInstanceIdsriovNICNetwork_directives",
            "identifiers": [            "attributes": [
   " xxxx "              ],       {
    "cloudOwner": " xxxx "           },          "assignmentInfoattribute_name": ["oof_returned_vnic_type_for_firewall_unprotected",
            {  "key":"isRehome",
               "attribute_value": "falsedirect"
   },             {  "key":"locationId",        },
       "value":"DLLSTX1A"    },             {  "key":"locationType",{
               "value":"openstack-cloud" },
            {  "keyattribute_name":"vimId "oof_returned_provider_network_for_firewall_unprotected",
               "value":"rackspace_DLLSTX1A"  },             {  "keyattribute_value": "physicalLocationIdphysnet2",
               "value":"DLLSTX1223"    },           }
            {  "key":"oofDirectives",          ]
     "value": { "directives":[               }
 { "id":"<vdu.name>",                  ]
   "type":"vnfc",               },
   "directives":[               {
                    "id": "<vdu.name>",
                  {  "type":"flavor_directive "vnfc/vdu",
                        "attributesdirectives": [
     
                      {   "attribute_nametype": "flavor_label_1",directives",
                        "attributes": [
          "attribute_value":"<flavor_name>"  #VIM Flavor, which oof seleted.          {
                  }          "attribute_name": "oof_returned_flavor_label_for_generator",
             ]               "attribute_value": "<flavor_name>"
     },                     }
{  "type": "pciePassthrough_directive",                     ]
   "attributes":[                   }
         {"attribute_name":"vnic_label_1", "attribute_value":"direct"},          ]
                  {"attribute_name":"provider_network", "attribute_value":"physnet1"}},
                  {
                  ]  "id": " ",
                  },  "type": "vnf",
                  {  "typedirectives": "pciePassthrough_directive",[
                      { "type": "attributes": [ ",
                        "attributes": [
        {"attribute_name":"vnic_label_2", "attribute_value":"direct"},                 {
                            {"attribute_name": "provider_network ",
"attribute_value":"physnet2"}                         ]   "attribute_value": " "
                        }  }
                        ]
         ]             }
                    ]
                         }
                ]

              }

            }

          ]
         }
        ]
    ],
    "licenseSoutions": [
      {
        "resourceModuleName": "string",
        "serviceResourceId": "string",
        "entitlementPoolUUID": [
          "string"
        ],
        "licenseKeyGroupUUID": [
          "string"
        ],
        "entitlementPoolInvariantUUID": [
          "string"
        ],
        "licenseKeyGroupInvariantUUID": [
          "string"
        ]
      }
    ]
  }
}