aboutsummaryrefslogtreecommitdiffstats
path: root/test/mocks/mass-pnf-sim/mass-pnf-sim.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/mocks/mass-pnf-sim/mass-pnf-sim.py')
-rwxr-xr-xtest/mocks/mass-pnf-sim/mass-pnf-sim.py83
1 files changed, 47 insertions, 36 deletions
diff --git a/test/mocks/mass-pnf-sim/mass-pnf-sim.py b/test/mocks/mass-pnf-sim/mass-pnf-sim.py
index 7358eb5c3..aa371e0d2 100755
--- a/test/mocks/mass-pnf-sim/mass-pnf-sim.py
+++ b/test/mocks/mass-pnf-sim/mass-pnf-sim.py
@@ -36,22 +36,37 @@ else:
logging.basicConfig(level=logging.INFO, format='[%(levelname)s] %(message)s')
parser = argparse.ArgumentParser()
-parser.add_argument('--bootstrap', help='Bootstrap the system', type=int, metavar='COUNT')
-parser.add_argument('--trigger', help='Trigger one single VES event from each simulator', type=int,
- metavar='COUNT')
-parser.add_argument('--triggerstart', help='Trigger only a subset of the simulators (note --triggerend)', type=int,
- metavar='COUNT_START')
-parser.add_argument('--triggerend', help='Last instance to trigger', type=int, metavar='COUNT_END')
-parser.add_argument('--urlves', help='URL of the VES collector', type=validate_url, metavar='URL')
-parser.add_argument('--ipfileserver', help='Visible IP of the file server (SFTP/FTPS) to be included in the VES event',
- type=validate_ip, metavar='IP')
-parser.add_argument('--typefileserver', help='Type of the file server (SFTP/FTPS) to be included in the VES event',
- type=str, choices=['sftp', 'ftps'])
-parser.add_argument('--ipstart', help='IP address range beginning', type=validate_ip, metavar='IP')
-parser.add_argument('--clean', action='store_true', help='Clean work-dirs')
-parser.add_argument('--start', help='Start instances', type=int, metavar='COUNT')
-parser.add_argument('--status', help='Status', type=int, metavar='COUNT')
-parser.add_argument('--stop', help='Stop instances', type=int, metavar='COUNT')
+subparsers = parser.add_subparsers(title='Subcommands', dest='subcommand')
+# Bootstrap command parser
+parser_bootstrap = subparsers.add_parser('bootstrap', help='Bootstrap the system')
+parser_bootstrap.add_argument('--count', help='Instance count to bootstrap', type=int, metavar='INT', default=1)
+parser_bootstrap.add_argument('--urlves', help='URL of the VES collector', type=validate_url, metavar='URL', required=True)
+parser_bootstrap.add_argument('--ipfileserver', help='Visible IP of the file server (SFTP/FTPS) to be included in the VES event',
+ type=validate_ip, metavar='IP', required=True)
+parser_bootstrap.add_argument('--typefileserver', help='Type of the file server (SFTP/FTPS) to be included in the VES event',
+ type=str, choices=['sftp', 'ftps'], required=True)
+parser_bootstrap.add_argument('--ipstart', help='IP address range beginning', type=validate_ip, metavar='IP', required=True)
+# Start command parser
+parser_start = subparsers.add_parser('start', help='Start instances')
+parser_start.add_argument('--count', help='Instance count to start', type=int, metavar='INT', default=1)
+# Stop command parser
+parser_stop = subparsers.add_parser('stop', help='Stop instances')
+parser_stop.add_argument('--count', help='Instance count to stop', type=int, metavar='INT', default=1)
+# Trigger command parser
+parser_trigger = subparsers.add_parser('trigger', help='Trigger one single VES event from each simulator')
+parser_trigger.add_argument('--count', help='Instance count to trigger', type=int, metavar='INT', default=1)
+# Trigger-custom command parser
+parser_triggerstart = subparsers.add_parser('trigger-custom', help='Trigger one single VES event from specific simulators')
+parser_triggerstart.add_argument('--triggerstart', help='First simulator id to trigger', type=int,
+ metavar='INT', required=True)
+parser_triggerstart.add_argument('--triggerend', help='Last simulator id to trigger', type=int,
+ metavar='INT', required=True)
+# Status command parser
+parser_status = subparsers.add_parser('status', help='Status')
+parser_status.add_argument('--count', help='Instance count to show status for', type=int, metavar='INT', default=1)
+# Clean command parser
+parser_clean = subparsers.add_parser('clean', help='Clean work-dirs')
+# General options parser
parser.add_argument('--verbose', help='Verbosity level', choices=['info', 'debug'],
type=str, default='debug')
@@ -60,7 +75,11 @@ args = parser.parse_args()
logger = logging.getLogger(__name__)
logger.setLevel(getattr(logging, args.verbose.upper()))
-if args.bootstrap and args.ipstart and args.urlves:
+if args.subcommand is None:
+ parser.print_usage()
+ sys.exit(0)
+
+if args.subcommand == 'bootstrap' :
logger.info("Bootstrapping PNF instances")
start_port = 2000
@@ -69,7 +88,7 @@ if args.bootstrap and args.ipstart and args.urlves:
ftps_pasv_port_end = ftps_pasv_port_start + ftps_pasv_port_num_of_ports
- for i in range(args.bootstrap):
+ for i in range(args.count):
logger.info(f"PNF simulator instance: {i}")
# The IP ranges are in distance of 16 compared to each other.
@@ -138,16 +157,13 @@ if args.bootstrap and args.ipstart and args.urlves:
completed = subprocess.run('set -x; cd pnf-sim-lightweight; ./simulator.sh build ', shell=True)
logger.info(f"Build docker image: {completed.stdout}")
- sys.exit()
-
-if args.clean:
+if args.subcommand == 'clean':
completed = subprocess.run('rm -rf ./pnf-sim-lw-*', shell=True)
logger.info(f'Deleting: {completed.stdout}')
- sys.exit()
-if args.start:
+if args.subcommand == 'start':
- for i in range(args.start):
+ for i in range(args.count):
foldername = f"pnf-sim-lw-{i}"
completed = subprocess.run(
@@ -156,12 +172,11 @@ if args.start:
"; bash -x ./simulator.sh start",
shell=True)
logger.info(f'Starting: {completed.stdout}')
-
time.sleep(5)
-if args.status:
+if args.subcommand == 'status':
- for i in range(args.status):
+ for i in range(args.count):
foldername = f"pnf-sim-lw-{i}"
completed = subprocess.run(
@@ -171,8 +186,8 @@ if args.status:
shell=True)
logger.info(f'Status: {completed.stdout}')
-if args.stop:
- for i in range(args.stop):
+if args.subcommand == 'stop':
+ for i in range(args.count):
foldername = f"pnf-sim-lw-{i}"
completed = subprocess.run(
@@ -183,10 +198,10 @@ if args.stop:
logger.info(f'Stopping: {completed.stdout}')
-if args.trigger:
+if args.subcommand == 'trigger':
logger.info("Triggering VES sending:")
- for i in range(args.trigger):
+ for i in range(args.count):
foldername = f"pnf-sim-lw-{i}"
completed = subprocess.run(
@@ -196,7 +211,7 @@ if args.trigger:
shell=True)
logger.info(f'Status: {completed.stdout}')
-if args.triggerstart and args.triggerend:
+if args.subcommand == 'trigger-custom':
logger.info("Triggering VES sending by a range of simulators:")
for i in range(args.triggerstart, args.triggerend+1):
@@ -209,7 +224,3 @@ if args.triggerstart and args.triggerend:
"; ./simulator.sh trigger-simulator",
shell=True)
logger.info(f'Status: {completed.stdout}')
-else:
- logger.warning("No instruction was defined")
- parser.print_usage()
- sys.exit()