self.create_rgw_bucket(self.rgw_bucket_name)
else:
raise NonexistentStore()
- else:
+ elif self.owner == None:
# Figure out what owner we should use when creating objects.
# We use the owner of the destination bucket
ioctx = self.rados.open_ioctx(RGW_META_BUCKET_NAME)
bin_ = ioctx.get_xattr(self.rgw_bucket_name, RGW_META_ACL)
xml = lrgw.acl_bin2xml(bin_)
acl = AclPolicy.from_xml(xml)
- self.bucket_owner = acl.owner_id
+ self.owner = acl.owner_id
if (opts.more_verbose):
- print "using owner \"%s\"" % self.bucket_owner
+ print "using owner \"%s\"" % self.owner
finally:
ioctx.close()
self.ioctx = self.rados.open_ioctx(self.rgw_bucket_name)
def create_rgw_bucket(self, rgw_bucket_name):
global lrgw
""" Create an rgw bucket named 'rgw_bucket_name' """
- if (self.bucket_owner == None):
+ if (self.owner == None):
raise Exception("Can't create a bucket without knowing who " +
"should own it. Please set DST_OWNER")
self.rados.create_pool(self.rgw_bucket_name)
else:
return random.randint(9999, 99999)
+def get_s3_connection(conf):
+ return boto.s3.connection.S3Connection(
+ aws_access_key_id = conf["access_key"],
+ aws_secret_access_key = conf["secret_key"],
+ host = conf["host"],
+ # TODO support & test all variations
+ calling_format=boto.s3.connection.OrdinaryCallingFormat(),
+ is_secure=False,
+ )
+
def read_s3_config(cfg, section, sconfig, name):
# TODO: support 'port', 'is_secure'
sconfig[name] = {}
pass
# Make sure connection works
try:
- conn = boto.s3.connection.S3Connection(
- aws_access_key_id = sconfig[name]["access_key"],
- aws_secret_access_key = sconfig[name]["secret_key"],
- host = sconfig[name]["host"],
- # TODO support & test all variations
- calling_format=boto.s3.connection.OrdinaryCallingFormat(),
- )
+ conn = get_s3_connection(sconfig[name])
except Exception, e:
print >>stderr, "error initializing connection!"
raise
###### ObSyncTestBucket #######
class ObSyncTestBucket(object):
- def __init__(self, name, url, akey, skey, consistency):
- self.name = name
- self.url = url
- self.akey = akey
- self.skey = skey
- self.consistency = consistency
+ def __init__(self, conf):
+ self.conf = conf
+ self.name = conf["bucket_name"]
+ self.url = "s3://" + conf["host"] + "/" + conf["bucket_name"]
+ self.akey = conf["access_key"]
+ self.skey = conf["secret_key"]
+ self.consistency = get_optional(conf, "consistency")
def to_src(self, env, args):
env["SRC_AKEY"] = self.akey
env["SRC_SKEY"] = self.skey
# parse configuration file
sconfig, rconfig = read_config()
opts.buckets = []
-opts.buckets.append(ObSyncTestBucket(sconfig["main"]["bucket_name"], \
- "s3://" + sconfig["main"]["host"] + "/" + sconfig["main"]["bucket_name"], \
- sconfig["main"]["access_key"], sconfig["main"]["secret_key"],
- get_optional(sconfig["main"], "consistency")))
-opts.buckets.append(ObSyncTestBucket(sconfig["alt"]["bucket_name"], \
- "s3://" + sconfig["alt"]["host"] + "/" + sconfig["alt"]["bucket_name"], \
- sconfig["alt"]["access_key"], sconfig["alt"]["secret_key"],
- get_optional(sconfig["alt"], "consistency")))
+opts.buckets.append(ObSyncTestBucket(sconfig["main"]))
+opts.buckets.append(ObSyncTestBucket(sconfig["alt"]))
opts.pools = []
if (rconfig.has_key("main")):
obsync_check("file://%s/empty1" % tdir, opts.buckets[0],
["--delete-after"])
+def rmbucket(bucket):
+ conn = get_s3_connection(bucket.conf)
+ bucket = conn.get_bucket(bucket.name)
+ bucket.delete()
+
# rgw target tests
if len(opts.pools) > 0:
- print "testing rgw target"
+ rmbucket(opts.buckets[0])
os.mkdir("%s/rgw1" % tdir)
f = open("%s/rgw1/aaa" % tdir, 'w')
f.write("aaa")
f = open("%s/rgw1/brick" % tdir, 'w')
f.write("br\0ick")
f.close()
- obsync_check("%s/rgw1" % tdir, opts.pools[0], [])
- print "testing rgw source"
+ # we should fail here, because we didn't supply -c, and the bucket
+ # doesn't exist
+ ret = obsync("%s/rgw1" % tdir, opts.pools[0], [])
+ if (ret == 0):
+ raise RuntimeError("expected this call to obsync to fail, because \
+ we didn't supply -c. But it succeeded.")
+ if (opts.verbose):
+ print "first rgw: call failed as expected."
+ print "testing rgw target with --create"
+ obsync_check("%s/rgw1" % tdir, opts.pools[0], ["--create"])
obsync_check(opts.pools[0], "%s/rgw2" % tdir, ["-c"])
compare_directories("%s/rgw1" % tdir, "%s/rgw2" % tdir, compare_xattr = False)
# some tests with xattrs
obsync_check(opts.pools[0], "%s/rgw3" % tdir, ["-c"])
compare_directories("%s/rgw2" % tdir, "%s/rgw3" % tdir, compare_xattr = True)
-# print "testing rgw target with --create"
-# obsync_check("%s/rgw1" % tdir, opts.pools[0], ["--create"])
-
# test escaping
os.mkdir("%s/escape_dir1" % tdir)
f = open("%s/escape_dir1/$$foo" % tdir, 'w')