2020-05-15 07:37:34 +02:00
|
|
|
#! /usr/bin/env python3
|
2016-09-09 16:43:38 +01:00
|
|
|
"""
|
2021-09-27 21:24:25 +02:00
|
|
|
This is a Bootstrap script for wrapper.py, in order to retain compatibility with earlier LibreNMS setups
|
2016-09-09 16:43:38 +01:00
|
|
|
"""
|
2020-05-15 07:37:34 +02:00
|
|
|
|
2021-09-27 21:24:25 +02:00
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
import logging
|
|
|
|
from argparse import ArgumentParser
|
2016-09-09 16:43:38 +01:00
|
|
|
|
2021-09-27 21:24:25 +02:00
|
|
|
import LibreNMS
|
|
|
|
import LibreNMS.wrapper as wrapper
|
2016-09-09 16:43:38 +01:00
|
|
|
|
2021-09-27 21:24:25 +02:00
|
|
|
WRAPPER_TYPE = "discovery"
|
|
|
|
DEFAULT_WORKERS = 1
|
2021-08-10 15:13:05 -05:00
|
|
|
|
|
|
|
"""
|
2021-09-27 21:24:25 +02:00
|
|
|
Take the amount of threads we want to run in parallel from the commandline
|
|
|
|
if None are given or the argument was garbage, fall back to default
|
2021-08-10 15:13:05 -05:00
|
|
|
"""
|
2021-09-27 21:24:25 +02:00
|
|
|
usage = (
|
|
|
|
"usage: %(prog)s [options] <amount_of_workers> (Default: {}"
|
|
|
|
"(Do not set too high, or you will get an OOM)".format(DEFAULT_WORKERS)
|
|
|
|
)
|
|
|
|
description = "Spawn multiple discovery.php processes in parallel."
|
|
|
|
parser = ArgumentParser(usage=usage, description=description)
|
|
|
|
parser.add_argument(dest="amount_of_workers", default=DEFAULT_WORKERS)
|
|
|
|
parser.add_argument(
|
|
|
|
"-d",
|
|
|
|
"--debug",
|
|
|
|
dest="debug",
|
|
|
|
action="store_true",
|
|
|
|
default=False,
|
|
|
|
help="Enable debug output. WARNING: Leaving this enabled will consume a lot of disk space.",
|
|
|
|
)
|
2023-07-20 06:09:57 +02:00
|
|
|
parser.add_argument(
|
|
|
|
"-m",
|
|
|
|
"--modules",
|
|
|
|
dest="modules",
|
|
|
|
default="",
|
|
|
|
help="Enable passing of a module string, modules are separated by comma",
|
|
|
|
)
|
2021-09-27 21:24:25 +02:00
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
|
|
config = LibreNMS.get_config_data(os.path.dirname(os.path.realpath(__file__)))
|
|
|
|
if not config:
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
logger.critical("Could not run {} wrapper. Missing config".format(WRAPPER_TYPE))
|
|
|
|
sys.exit(1)
|
|
|
|
log_dir = config["log_dir"]
|
|
|
|
log_file = os.path.join(log_dir, WRAPPER_TYPE + "_wrapper.log")
|
|
|
|
logger = LibreNMS.logger_get_logger(log_file, debug=args.debug)
|
2021-08-10 15:13:05 -05:00
|
|
|
|
2021-09-27 21:24:25 +02:00
|
|
|
try:
|
|
|
|
amount_of_workers = int(args.amount_of_workers)
|
|
|
|
except (IndexError, ValueError):
|
|
|
|
amount_of_workers = DEFAULT_WORKERS
|
|
|
|
logger.warning(
|
|
|
|
"Bogus number of workers given. Using default number ({}) of workers.".format(
|
|
|
|
amount_of_workers
|
2021-03-28 18:02:33 +02:00
|
|
|
)
|
|
|
|
)
|
2020-05-15 07:37:34 +02:00
|
|
|
|
2021-09-27 21:24:25 +02:00
|
|
|
wrapper.wrapper(
|
|
|
|
WRAPPER_TYPE,
|
|
|
|
amount_of_workers=amount_of_workers,
|
|
|
|
config=config,
|
|
|
|
log_dir=log_dir,
|
2023-07-20 06:09:57 +02:00
|
|
|
modules=args.modules or "",
|
2021-09-27 21:24:25 +02:00
|
|
|
_debug=args.debug,
|
|
|
|
)
|