From 9cc26a24bb313e07acd2fc79a8c96e30de1f6631 Mon Sep 17 00:00:00 2001 From: Clay Gerrard Date: Mon, 19 Jul 2010 09:37:07 -0500 Subject: [PATCH 1/4] updated install_requires in setup.py --- setup.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/setup.py b/setup.py index 56528ed776..952351b794 100644 --- a/setup.py +++ b/setup.py @@ -35,6 +35,12 @@ setup( 'Programming Language :: Python :: 2.6', 'Environment :: No Input/Output (Daemon)', ], + install_requires=[ + 'eventlet', + 'simplejson', # included for speed + 'webob', + 'xattr', + ], scripts=['bin/st', 'bin/swift-account-auditor', 'bin/swift-account-audit', 'bin/swift-account-reaper', 'bin/swift-account-replicator', 'bin/swift-account-server', From 527f8c95e16e499d265fd8a11d14c8ee84afe119 Mon Sep 17 00:00:00 2001 From: Clay Gerrard Date: Mon, 19 Jul 2010 10:21:00 -0500 Subject: [PATCH 2/4] updated install_requires with version info --- setup.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index 952351b794..714f4f5fe0 100644 --- a/setup.py +++ b/setup.py @@ -36,10 +36,10 @@ setup( 'Environment :: No Input/Output (Daemon)', ], install_requires=[ - 'eventlet', - 'simplejson', # included for speed - 'webob', - 'xattr', + 'eventlet>=0.9.9', + 'simplejson>=2.0.9', # included for speed + 'WebOb>=0.9.8', + 'xattr>=0.4', ], scripts=['bin/st', 'bin/swift-account-auditor', 'bin/swift-account-audit', 'bin/swift-account-reaper', From 4d664af46c4bc75d25544e0b1b25db7b45a0ae38 Mon Sep 17 00:00:00 2001 From: Clay Gerrard Date: Mon, 19 Jul 2010 12:31:54 -0500 Subject: [PATCH 3/4] changed version of eventlet in install requires to match python-eventlet --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 714f4f5fe0..db7fc8d55f 100644 --- a/setup.py +++ b/setup.py @@ -36,7 +36,7 @@ setup( 'Environment :: No Input/Output (Daemon)', ], install_requires=[ - 'eventlet>=0.9.9', + 'eventlet>=0.9.1', 'simplejson>=2.0.9', # included for speed 'WebOb>=0.9.8', 'xattr>=0.4', From d0fc23ba1d71e8b03c77d92e06c96a39b067a2a8 Mon Sep 17 00:00:00 2001 From: Clay Gerrard Date: Mon, 19 Jul 2010 15:40:57 -0500 Subject: [PATCH 4/4] refactored swift-init.do_start to handle missing config files --- bin/swift-init | 71 ++++++++++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 31 deletions(-) diff --git a/bin/swift-init b/bin/swift-init index be8a337c36..47f88bbe93 100755 --- a/bin/swift-init +++ b/bin/swift-init @@ -70,7 +70,27 @@ def do_start(server, once=False): print "Unable to increase file descriptor limit. Running as non-root?" os.environ['PYTHON_EGG_CACHE'] = '/tmp' + def write_pid_file(pid_file, pid): + dir, file = os.path.split(pid_file) + if not os.path.exists(dir): + try: + os.mkdirs(dir) + except OSError, err: + if err.errno == errno.EACCES: + sys.exit('Unable to create %s. Running as non-root?' % dir) + fp = open(pid_file, 'w') + fp.write('%d\n' % pid) + fp.close() + def launch(ini_file, pid_file): + cmd = 'swift-%s' % server + args = [server, ini_file] + if once: + print 'Running %s once' % server + args.append('once') + else: + print 'Starting %s' % server + pid = os.fork() if pid == 0: os.setsid() @@ -90,38 +110,27 @@ def do_start(server, once=False): print 'unable to launch %s' % server sys.exit(0) else: - fp = open(pid_file, 'w') - fp.write('%d\n' % pid) - fp.close() - try: - os.mkdir('/var/run/swift') - except OSError, err: - if err.errno == errno.EACCES: - sys.exit('Unable to create /var/run/swift. Running as non-root?') - elif err.errno != errno.EEXIST: - raise - if os.path.exists('/etc/swift/%s-server.conf' % server_type): - if once: - print 'Running %s once' % server - else: - print 'Starting %s' % server - launch('/etc/swift/%s-server.conf' % server_type, - '/var/run/swift/%s.pid' % server) - else: - try: - os.mkdir('/var/run/swift/%s' % server) - except OSError, err: - if err.errno == errno.EACCES: - sys.exit( - 'Unable to create /var/run/swift. Running as non-root?') - elif err.errno != errno.EEXIST: - raise - if once: - print 'Running %ss once' % server - else: - print 'Starting %ss' % server + write_pid_file(pid_file, pid) + + ini_file = '/etc/swift/%s-server.conf' % server_type + if os.path.exists(ini_file): + # single config file over-rides config dirs + pid_file = '/var/run/swift/%s.pid' % server + launch_args = [(ini_file, pid_file)] + elif os.path.exists('/etc/swift/%s-server/' % server_type): + # found config directory, searching for config file(s) + launch_args = [] for num, ini_file in enumerate(glob.glob('/etc/swift/%s-server/*.conf' % server_type)): - launch(ini_file, '/var/run/swift/%s/%d.pid' % (server, num)) + pid_file = '/var/run/swift/%s/%d.pid' % (server, num) + # start a server for each ini_file found + launch_args.append((ini_file, pid_file)) + else: + # maybe there's a config file(s) out there, but I couldn't find it! + sys.exit('Unable to locate config file for %s. %s does not exist?' % (server, ini_file)) + + # start all servers + for ini_file, pid_file in launch_args: + launch(ini_file, pid_file) def do_stop(server, graceful=False): if graceful and server in GRACEFUL_SHUTDOWN_SERVERS: