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

...