diff options
-rw-r--r-- | cables.py | 22 | ||||
-rw-r--r-- | main.py | 27 | ||||
-rw-r--r-- | switches.py | 4 |
3 files changed, 45 insertions, 8 deletions
@@ -65,7 +65,23 @@ def write_csv(data, outfile="cable_labels.csv", split_per_num=100): len(split_data), outfile.replace(".", "-1."))) -def make_cable_labels(switches, uplinks=3): +def read_aps_file(path): + aps = [] + with open(path, "r") as f: + aps = [line.replace("\n", "").strip() for line in f.readlines()] + + return aps + + +def make_cable_labels(switches, ap_file=None, aps=[], copies=2, outfile="cable_labels.csv", split_per_num=100, uplinks=3): print("Generating labels for cables") - labels = generate_labels(switches, uplinks=uplinks, aps=[]) - write_csv(labels) + + list_of_aps = aps + if ap_file: + list_of_aps.extend(read_aps_file(ap_file)) + + if len(list_of_aps): + print("Generating labels for {} APs".format(len(list_of_aps))) + + labels = generate_labels(switches, copies=copies, uplinks=uplinks, aps=aps) + write_csv(labels, outfile=outfile, split_per_num=split_per_num) @@ -5,7 +5,9 @@ from cables import make_cable_labels from gondul import fetch_gondul_switches from switches import make_switch_labels -parser = argparse.ArgumentParser("Label generator script 2000") +parser = argparse.ArgumentParser( + "Label generator script 2000", + formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument("labler", type=str, help="The label function to run. Either [c]ables or [s]witches.") parser.add_argument("--gondul-user", type=str, @@ -18,6 +20,20 @@ parser.add_argument("--gondul-switches", type=str, help="Gondul switches endpoint. Overrides env GONDUL_SWITCHES_ENDPOINT") parser.add_argument("--match-switches", type=str, default="^e(.*)", help="Regex for matching switches") +parser.add_argument("--outfile", "-o", type=str, default="cable_labels.csv", + help="Output (base) file name. Might be appended with numbers for cables.") + +cables_args = parser.add_argument_group("cables") +cables_args.add_argument("--ap", type=str, action="append", + help="Name of a switch where an AP should be connected") +cables_args.add_argument("--aps-file", type=str, + help="Path to a newline-separated file with switches where an AP should be connected") +cables_args.add_argument("--copies", "-c", type=int, default=2, + help="Number of copies per label") +cables_args.add_argument("--uplinks", "-u", type=int, default=3, + help="Number of uplinks per switch") +cables_args.add_argument("--split", "-s", type=int, default=100, + help="Split into CSV files of this size") if __name__ == "__main__": args = parser.parse_args() @@ -31,9 +47,14 @@ if __name__ == "__main__": ) if args.labler[0] == "c": - make_cable_labels(switches) + make_cable_labels(switches, + aps=args.ap, + ap_file=args.aps_file, + copies=args.copies, + outfile=args.outfile, + split_per_num=args.split) elif args.labler[0] == "s": - make_switch_labels(switches) + make_switch_labels(switches, outfile=args.outfile) else: parser.print_help() sys.exit("Invalid labler operation.") diff --git a/switches.py b/switches.py index ab444c6..a218489 100644 --- a/switches.py +++ b/switches.py @@ -37,7 +37,7 @@ def write_html_to_file(html, outfile="switch_labels.html"): print("Wrote labels to '{}'.\nOpen the file in your browser and print it.".format(outfile)) -def make_switch_labels(switches): +def make_switch_labels(switches, outfile="switch_labels.html"): print("Generating labels for switches") labels = generate_labels(switches) - write_html_to_file(labels) + write_html_to_file(labels, outfile=outfile) |