...
- SO: sends out homing requests to OOF by parsing the CSAR, which includes with HEAT template, OOF will respond with the most appropriate flavors accordingly
- Policy: after user distributes the service, it will download the related CSAR and dynamically generate the policies based on specified rules.
- VFC: sends out homing requests to OOF by parsing the CSAR, which includes with TOSCA template, OOF will respond with the most appropriate flavors accordingly
...
We need to keep alignment about the how to parse the SDC CSAR, the mapping from CSAR to low-level fields. below is the logic of Policy side used, the format example refer to OOF R3 HPA & Cloud Agnostic policies
Policy | Const value or from TOSCA CSAR | Value | Comment |
---|---|---|---|
service | Const | "hpaPolicy" | |
policyName | TOSCA CSAR | "OSDF_CASABLANCA."+ content.getIdentity() | |
description | Const | "OOF Policy" | |
templateVersion | "OpenSource.version.1" | ||
version | "1.0" | ||
priority | "5" | ||
riskType | "Test" | ||
riskLevel | "2" | ||
guard | "False" | ||
content.resources | TOSCA CSAR | content.getResources().add(metaData.getValue("name")); | the resource name defined in SDC |
content.identity | TOSCA CSAR | content.getPolicyType() + "_" + metaData.getValue("name") | |
content.policyScope | Const TOSCA CSAR | “HPA” sdcCsarHelper.getServiceMetadata().getValue("name"); | List |
content.policyType | Const | "hpa" | |
content.flavorFeatures.id | TOSCA CSAR | node.toString | the name of the VDU node |
content.flavorFeatures.type | Const | "tosca.nodes.nfv.Vdu.Compute" | placeholder |
content.flavorFeatures.directives.type | "flavor_directives" | ||
content.flavorFeatures.directives.attributes.attribute_name | "flavor_name" | ||
content.flavorFeatures.directives.attribute_value | "" | ||
content.flavorFeatures.flavorProperties.hpaFeature | TOSCA CSAR | one of available or meaningful values: cpuTopology, basicCapabilities, ovsDpdk, cpuPinning, numa, sriovNicNetwork, pciePassthrough, localStorage, instructionSetExtensions, hugePages based on below Feature judgement flow | based on HPA Policies and Mappings |
content.flavorFeatures.flavorProperties.mandatory | from mandatory field | ||
content.flavorFeatures.flavorProperties.architecture | from hardwarePlatform field | ||
content.flavorFeatures.flavorProperties.hpaVersion | "v1" | ||
content.flavorFeatures.flavorProperties.hpaFeatureAttributes | parse and tiny change from configurationValue | ||
content.flavorFeatures.flavorProperties.directives | [ ] | OOF fill them in |
each VDU maps to a FlavorFeature,
each Resource maps to a Policy which includes a flavorFeatures field, such field consists of a list of FlavorFeature.
Feature judgement flow, it needs go through all VDUs, CPs and VLs based on the received csar:
First stores all VDUs, CPs, VLs, then:
for each (VDU){
new a FlavorFeature
if has value under ("virtual_memory#virtual_mem_size or virtual_cpu#num_virtual_cpu"){
hpaFeature="basicCapabilities "
generate hapFeatureAttribute based on value under ("virtual_memory#virtual_mem_size") and add it into hpaFeatureAttributes
generate hapFeatureAttribute based on value under ("virtual_cpu#num_virtual_cpu") and add it into hpaFeatureAttributes
}
if has value under ("virtual_memory#vdu_memory_requirements#memoryPageSize"){
hpaFeature="hugePages"
generate hapFeatureAttribute based on value under ("virtual_memory#vdu_memory_requirements#memoryPageSize") and add it into hpaFeatureAttributes
}
add flavorFeature into the list of FlavorFeatures field.
}
for each (CP) {
interfaceType = value under ("virtual_network_interface_requirements#network_interface_requirements#interfaceType")
if interfaceType == SR-IOV
hpaFeature="sriovNICNetwork"
else if interfaceType == PCI-Passthrough
hpaFeature="pciePassthrough"
get the generated flavorFeature based on the value under ("virtual_binding")
get the FlaovrProperties from flavorFeature
new a FlavorProperty
generate hapFeatureAttribute based on value under ("virtual_network_interface_requirements#nic_io_requirements#logical_node_requirements#pciVendorId") and add it into hpaFeatureAttributes
generate hapFeatureAttribute based on value under ("virtual_network_interface_requirements#nic_io_requirements#logical_node_requirements#pciDeviceId") and add it into hpaFeatureAttributes
generate hapFeatureAttribute based on value under ("virtual_network_interface_requirements#nic_io_requirements#logical_node_requirements#pciNumDevices") and add it into hpaFeatureAttributes
if has value under ("virtual_network_interface_requirements#nic_io_requirements#logical_node_requirements#physicalNetwork")
get the info of node, which is a Virtual Link, based on the value under ("virtual_link) , it is stores in VLs
get the property value under ("physicalNetwork")
generate hapFeatureAttribute based on value under ("virtual_network_interface_requirements#nic_io_requirements#logical_node_requirements#physicalNetwork") and add it into hpaFeatureAttributes
add FlavorProperty into flavorFeature.getFlavorProperties()
}