diff options
author | 2017-09-01 15:51:52 +0300 | |
---|---|---|
committer | 2017-09-01 15:51:52 +0300 | |
commit | 7b4235dced0c66096638bebd5cc98a631538b0e1 (patch) | |
tree | ea6e17af0fbd854ef7b2053aa7c1e71949d977aa /app/discover/scanner.py | |
parent | 692489cc50c8025ede1646627a7a583a4feb3798 (diff) |
Refactored link finders
Mappings are now defined in a configuration file and fetched dynamically.
Change-Id: I250c22967fc66fc0aca173d4c9d65581d879b5d2
Signed-off-by: Ilia Abashin <abashinos@gmail.com>
Diffstat (limited to 'app/discover/scanner.py')
-rw-r--r-- | app/discover/scanner.py | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/app/discover/scanner.py b/app/discover/scanner.py index c310ae7..3a0b2a5 100644 --- a/app/discover/scanner.py +++ b/app/discover/scanner.py @@ -10,19 +10,15 @@ # base class for scanners import json -import queue import os +import queue import traceback from discover.clique_finder import CliqueFinder from discover.configuration import Configuration from discover.fetcher import Fetcher -from discover.find_links_for_instance_vnics import FindLinksForInstanceVnics -from discover.find_links_for_oteps import FindLinksForOteps -from discover.find_links_for_pnics import FindLinksForPnics -from discover.find_links_for_vconnectors import FindLinksForVconnectors -from discover.find_links_for_vedges import FindLinksForVedges -from discover.find_links_for_vservice_vnics import FindLinksForVserviceVnics +from discover.link_finders.find_links_metadata_parser import \ + FindLinksMetadataParser from discover.scan_error import ScanError from discover.scan_metadata_parser import ScanMetadataParser from utils.inventory_mgr import InventoryMgr @@ -49,7 +45,9 @@ class Scanner(Fetcher): self.inv = InventoryMgr() self.scanners_package = None self.scanners = {} - self.load_metadata() + self.link_finders = [] + self.load_scanners_metadata() + self.load_link_finders_metadata() def scan(self, scanner_type, obj, id_field="id", limit_to_child_id=None, limit_to_child_type=None): @@ -223,15 +221,7 @@ class Scanner(Fetcher): def scan_links(self): self.log.info("scanning for links") - fetchers_implementing_add_links = [ - FindLinksForPnics(), - FindLinksForInstanceVnics(), - FindLinksForVserviceVnics(), - FindLinksForVconnectors(), - FindLinksForVedges(), - FindLinksForOteps() - ] - for fetcher in fetchers_implementing_add_links: + for fetcher in self.link_finders: fetcher.set_env(self.get_env()) fetcher.add_links() @@ -245,7 +235,7 @@ class Scanner(Fetcher): if not ret: self.found_errors[self.get_env()] = True - def load_metadata(self): + def load_scanners_metadata(self): parser = ScanMetadataParser(self.inv) conf = self.config.get_env_config() scanners_file = os.path.join(conf.get('app_path', '/etc/calipso'), @@ -256,6 +246,15 @@ class Scanner(Fetcher): self.scanners_package = metadata[ScanMetadataParser.SCANNERS_PACKAGE] self.scanners = metadata[ScanMetadataParser.SCANNERS] + def load_link_finders_metadata(self): + parser = FindLinksMetadataParser() + conf = self.config.get_env_config() + finders_file = os.path.join(conf.get('app_path', '/etc/calipso'), + 'config', + FindLinksMetadataParser.FINDERS_FILE) + metadata = parser.parse_metadata_file(finders_file) + self.link_finders = metadata[FindLinksMetadataParser.LINK_FINDERS] + def get_scanner_package(self): return self.scanners_package |