#k.set_metadata("Content-Type", mime)
k.set_contents_from_filename(local_copy.path)
if (src_acl.acl_policy != None):
+ ex = None
for retry_num in S3RetryIterator.create():
try:
xml = src_acl.acl_policy.to_xml()
return self
def next(self):
t = self.cur_try
+ if (os.environ.has_key("DST_CONSISTENCY") and \
+ os.environ["DST_CONSISTENCY"] == "read_after_write"):
+ raise StopIteration
if (self.cur_try >= len(self.try_times)):
raise StopIteration
sleep_time = self.try_times[self.cur_try]
config[name] = {}
for var in [ 'access_key', 'host', 'secret_key', 'user_id',
- 'display_name', 'email', ]:
+ 'display_name', 'email', 'consistency', ]:
try:
config[name][var] = cfg.get(section, var)
except ConfigParser.NoOptionError:
full.append(dst.url)
e["DST_AKEY"] = dst.akey
e["DST_SKEY"] = dst.skey
+ if (dst.consistency != None):
+ e["DST_CONSISTENCY"] = dst.consistency
else:
full.append(dst)
full.extend(misc)
def xuser(src, dst):
return [ "--xuser", config[src]["user_id"] + "=" + config[dst]["user_id"]]
+def get_optional(h, k):
+ if (h.has_key(k)):
+ print "found " + str(h[k])
+ return h[k]
+ else:
+ print "found nothing"
+ return None
+
###### ObSyncTestBucket #######
class ObSyncTestBucket(object):
- def __init__(self, name, url, akey, skey):
+ def __init__(self, name, url, akey, skey, consistency):
self.name = name
self.url = url
self.akey = akey
self.skey = skey
+ self.consistency = consistency
###### Main #######
# change directory to obsync directory
opts.buckets = []
opts.buckets.append(ObSyncTestBucket(config["main"]["bucket_name"], \
"s3://" + config["main"]["host"] + "/" + config["main"]["bucket_name"], \
- config["main"]["access_key"], config["main"]["secret_key"]))
+ config["main"]["access_key"], config["main"]["secret_key"],
+ get_optional(config["main"], "consistency")))
opts.buckets.append(ObSyncTestBucket(config["alt"]["bucket_name"], \
"s3://" + config["alt"]["host"] + "/" + config["alt"]["bucket_name"], \
- config["alt"]["access_key"], config["alt"]["secret_key"]))
+ config["alt"]["access_key"], config["alt"]["secret_key"],
+ get_optional(config["alt"], "consistency")))
if not config["main"]["user_id"]:
raise Exception("You must specify a user_id for the main section.")