diff options
Diffstat (limited to 'vnftest/crawlers')
-rw-r--r-- | vnftest/crawlers/__init__.py | 0 | ||||
-rwxr-xr-x | vnftest/crawlers/base.py | 37 | ||||
-rw-r--r-- | vnftest/crawlers/default.py | 35 |
3 files changed, 72 insertions, 0 deletions
diff --git a/vnftest/crawlers/__init__.py b/vnftest/crawlers/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/vnftest/crawlers/__init__.py diff --git a/vnftest/crawlers/base.py b/vnftest/crawlers/base.py new file mode 100755 index 0000000..8b5a526 --- /dev/null +++ b/vnftest/crawlers/base.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright 2018 EuropeanSoftwareMarketingLtd. +# =================================================================== +# Licensed under the ApacheLicense, Version2.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 +# +# 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 +############################################################################## + +from __future__ import absolute_import +import logging + +from vnftest.common import utils + +log = logging.getLogger(__name__) + + +class Crawler(object): + + @staticmethod + def get_cls(crawler_type): + """return class of specified type""" + for crawler in utils.itersubclasses(Crawler): + if crawler_type == crawler.__crawler_type__: + return crawler + raise RuntimeError("No such crawler_type %s" % crawler_type) + + def __init__(self): + pass + + def crawl(self, dictionary, path): + raise NotImplementedError diff --git a/vnftest/crawlers/default.py b/vnftest/crawlers/default.py new file mode 100644 index 0000000..da4df0a --- /dev/null +++ b/vnftest/crawlers/default.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright 2018 EuropeanSoftwareMarketingLtd. +# =================================================================== +# Licensed under the ApacheLicense, Version2.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 +# +# 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 +############################################################################## + +from __future__ import absolute_import +from vnftest.crawlers import base +import logging + +LOG = logging.getLogger(__name__) + + +class DefaultCrawler(base.Crawler): + __crawler_type__ = 'default' + + def crawl(self, dictionary, path): + path_list = path.split("[") + value = dictionary + for path_element in path_list: + if path_element == "": + continue + path_element = path_element.replace("]", "") + if isinstance(value, list): + path_element = int(path_element) + value = value[path_element] + return value |