From 0fd1dc39ee6f6bb7f2c35f84c3a2a39d9e63805f Mon Sep 17 00:00:00 2001 From: opensource-tnbt Date: Fri, 30 Oct 2020 15:48:23 +0530 Subject: CIRV-Cleanup: Remove HDV and SDV contents. As CIRV-HDV and CIRV-SDV are active now, we do not need contents here. The docs folder has links to HDV and SDV. Signed-off-by: Sridhar K. N. Rao Change-Id: I86ee90fb5e969e14d000d9a08d971b13a2c2740e --- tools/sdv/core/__init__.py | 19 ---- tools/sdv/core/component_factory.py | 32 ------ tools/sdv/core/loader/__init__.py | 18 ---- tools/sdv/core/loader/loader.py | 129 ---------------------- tools/sdv/core/loader/loader_servant.py | 183 -------------------------------- 5 files changed, 381 deletions(-) delete mode 100644 tools/sdv/core/__init__.py delete mode 100644 tools/sdv/core/component_factory.py delete mode 100644 tools/sdv/core/loader/__init__.py delete mode 100644 tools/sdv/core/loader/loader.py delete mode 100644 tools/sdv/core/loader/loader_servant.py (limited to 'tools/sdv/core') diff --git a/tools/sdv/core/__init__.py b/tools/sdv/core/__init__.py deleted file mode 100644 index 2441d38..0000000 --- a/tools/sdv/core/__init__.py +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2015 Intel Corporation. -# -# 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 structural interfaces and their implementations -""" - -# flake8: noqa -import core.component_factory diff --git a/tools/sdv/core/component_factory.py b/tools/sdv/core/component_factory.py deleted file mode 100644 index 396aa28..0000000 --- a/tools/sdv/core/component_factory.py +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright 2020 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. - -""" -Create Components. -""" - - -def create_swprevalidator(swprevalidator_class): - """ Create Pre-Validators""" - return swprevalidator_class() - - -def create_swpostvalidator(swpostvalidator_class): - """ Create Post-Validators""" - return swpostvalidator_class() - - -def create_linkvalidator(linkprevalidator_class): - """ Create Link-Validators""" - return linkprevalidator_class() diff --git a/tools/sdv/core/loader/__init__.py b/tools/sdv/core/loader/__init__.py deleted file mode 100644 index e86c48e..0000000 --- a/tools/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/tools/sdv/core/loader/loader.py b/tools/sdv/core/loader/loader.py deleted file mode 100644 index c9f8e96..0000000 --- a/tools/sdv/core/loader/loader.py +++ /dev/null @@ -1,129 +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 SoftwarePreValid.swprevalidator import ISwPreValidator -from SoftwarePostValid.swpostvalidator import ISwPostValidator -from NwLinksValid.nwlinksvalidator import INwLinksValidator - - -# 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._swprevalidator_loader = LoaderServant( - settings.getValue('SW_PRE_VALID_DIR'), - settings.getValue('SW_PRE_VALIDATOR'), - ISwPreValidator) - self._swpostvalidator_loader = LoaderServant( - settings.getValue('SW_POST_VALID_DIR'), - settings.getValue('SW_POST_VALIDATOR'), - ISwPostValidator) - self._nwlinksvalidator_loader = LoaderServant( - settings.getValue('NW_LINKS_VALID_DIR'), - settings.getValue('NW_LINKS_VALIDATOR'), - INwLinksValidator) - - def get_swprevalidator(self): - """ Returns a new instance configured Software Validator - :return: ISwPreValidator implementation if available, None otherwise - """ - return self._swprevalidator_loader.get_class()() - - def get_swprevalidator_class(self): - """Returns type of currently configured Software Validator. - - :return: Type of ISwPreValidator implementation if available. - None otherwise. - """ - return self._swprevalidator_loader.get_class() - - def get_swprevalidators(self): - """ - Get Prevalidators - """ - return self._swprevalidator_loader.get_classes() - - def get_swprevalidators_printable(self): - """ - Get Prevalidators for printing - """ - return self._swprevalidator_loader.get_classes_printable() - - def get_swpostvalidator(self): - """ Returns a new instance configured Software Validator - :return: ISwPostValidator implementation if available, None otherwise - """ - return self._swpostvalidator_loader.get_class()() - - def get_swpostvalidator_class(self): - """Returns type of currently configured Software Validator. - - :return: Type of ISwPostValidator implementation if available. - None otherwise. - """ - return self._swpostvalidator_loader.get_class() - - def get_swpostvalidators(self): - """ - Get Postvalidators - """ - return self._swpostvalidator_loader.get_classes() - - def get_swpostvalidators_printable(self): - """ - Get Postvalidators for printing - """ - return self._swpostvalidator_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_nwlinkvalidators(self): - """ - Get Linkvalidators - """ - return self._nwlinksvalidator_loader.get_classes() - - def get_nwlinkvalidators_printable(self): - """ - Get Linkvalidators for printing - """ - return self._nwlinksvalidator_loader.get_classes_printable() diff --git a/tools/sdv/core/loader/loader_servant.py b/tools/sdv/core/loader/loader_servant.py deleted file mode 100644 index 4e55c67..0000000 --- a/tools/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 -- cgit