def test_parse_builder_ring_filename_args(self): args = "swift-ring-builder object.builder write_ring" self.assertEquals(("object.builder", "object.ring.gz"), parse_builder_ring_filename_args(args.split())) args = "swift-ring-builder container.ring.gz write_builder" self.assertEquals(("container.builder", "container.ring.gz"), parse_builder_ring_filename_args(args.split())) # builder name arg should always fall through args = "swift-ring-builder test create" self.assertEquals(("test", "test.ring.gz"), parse_builder_ring_filename_args(args.split())) args = "swift-ring-builder my.file.name create" self.assertEquals(("my.file.name", "my.file.name.ring.gz"), parse_builder_ring_filename_args(args.split()))
def test_parse_builder_ring_filename_args(self): args = 'swift-ring-builder object.builder write_ring' self.assertEqual(('object.builder', 'object.ring.gz'), parse_builder_ring_filename_args(args.split())) args = 'swift-ring-builder container.ring.gz write_builder' self.assertEqual(('container.builder', 'container.ring.gz'), parse_builder_ring_filename_args(args.split())) # builder name arg should always fall through args = 'swift-ring-builder test create' self.assertEqual(('test', 'test.ring.gz'), parse_builder_ring_filename_args(args.split())) args = 'swift-ring-builder my.file.name create' self.assertEqual(('my.file.name', 'my.file.name.ring.gz'), parse_builder_ring_filename_args(args.split()))
def test_parse_builder_ring_filename_args(self): args = 'swift-ring-builder object.builder write_ring' self.assertEquals(( 'object.builder', 'object.ring.gz' ), parse_builder_ring_filename_args(args.split())) args = 'swift-ring-builder container.ring.gz write_builder' self.assertEquals(( 'container.builder', 'container.ring.gz' ), parse_builder_ring_filename_args(args.split())) # builder name arg should always fall through args = 'swift-ring-builder test create' self.assertEquals(( 'test', 'test.ring.gz' ), parse_builder_ring_filename_args(args.split())) args = 'swift-ring-builder my.file.name create' self.assertEquals(( 'my.file.name', 'my.file.name.ring.gz' ), parse_builder_ring_filename_args(args.split()))
def main(arguments=None): global argv, backup_dir, builder, builder_file, ring_file if arguments: argv = arguments else: argv = sys_argv if len(argv) < 2: print "swift-ring-builder %(MAJOR_VERSION)s.%(MINOR_VERSION)s\n" % \ globals() print Commands.default.__doc__.strip() print cmds = [c for c, f in Commands.__dict__.iteritems() if f.__doc__ and c[0] != '_' and c != 'default'] cmds.sort() for cmd in cmds: print Commands.__dict__[cmd].__doc__.strip() print print parse_search_value.__doc__.strip() print for line in wrap(' '.join(cmds), 79, initial_indent='Quick list: ', subsequent_indent=' '): print line print('Exit codes: 0 = operation successful\n' ' 1 = operation completed with warnings\n' ' 2 = error') exit(EXIT_SUCCESS) builder_file, ring_file = parse_builder_ring_filename_args(argv) if exists(builder_file): builder = RingBuilder.load(builder_file) elif len(argv) < 3 or argv[2] not in('create', 'write_builder'): print 'Ring Builder file does not exist: %s' % argv[1] exit(EXIT_ERROR) backup_dir = pathjoin(dirname(argv[1]), 'backups') try: mkdir(backup_dir) except OSError as err: if err.errno != EEXIST: raise if len(argv) == 2: command = "default" else: command = argv[2] if argv[0].endswith('-safe'): try: with lock_parent_directory(abspath(argv[1]), 15): Commands.__dict__.get(command, Commands.unknown.im_func)() except exceptions.LockTimeout: print "Ring/builder dir currently locked." exit(2) else: Commands.__dict__.get(command, Commands.unknown.im_func)()
def main(arguments=None): global argv, backup_dir, builder, builder_file, ring_file if arguments: argv = arguments else: argv = sys_argv if len(argv) < 2: print "swift-ring-builder %(MAJOR_VERSION)s.%(MINOR_VERSION)s\n" % \ globals() print Commands.default.__doc__.strip() print cmds = [c for c, f in Commands.__dict__.iteritems() if f.__doc__ and c[0] != '_' and c != 'default'] cmds.sort() for cmd in cmds: print Commands.__dict__[cmd].__doc__.strip() print print parse_search_value.__doc__.strip() print for line in wrap(' '.join(cmds), 79, initial_indent='Quick list: ', subsequent_indent=' '): print line print ('Exit codes: 0 = operation successful\n' ' 1 = operation completed with warnings\n' ' 2 = error') exit(EXIT_SUCCESS) builder_file, ring_file = parse_builder_ring_filename_args(argv) if exists(builder_file): builder = RingBuilder.load(builder_file) elif len(argv) < 3 or argv[2] not in('create', 'write_builder'): print 'Ring Builder file does not exist: %s' % argv[1] exit(EXIT_ERROR) backup_dir = pathjoin(dirname(argv[1]), 'backups') try: mkdir(backup_dir) except OSError as err: if err.errno != EEXIST: raise if len(argv) == 2: command = "default" else: command = argv[2] if argv[0].endswith('-safe'): try: with lock_parent_directory(abspath(argv[1]), 15): Commands.__dict__.get(command, Commands.unknown.im_func)() except exceptions.LockTimeout: print "Ring/builder dir currently locked." exit(2) else: Commands.__dict__.get(command, Commands.unknown.im_func)()
def main(arguments=None): global argv, backup_dir, builder, builder_file, ring_file if arguments: argv = arguments else: argv = sys_argv if len(argv) < 2: print("swift-ring-builder %(MAJOR_VERSION)s.%(MINOR_VERSION)s\n" % globals()) print(Commands.default.__doc__.strip()) print() cmds = [c for c, f in Commands.__dict__.items() if f.__doc__ and not c.startswith('_') and c != 'default'] cmds.sort() for cmd in cmds: print(Commands.__dict__[cmd].__doc__.strip()) print() print(parse_search_value.__doc__.strip()) print() for line in wrap(' '.join(cmds), 79, initial_indent='Quick list: ', subsequent_indent=' '): print(line) print('Exit codes: 0 = operation successful\n' ' 1 = operation completed with warnings\n' ' 2 = error') exit(EXIT_SUCCESS) builder_file, ring_file = parse_builder_ring_filename_args(argv) if builder_file != argv[1]: print('Note: using %s instead of %s as builder file' % ( builder_file, argv[1])) try: builder = RingBuilder.load(builder_file) except exceptions.UnPicklingError as e: print(e) exit(EXIT_ERROR) except (exceptions.FileNotFoundError, exceptions.PermissionError) as e: if len(argv) < 3 or argv[2] not in('create', 'write_builder'): print(e) exit(EXIT_ERROR) except Exception as e: print('Problem occurred while reading builder file: %s. %s' % (builder_file, e)) exit(EXIT_ERROR) backup_dir = pathjoin(dirname(builder_file), 'backups') try: mkdir(backup_dir) except OSError as err: if err.errno != EEXIST: raise if len(argv) == 2: command = "default" else: command = argv[2] if argv[0].endswith('-safe'): try: with lock_parent_directory(abspath(builder_file), 15): Commands.__dict__.get(command, Commands.unknown.__func__)() except exceptions.LockTimeout: print("Ring/builder dir currently locked.") exit(2) else: Commands.__dict__.get(command, Commands.unknown.__func__)()
def main(arguments=None): global argv, backup_dir, builder, builder_file, ring_file if arguments: argv = arguments else: argv = sys_argv if len(argv) < 2: print("swift-ring-builder %(MAJOR_VERSION)s.%(MINOR_VERSION)s\n" % globals()) print(Commands.default.__doc__.strip()) print() cmds = [ c for c, f in Commands.__dict__.items() if f.__doc__ and c[0] != '_' and c != 'default' ] cmds.sort() for cmd in cmds: print(Commands.__dict__[cmd].__doc__.strip()) print() print(parse_search_value.__doc__.strip()) print() for line in wrap(' '.join(cmds), 79, initial_indent='Quick list: ', subsequent_indent=' '): print(line) print('Exit codes: 0 = operation successful\n' ' 1 = operation completed with warnings\n' ' 2 = error') exit(EXIT_SUCCESS) builder_file, ring_file = parse_builder_ring_filename_args(argv) if builder_file != argv[1]: print('Note: using %s instead of %s as builder file' % (builder_file, argv[1])) try: builder = RingBuilder.load(builder_file) except exceptions.UnPicklingError as e: print(e) exit(EXIT_ERROR) except (exceptions.FileNotFoundError, exceptions.PermissionError) as e: if len(argv) < 3 or argv[2] not in ('create', 'write_builder'): print(e) exit(EXIT_ERROR) except Exception as e: print('Problem occurred while reading builder file: %s. %s' % (builder_file, e)) exit(EXIT_ERROR) backup_dir = pathjoin(dirname(builder_file), 'backups') try: mkdir(backup_dir) except OSError as err: if err.errno != EEXIST: raise if len(argv) == 2: command = "default" else: command = argv[2] if argv[0].endswith('-safe'): try: with lock_parent_directory(abspath(builder_file), 15): Commands.__dict__.get(command, Commands.unknown.__func__)() except exceptions.LockTimeout: print("Ring/builder dir currently locked.") exit(2) else: Commands.__dict__.get(command, Commands.unknown.__func__)()
def main(arguments=None): global argv, backup_dir, builder, builder_file, ring_file if arguments is not None: argv = arguments else: argv = sys_argv if len(argv) < 2: print("swift-ring-builder %(MAJOR_VERSION)s.%(MINOR_VERSION)s\n" % globals()) print(Commands.default.__doc__.strip()) print() cmds = [c for c in dir(Commands) if getattr(Commands, c).__doc__ and not c.startswith("_") and c != "default"] cmds.sort() for cmd in cmds: print(getattr(Commands, cmd).__doc__.strip()) print() print(parse_search_value.__doc__.strip()) print() for line in wrap(" ".join(cmds), 79, initial_indent="Quick list: ", subsequent_indent=" "): print(line) print( "Exit codes: 0 = operation successful\n" " 1 = operation completed with warnings\n" " 2 = error" ) exit(EXIT_SUCCESS) builder_file, ring_file = parse_builder_ring_filename_args(argv) if builder_file != argv[1]: print("Note: using %s instead of %s as builder file" % (builder_file, argv[1])) try: builder = RingBuilder.load(builder_file) except exceptions.UnPicklingError as e: print(e) exit(EXIT_ERROR) except (exceptions.FileNotFoundError, exceptions.PermissionError) as e: if len(argv) < 3 or argv[2] not in ("create", "write_builder"): print(e) exit(EXIT_ERROR) except Exception as e: print("Problem occurred while reading builder file: %s. %s" % (builder_file, e)) exit(EXIT_ERROR) backup_dir = pathjoin(dirname(builder_file), "backups") try: mkdir(backup_dir) except OSError as err: if err.errno != EEXIST: raise if len(argv) == 2: command = "default" else: command = argv[2] if argv[0].endswith("-safe"): try: with lock_parent_directory(abspath(builder_file), 15): getattr(Commands, command, Commands.unknown)() except exceptions.LockTimeout: print("Ring/builder dir currently locked.") exit(2) else: getattr(Commands, command, Commands.unknown)()
def main(arguments=None): global argv, backup_dir, builder, builder_file, ring_file if arguments is not None: argv = arguments else: argv = sys_argv if len(argv) < 2: print("swift-ring-builder %(MAJOR_VERSION)s.%(MINOR_VERSION)s\n" % globals()) print(Commands.default.__doc__.strip()) print() cmds = [ c for c in dir(Commands) if getattr(Commands, c).__doc__ and not c.startswith('_') and c != 'default' ] cmds.sort() for cmd in cmds: print(getattr(Commands, cmd).__doc__.strip()) print() print(parse_search_value.__doc__.strip()) print() for line in wrap(' '.join(cmds), 79, initial_indent='Quick list: ', subsequent_indent=' '): print(line) print('Exit codes: 0 = operation successful\n' ' 1 = operation completed with warnings\n' ' 2 = error') exit(EXIT_SUCCESS) # 1、解析参数,返回builder_file和ring_file的元组,builder_file是以.builder结尾,ring_file是以.ring.gz结尾 builder_file, ring_file = parse_builder_ring_filename_args(argv) if builder_file != argv[1]: print('Note: using %s instead of %s as builder file' % (builder_file, argv[1])) # 2、读取builder_file文件,生成RingBuilder对象实例 try: builder = RingBuilder.load(builder_file) except exceptions.UnPicklingError as e: print(e) exit(EXIT_ERROR) except (exceptions.FileNotFoundError, exceptions.PermissionError) as e: if len(argv) < 3 or argv[2] not in ('create', 'write_builder'): print(e) exit(EXIT_ERROR) except Exception as e: print('Problem occurred while reading builder file: %s. %s' % (builder_file, e)) exit(EXIT_ERROR) # 3、生成备份目录 backup_dir = pathjoin(dirname(builder_file), 'backups') try: mkdir(backup_dir) except OSError as err: if err.errno != EEXIST: raise if len(argv) == 2: command = "default" else: command = argv[2] # 4、调用运行command中指定的处理ring的方法; if argv[0].endswith('-safe'): try: with lock_parent_directory(abspath(builder_file), 15): getattr(Commands, command, Commands.unknown)() except exceptions.LockTimeout: print("Ring/builder dir currently locked.") exit(2) else: getattr(Commands, command, Commands.unknown)()