Versions Compared

Key

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

...

Step 1. SO → OOF - Get Target <Cloud Owner, Cloud Region> for the Service Instances

Step 2. OOF → Policy - Fetch

...

Cloud Selection Policy for Homing 

2a) OOF Processing - the fetched Policy (example below) is stored in a local data structure and is available for further use (need OOF code changes).

...

Code Block
languagepy
themeEmacs
titleOOF Homing Enhanced Capacity Check & Cloud Selection Policy Example (Step 2a)
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)
#

from jsonschema import validate

oof_enhanced_cloud_selection_policy_schema = {
        "service": {"type": "string"},
        "policyName": {"type": "string"},
        "descriptionpolicyDescription": {"type": "string"},
        "templateVersion": {"type": "string"},
        "version": {"type": "string"},
        "priority": {"type": "string"},
        "riskType": {"type": "string"},
        "riskLevel": {"type": "string"},
        "guard": {"type": "string"},

	    "content": {"type" : "object"},
        #"required": ["cost-intent", "deployment-intent"],
    	"properties" : {

        # vnfc is not used in the OOF->MC path for R3, this is kept to be consistent
        # with the SO-> MC path
                "vnfc": {"type": "string"},

                # evaluate cloud cost if set
                # cost is fixed per cloud type for all workloads -- simplifying assumption for R3
                # cost specified in the respective plugin through a configuration file
        		"cost-intent" : {"type" : "boolean"},

                "deployment-intent": {"type": "object"},
                "properties" : {

                        # Azure, K8S, OpenStack, VMware VIO, Wind River Titanium
                        "Cloud Type (Cloud Provider)": {"type", "string"},

                        "Infrastructure High Availability for VNF": {"type", "boolean"},

                        "Infrastructure Resource Isolation for VNF": {"type", "string"},

                        # Infrastructure Resource Isolation for VNF
                        # Only certain pre-defined over-subscription values are allowed to
                        # reflect practical deployment and simplify implementation for R3
                        "Infrastructure Resource Isolation for VNF - Burstable QoS Oversubscription Percentage": {"type": "int"},
                },
        },
        "required": ["cost-intent", "deployment-intent"],

        "resources": {"type", "array"}, #"vgw" is also interchangeably used as "vg"
        "applicableResources": {"type", "string"},
        "identity": {"type", "string"},
        "policyScope": {"type", "array"},
        "policyType": {"type", "string"},
}




#
#Example 1: vCPE, Burstable QoS
#vCPE: Infrastructure Resource Isolation for VNF with Burstable QoS
#
oof_cloud_mcselection_policy_api_instance1 = {
        "service": "cloudSelectionPolicy",
        "policyName": "oofMulti-cloudCasablanca.cloudSelectionPolicy_vCPE_VNF",
        "descriptionpolicyDescription": "Cloud Selection Policy for vCPE VNFs",
        "templateVersion": "0.0.1",
        "version": "oofMulti-cloudCasablanca",
        "priority": "3",
        "riskType": "test",
        "riskLevel": "2",
        "guard": "False",

        "content": {
                "vnfc": "vgw",
                "cost-intent": True,
                "deployment-intent": {
            		"Infrastructure Resource Isolation          "Cloud Type (Cloud Provider)"for VNF": "VMwareBurstable VIOQoS",
            		"Infrastructure Resource           "Infrastructure Resource Isolation for VNF": "Burstable QoS",
                        "Infrastructure Resource Isolation Isolation for VNF - Burstable QoS Oversubscription Percentage": 25,
                },
        },

        "resources": ["vgw"], #"vgw" is also interchangeably used as "vg"
        "applicableResources": "any",
        "identity": "cloud-atrributes",
        "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vgw", "vgmux"],
        "policyType": "AllPolicy"
}

#
#Example 2:
#vCPE: Infrastructure Resource Isolation for VNF with Guaranteed QoS
#
oof_mccloud_selection_policy_api_instance2 = {
        "service": "cloudSelectionPolicy",
        "policyName": "oofMulti-cloudCasablanca.cloudSelectionPolicy_vCPE_VNF",
        "descriptionpolicyDescription": "Cloud Selection Policy for vCPE VNFs",
        "templateVersion": "0.0.1",
        "version": "oofMulti-cloudCasablanca",
        "priority": "3",
        "riskType": "test",
        "riskLevel": "2",
        "guard": "False",

        "content": {
                "vnfc": "vgw",
                "cost-intent": True,
                "deployment-intent": {
                        "Infrastructure Resource Isolation for VNF": "Guaranteed QoS",
                },
        },

        "resources": ["vgw"], #"vgw" is also interchangeably used as "vg"
        "applicableResources": "any",
        "identity": "cloud-atrributes",
        "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vgw", "vgmux"],
        "policyType": "AllPolicy"
}

#
#Example 3:
#vDNS: Infrastructure HA for VNF & Infrastructure Resource Isolation for VNF with Burstable QoS
#
oof_mccloud_selection_policy_api_instance3 = {
        "service": "cloudSelectionPolicy",
        "policyName": "oofMulti-cloudCasablanca.cloudSelectionPolicy_vDNS_VNF",
        "descriptionpolicyDescription": "Cloud Selection Policy for vDNS VNFs",
        "templateVersion": "0.0.1",
        "version": "oofMulti-cloudCasablanca",
        "priority": "3",
        "riskType": "test",
        "riskLevel": "2",
        "guard": "False",

        "content": {
                "vnfc": "vdns",
                "cost-intent": True,
                "deployment-intent": {
                        "Cloud Type (Cloud Provider)": "VMware VIO",
                        "Infrastructure High Availability for VNF": True,
                        "Infrastructure Resource Isolation for VNF": "Burstable QoS",
                        "Infrastructure Resource Isolation for VNF - Burstable QoS Oversubscription Percentage": 25,
                },
        },

        "resources": ["vDNS"],
        "applicableResources": "any",
        "identity": "cloud-atrributes",
        "policyScope": ["vDNS", "US", "INTERNATIONAL", "vDNS"],
        "policyType": "AllPolicy"
}

#
# Example 4:
# vDNS: Infrastructure HA for VNF & Infrastructure Resource Isolation for VNF
# with Guaranteed QoS
#
oof_cloud_mcselection_policy_api_instance4 = {
        "service": "cloudSelectionPolicy",
        "policyName": "oofMulti-cloudCasablanca.cloudSelectionPolicy_vDNS_VNF",
        "descriptionpolicyDescription": "Cloud Selection Policy for vDNS VNFs",
        "templateVersion": "0.0.1",
        "version": "oofMulti-cloudCasablanca",
        "priority": "3",
        "riskType": "test",
        "riskLevel": "2",
        "guard": "False",

        "content": {
                "vnfc": "vdns",
                "cost-intent": True,
                "deployment-intent": {
                        "Infrastructure High Availability for VNF": True,
                        "Infrastructure Resource Isolation for VNF": "Guaranteed QoS",
                },
        },

        "resources": ["vDNS"],
        "applicableResources": "any",
        "identity": "cloud-atrributes",
        "policyScope": ["vDNS", "US", "INTERNATIONAL", "vDNS"],
        "policyType": "AllPolicy"
}

Step 3. OOF → A&AI - Fetch Cloud-Agnostic (Standardized) Capabilities for the Service Instance



validate(oof_cloud_selection_policy_instance1, oof_cloud_selection_policy_schema)
validate(oof_cloud_selection_policy_instance2, oof_cloud_selection_policy_schema)
validate(oof_cloud_selection_policy_instance3, oof_cloud_selection_policy_schema)
validate(oof_cloud_selection_policy_instance4, oof_cloud_selection_policy_schema)

Step 3. OOF → A&AI - Fetch Cloud-Agnostic (Standardized) Capabilities for the Service Instance

3a)3a) OOF Processing - Perform Cloud Agnostic Capability check for each <cloud owner, cloud region>. OOF will prune any <cloud owner, cloud region> which is not satisfying the standardized capabilities.

Step 4. OOF → MC - Push Cloud Agnostic Policy for the Service Instance 

4a) OOF Processing

The enhanced OOF ↔ MC capacity check cloud selection API, described below, is filled based on the enhanced Capacity Check & Cloud Selection Policy for Homing retrieved in step 2) – need OOF code changes. 

...

Code Block
languagepy
themeEmacs
titleOOF <-> MC API Examples (Step 4a)
linenumberstrue
collapsetrue
//flexibility of having cloud type in the new API provides fine grained control, addresses capacity/cost differences across different cloud owners/regions and ensures backward compatibility

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

from jsonschema import validate

oof_mc_policy_api_request_schema = {
    "type" : "object",
    "properties" : {

        # vnfc is not used in the OOF->MC path for R3, this is kept to be consistent
        # with the SO-> MC path
                "vnfc": {"type": "string"},

                # evaluate cloud cost if set
                # cost is fixed per cloud type for all workloads -- simplifying assumption for R3
                # cost specified in the respective plugin through a configuration file
        "cost-intent" : {"type" : "boolean"},

                "deployment-intent": {"type": "object"},
                "properties" : {

                        # Azure, K8S, OpenStack, VMware VIO, Wind River Titanium
                        "Cloud Type (Cloud Provider)": {"type", "string"},

                        "Infrastructure High Availability for VNF": {"type", "boolean"},

                        "Infrastructure Resource Isolation for VNF": {"type", "string"},

                        # Infrastructure Resource Isolation for VNF
                        # Only certain pre-defined over-subscription values are allowed to
                        # reflect practical deployment and simplify implementation for R3
                        "Infrastructure Resource Isolation for VNF - Burstable QoS Oversubscription Percentage": {"type": "int"},
                },
        },
        "required": ["cost-intent", "deployment-intent"]
}

#
#Example 1: vCPE, Burstable QoS
#vCPE: Infrastructure Resource Isolation for VNF with Burstable QoS
#
oof_mc_policy_api_instance1 = {
        "vnfc": "vgw",
        "cost-intent": True,
        "deployment-intent": {
                "Cloud Type (Cloud Provider)": "VMware VIO",
                "Infrastructure Resource Isolation for VNF": "Burstable QoS",
                "Infrastructure Resource Isolation for VNF - Burstable QoS Oversubscription Percentage": 25,
        },
}

#
#Example 2:
#vCPE: Infrastructure Resource Isolation for VNF with Guaranteed QoS
#
oof_mc_policy_api_instance2 = {
        "vnfc": "vgw",
        "cost-intent": True,
        "deployment-intent": {
                "Infrastructure Resource Isolation for VNF": "Guaranteed QoS",
        },
}

#
#Example 3:
#vDNS: Infrastructure HA for VNF & Infrastructure Resource Isolation for VNF with Burstable QoS
#
oof_mc_policy_api_instance3 = {
        "vnfc": "vdns",
        "cost-intent": True,
        "deployment-intent": {
                "Cloud Type (Cloud Provider)": "VMware VIO",
                "Infrastructure High Availability for VNF": True,
                "Infrastructure Resource Isolation for VNF": "Burstable QoS",
                "Infrastructure Resource Isolation for VNF - Burstable QoS Oversubscription Percentage": 25,
        },
}

#
# Example 4:
# vDNS: Infrastructure HA for VNF & Infrastructure Resource Isolation for VNF
# with Guaranteed QoS
#
oof_mc_policy_api_instance4 = {
        "vnfc": "vdns",
        "cost-intent": True,
        "deployment-intent": {
                "Infrastructure High Availability for VNF": True,
                "Infrastructure Resource Isolation for VNF": "Guaranteed QoS",
        },
}

oof_mc_policy_api_response_schema = {
        "cloudRegionNetValue": {
                "type": "array",
                "items": { "$ref": "#/definitions/xxx" }
        },
        "definitions": {
                "xxx": {
                        "type": "object",
                        "required": [ "VIM", "netValue" ],
                        "properties": {

                                # VIM id
                                "VIM": {
                                  "type": "string",
                                },

                                # For R3, netValue signifies cost per VIM id
                                # Referring to cost-intent in the API from OOF -> MC
                                        # cost is fixed per cloud type for all workloads
                                        # cost specified in the respective plugin through a configuration file
                                "netValue": {
                                  "type": "number",
                                }
                        }
                }
        }
}

oof_mc_policy_api_response_instance = {
        "cloudRegionNetValue": [
                {
                        "VIM": "Azure",
                        "netValue": 100
                },
                {
                        "VIM": "VMware 1",
                        "netValue": 101
                },
                {
                        "VIM": "Wind River Titanium 2",
                        "netValue": 102
                },
                {
                        "VIM": "Wind River Titanium 1",
                        "netValue": 102
                },
        ],
}

validate(oof_mc_policy_api_instance1, oof_mc_policy_api_request_schema)
validate(oof_mc_policy_api_instance2, oof_mc_policy_api_request_schema)
validate(oof_mc_policy_api_instance3, oof_mc_policy_api_request_schema)
validate(oof_mc_policy_api_instance4, oof_mc_policy_api_request_schema)

validate(oof_mc_policy_api_response_instance, oof_mc_policy_api_response_schema) 
Code Block


JSON Schema with Use Case Examples:
Code Block
languagepy
themeEmacs
titleWorkload Deployment Cost Policy Example (Step 5b)
linenumberstrue
collapsetrue
#
#Spec Reference: https://
//Policy Relevant to Azure plugins
//
//fixed workload deployment cost for all workloads (simplifying assumption for R3)
{
	"workloadDeploymentCost": "100",
}



//
//Policy Relevant to Wind River OpenStack plugin
//
//fixed workload deployment cost for all workloads (simplifying assumption for R3)
{
	"workloadDeploymentCost": "100", (set to higher or lower value for testing)
}


.../wiki.onap.org/display/DW/Edge+Scoping+MVP+for+Casablanca+-+ONAP+Enhancements#EdgeScopingMVPforCasablanca-ONAPEnhancements-Cloud-agnosticPlacement/Networking&HomingPolicies(Phase1-CasablancaMVP,Phase2-StretchGoal)
#

from jsonschema import validate

mc_workload_deployment_cost_policy_schema = {
        "cloudProviderWorkloadDeploymentCost": {
                "type": "array",
                "items": { "$ref": "#/definitions/xxx" }
        },
        "definitions": {
                "xxx": {
                        "type": "object",
                        "required": [ "cloudProvider", "workloadDeploymentCost" ],
                        "properties": {

                                # VIM id
                                "cloudProvider": {
                                  "type": "string",
                                },

                                # For R3, netValue signifies cost per VIM id
                                # Referring to cost-intent in the API from OOF -> MC
                                        # cost is fixed per cloud type for all workloads
                                        # cost specified in the respective plugin through a configuration file
                                "workloadDeploymentCost": {
                                  "type": "number",
                                }
                        }
                }
        }
}

mc_workload_deployment_cost_policy_instance1 = {
        "cloudProviderWorkloadDeploymentCost": [
                {
                        "cloudProvider": "Azure 1",
                        "workloadDeploymentCost": 100
                },
                {
                        "cloudProvider": "Azure 2",
                        "workloadDeploymentCost": 101
                },
        ],
}

mc_workload_deployment_cost_policy_instance2 = {
        "cloudProviderWorkloadDeploymentCost": [
                {
                        "cloudProvider": "Wind River Titanium Cloud",
                        "workloadDeploymentCost": 100
                },
        ],
}

validate(mc_workload_deployment_cost_policy_instance1, mc_workload_deployment_cost_policy_schema)
validate(mc_workload_deployment_cost_policy_instance2, mc_workload_deployment_cost_policy_schema)


5a) MC Processing (need MC code changes)

...

  • For R3, Cloud-Agnostic Workload Deployment Policy (Intent) can be stored in the form of configuration file(s) in the OOM K8S Persistent Volumes to simplify implementation.
  • This policy is exactly the same as the policies with "deployment-intent" in the Enhanced Capacity Check & the Cloud Selection Policy for Homing described in Section 2.
  • An exemplary policy is depicted below.

...