Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

Since there're big changes in the config that we send to Policy framework for policy retrieval, we need to modify our code accordingly to match that logic.

Config changes in policy retrieval

Legacy Config Example

The legacy config we sent for policy retrieval contains the prefix for each release, the geography info as well as the service information. 

#Scope with geography
{ "policyName": "OSDF_DUBLIN.*",
  "configAttributes": {"policyScope": "us"} 

#Scope with service name
{ "policyName": "OSDF_DUBLIN.*",
  "configAttributes": {"policyScope": "vfw"} 

New Config Example

In the new config we sent for policy retrieval, the prefix is no longer needed. And for the geography and service name, the values need to be put under certain keys.

{"ONAPName": "OOF",
 "ONAPComponent": "OSDF",
 "ONAPInstance": "",
 "action": "optimize",
 "resource": {
     "geography": "us",
     "services": "vfw"
     "scope": "xxx" //Optional
 }}

Change in OSDF common config

Legacy configuration in common.config and also a draft config according to the new payload.

...
policy_info:
    prioritization_attributes:
        policy_type:
            - content.policyType
        resources:
            - content.resources
            - content.objectiveParameter.parameterAttributes.resources
        service_name:
            - content.serviceName

    placement:
        policy_fetch: by_scope
        policy_scope:
            default_scope: OSDF_DUBLIN     //This part could be removed
            vcpe_scope: OSDF_DUBLIN
            vfw_scope: OSDF_DUBLIN
            td_scope: OSDF_DUBLIN
            secondary_scopes:
                -
                    - get_param: service_name //Better to be changed as KV pair
                    - US
    #            -
    #                - get_param: service_name
    #                - get_param: subscriber_role
    default:  # if no explicit service related information is needed
        policy_fetch: by_name
        policy_scope: none

Draft common config for OSDF

...
policy_info:
    prioritization_attributes:
        policy_type:
            - content.policyType
        resources:
            - content.resources
            - content.objectiveParameter.parameterAttributes.resources
        service_name:
            - content.serviceName

    placement:
        policy_fetch: by_scope
        policy_scope:
            - scopes:   //needed or not?
                - geography:
                    - US
                - services:
                    - get_param: service_name
                - scope
                    - get_param: subscriber_role
    #            -
    #                - get_param: service_name
    #                - get_param: subscriber_role
    default:  # if no explicit service related information is needed
        policy_fetch: by_name
        policy_scope: none


Change in code

Change in the rest call to policy framework

Since we totally change the uri to call with, there're quite many changes in the rest call.

A. The header 'ClientAuth' and 'Environment' are no longer needed.

B. The uri, username and password should be changed accordingly.

Changes: https://git.onap.org/optf/osdf/tree/osdf/adapters/policy/interface.py

Change in retrieval method

Do we still need that get_by_name method in OSDF?

Changes: https://git.onap.org/optf/osdf/tree/osdf/adapters/policy/interface.py


Meeting minutes - 2019/10/23

Changes for OSDF retrieving code:

A. Url, authentication(user and pass), extra headers

B. payload send for retrieval.

Using the new filters(geography, service, resource, scope, name?)

AR: Ask Pam about the implementation of scope(assign with multiple values?) – ruoyu.ying

      Check if the policy name filter still exists in the current implementation – ruoyu.ying

 C. Config for OSDF

Put the new filters inside the config 

Add two new question from ruoyu.ying :

  1. Where does the input for geography and scope come from? Does user need to modify the config file each time they want to change?

       2. Will the object 'scope' be added as a mandatory value in our payload to Policy framework?

 Avteet Chayal Shankaranarayanan Puzhavakath Narayanan   

D. Clean up the source code where does the filtering job ourselves by resource name

E. Clean up the source code where provides choice for retrieving(by scope or by name)

AR: Confirm if retrieving by name is still needed – Avteet Chayal


Examples of policy retrieval

Occasion one: Normal way
#Available policies inside the policy db
- 
        OSDF_CASABLANCA.Affinity_Default_vCPE_US_0:
            type: onap.policies.optimization.AffinityPolicy
            version: 1.0.0
            type_version: 1.0.0
            metadata:
                policy-id: OSDF_CASABLANCA.Affinity_Default_vCPE_US_0
                policy-version: 1
            properties:
                scope: [OSDF_FRANKFURT]
                services: [vCPE]
                resources: [vG]
                geography: [US]
                identity: affinity_vCPE
                applicableResources: any
                affinityProperties:
                    qualifier: different
                    category: complex

- 
        OSDF_CASABLANCA.Affinity_Default_vCPE_US_1:
            type: onap.policies.optimization.AffinityPolicy
            version: 1.0.0
            type_version: 1.0.0
            metadata:
                policy-id: OSDF_CASABLANCA.Affinity_Default_vCPE_US_0
                policy-version: 1
            properties:
                scope: [OSDF_FRANKFURT]
                services: [vCPE]
                resources: [vGMux]
                geography: [US]
                identity: affinity_vCPE
                applicableResources: any
                affinityProperties:
                    qualifier: different
                    category: complex


# VFC Request
{  
    "requestInfo":{  
        "transactionId":"12348659-a547-4b81-954e-a244fc5f0f9e",
        "requestId":"12348659-a547-4b81-954e-a244fc5f0f9e",
        "callbackUrl":"http://10.42.57.133:8403/api/nslcm/v1/ns/placevnf",
        "sourceId":"vfc",
        "requestType":"create",
        "numSolutions":1,
        "optimizers":[  
            "placement"
        ],
        "timeout":600
    },
    "placementInfo":{  
        "requestParameters":{  
            "customerLatitude":"32.897480",
            "customerLongitude":"97.040443",
            "customerName":"some_company"
        },
        "subscriberInfo":{  
            "globalSubscriberId":"",
            "subscriberName":"",
            "subscriberCommonSiteId":""
        },
        "placementDemands":[  
            {  
                "resourceModuleName":"vG",
                "serviceResourceId":"f0a16496-2e0a-480b-8486-04ef762d1d2d",
                "tenantId":"null",
                "resourceModelInfo":{  
                    "modelInvariantId":"c01e991e-b687-4875-8d75-d6888637f175",
                    "modelVersionId":"c00456ac-c9b5-4f72-87ae-3a4a0eec6fba",
                    "modelName":"7400fd06-c75f-4a44-a68f",
                    "modelType":"",
                    "modelVersion":"1.0",
                    "modelCustomizationName":""
                }
            },
            {  
                "resourceModuleName":"vGMux",
                "serviceResourceId":"f0a16496-2e0a-480b-8486-04ef762d1d2e",
                "tenantId":"null",
                "resourceModelInfo":{  
                    "modelInvariantId":"c01e991e-b687-4875-8d75-d6888637f176",
                    "modelVersionId":"c00456ac-c9b5-4f72-87ae-3a4a0eec6fbb",
                    "modelName":"7400fd06-c75f-4a44-a68g",
                    "modelType":"",
                    "modelVersion":"1.0",
                    "modelCustomizationName":""
                }
            }
        ]
    },
    "serviceInfo":{  
        "serviceInstanceId":"83a23b7a-e68e-4496-a3b2-3bfd822ed63b",
        "serviceName":"vcpe",
        "modelInfo":{  
            "modelType":"",
            "modelInvariantId":"0d9312af-96fa-425c-b732-01eeca3c3490",
            "modelVersionId":"65f761a4-45db-4cde-8d7c-ef9512585098",
            "modelName":"vCPE 2018-10-31 19:17:04",
            "modelVersion":"1.0",
            "modelCustomizationName":""
        }
    }
}

#Retrieval plans
Plan A: If we are going to send only one policy request per VFC request to get all policies, the config need to have two resources both appeared in the 'resources' filter which shall look like this:
        Config:     {"ONAPName": "OOF",
                     "ONAPComponent": "OOF_Component",
                     "ONAPInstance": "OOF_Component_Instance",
                     "action": "optimize",
                     "resources": "{
                        "services": ["vcpe"],
                        "geography": ["US"],
                        "resources": ["vG", "vGMux"],
                        "scope": ["OSDF_FRANKFURT"] }"
        However, if we send out a request like this, neither of the policies should be fetched.


Plan B: If we are going to send multiple policy requests(one request per vnf), there would be two separate configs with different values inside the key 'resources':
        Config A:   {"ONAPName": "OOF",
                     "ONAPComponent": "OOF_Component",
                     "ONAPInstance": "OOF_Component_Instance",
                     "action": "optimize",
                     "resources": "{
                        "services": ["vcpe"],
                        "geography": ["US"],
                        "resources": ["vG"],
                        "scope": ["OSDF_FRANKFURT"] }"
       Config B:    {"ONAPName": "OOF",
                     "ONAPComponent": "OOF_Component",
                     "ONAPInstance": "OOF_Component_Instance",
                     "action": "optimize",
                     "resources": "{
                        "services": ["vcpe"],
                        "geography": ["US"],
                        "resources": ["vGMux],
                        "scope": ["OSDF_FRANKFURT"] }"
      In this way, each policy will be respond to OSDF for certain request.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Occasion 2: Only one default policy available in policy db
#Available policies inside the policy db
-
        OSDF_CASABLANCA.Affinity_Default_US:
            type: onap.policies.optimization.AffinityPolicy
            version: 1.0.0
            type_version: 1.0.0
            metadata:
                policy-id: OSDF_CASABLANCA.Affinity_Default_US
                policy-version: 1
            properties:
                scope: [OSDF_FRANKFURT]
                services: [vCPE]
                resources: []
                geography: [US]
                identity: affinity_vCPE
                applicableResources: any
                affinityProperties:
                    qualifier: same
                    category: complex

# A same homing request is then made to OOF
{  
    "requestInfo":{  
        "transactionId":"12348659-a547-4b81-954e-a244fc5f0f9e",
        "requestId":"12348659-a547-4b81-954e-a244fc5f0f9e",
        "callbackUrl":"http://10.42.57.133:8403/api/nslcm/v1/ns/placevnf",
        "sourceId":"vfc",
        "requestType":"create",
        "numSolutions":1,
        "optimizers":[  
            "placement"
        ],
        "timeout":600
    },
    "placementInfo":{  
        "requestParameters":{  
            "customerLatitude":"32.897480",
            "customerLongitude":"97.040443",
            "customerName":"some_company"
        },
        "subscriberInfo":{  
            "globalSubscriberId":"",
            "subscriberName":"",
            "subscriberCommonSiteId":""
        },
        "placementDemands":[  
            {  
                "resourceModuleName":"vG",
                "serviceResourceId":"f0a16496-2e0a-480b-8486-04ef762d1d2d",
                "tenantId":"null",
                "resourceModelInfo":{  
                    "modelInvariantId":"c01e991e-b687-4875-8d75-d6888637f175",
                    "modelVersionId":"c00456ac-c9b5-4f72-87ae-3a4a0eec6fba",
                    "modelName":"7400fd06-c75f-4a44-a68f",
                    "modelType":"",
                    "modelVersion":"1.0",
                    "modelCustomizationName":""
                }
            },
            {  
                "resourceModuleName":"vGMux",
                "serviceResourceId":"f0a16496-2e0a-480b-8486-04ef762d1d2e",
                "tenantId":"null",
                "resourceModelInfo":{  
                    "modelInvariantId":"c01e991e-b687-4875-8d75-d6888637f176",
                    "modelVersionId":"c00456ac-c9b5-4f72-87ae-3a4a0eec6fbb",
                    "modelName":"7400fd06-c75f-4a44-a68g",
                    "modelType":"",
                    "modelVersion":"1.0",
                    "modelCustomizationName":""
                }
            }
        ]
    },
    "serviceInfo":{  
        "serviceInstanceId":"83a23b7a-e68e-4496-a3b2-3bfd822ed63b",
        "serviceName":"vcpe",
        "modelInfo":{  
            "modelType":"",
            "modelInvariantId":"0d9312af-96fa-425c-b732-01eeca3c3490",
            "modelVersionId":"65f761a4-45db-4cde-8d7c-ef9512585098",
            "modelName":"vCPE 2018-10-31 19:17:04",
            "modelVersion":"1.0",
            "modelCustomizationName":""
        }
    }
}

#Retrieval plans
Plan A: If we are going to send only one policy request per VFC request to get all policies, the config should contain both resources in the 'resources' filter which shall look like this:
        Config:     {"ONAPName": "OOF",
                     "ONAPComponent": "OOF_Component",
                     "ONAPInstance": "OOF_Component_Instance",
                     "action": "optimize",
                     "resources": "{
                        "services": ["vCPE"],
                        "geography": ["US"],
                        "resources": ["vG, vGMux"],
                        "scope": ["OSDF_FRANKFURT"] }"
        Still neither of the policies can be fetched??

Plan B: If we are going to send multiple policy requests(one request per vnf), there would be two separate configs with different values inside the key 'resources':
        Config A:   {"ONAPName": "OOF",
                     "ONAPComponent": "OOF_Component",
                     "ONAPInstance": "OOF_Component_Instance",
                     "action": "optimize",
                     "resources": "{
                        "services": ["vcpe"],
                        "geography": ["US"],
                        "resources": ["vG"],
                        "scope": ["OSDF_FRANKFURT"] }"
       Config B:    {"ONAPName": "OOF",
                     "ONAPComponent": "OOF_Component",
                     "ONAPInstance": "OOF_Component_Instance",
                     "action": "optimize",
                     "resources": "{
                        "services": ["vcpe"],
                        "geography": ["US"],
                        "resources": ["vGMux],
                        "scope": ["OSDF_FRANKFURT"] }"
      In this way, the default policy will be respond to OSDF for certain request.



  • No labels