diff --git a/bin/swift b/bin/swift index 059c376e..947ef1c2 100755 --- a/bin/swift +++ b/bin/swift @@ -100,7 +100,7 @@ class QueueFunctionThread(Thread): self.queue.task_done() st_delete_help = ''' -delete --all OR delete container [--leave-segments] [object] [object] ... +delete [options] --all OR delete container [options] [object] [object] ... Deletes everything in the account (with --all), or everything in a container, or a list of objects depending on the args given. Segments of manifest objects will be deleted as well, unless you specify the @@ -114,6 +114,12 @@ def st_delete(parser, args, print_queue, error_queue): parser.add_option('', '--leave-segments', action='store_true', dest='leave_segments', default=False, help='Indicates that you want ' 'the segments of manifest objects left alone') + parser.add_option('', '--object-threads', type=int, + default=10, help='Number of threads to use for ' + 'deleting objects') + parser.add_option('', '--container-threads', type=int, + default=10, help='Number of threads to use for ' + 'deleting containers') (options, args) = parse_args(parser, args) args = args[1:] if (not args and not options.yes_all) or (args and options.yes_all): @@ -152,7 +158,7 @@ def st_delete(parser, args, print_queue, error_queue): if not segment_queue.empty(): segment_threads = [QueueFunctionThread(segment_queue, _delete_segment, create_connection()) for _junk in - xrange(10)] + xrange(options.object_threads)] for thread in segment_threads: thread.start() while not segment_queue.empty(): @@ -210,12 +216,15 @@ def st_delete(parser, args, print_queue, error_queue): error_queue.put('Container %s not found' % repr(container)) create_connection = lambda: get_conn(options) - object_threads = [QueueFunctionThread(object_queue, _delete_object, - create_connection()) for _junk in xrange(10)] + object_threads = \ + [QueueFunctionThread(object_queue, _delete_object, create_connection()) + for _junk in xrange(options.object_threads)] for thread in object_threads: thread.start() - container_threads = [QueueFunctionThread(container_queue, - _delete_container, create_connection()) for _junk in xrange(10)] + container_threads = \ + [QueueFunctionThread(container_queue, _delete_container, + create_connection()) + for _junk in xrange(options.container_threads)] for thread in container_threads: thread.start() if not args: @@ -282,6 +291,12 @@ def st_download(parser, args, print_queue, error_queue): 'account download') parser.add_option('-o', '--output', dest='out_file', help='For a single ' 'file download, stream the output to an alternate location ') + parser.add_option('', '--object-threads', type=int, + default=10, help='Number of threads to use for ' + 'downloading objects') + parser.add_option('', '--container-threads', type=int, + default=10, help='Number of threads to use for ' + 'listing containers') (options, args) = parse_args(parser, args) args = args[1:] if options.out_file == '-': @@ -387,11 +402,12 @@ def st_download(parser, args, print_queue, error_queue): create_connection = lambda: get_conn(options) object_threads = [QueueFunctionThread(object_queue, _download_object, - create_connection()) for _junk in xrange(10)] + create_connection()) for _junk in xrange(options.object_threads)] for thread in object_threads: thread.start() container_threads = [QueueFunctionThread(container_queue, - _download_container, create_connection()) for _junk in xrange(10)] + _download_container, create_connection()) + for _junk in xrange(options.container_threads)] for thread in container_threads: thread.start() if not args: @@ -704,6 +720,12 @@ def st_upload(parser, args, print_queue, error_queue): dest='leave_segments', default=False, help='Indicates that you want ' 'the older segments of manifest objects left alone (in the case of ' 'overwrites)') + parser.add_option('', '--object-threads', type=int, + default=10, help='Number of threads to use for ' + 'uploading full objects') + parser.add_option('', '--segment-threads', type=int, + default=10, help='Number of threads to use for ' + 'uploading object segments') (options, args) = parse_args(parser, args) args = args[1:] if len(args) < 2: @@ -781,7 +803,7 @@ def st_upload(parser, args, print_queue, error_queue): segment_queue = Queue(10000) segment_threads = [QueueFunctionThread(segment_queue, _segment_job, create_connection()) for _junk in - xrange(10)] + xrange(options.segment_threads)] for thread in segment_threads: thread.start() segment = 0 @@ -830,7 +852,7 @@ def st_upload(parser, args, print_queue, error_queue): if not segment_queue.empty(): segment_threads = [QueueFunctionThread(segment_queue, _segment_job, create_connection()) for _junk in - xrange(10)] + xrange(options.segment_threads)] for thread in segment_threads: thread.start() while not segment_queue.empty(): @@ -865,7 +887,7 @@ def st_upload(parser, args, print_queue, error_queue): create_connection = lambda: get_conn(options) object_threads = [QueueFunctionThread(object_queue, _object_job, - create_connection()) for _junk in xrange(10)] + create_connection()) for _junk in xrange(options.object_threads)] for thread in object_threads: thread.start() conn = create_connection()