Versions Compared

Key

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

...

  • Parse Template (e.g. OpenStack Heat Template)
    • For each VNFC, instance type in the template
      • Fetch Cloud-Agnostic Workload Deployment Policy (Intent) based on VNFC (e.g. vGW)
        • Value/Content: <Policy JSON> 
      • Parse Policy JSON
      • Modify template (if needed) according to Intent 
        • Intent examples of interest for R3 
          • "Infrastructure High Availability (HA) for VNF" 
          • "Infrastructure Resource Isolation for VNF"   
            • "Burstable QoS"
          • "Infrastructure Resource Isolation for VNF"   
            • "Guaranteed QoS"
  • Policy (Intent) Realization

    • Determining the flavor (OpenStack-based VIMs) # same logic applies for instance type in Azure
      • Each VNFC uniquely maps to a Flavor - for e.g. VNFC "vgw" maps to "vgw-base", "vDNS" maps to "vDNS-base"
      • Beyond Casablanca
        • VNFC intent to realization mapping happens through A&AI. 
    • "Infrastructure High Availability (HA) for VNF"
      • OpenStack-based Cloud realization 
        • For R3, Host-based anti-affinity using server groups //Beyond R3, Support other anti-affinity models at availability zone level etc. 
        • Implementation Notes: 
          • Instance "count" in heat template specifies VNFC scale out factor 
          • While dynamic injection of server group into heat template is ideal, a simple starting point could be just switching to an alternate heat template which is identical to the deployment template and additionally has server group
      • Azure realization 
        • Availability Set?
    • "Infrastructure Resource Isolation for VNF" – { "qosProperty": { {"Burstable QoS": "TRUE", "Burstable QoS Oversubscription Percentage": "25"} } }

        • Example 
          • VNFC "vgw" with "Guaranteed QoS" 
            • vCPU (Min/Max) - 16, Mem (Min/Max) - 32GB 
            • Maps to "vgw-Guaranteed-QoS" flavor for OpenStack-based VIMs
            • Same VNFC with "Burstable QoS", 25% over-subscription 
              • vCPU (Min) - 16, Mem (Min) - 32GB 
              • vCPU (Max) - 20, Mem (Max) - 40GB  
              • Maps to "vgw-Burstable-QoS-25-percent-oversubscription" flavor for OpenStack-based VIMs
          • VNFC "vDNS" with "Guaranteed QoS" & "Infrastructure High Availability"
            • Maps to "vDNS-Guaranteed-QoS" flavor and "vDNS-infrastructure-high-availability" heat template
        • Only certain pre-defined over-subscription values are allowed to simplify implementation
        • Implementation Notes:
          • While dynamic injection of limit/reservation into flavor is ideal, a simple starting would be to be to switch to a pre-defined flavor in the environment file
            • For aforementioned example
              • Original flavor - "flavor-xyz-no-oversubscription"
              • Modified flavor based on Policy - "flavor-xyz-25-percent-oversubscription" 
    • Implementation Notes:
      • From an implementation stand point, MC would be exposing a Workload Deployment Policy (Intent) API
        • Input : deployment-intent, cloud owner, cloud region, deployment template, deployment environment file, ...
        • Output : Success or Failure with reason, modified deployment template, modified deployment environment file, ...
SO ↔ MC API extension - aligned to the SO/MC API defined by SO Casablanca HPA Design to minimize the terminology set 
(ThisJson Schema with use case examples - (the exact data is sent from OOF to SO. SO transparently echoes this data to MC)
Code Block
languagepy
themeEmacs
titleSO <-> MC Cloud-Agnostic Workload Deployment Policy API
linenumberstrue
collapsetrue
#
#Spec Reference: https://wiki.onap.org/display/DW/Edge+Scoping+MVP+for+Casablanca+-+ONAP+Enhancements#EdgeScopingMVPforCasablanca-ONAPEnhancements-Cloud-agnosticPlacement/Networking&HomingPolicies(Phase1-CasablancaMVP,Phase2-StretchGoal)
#
#The same information is opaquely passed from OOF to SO
#

#
from jsonschema import validate

oof_to_so_and_so_to_mc_api_ext_request_schema = {
        "vnfc-directives": {#Example 1: vCPE, Burstable QoS
#vCPE: Infrastructure Resource Isolation for VNF with Burstable QoS
#
   "oof_directives":{ 
        "directives":[ 
         { 
        "type    "vnfc_directives": "array",[ 
               { 
                "items": { "$refvnfc_id": "#/definitions/xxx1" }
vgw",
          },
        "definitionsdirectives":[ {
                  "xxx1":   { 
                        "typedirective_name": "object"Resource-Isolation-Intent-directive",
                        "propertiesattributes" ::[ 
						   {
                              "attribute_name": "Infrastructure Resource #Isolation VNFC name/id
  for VNF",
                              "vnfc-name-idattribute_value": {"type":Burstable QoS"string"},

                            },
						   {
 # cloud-specific realization of the specified deployment intent
                      "attribute_name": "Infrastructure Resource Isolation for      # happens in multi-cloud in the cloud-specific plugin
  VNF - Burstable QoS Oversubscription Percentage",
                              "directive-listattribute_value": {"25",
                           },	    

             "type": "array",
          ]
                     },
         "items": { "$ref": "#/definitions/xxx2" }
     ]
               },
            },]
         },
       ]
     }


#
#Example 2:
#vCPE: Infrastructure Resource Isolation for VNF with Guaranteed QoS
#
   "definitionsoof_directives":{ {
      "directives":[ 
         { 
            "vnfc_directives":[ 
          "xxx2": {
    { 
                  "vnfc_id":"vgw",
                         "type"directives":[ "object",
                     { 
                          "propertiesdirective_name" : {:"Resource-Isolation-Intent-directive",
                        "attributes":[ 
						   {
                             #Intent, e.g. Infrastructure High Availability "attribute_name": "Infrastructure Resource Isolation for VNF",
                              "attribute_value": "Guaranteed QoS",
                        "attribute_name": {"type", "string"   },
                        ]
                     },
           #Optional
       ]
               },
            ]
         },
       ]
      "attribute_value": {"type", "string"},

                  }

#
#Example 3:
#vDNS: Infrastructure HA for VNF & Infrastructure Resource Isolation for VNF with Burstable QoS
#
   "oof_directives":{ 
      "directives":[ 
                  { 
             "directive-list-inner"vnfc_directives":[ {
               { 
                  "vnfc_id":"vdns",
                  "directives":[ 
           "type": "array",
         { 
                        "directive_name":"Resource-Isolation-Intent-directive",
                              "items"attributes": { "$ref": "#/definitions/xxx3" }[ 
						   {
                                    "attribute_name": "Infrastructure Resource Isolation for VNF",
                    },
          "attribute_value": "Burstable QoS",
                           },
						   {
              "definitions": {
               "attribute_name": "Infrastructure Resource Isolation for VNF - Burstable QoS Oversubscription Percentage",
                                       "xxx3"attribute_value": {"25",
                           },	    
                        ]
                 "type": "object",
   },
					 {
                        "directive_name":"Infrastructure-HA-Intent-directive",
                        "attributes":[ 
						   {
							  "attribute_name": "Infrastructure High Availability for VNF",         #Intent, e.g. Infrastructure High Availability for VNF
               
                           },
                        ]
					 },
     "attribute_name": {"type", "string"},
           ]
               },
            ]
         },
       ]
     }

#
# Example 4:
# vDNS: Infrastructure HA for VNF & Infrastructure Resource Isolation for #OptionalVNF
# with Guaranteed QoS
#
   "oof_directives":{ 
      "directives":[ 
         { 
            "vnfc_directives":[ 
               { 
                   "attributevnfc_valueid": {"typevdns", "string"},
                  "directives":[ 
                     { 
                       },
      "directive_name":"Resource-Isolation-Intent-directive",
                        "attributes":[ 
						   {
                       },
       "attribute_name": "Infrastructure Resource Isolation for VNF",
                              "attribute_value":      }"Guaranteed QoS",
                           },
             },
           ]
                     },
					 {
                        }"directive_name":"Infrastructure-HA-Intent-directive",
                },
        },
}

#
#Example 1: vCPE, Burstable QoS
#vCPE: Infrastructure Resource Isolation"attributes":[ 
						   {
							  "attribute_name": "Infrastructure High Availability for VNF with Burstable QoS
#
oof_to_so_and_so_to_mc_api_ext_request_instance1 = {
",                 "vnfc-directives": [
            
    {
                        "vnfc-name-id": "vgw"},
                        "intent-directive-list": []

					 },
                                {]
               },
            ]
             "attribute_name": "Infrastructure Resource Isolation for VNF"},
       ]
                                 "attribute_value": "Burstable QoS",
                                        "intent-directive-list-inner": [
                                                {
                                                        "attribute_name": "Infrastructure Resource Isolation for VNF - Burstable QoS Oversubscription Percentage",
                                                        "attribute_value": "25",
                                                },
                                        ],
                                },
                        ],
                },
                #
                #hpa is purely exemplary in this example
                #
                {
                        "vnfc-name-id": "vgw",
                        "hpa-directive-list": [
                                {
                                        "attribute_name": "sriov-param1",
                                        "attribute_value": "sriov-param1-value",
                                },
                        ],
                },
        ],
}

#
#Example 2:
#vCPE: Infrastructure Resource Isolation for VNF with Guaranteed QoS
#
oof_to_so_and_so_to_mc_api_ext_request_instance2 = {
        "vnfc-directives": [
                {
                        "vnfc-name-id": "vdns",
                        "intent-directive-list": [
                                {
                                        "attribute_name": "Infrastructure Resource Isolation for VNF",
                                        "attribute_value": "Guaranteed QoS",
                                },
                        ],
                },
        ],
}

#
#Example 3:
#vDNS: Infrastructure HA for VNF & Infrastructure Resource Isolation for VNF with Burstable QoS
#
oof_to_so_and_so_to_mc_api_ext_request_instance3 = {
        "vnfc-directives": [
                {
                        "vnfc-name-id": "vdns",
                        "intent-directive-list": [
                                {
                                        "attribute_name": "Infrastructure High Availability for VNF",
                                },
                                {
                                        "attribute_name": "Infrastructure Resource Isolation for VNF",
                                        "attribute_value": "Burstable QoS",
                                        "intent-directive-list-inner": [
                                                {
                                                        "attribute_name": "Infrastructure Resource Isolation for VNF - Burstable QoS Oversubscription Percentage",
                                                        "attribute_value": "25",
                                                },
                                        ],
                                },
                        ],
                },
        ],
}

#
# Example 4:
# vDNS: Infrastructure HA for VNF & Infrastructure Resource Isolation for VNF
# with Guaranteed QoS
#
oof_to_so_and_so_to_mc_api_ext_request_instance4 = {
        "vnfc-directives": [
                {
                        "vnfc-name-id": "vdns",
                        "intent-directive-list": [
                                {
                                        "attribute_name": "Infrastructure High Availability for VNF",
                                },
                                {
                                        "attribute_name": "Infrastructure Resource Isolation for VNF",
                                        "attribute_value": "Guaranteed QoS",
                                },
                        ],
                },
        ],
}

validate(oof_to_so_and_so_to_mc_api_ext_request_instance1, oof_to_so_and_so_to_mc_api_ext_request_schema)
validate(oof_to_so_and_so_to_mc_api_ext_request_instance2, oof_to_so_and_so_to_mc_api_ext_request_schema)
validate(oof_to_so_and_so_to_mc_api_ext_request_instance3, oof_to_so_and_so_to_mc_api_ext_request_schema)
validate(oof_to_so_and_so_to_mc_api_ext_request_instance4, oof_to_so_and_so_to_mc_api_ext_request_schema) }

Follow ups:

  • Use Cases for Integration testing
    • vCPE
      • In the current state, this use case cannot support the intent "Infra HA for VMs in a VNF"
      • This use case has been tested in R2 with OOF↔MC capacity check API
    • vDNS 
      • Can support intent "Infra HA for VMs in a VNF" and "Infrastructure Resource Isolation for VNF"
      • Nothing additional needed in OOF or MC
      • Changes needed in SO to call OOF API
        • Marcus from Intel is driving this
  • Policy DB – is there any restriction on the type of json objects that can be stored?
    • Matti to follow up with Ankit

...