Skip to content

Commit

Permalink
wsgi debug
Browse files Browse the repository at this point in the history
adapt init collector test
  • Loading branch information
richardtief committed Dec 7, 2020
1 parent d475fe9 commit d78d4fe
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 15 deletions.
4 changes: 2 additions & 2 deletions InventoryBuilder.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,8 @@ def token():
return json.dumps(self.target_tokens)

try:
if logger.level in range(1, 20):
# WSGi is logging on INFO Level
if logger.level == 10:
# WSGi is logging on DEBUG Level
WSGIServer((self.wsgi_address, self.port), app).serve_forever()
else:
WSGIServer((self.wsgi_address, self.port), app, log=None).serve_forever()
Expand Down
16 changes: 6 additions & 10 deletions exporter.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,23 +89,19 @@ def run_prometheus_server(port, collectors, *args):
time.sleep(1)


def initialize_collector_by_name(class_name, test=False):
def initialize_collector_by_name(class_name, logger):
try:
class_module = importlib.import_module(f'collectors.{class_name}')
except ModuleNotFoundError as e:
if test:
print('No Collector "BogusCollector" defined. Ignoring...')
else:
log.error(f'No Collector {class_name} defined. {e}')
print('No Collector "BogusCollector" defined. Ignoring...')
logger.error(f'No Collector {class_name} defined. {e}')
return None

try:
return class_module.__getattribute__(class_name)()
except AttributeError as e:
if test:
print('Unable to initialize "ClassNotDefinedCollector". Ignoring...')
else:
log.error(f'Unable to initialize {class_name}. {e}')
print('Unable to initialize "ClassNotDefinedCollector". Ignoring...')
logger.error(f'Unable to initialize {class_name}. {e}')
return None


Expand All @@ -118,5 +114,5 @@ def get_targets():
if __name__ == '__main__':
log = logging.getLogger('vrops-exporter')
options = parse_params(log)
collectors = list(map(lambda c: initialize_collector_by_name(c), options.collectors))
collectors = list(map(lambda c: initialize_collector_by_name(c, log), options.collectors))
run_prometheus_server(int(os.environ['PORT']), collectors)
8 changes: 5 additions & 3 deletions tests/TestCollectorInit.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import collectors.VMStatsCollector
from exporter import initialize_collector_by_name

logger = logging.getLogger('test-logger')


class TestCollectorInitialization(TestCase):
os.environ.setdefault('TARGET', 'testhost.test')
Expand All @@ -18,19 +20,19 @@ class TestCollectorInitialization(TestCase):
@patch('BaseCollector.BaseCollector.wait_for_inventory_data')
def test_valid_collector2(self, mocked_wait):
mocked_wait.return_value = None
collector = initialize_collector_by_name('VMStatsCollector', test=True)
collector = initialize_collector_by_name('VMStatsCollector', logger)
self.assertIsInstance(collector, collectors.VMStatsCollector.VMStatsCollector)

@patch('builtins.print')
def test_with_bogus_collector(self, mocked_print):
collector = initialize_collector_by_name('BogusCollector', test=True)
collector = initialize_collector_by_name('BogusCollector', logger)
self.assertIsNone(collector)
self.assertEqual(mocked_print.mock_calls, [call('No Collector "BogusCollector" defined. Ignoring...')])

@patch('builtins.print')
def test_with_invalid_collector(self, mocked_print):
importlib.import_module = MagicMock(return_value=collectors.VMStatsCollector)
collector = initialize_collector_by_name('ClassNotDefinedCollector', test=True)
collector = initialize_collector_by_name('ClassNotDefinedCollector', logger)
self.assertIsNone(collector)
self.assertEqual(mocked_print.mock_calls, [call('Unable to initialize "ClassNotDefinedCollector". Ignoring...')])

Expand Down

0 comments on commit d78d4fe

Please sign in to comment.