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 --- policyhandler/customize/__init__.py | 32 +++++++++++++++ policyhandler/customize/customizer.py | 35 +++++++++++++++++ policyhandler/customize/customizer_base.py | 62 ++++++++++++++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 policyhandler/customize/__init__.py create mode 100644 policyhandler/customize/customizer.py create mode 100644 policyhandler/customize/customizer_base.py (limited to 'policyhandler/customize') diff --git a/policyhandler/customize/__init__.py b/policyhandler/customize/__init__.py new file mode 100644 index 0000000..7449528 --- /dev/null +++ b/policyhandler/customize/__init__.py @@ -0,0 +1,32 @@ +# ================================================================================ +# Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. + +"""polymorphic customizer changes the behavior of predefined methods in policy-handler""" + +from .customizer import Customizer + +class CustomizerUser(object): + """unprotected singleton around Customizer""" + _customizer = None + + @staticmethod + def get_customizer(): + """get instance of customizer""" + if not CustomizerUser._customizer: + CustomizerUser._customizer = Customizer() + return CustomizerUser._customizer diff --git a/policyhandler/customize/customizer.py b/policyhandler/customize/customizer.py new file mode 100644 index 0000000..22bf60e --- /dev/null +++ b/policyhandler/customize/customizer.py @@ -0,0 +1,35 @@ +# ================================================================================ +# Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. + +"""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 + + see README.md for the sample of the customizer.py + """ + def __init__(self): + """class that contains the customization""" + super(Customizer, self).__init__() diff --git a/policyhandler/customize/customizer_base.py b/policyhandler/customize/customizer_base.py new file mode 100644 index 0000000..97e1550 --- /dev/null +++ b/policyhandler/customize/customizer_base.py @@ -0,0 +1,62 @@ +# ================================================================================ +# Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. + +""" +contains the base class :CustomizerBase: +that defines the signatures and default behavior of the methods called by the policy-handler + +the methods are expected to be overriden by the child class Cutomizer that is company specific + +:do NOT change: this class and/or this file - it is owned by ONAP +""" + +import logging + +class CustomizerBase(object): + """ + base class for Customizer class + + do NOT change this class and/or this file - it is owned by ONAP + + policy-hanlder is using the instance of the child Customizer class to get the overriden methods + + the methods defined in this class are the placeholders and are expected to be overriden by the Customizer class + """ + + def __init__(self): + """base class for customization contains the default methods""" + self._logger = logging.getLogger("policy_handler.customizer") + self._logger.info("created customizer") + + def get_service_url(self, audit, service_name, service): + """returns the service url when called from DiscoveryClient""" + service_url = "http://{0}:{1}".format( + service.get("ServiceAddress", ""), service.get("ServicePort", "")) + + info = "no customization for service_url: {0} on {1}".format(service_url, service_name) + self._logger.info(info) + audit.info(info) + return service_url + + def get_deploy_handler_kwargs(self, audit): + """returns the optional dict-kwargs for requests.post to deploy_handler""" + info = "no optional kwargs for requests.post to deploy_handler" + self._logger.info(info) + audit.info(info) + kwargs = {} + return kwargs -- cgit 1.2.3-korg