From b9b955c0c2875effc1ce02d5576f0d2a59284c5d Mon Sep 17 00:00:00 2001 From: Alex Shatov Date: Thu, 8 Mar 2018 13:12:23 -0500 Subject: 2.2.0 policy-handler - customization per company - added etc_customize/ folder and customize.sh script = customize.sh script is expected to be overridden by company to customize Docker image build = the whole etc_customize/ folder is copied into docker image = it is up to the company what to put into that folder - any files - added customize/ folder with CustomizeBase and Customize classes = CustomizeBase defines the interface and the default=ONAP behavior = CustomizeBase is owned by ONAP and should not be changed by the company = Customize inherits CustomizeBase = policy-handler instantiates Customize to get the customized behavior = Customize is owned by the company and should be changed by the company = ONAP is not going to change Customize = the methods of Customize are expected to be overridden by the company to change the behavior of the policy-handler = sample Customize class can be found in README.md = Company is allowed to add more files to customize/ folder if that is required for better structuring of their code as soon as it is invoked by the methods of Customize Change-Id: I46f8170afaaa48e1005e4398a768a781db0a0e6c Signed-off-by: Alex Shatov Issue-ID: DCAEGEN2-379 --- README.md | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 80 insertions(+), 5 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 53bdcc4..5006325 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ -# policy_handler +# policy_handler + ## web-service for policies to be used by DCAE-Controller - GET **/policy\_latest/***\* -- get the latest policy from policy-engine @@ -6,7 +7,7 @@ ## manual http API -- GET **/catch_up** -- catch up with the latest state of the policy-engine +- GET **/catch_up** -- catch up with the latest state of the policy-engine - GET **/policies_latest** -- get all the latest policies in policy-engine through web-service API - GET **/shutdown** -- shutdown the server @@ -41,12 +42,12 @@ in folder `policy_handler`: - `config.json` contains - - `"scope_prefixes" : ["DCAE_alex.Config_"]` - the list of policy-scope-class values - - `"policy_engine"` - the http connect info to ECOMP **policy-engine** + - `"scope_prefixes" : ["DCAE.Config_"]` - the list of policy-scope-class values + - `"policy_engine"` - the http connect info to ONAP **policy-engine** - headers.ClientAuth : base64(:) - headers.Authorization : base64() - `"deploy_handler"` - the http connect info to _policy part_ of the **deploy-handler** - - `policy_engine.properties` contains config info for the client lib of ECOMP **policy-engine** that receives push notifications from the ECOMP **policy-engine** server + - `policy_engine.properties` contains config info for the client lib of ONAP **policy-engine** that receives push notifications from the ONAP **policy-engine** server - CLIENT_ID is the mech-id with the namespace - need to register with policy-engine team thru email - CLIENT_KEY is the base64 of the mech-id password - separate passwords for TEST versus PROD @@ -59,3 +60,77 @@ in folder `policy_handler`: `./run_policy.sh` ---------- + +## customization per company + +### ```etc_customize/``` folder + +- company is expected to place any company specific files required to be in the docker image in the folder ```etc_customize/``` + +- change the ```etc_customize/customize.sh``` script to perform company specific actions during docker image build + +- ```etc_customize/customize.sh``` script is expected to be overridden by company to customize docker image build + +### ```policyhandler/customize/``` folder + +contains ```CustomizeBase``` and ```Customize``` classes + +- ```CustomizeBase``` defines the interface and the default=ONAP behavior + +- ```CustomizeBase``` is owned by ONAP and should not be changed by the company + +- ```Customize``` inherits ```CustomizeBase``` + +- policy-handler instantiates ```Customize``` to get the customized behavior + +- ```Customize``` is owned by the company and should be changed by the company +- ONAP is not going to change ```Customize``` + +- the methods of ```Customize``` are expected to be overridden by the company to change the behavior of the policy-handler + +- samples are provided for methods in ```Customize``` class as the commented out lines + +- Company is allowed to add more files to customize/ folder if that is required for better structuring of their code as soon as it is invoked by the methods of ```Customize``` + +here is an example of ```customizer.py``` + +```python +"""contains the Customizer class with method overrides per company specification""" + +from .customizer_base import CustomizerBase + +class Customizer(CustomizerBase): + """ + the Customizer class inherits CustomizerBase that is owned by ONAP + + :Customizer: class is owned by the company that needs to customize the policy-handler + + :override: any method defined in the CustomizerBase class to customize the behavior of the policy-handler + """ + def __init__(self): + """class that contains the customization""" + super(Customizer, self).__init__() + + def get_service_url(self, audit, service_name, service): + """ + returns the service url when called from DiscoveryClient + + this is just a sample code - replace it with the real customization + """ + service_url = super(Customizer, self).get_service_url(audit, service_name, service) + audit.info("TODO: customization for service_url on {0}".format(service_name)) + return service_url + + def get_deploy_handler_kwargs(self, audit): + """ + returns the optional dict-kwargs for requests.post to deploy-handler + + this is just a sample code - replace it with the real customization + """ + kwargs = {"verify": "/usr/local/share/ca-certificates/aafcacert.crt"} + audit.info("kwargs for requests.post to deploy-handler: {0}".format(json.dumps(kwargs))) + return kwargs + +``` + +---------- -- cgit 1.2.3-korg