def main(args): """Return the list of request urls that conform to the UFrame API for the partial or fully-qualified reference_designator and all telemetry types. The URLs request all stream L0, L1 and L2 dataset parameters over the entire time-coverage. The urls are printed to STDOUT. """ status = 0 base_url = args.base_url if not base_url: if args.verbose: sys.stderr.write("No uframe_base specified. Checking UFRAME_BASE_URL environment variable\n") base_url = os.getenv("UFRAME_BASE_URL") if not base_url: sys.stderr.write("No UFrame instance specified") sys.stderr.flush() return 1 # Create a UFrame instance if args.verbose: sys.stderr.write("Creating UFrame API instance\n") uframe = UFrame(base_url=base_url, timeout=args.timeout, validate=args.validate_uframe) # Fetch the table of contents from UFrame if args.verbose: t0 = datetime.datetime.utcnow() sys.stderr.write("Fetching and creating UFrame table of contents...") uframe.fetch_toc() if args.verbose: t1 = datetime.datetime.utcnow() dt = t1 - t0 sys.stderr.write("Complete ({:d} seconds)\n".format(dt.seconds)) if args.reference_designator: instruments = uframe.search_instruments(args.reference_designator) else: instruments = uframe.instruments if not instruments: sys.stderr.write("No instruments found for reference designator: {:s}\n".format(args.reference_designator)) sys.stderr.flush() urls = [] for instrument in instruments: request_urls = uframe.instrument_to_query( instrument, telemetry=args.telemetry, time_delta_type=args.time_delta_type, time_delta_value=args.time_delta_value, begin_ts=args.start_date, end_ts=args.end_date, time_check=args.time_check, exec_dpa=args.no_dpa, application_type=args.format, provenance=args.no_provenance, limit=args.limit, annotations=args.no_annotations, user=args.user, email=args.email, selogging=args.selogging, ) for request_url in request_urls: urls.append(request_url) for url in urls: sys.stdout.write("{:s}\n".format(url)) return status