Versions Compared

Key

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

...

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

// OOF -> MC
{
	"VNFC": "vgw", //"vgw" is also interchangeably used as "vg" //new in R3

	{//new in R3
		"cloudOwner": "Azure",
		"cost-intent":
		{
			"dollarCostEvaluationVM-Type": "TRUE", //evaluate dollar cost per VM type if operator has configured a policy
			"dollarCostEvaluationVM-FeatureGroup": "TRUE" //evaluate dollar per feature/group of features if operator has configured a policy
				//evaluate dollar per group of features if operator has configured a policy
				//deployment-intent will be mapped to a cloud-specific realization which will be mapped to a feature group. 
		}
	},			 			  	
  	
	{//new in R3
		"cloudOwner": "VMware VIO", //can be a specific cloud owner such as Azure, VMware VIO, Wind River Titanium Cloud etc.
		"deployment-intent": 
		{
			"name": "Infrastructure Resource Isolation for VNF", 
				// realization possible without dedicating CPU and Memory, refer to section on "Cloud Resource Partitioning for Differentiated QoS" 
				// on how this can help in offering tiered services
			"qosProperty": 
			{
				{"Burstable QoS": "TRUE", "Burstable QoS Oversubscription Percentage": "25"}
			}
		}
	},
	
	{//new in R3 + R2
		"capacityProperty": //same as R2, presence of this means capacity check needs to be done for the <cloud owner, cloud region>
		{ 		 		
			"request": 
				"{\"vCPU\": {\"quantity\": {\"get_param\": \"REQUIRED_VCPU\"}, \"Memory\": {\"quantity\": {\"get_param\": \"REQUIRED_MEM\"}, 	
				\"unit\": 	\"GB\"}, \"Storage\": {\"quantity\": {\"get_param\": \"REQUIRED_DISK\"}, \"unit\": \"GB\"}}"
		}		
	},
}

//return netValue per <cloud owner, cloud region>
//cloud regions which fail capacity check are not in this list
MC -> OOF
{
	{
		"cloudOwner": "OpenStack",
		"cloudRegion": "1",
		"netValue": "99"
	},
	{
		"cloudOwner": "VIO",
		"cloudRegion": "5",
		"netValue": "100"
	},
	{
		"cloudOwner": "Azure",
		"cloudRegion": "3",
		"netValue": "101"
	}, API REQUEST JSON 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"},
        },

        # vCPU, Memory, Storage, VIMs - part of R2 capacity check
        "vCPU": {"type": "number"},  # number of cores
        "Memory": {"type": "number"},  # size of memory, GB
        "Storage": {"type": "number"},  # size of storage, GB
        "VIMs": {"type": "array"},  # VIMs OOF wish to check with
    },
    "required": ["cost-intent", "deployment-intent", "vCPU", "Memory", "Storage", "VIMs"]
}

// OOF -> MC API RESPONSE JSON 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",
                }
            }
        }
    }
}
Code Block
languagepy
themeEmacs
titleWorkload Deployment Cost Policy Example (Step 5b)
linenumberstrue
collapsetrue
//
//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)
}


...

...