diff options
author | 2021-09-20 12:45:42 +0530 | |
---|---|---|
committer | 2021-09-20 12:47:36 +0530 | |
commit | bfd37762bdf91a7f89d4ebc259454ddb2f5e7b3d (patch) | |
tree | dba519dd11f94e216079c65d43e4166cf8c5fe5a /sdv/core/loader | |
parent | 43c4b47a9e0d64ffdaa77a743f0be388f49eb558 (diff) |
Cleanup-Update: Remove unused code and update PDF
This patch removes unused code and update the pdf.
Signed-off-by: Sridhar K. N. Rao <sridhar.rao@spirent.com>
Change-Id: I9785c4301869f7b93ccad074cf0ad6ffc77724a0
Diffstat (limited to 'sdv/core/loader')
-rw-r--r-- | sdv/core/loader/__init__.py | 18 | ||||
-rw-r--r-- | sdv/core/loader/loader.py | 222 | ||||
-rw-r--r-- | sdv/core/loader/loader_servant.py | 183 |
3 files changed, 0 insertions, 423 deletions
diff --git a/sdv/core/loader/__init__.py b/sdv/core/loader/__init__.py deleted file mode 100644 index e86c48e..0000000 --- a/sdv/core/loader/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -# 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. - -""" -Core: Loader Component. -""" - -# flake8: noqa -from .loader import Loader diff --git a/sdv/core/loader/loader.py b/sdv/core/loader/loader.py deleted file mode 100644 index 8840f26..0000000 --- a/sdv/core/loader/loader.py +++ /dev/null @@ -1,222 +0,0 @@ -# Copyright 2020 Intel Corporation, Spirent Communications. -# -# 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. - -""" -Abstract class for Software Prevalidations. -Implementors, please inherit from this class. -""" - -from conf import settings -from core.loader.loader_servant import LoaderServant -from SoftwarePreUrlsValid.swpreurlsvalidator import ISwPreUrlsValidator -from SoftwarePreConfigValid.swpreconfigvalidator import ISwPreConfigValidator -from SoftwarePostStateValid.swpoststatevalidator import ISwPostStateValidator -from SoftwarePostSecurityValid.swpostsecurityvalidator import ISwPostSecurityValidator -from NwLinksValid.nwlinksvalidator import INwLinksValidator -from ResourceModelValid.resmodvalidator import IResModValidator - - -# pylint: disable=too-many-public-methods -class Loader(): - """Loader class - main object context holder. - """ - _swvalidator_loader = None - - def __init__(self): - """Loader ctor - initialization method. - - All data is read from configuration each time Loader instance is - created. It is up to creator to maintain object life cycle if this - behavior is unwanted. - """ - self._swpreurlsvalidator_loader = LoaderServant( - settings.getValue('SW_PRE_URLS_VALID_DIR'), - settings.getValue('SW_PRE_URLS_VALIDATOR'), - ISwPreUrlsValidator) - self._swpreconfigvalidator_loader = LoaderServant( - settings.getValue('SW_PRE_CONFIG_VALID_DIR'), - settings.getValue('SW_PRE_CONFIG_VALIDATOR'), - ISwPreConfigValidator) - self._swpoststatevalidator_loader = LoaderServant( - settings.getValue('SW_POST_STATE_VALID_DIR'), - settings.getValue('SW_POST_STATE_VALIDATOR'), - ISwPostStateValidator) - self._swpostsecurityvalidator_loader = LoaderServant( - settings.getValue('SW_POST_SECURITY_VALID_DIR'), - settings.getValue('SW_POST_SECURITY_VALIDATOR'), - ISwPostSecurityValidator) - self._nwlinksvalidator_loader = LoaderServant( - settings.getValue('NW_LINKS_VALID_DIR'), - settings.getValue('NW_LINKS_VALIDATOR'), - INwLinksValidator) - self._resmodvalidator_loader = LoaderServant( - settings.getValue('RES_MOD_VALID_DIR'), - settings.getValue('RES_MOD_VALIDATOR'), - IResModValidator) - - def get_swpreurlsvalidator(self): - """ Returns a new instance configured Software Validator - :return: ISwPreUrlsValidator implementation if available, None otherwise - """ - return self._swpreurlsvalidator_loader.get_class()() - - def get_swpreurlsvalidator_class(self): - """Returns type of currently configured Software Validator. - - :return: Type of ISwPreUrlsValidator implementation if available. - None otherwise. - """ - return self._swpreurlsvalidator_loader.get_class() - - def get_swpreurlsvalidators(self): - """ - Get Prevalidators - """ - return self._swpreurlsvalidator_loader.get_classes() - - def get_swpreurlsvalidators_printable(self): - """ - Get Prevalidators for printing - """ - return self._swpreurlsvalidator_loader.get_classes_printable() - - def get_swpreconfigvalidator(self): - """ Returns a new instance configured Software Validator - :return: ISwPreConfigValidator implementation if available, None otherwise - """ - return self._swpreconfigvalidator_loader.get_class()() - - def get_swpreconfigvalidator_class(self): - """Returns type of currently configured Software Validator. - - :return: Type of ISwPreConfigValidator implementation if available. - None otherwise. - """ - return self._swpreconfigvalidator_loader.get_class() - - def get_swpreconfigvalidators(self): - """ - Get Prevalidators - """ - return self._swpreconfigvalidator_loader.get_classes() - - def get_swpreconfigvalidators_printable(self): - """ - Get Prevalidators for printing - """ - return self._swpreconfigvalidator_loader.get_classes_printable() - - def get_swpoststatevalidator(self): - """ Returns a new instance configured Software Validator - :return: ISwPostStateValidator implementation if available, None otherwise - """ - return self._swpoststatevalidator_loader.get_class()() - - def get_swpoststatevalidator_class(self): - """Returns type of currently configured Software Validator. - - :return: Type of ISwPostStateValidator implementation if available. - None otherwise. - """ - return self._swpoststatevalidator_loader.get_class() - - def get_swpoststatevalidators(self): - """ - Get Postvalidators - """ - return self._swpoststatevalidator_loader.get_classes() - - def get_swpoststatevalidators_printable(self): - """ - Get Postvalidators for printing - """ - return self._swpoststatevalidator_loader.get_classes_printable() - - def get_swpostsecurityvalidator(self): - """ Returns a new instance configured Software Validator - :return: ISwPostSecurityValidator implementation if available, None otherwise - """ - return self._swpostsecurityvalidator_loader.get_class()() - - def get_swpostsecurityvalidator_class(self): - """Returns type of currently configured Software Validator. - - :return: Type of ISwPostSecurityValidator implementation if available. - None otherwise. - """ - return self._swpostsecurityvalidator_loader.get_class() - - def get_swpostsecurityvalidators(self): - """ - Get Postvalidators - """ - return self._swpostsecurityvalidator_loader.get_classes() - - def get_swpostsecurityvalidators_printable(self): - """ - Get Postvalidators for printing - """ - return self._swpostsecurityvalidator_loader.get_classes_printable() - - def get_nwlinksvalidator(self): - """ Returns a new instance configured Nw-Links Validator - :return: INwLinksValidator implementation if available, None otherwise - """ - return self._nwlinksvalidator_loader.get_class()() - - def get_nwlinksvalidator_class(self): - """Returns type of currently configured Nw-Links Validator. - - :return: Type of NwLinksValidator implementation if available. - None otherwise. - """ - return self._nwlinksvalidator_loader.get_class() - - def get_nwlinksvalidators(self): - """ - Get Linkvalidators - """ - return self._nwlinksvalidator_loader.get_classes() - - def get_nwlinksvalidators_printable(self): - """ - Get Linkvalidators for printing - """ - return self._nwlinksvalidator_loader.get_classes_printable() - - def get_resmodvalidator(self): - """ Returns a new instance configured Nw-Links Validator - :return: IResModValidator implementation if available, None otherwise - """ - return self._resmodvalidator_loader.get_class()() - - def get_resmodvalidator_class(self): - """Returns type of currently configured Nw-Links Validator. - - :return: Type of ResModValidator implementation if available. - None otherwise. - """ - return self._resmodvalidator_loader.get_class() - - def get_resmodvalidators(self): - """ - Get ResoureModelValidators - """ - return self._resmodvalidator_loader.get_classes() - - def get_resmodvalidators_printable(self): - """ - Get ResoureModelValidators for printing - """ - return self._resmodvalidator_loader.get_classes_printable() diff --git a/sdv/core/loader/loader_servant.py b/sdv/core/loader/loader_servant.py deleted file mode 100644 index 4e55c67..0000000 --- a/sdv/core/loader/loader_servant.py +++ /dev/null @@ -1,183 +0,0 @@ -# Copyright 2020 Intel Corporation, Spirent Communications. -# -# 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. - -""" -Loader Support Module. -""" - -import os -from os import sys -import imp -import fnmatch -import logging -from conf import settings - - -class LoaderServant(): - """Class implements basic dynamic import operations. - """ - _class_name = None - _path = None - _interface = None - - def __init__(self, path, class_name, interface): - """LoaderServant constructor - - Intializes all data needed for import operations. - - Attributes: - path: path to directory which contains implementations derived from - interface. - class_name: Class name which will be returned in get_class - method, if such definition exists in directory - represented by path, - interface: interface type. Every object which doesn't - implement this particular interface will be - filtered out. - """ - self._class_name = class_name - self._path = path - self._interface = interface - - def get_class(self): - """Returns class type based on parameters passed in __init__. - - :return: Type of the found class. - None if class hasn't been found - """ - - return self.load_module(path=self._path, - interface=self._interface, - class_name=self._class_name) - - def get_classes(self): - """Returns all classes in path derived from interface - - :return: Dictionary with following data: - - key: String representing class name, - - value: Class type. - """ - return self.load_modules(path=self._path, - interface=self._interface) - - def get_classes_printable(self): - """Returns all classes derived from _interface found in path - - :return: String - list of classes in printable format. - """ - - out = self.load_modules(path=self._path, - interface=self._interface) - results = [] - - # sort modules to produce the same output everytime - for (name, mod) in sorted(out.items()): - desc = (mod.__doc__ or 'No description').strip().split('\n')[0] - results.append((name, desc)) - - header = 'Classes derived from: ' + self._interface.__name__ - output = [header + '\n' + '=' * len(header) + '\n'] - - for (name, desc) in results: - output.append('* %-18s%s' % ('%s:' % name, desc)) - - output.append('') - - output.append('') - - return '\n'.join(output) - - @staticmethod - def load_module(path, interface, class_name): - """Imports everything from given path and returns class type - - This is based on following conditions: - - Class is derived from interface, - - Class type name matches class_name. - - :return: Type of the found class. - None if class hasn't been found - """ - - results = LoaderServant.load_modules( - path=path, interface=interface) - - if class_name in results: - logging.info( - "Class found: %s.", class_name) - return results.get(class_name) - - return None - - @staticmethod - def load_modules(path, interface): - """Returns dictionary of class name/class type found in path - - This is based on following conditions: - - classes found under path are derived from interface. - - class is not interface itself. - - :return: Dictionary with following data: - - key: String representing class name, - - value: Class type. - """ - result = {} - - for _, mod in LoaderServant._load_all_modules(path): - # find all classes derived from given interface, but suppress - # interface itself and any abstract class starting with iface name - gens = dict((k, v) for (k, v) in list(mod.__dict__.items()) - if isinstance(v, type) and - issubclass(v, interface) and - not k.startswith(interface.__name__)) - if gens: - for (genname, gen) in list(gens.items()): - result[genname] = gen - return result - - @staticmethod - def _load_all_modules(path): - """Load all modules from ``path`` directory. - - This is based on the design used by OFTest: - https://github.com/floodlight/oftest/blob/master/oft - - :param path: Path to a folder of modules. - - :return: List of modules in a folder. - """ - mods = [] - - for root, _, filenames in os.walk(path): - # Iterate over each python file - for filename in fnmatch.filter(filenames, '[!.]*.py'): - modname = os.path.splitext(os.path.basename(filename))[0] - - # skip module load if it is excluded by configuration - if modname in settings.getValue('EXCLUDE_MODULES'): - continue - - try: - if modname in sys.modules: - mod = sys.modules[modname] - else: - mod = imp.load_module( - modname, *imp.find_module(modname, [root])) - except ImportError: - logging.error('Could not import file %s', filename) - raise - - mods.append((modname, mod)) - - return mods |