...
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
# #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_cloud_selection_policy_schema = { "service": {"type": "string"}, "policyName": {"type": "string"}, "policyDescription": {"type": "string"}, "templateVersion": {"type": "string"}, "version": {"type": "string"}, "priority": {"type": "string"}, "riskType": {"type": "string"}, "riskLevel": {"type": "string"}, "guard": {"type": "string"}, "content": { "type": "object", "required": ["cloud-cost-evaluation", "cloud-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 # As an example, vDNS VNF in ONAP has 3 VNFCs - DNS, Packet Gen & Load Balancer -- # Each of the VNFCs could have different policies "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 "cloud-cost-evaluation" : {"type" : "boolean"}, # cloud-specific realization of the specified deployment intent # happens in multi-cloud in the cloud-specific plugin "cloud-deployment-intent": { "type": "object", "properties" : { # Cloud Type -- Azure, K8S, OpenStack, VMware VIO, Wind River Titanium # Optionally Accomodate policies per Cloud Type # Optionally Accomodate policies per Cloud Owner & Cloud Region "Cloud Type (Cloud Provider)": {"type", "array"}, "Cloud Owner & Cloud Region (VIM id)": {"type", "array"}, "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"}, }, }, }, }, "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_selection_policy_instance1 = { "service": "cloudSelectionPolicy", "policyName": "oofMulti-cloudCasablanca.cloudSelectionPolicy_vCPE_VNF", "policyDescription": "Cloud Selection Policy for vCPE VNFs", "templateVersion": "0.0.1", "version": "oofMulti-cloudCasablanca", "priority": "3", "riskType": "test", "riskLevel": "2", "guard": "False", "content": { "vnfc": "vgw", "cloud-cost-evaluation": True, "cloud-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, }, }, "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_cloud_selection_policy_instance2 = { "service": "cloudSelectionPolicy", "policyName": "oofMulti-cloudCasablanca.cloudSelectionPolicy_vCPE_VNF", "policyDescription": "Cloud Selection Policy for vCPE VNFs", "templateVersion": "0.0.1", "version": "oofMulti-cloudCasablanca", "priority": "3", "riskType": "test", "riskLevel": "2", "guard": "False", "content": { "vnfc": "vgw", "cloud-cost-evaluation": True, "cloud-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_cloud_selection_policy_instance3 = { "service": "cloudSelectionPolicy", "policyName": "oofMulti-cloudCasablanca.cloudSelectionPolicy_vDNS_VNF", "policyDescription": "Cloud Selection Policy for vDNS VNFs", "templateVersion": "0.0.1", "version": "oofMulti-cloudCasablanca", "priority": "3", "riskType": "test", "riskLevel": "2", "guard": "False", "content": { "vnfc": "vdns", "cloud-cost-evaluation": True, "cloud-deployment-intent": { "Cloud Type (Cloud Provider)": {"VMware VIO", "Azure"}, "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_selection_policy_instance4 = { "service": "cloudSelectionPolicy", "policyName": "oofMulti-cloudCasablanca.cloudSelectionPolicy_vDNS_VNF", "policyDescription": "Cloud Selection Policy for vDNS VNFs", "templateVersion": "0.0.1", "version": "oofMulti-cloudCasablanca", "priority": "3", "riskType": "test", "riskLevel": "2", "guard": "False", "content": { "vnfc": "vdns", "cloud-cost-evaluation": True, "cloud-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" } 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) |
...
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
//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 = { "oof-mc-policy-api-request": {#list of VIM ids "Cloud Owner & Cloud Region List (VIM ids)": {"type":, "array"}, ""oof-mc-policy-api-request": { "type": "array", "items": { "$ref": "#/definitions/xxx1" } }, "definitions": { "xxx1": { "type": "object", "required": ["cloud-cost-evaluation", "cloud-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 # As an example, vDNS VNF in ONAP has 3 VNFCs-DNS, Packet Gen & Load Balancer # # each of the VNFCs could have different cloud policies "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 "cloud-cost-evaluation" : {"type" : "boolean"}, # cloud-specific realization of the specified deployment intent # happens in multi-cloud in the cloud-specific plugin "cloud-deployment-intent": { "type": "array", "items": { "$ref": "#/definitions/xxx2" } }, "definitions": { "xxx2": { "type": "object", "properties" : { # Cloud Type -- Azure, K8S, OpenStack, VMware VIO, Wind River Titanium "Infrastructure High Availability for VNF": {"type", "boolean"}, "Infrastructure Resource Isolation for VNF": # Optionally Accomodate policies per Cloud Type{"type", "string"}, # OptionallyInfrastructure AccomodateResource policiesIsolation perfor CloudVNF Owner & Cloud Region # Only certain "Cloud Type (Cloud Provider)": {"type", "array"},pre-defined over-subscription values are allowed to "Cloud# Ownerreflect &practical Clouddeployment Regionand (VIM id)": {"type", "array"}, simplify implementation for R3 "Infrastructure HighResource AvailabilityIsolation for VNF - Burstable QoS Oversubscription Percentage": {"type",: "booleanint"}, }, "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"}, }, }, }, }, }, }, } oof_mc_policy_api_response_schema = { "oof-mc-policy-api-response": { "type": "array", "items": { "$ref": "#/definitions/xxx" } }, "definitions": { "xxx": { "type": "object", "required": [ "VIM id", "net-value" ], "properties": { # VIM id "VIM id": { "type": "string", }, # For R3, net-value signifies cost per VIM id # Referring to cloud-cost-evaluation 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 "net-value": { "type": "number", } } } } } # #Example 1: vCPE, Burstable QoS #vCPE: Infrastructure Resource Isolation for VNF with Burstable QoS # oof_mc_policy_api_instance1 = { #list "oof-mc-policy-request": [of VIM ids "Cloud Owner & Cloud Region (VIM id)": { "Azure 1", "Azure 2", "VMware VIO 1"}, "vnfc"oof-mc-policy-request": "vgw",[ { "cloud-cost-evaluation": True, "vnfc": "vgw", "cloud-deployment-intent": [ #list of VIM ids { "cloud-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 = { Infrastructure Resource Isolation for VNF with Guaranteed QoS # oof_mc_policy_api_instance2 = { #list of VIM ids "Cloud Owner & Cloud Region List (VIM ids)": {"Azure 1", "Azure 2", "VMware VIO 1", "Wind River Titanium 1"}, "oof-mc-policy-request": [ { "vnfc": "vgw", "cloud-cost-evaluation": True, "cloud-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 = { "oof-mc-policy-request": [#list of VIM ids "Cloud Owner & Cloud Region List (VIM ids)": {"Azure 1", "Azure 2", "VMware VIO 1", "Wind River Titanium 1"}, "oof-mc-policy-request": [ "vnfc": "vdns", { "cloud-cost-evaluationvnfc": True"vdns", "cloud-deploymentcost-intentevaluation": [True, {"cloud-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 = { #list of VIM ids "Cloud Owner & Cloud Region List (VIM ids)": {"Azure 1", "Azure 2", "VMware VIO 1", "Wind River Titanium 1"}, "oof-mc-policy-request": [ { "vnfc": "vdns", "cloud-cost-evaluation": True, "cloud-deployment-intent": [ { "Infrastructure High Availability for VNF": True, "Infrastructure Resource Isolation for VNF": "Guaranteed QoS", }, ], }, ], } oof_mc_policy_api_response_instance = { "oof-mc-policy-api-response": [ { "VIM id": "Azure 1", "net-value": 100 }, { "VIM id": "VMware VIO 1", "net-value": 101 }, { "VIM id": "Wind River Titanium 2", "net-value": 102 }, { "VIM id": "Wind River Titanium 1", "net-value": 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) |
...