18
18
from ConfigParser import ConfigParser
19
from optparse import OptionParser
21
21
from swift.container import server as container_server
22
22
from swift.common import db, db_replicator, utils
24
usage = "Usage: container-replicator -c CONFIG_FILE --once"
24
26
class ContainerReplicator(db_replicator.Replicator):
25
27
server_type = 'container'
26
28
ring_file = 'container.ring.gz'
29
31
default_port = 6001
31
33
if __name__ == '__main__':
32
optlist, args = getopt.getopt(sys.argv[1:], '', ['once'])
34
parser = OptionParser()
35
parser.add_option("-c", "--config", dest="config",
36
help="Path to the configuration file.")
37
parser.add_option("--once", action="store_true", dest="once",
38
help="Run the replicator once.")
35
print "Usage: container-replicator <--once> CONFIG_FILE [once]"
40
(options, args) = parser.parse_args()
39
if not c.read(args[0]):
43
if not c.read(options.config):
40
44
print "Unable to read config file."
42
once = len(args) > 1 and args[1] == 'once'
44
47
server_conf = dict(c.items('container-server'))
45
48
if c.has_section('container-replicator'):
46
49
replicator_conf = dict(c.items('container-replicator'))
48
51
print "Unable to find container-replicator config section in %s." % \
52
55
utils.drop_privileges(server_conf.get('user', 'swift'))
53
if once or '--once' in [opt[0] for opt in optlist]:
54
57
ContainerReplicator(server_conf, replicator_conf).replicate_once()
56
59
ContainerReplicator(server_conf, replicator_conf).replicate_forever()