def main(args): parser = logging_utils.OptionParserWithLogging( usage='%prog <options>', version=__version__, log_file=RUN_ISOLATED_LOG_FILE) parser.add_option( '--json', help= 'dump output metadata to json file. When used, run_isolated returns ' 'non-zero only on internal failure') parser.add_option('--hard-timeout', type='float', help='Enforce hard timeout in execution') parser.add_option('--grace-period', type='float', help='Grace period between SIGTERM and SIGKILL') data_group = optparse.OptionGroup(parser, 'Data source') data_group.add_option( '-s', '--isolated', help='Hash of the .isolated to grab from the isolate server') isolateserver.add_isolate_server_options(data_group) parser.add_option_group(data_group) isolateserver.add_cache_options(parser) parser.set_defaults(cache='cache') debug_group = optparse.OptionGroup(parser, 'Debugging') debug_group.add_option( '--leak-temp-dir', action='store_true', help='Deliberately leak isolate\'s temp dir for later examination ' '[default: %default]') debug_group.add_option('--root-dir', help='Use a directory instead of a random one') parser.add_option_group(debug_group) auth.add_auth_options(parser) options, args = parser.parse_args(args) if not options.isolated: parser.error('--isolated is required.') auth.process_auth_options(parser, options) isolateserver.process_isolate_server_options(parser, options, True) cache = isolateserver.process_cache_options(options) if options.root_dir: options.root_dir = unicode(os.path.abspath(options.root_dir)) if options.json: options.json = unicode(os.path.abspath(options.json)) with isolateserver.get_storage(options.isolate_server, options.namespace) as storage: # Hashing schemes used by |storage| and |cache| MUST match. assert storage.hash_algo == cache.hash_algo return run_tha_test(options.isolated, storage, cache, options.leak_temp_dir, options.json, options.root_dir, options.hard_timeout, options.grace_period, args)
def main(args): tools.disable_buffering() parser = logging_utils.OptionParserWithLogging( usage='%prog <options>', version=__version__, log_file=RUN_ISOLATED_LOG_FILE) parser.add_option( '--json', help='dump output metadata to json file. When used, run_isolated returns ' 'non-zero only on internal failure') parser.add_option( '--hard-timeout', type='int', help='Enforce hard timeout in execution') parser.add_option( '--grace-period', type='int', help='Grace period between SIGTERM and SIGKILL') data_group = optparse.OptionGroup(parser, 'Data source') data_group.add_option( '-s', '--isolated', help='Hash of the .isolated to grab from the isolate server') isolateserver.add_isolate_server_options(data_group) parser.add_option_group(data_group) isolateserver.add_cache_options(parser) parser.set_defaults(cache='cache') debug_group = optparse.OptionGroup(parser, 'Debugging') debug_group.add_option( '--leak-temp-dir', action='store_true', help='Deliberately leak isolate\'s temp dir for later examination ' '[default: %default]') debug_group.add_option( '--root-dir', help='Use a directory instead of a random one') parser.add_option_group(debug_group) auth.add_auth_options(parser) options, args = parser.parse_args(args) if not options.isolated: parser.error('--isolated is required.') auth.process_auth_options(parser, options) isolateserver.process_isolate_server_options(parser, options, True) cache = isolateserver.process_cache_options(options) if options.root_dir: options.root_dir = unicode(os.path.abspath(options.root_dir)) if options.json: options.json = unicode(os.path.abspath(options.json)) with isolateserver.get_storage( options.isolate_server, options.namespace) as storage: # Hashing schemes used by |storage| and |cache| MUST match. assert storage.hash_algo == cache.hash_algo return run_tha_test( options.isolated, storage, cache, options.leak_temp_dir, options.json, options.root_dir, options.hard_timeout, options.grace_period, args)
def main(args): tools.disable_buffering() parser = logging_utils.OptionParserWithLogging( usage='%prog <options>', version=__version__, log_file=RUN_ISOLATED_LOG_FILE) data_group = optparse.OptionGroup(parser, 'Data source') data_group.add_option( '-s', '--isolated', help='Hash of the .isolated to grab from the isolate server') data_group.add_option( '-H', dest='isolated', help=optparse.SUPPRESS_HELP) isolateserver.add_isolate_server_options(data_group) parser.add_option_group(data_group) isolateserver.add_cache_options(parser) parser.set_defaults(cache='cache') debug_group = optparse.OptionGroup(parser, 'Debugging') debug_group.add_option( '--leak-temp-dir', action='store_true', help='Deliberately leak isolate\'s temp dir for later examination ' '[default: %default]') parser.add_option_group(debug_group) auth.add_auth_options(parser) options, args = parser.parse_args(args) if not options.isolated: parser.error('--isolated is required.') auth.process_auth_options(parser, options) isolateserver.process_isolate_server_options(parser, options, True) cache = isolateserver.process_cache_options(options) with isolateserver.get_storage( options.isolate_server, options.namespace) as storage: # Hashing schemes used by |storage| and |cache| MUST match. assert storage.hash_algo == cache.hash_algo return run_tha_test( options.isolated, storage, cache, options.leak_temp_dir, args)
def main(args): tools.disable_buffering() parser = tools.OptionParserWithLogging( usage='%prog <options>', version=__version__, log_file=RUN_ISOLATED_LOG_FILE) data_group = optparse.OptionGroup(parser, 'Data source') data_group.add_option( '-s', '--isolated', help='Hash of the .isolated to grab from the isolate server') data_group.add_option( '-H', dest='isolated', help=optparse.SUPPRESS_HELP) isolateserver.add_isolate_server_options(data_group) parser.add_option_group(data_group) isolateserver.add_cache_options(parser) parser.set_defaults(cache='cache') debug_group = optparse.OptionGroup(parser, 'Debugging') debug_group.add_option( '--leak-temp-dir', action='store_true', help='Deliberately leak isolate\'s temp dir for later examination ' '[default: %default]') parser.add_option_group(debug_group) auth.add_auth_options(parser) options, args = parser.parse_args(args) if not options.isolated: parser.error('--isolated is required.') auth.process_auth_options(parser, options) isolateserver.process_isolate_server_options(parser, options, True) cache = isolateserver.process_cache_options(options) with isolateserver.get_storage( options.isolate_server, options.namespace) as storage: # Hashing schemes used by |storage| and |cache| MUST match. assert storage.hash_algo == cache.hash_algo return run_tha_test( options.isolated, storage, cache, options.leak_temp_dir, args)
def main(args): tools.disable_buffering() parser = logging_utils.OptionParserWithLogging( usage="%prog <options>", version=__version__, log_file=RUN_ISOLATED_LOG_FILE ) parser.add_option( "--json", help="dump output metadata to json file. When used, run_isolated returns " "non-zero only on internal failure", ) data_group = optparse.OptionGroup(parser, "Data source") data_group.add_option("-s", "--isolated", help="Hash of the .isolated to grab from the isolate server") isolateserver.add_isolate_server_options(data_group) parser.add_option_group(data_group) isolateserver.add_cache_options(parser) parser.set_defaults(cache="cache") debug_group = optparse.OptionGroup(parser, "Debugging") debug_group.add_option( "--leak-temp-dir", action="store_true", help="Deliberately leak isolate's temp dir for later examination " "[default: %default]", ) debug_group.add_option("--root-dir", help="Use a directory instead of a random one") parser.add_option_group(debug_group) auth.add_auth_options(parser) options, args = parser.parse_args(args) if not options.isolated: parser.error("--isolated is required.") auth.process_auth_options(parser, options) isolateserver.process_isolate_server_options(parser, options, True) cache = isolateserver.process_cache_options(options) with isolateserver.get_storage(options.isolate_server, options.namespace) as storage: # Hashing schemes used by |storage| and |cache| MUST match. assert storage.hash_algo == cache.hash_algo return run_tha_test( options.isolated, storage, cache, options.leak_temp_dir, options.json, options.root_dir, args )
def create_option_parser(): parser = logging_utils.OptionParserWithLogging( usage='%prog <options> [command to run or extra args]', version=__version__, log_file=RUN_ISOLATED_LOG_FILE) parser.add_option( '--clean', action='store_true', help= 'Cleans the cache, trimming it necessary and remove corrupted items ' 'and returns without executing anything; use with -v to know what ' 'was done') parser.add_option( '--no-clean', action='store_true', help= 'Do not clean the cache automatically on startup. This is meant for ' 'bots where a separate execution with --clean was done earlier so ' 'doing it again is redundant') parser.add_option('--use-symlinks', action='store_true', help='Use symlinks instead of hardlinks') parser.add_option( '--json', help= 'dump output metadata to json file. When used, run_isolated returns ' 'non-zero only on internal failure') parser.add_option('--hard-timeout', type='float', help='Enforce hard timeout in execution') parser.add_option('--grace-period', type='float', help='Grace period between SIGTERM and SIGKILL') parser.add_option( '--bot-file', help='Path to a file describing the state of the host. The content is ' 'defined by on_before_task() in bot_config.') parser.add_option( '--output', action='append', help='Specifies an output to return. If no outputs are specified, all ' 'files located in $(ISOLATED_OUTDIR) will be returned; ' 'otherwise, outputs in both $(ISOLATED_OUTDIR) and those ' 'specified by --output option (there can be multiple) will be ' 'returned. Note that if a file in OUT_DIR has the same path ' 'as an --output option, the --output version will be returned.') parser.add_option( '-a', '--argsfile', # This is actually handled in parse_args; it's included here purely so it # can make it into the help text. help='Specify a file containing a JSON array of arguments to this ' 'script. If --argsfile is provided, no other argument may be ' 'provided on the command line.') data_group = optparse.OptionGroup(parser, 'Data source') data_group.add_option( '-s', '--isolated', help='Hash of the .isolated to grab from the isolate server.') isolateserver.add_isolate_server_options(data_group) parser.add_option_group(data_group) isolateserver.add_cache_options(parser) cipd.add_cipd_options(parser) named_cache.add_named_cache_options(parser) debug_group = optparse.OptionGroup(parser, 'Debugging') debug_group.add_option( '--leak-temp-dir', action='store_true', help='Deliberately leak isolate\'s temp dir for later examination. ' 'Default: %default') debug_group.add_option('--root-dir', help='Use a directory instead of a random one') parser.add_option_group(debug_group) auth.add_auth_options(parser) parser.set_defaults(cache='cache', cipd_cache='cipd_cache', named_cache_root='named_caches') return parser
def create_option_parser(): parser = logging_utils.OptionParserWithLogging( usage='%prog <options> [command to run or extra args]', version=__version__, log_file=RUN_ISOLATED_LOG_FILE) parser.add_option( '--clean', action='store_true', help= 'Cleans the cache, trimming it necessary and remove corrupted items ' 'and returns without executing anything; use with -v to know what ' 'was done') parser.add_option( '--no-clean', action='store_true', help= 'Do not clean the cache automatically on startup. This is meant for ' 'bots where a separate execution with --clean was done earlier so ' 'doing it again is redundant') parser.add_option('--use-symlinks', action='store_true', help='Use symlinks instead of hardlinks') parser.add_option( '--json', help= 'dump output metadata to json file. When used, run_isolated returns ' 'non-zero only on internal failure') parser.add_option('--hard-timeout', type='float', help='Enforce hard timeout in execution') parser.add_option('--grace-period', type='float', help='Grace period between SIGTERM and SIGKILL') parser.add_option( '--bot-file', help='Path to a file describing the state of the host. The content is ' 'defined by on_before_task() in bot_config.') data_group = optparse.OptionGroup(parser, 'Data source') data_group.add_option( '-s', '--isolated', help='Hash of the .isolated to grab from the isolate server.') isolateserver.add_isolate_server_options(data_group) parser.add_option_group(data_group) isolateserver.add_cache_options(parser) cipd.add_cipd_options(parser) debug_group = optparse.OptionGroup(parser, 'Debugging') debug_group.add_option( '--leak-temp-dir', action='store_true', help='Deliberately leak isolate\'s temp dir for later examination. ' 'Default: %default') debug_group.add_option('--root-dir', help='Use a directory instead of a random one') parser.add_option_group(debug_group) auth.add_auth_options(parser) parser.set_defaults(cache='cache', cipd_cache='cipd_cache') return parser
def create_option_parser(): parser = logging_utils.OptionParserWithLogging( usage='%prog <options> [command to run or extra args]', version=__version__, log_file=RUN_ISOLATED_LOG_FILE) parser.add_option( '--clean', action='store_true', help='Cleans the cache, trimming it necessary and remove corrupted items ' 'and returns without executing anything; use with -v to know what ' 'was done') parser.add_option( '--no-clean', action='store_true', help='Do not clean the cache automatically on startup. This is meant for ' 'bots where a separate execution with --clean was done earlier so ' 'doing it again is redundant') parser.add_option( '--use-symlinks', action='store_true', help='Use symlinks instead of hardlinks') parser.add_option( '--json', help='dump output metadata to json file. When used, run_isolated returns ' 'non-zero only on internal failure') parser.add_option( '--hard-timeout', type='float', help='Enforce hard timeout in execution') parser.add_option( '--grace-period', type='float', help='Grace period between SIGTERM and SIGKILL') parser.add_option( '--raw-cmd', action='store_true', help='Ignore the isolated command, use the one supplied at the command ' 'line') parser.add_option( '--relative-cwd', help='Ignore the isolated \'relative_cwd\' and use this one instead; ' 'requires --raw-cmd') parser.add_option( '--env', default=[], action='append', help='Environment variables to set for the child process') parser.add_option( '--env-prefix', default=[], action='append', help='Specify a VAR=./path/fragment to put in the environment variable ' 'before executing the command. The path fragment must be relative ' 'to the isolated run directory, and must not contain a `..` token. ' 'The path will be made absolute and prepended to the indicated ' '$VAR using the OS\'s path separator. Multiple items for the same ' '$VAR will be prepended in order.') parser.add_option( '--bot-file', help='Path to a file describing the state of the host. The content is ' 'defined by on_before_task() in bot_config.') parser.add_option( '--switch-to-account', help='If given, switches LUCI_CONTEXT to given logical service account ' '(e.g. "task" or "system") before launching the isolated process.') parser.add_option( '--output', action='append', help='Specifies an output to return. If no outputs are specified, all ' 'files located in $(ISOLATED_OUTDIR) will be returned; ' 'otherwise, outputs in both $(ISOLATED_OUTDIR) and those ' 'specified by --output option (there can be multiple) will be ' 'returned. Note that if a file in OUT_DIR has the same path ' 'as an --output option, the --output version will be returned.') parser.add_option( '-a', '--argsfile', # This is actually handled in parse_args; it's included here purely so it # can make it into the help text. help='Specify a file containing a JSON array of arguments to this ' 'script. If --argsfile is provided, no other argument may be ' 'provided on the command line.') data_group = optparse.OptionGroup(parser, 'Data source') data_group.add_option( '-s', '--isolated', help='Hash of the .isolated to grab from the isolate server.') isolateserver.add_isolate_server_options(data_group) parser.add_option_group(data_group) isolateserver.add_cache_options(parser) cipd.add_cipd_options(parser) group = optparse.OptionGroup(parser, 'Named caches') group.add_option( '--named-cache', dest='named_caches', action='append', nargs=2, default=[], help='A named cache to request. Accepts two arguments, name and path. ' 'name identifies the cache, must match regex [a-z0-9_]{1,4096}. ' 'path is a path relative to the run dir where the cache directory ' 'must be put to. ' 'This option can be specified more than once.') group.add_option( '--named-cache-root', default='named_caches', help='Cache root directory. Default=%default') parser.add_option_group(group) debug_group = optparse.OptionGroup(parser, 'Debugging') debug_group.add_option( '--leak-temp-dir', action='store_true', help='Deliberately leak isolate\'s temp dir for later examination. ' 'Default: %default') debug_group.add_option( '--root-dir', help='Use a directory instead of a random one') parser.add_option_group(debug_group) auth.add_auth_options(parser) parser.set_defaults(cache='cache', cipd_cache='cipd_cache') return parser