mirror of
				https://github.com/Telecominfraproject/oopt-gnpy.git
				synced 2025-11-03 19:47:46 +00:00 
			
		
		
		
	CLI: Unify handling of the network topology
Change-Id: I51c98ae13218715862fe9f585b2cc4b079498bee
This commit is contained in:
		@@ -83,7 +83,10 @@ def _setup_logging(args):
 | 
				
			|||||||
    logging.basicConfig(level={2: logging.DEBUG, 1: logging.INFO, 0: logging.CRITICAL}.get(args.verbose, logging.DEBUG))
 | 
					    logging.basicConfig(level={2: logging.DEBUG, 1: logging.INFO, 0: logging.CRITICAL}.get(args.verbose, logging.DEBUG))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def _add_common_options(parser: argparse.ArgumentParser):
 | 
					def _add_common_options(parser: argparse.ArgumentParser, network_default: Path):
 | 
				
			||||||
 | 
					    parser.add_argument('topology', nargs='?', type=Path, metavar='NETWORK-TOPOLOGY.(json|xls|xlsx)',
 | 
				
			||||||
 | 
					                        default=network_default,
 | 
				
			||||||
 | 
					                        help='Input network topology')
 | 
				
			||||||
    parser.add_argument('-v', '--verbose', action='count', default=0,
 | 
					    parser.add_argument('-v', '--verbose', action='count', default=0,
 | 
				
			||||||
                        help='Increase verbosity (can be specified several times)')
 | 
					                        help='Increase verbosity (can be specified several times)')
 | 
				
			||||||
    parser.add_argument('-e', '--equipment', type=Path, metavar=_help_fname_json,
 | 
					    parser.add_argument('-e', '--equipment', type=Path, metavar=_help_fname_json,
 | 
				
			||||||
@@ -98,22 +101,20 @@ def transmission_main_example(args=None):
 | 
				
			|||||||
        epilog=_help_footer,
 | 
					        epilog=_help_footer,
 | 
				
			||||||
        formatter_class=argparse.ArgumentDefaultsHelpFormatter,
 | 
					        formatter_class=argparse.ArgumentDefaultsHelpFormatter,
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
    _add_common_options(parser)
 | 
					    _add_common_options(parser, network_default=_examples_dir / 'edfa_example_network.json')
 | 
				
			||||||
    parser.add_argument('--sim-params', type=Path, metavar=_help_fname_json,
 | 
					    parser.add_argument('--sim-params', type=Path, metavar=_help_fname_json,
 | 
				
			||||||
                        default=None, help='Path to the JSON containing simulation parameters (required for Raman)')
 | 
					                        default=None, help='Path to the JSON containing simulation parameters (required for Raman)')
 | 
				
			||||||
    parser.add_argument('--show-channels', action='store_true', help='Show final per-channel OSNR summary')
 | 
					    parser.add_argument('--show-channels', action='store_true', help='Show final per-channel OSNR summary')
 | 
				
			||||||
    parser.add_argument('-pl', '--plot', action='store_true')
 | 
					    parser.add_argument('-pl', '--plot', action='store_true')
 | 
				
			||||||
    parser.add_argument('-l', '--list-nodes', action='store_true', help='list all transceiver nodes')
 | 
					    parser.add_argument('-l', '--list-nodes', action='store_true', help='list all transceiver nodes')
 | 
				
			||||||
    parser.add_argument('-po', '--power', default=0, help='channel ref power in dBm')
 | 
					    parser.add_argument('-po', '--power', default=0, help='channel ref power in dBm')
 | 
				
			||||||
    parser.add_argument('filename', nargs='?', type=Path, metavar='NETWORK-TOPOLOGY.(json|xls|xlsx)',
 | 
					 | 
				
			||||||
                        default=_examples_dir / 'edfa_example_network.json')
 | 
					 | 
				
			||||||
    parser.add_argument('source', nargs='?', help='source node')
 | 
					    parser.add_argument('source', nargs='?', help='source node')
 | 
				
			||||||
    parser.add_argument('destination', nargs='?', help='destination node')
 | 
					    parser.add_argument('destination', nargs='?', help='destination node')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    args = parser.parse_args(args if args is not None else sys.argv[1:])
 | 
					    args = parser.parse_args(args if args is not None else sys.argv[1:])
 | 
				
			||||||
    _setup_logging(args)
 | 
					    _setup_logging(args)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    (equipment, network) = load_common_data(args.equipment, args.filename, args.sim_params)
 | 
					    (equipment, network) = load_common_data(args.equipment, args.topology, args.sim_params)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if args.plot:
 | 
					    if args.plot:
 | 
				
			||||||
        plot_baseline(network)
 | 
					        plot_baseline(network)
 | 
				
			||||||
@@ -282,10 +283,7 @@ def path_requests_run(args=None):
 | 
				
			|||||||
        epilog=_help_footer,
 | 
					        epilog=_help_footer,
 | 
				
			||||||
        formatter_class=argparse.ArgumentDefaultsHelpFormatter,
 | 
					        formatter_class=argparse.ArgumentDefaultsHelpFormatter,
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
    _add_common_options(parser)
 | 
					    _add_common_options(parser, network_default=_examples_dir / 'meshTopologyExampleV2.xls')
 | 
				
			||||||
    parser.add_argument('network_filename', nargs='?', type=Path, metavar='NETWORK-TOPOLOGY.(json|xls|xlsx)',
 | 
					 | 
				
			||||||
                        default=_examples_dir / 'meshTopologyExampleV2.xls',
 | 
					 | 
				
			||||||
                        help='Input topology file')
 | 
					 | 
				
			||||||
    parser.add_argument('service_filename', nargs='?', type=Path, metavar='SERVICES-REQUESTS.(json|xls|xlsx)',
 | 
					    parser.add_argument('service_filename', nargs='?', type=Path, metavar='SERVICES-REQUESTS.(json|xls|xlsx)',
 | 
				
			||||||
                        default=_examples_dir / 'meshTopologyExampleV2.xls',
 | 
					                        default=_examples_dir / 'meshTopologyExampleV2.xls',
 | 
				
			||||||
                        help='Input service file')
 | 
					                        help='Input service file')
 | 
				
			||||||
@@ -299,7 +297,7 @@ def path_requests_run(args=None):
 | 
				
			|||||||
    _logger.info(f'Computing path requests {args.service_filename} into JSON format')
 | 
					    _logger.info(f'Computing path requests {args.service_filename} into JSON format')
 | 
				
			||||||
    print(f'{ansi_escapes.blue}Computing path requests {os.path.relpath(args.service_filename)} into JSON format{ansi_escapes.reset}')
 | 
					    print(f'{ansi_escapes.blue}Computing path requests {os.path.relpath(args.service_filename)} into JSON format{ansi_escapes.reset}')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    (equipment, network) = load_common_data(args.equipment, args.network_filename)
 | 
					    (equipment, network) = load_common_data(args.equipment, args.topology)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Build the network once using the default power defined in SI in eqpt config
 | 
					    # Build the network once using the default power defined in SI in eqpt config
 | 
				
			||||||
    # TODO power density: db2linp(ower_dbm": 0)/power_dbm": 0 * nb channels as defined by
 | 
					    # TODO power density: db2linp(ower_dbm": 0)/power_dbm": 0 * nb channels as defined by
 | 
				
			||||||
@@ -315,7 +313,7 @@ def path_requests_run(args=None):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
        data = load_requests(args.service_filename, equipment, bidir=args.bidir,
 | 
					        data = load_requests(args.service_filename, equipment, bidir=args.bidir,
 | 
				
			||||||
                             network=network, network_filename=args.network_filename)
 | 
					                             network=network, network_filename=args.topology)
 | 
				
			||||||
        rqs = requests_from_json(data, equipment)
 | 
					        rqs = requests_from_json(data, equipment)
 | 
				
			||||||
    except exceptions.ServiceError as e:
 | 
					    except exceptions.ServiceError as e:
 | 
				
			||||||
        print(f'{ansi_escapes.red}Service error:{ansi_escapes.reset} {e}')
 | 
					        print(f'{ansi_escapes.red}Service error:{ansi_escapes.reset} {e}')
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user