user.create(master_zone, ['--display-name', 'TestUser',
'--gen-access-key', '--gen-secret'])
+ # create non-account user
+ log.info('creating non-account user..')
+ non_account_user = multisite.User('rgw-multisite-test-non-account-user')
+ non_account_user.create(master_zone, ['--display-name', 'NonAccountUser',
+ '--gen-access-key', '--gen-secret'])
+ # create non-account alt user
+ log.info('creating non-account alt user..')
+ non_account_alt_user = multisite.User('rgw-multisite-test-non-account-alt-user')
+ non_account_alt_user.create(master_zone, ['--display-name', 'NonAccountAltUser',
+ '--gen-access-key', '--gen-secret'])
+
config = self.config.get('config', {})
- tests.init_multi(realm, user, tests.Config(**config))
+ tests.init_multi(realm, user, non_account_user, non_account_alt_user, tests.Config(**config))
tests.realm_meta_checkpoint(realm)
def begin(self):
def get_gateway_connection(gateway, credentials):
""" connect to the given gateway """
+ # Always create a new connection to the gateway to ensure each set of credentials gets its own connection
+ conn = boto.connect_s3(aws_access_key_id = credentials.access_key,
+ aws_secret_access_key = credentials.secret,
+ host = gateway.host,
+ port = gateway.port,
+ is_secure = False,
+ calling_format = boto.s3.connection.OrdinaryCallingFormat())
if gateway.connection is None:
- gateway.connection = boto.connect_s3(
- aws_access_key_id = credentials.access_key,
- aws_secret_access_key = credentials.secret,
- host = gateway.host,
- port = gateway.port,
- is_secure = False,
- calling_format = boto.s3.connection.OrdinaryCallingFormat())
- return gateway.connection
+ gateway.connection = conn
+ return conn
def get_gateway_secure_connection(gateway, credentials):
""" secure connect to the given gateway """
def get_gateway_s3_client(gateway, credentials, region):
""" connect to boto3 s3 client api of the given gateway """
+ # Always create a new connection to the gateway to ensure each set of credentials gets its own connection
+ s3_client = boto3.client('s3',
+ endpoint_url='http://' + gateway.host + ':' + str(gateway.port),
+ aws_access_key_id=credentials.access_key,
+ aws_secret_access_key=credentials.secret,
+ region_name=region)
if gateway.s3_client is None:
- gateway.s3_client = boto3.client('s3',
- endpoint_url='http://' + gateway.host + ':' + str(gateway.port),
- aws_access_key_id=credentials.access_key,
- aws_secret_access_key=credentials.secret,
- region_name=region)
- return gateway.s3_client
+ gateway.s3_client = s3_client
+ return s3_client
def get_gateway_sns_client(gateway, credentials, region):
# implementations of these interfaces by calling init_multi()
realm = None
user = None
+non_account_user = None
+non_account_alt_user = None
config = None
-def init_multi(_realm, _user, _config=None):
+def init_multi(_realm, _user, _non_account_user, _non_account_alt_user, _config=None):
global realm
realm = _realm
global user
user = _user
+ global non_account_user
+ non_account_user = _non_account_user
+ global non_account_alt_user
+ non_account_alt_user = _non_account_alt_user
global config
config = _config or Config()
realm_meta_checkpoint(realm)
def __init__(self, zonegroup):
self.zonegroup = zonegroup
self.zones = []
+ self.non_account_zones = []
+ self.non_account_alt_zones = []
self.ro_zones = []
+ self.non_account_ro_zones = []
+ self.non_account_alt_ro_zones = []
self.rw_zones = []
+ self.non_account_rw_zones = []
+ self.non_account_alt_rw_zones = []
self.master_zone = None
for z in zonegroup.zones:
zone_conn = z.get_conn(user.credentials)
+ non_account_zone_conn = z.get_conn(non_account_user.credentials)
+ non_account_alt_zone_conn = z.get_conn(non_account_alt_user.credentials)
self.zones.append(zone_conn)
+ self.non_account_zones.append(non_account_zone_conn)
+ self.non_account_alt_zones.append(non_account_alt_zone_conn)
if z.is_read_only():
self.ro_zones.append(zone_conn)
+ self.non_account_ro_zones.append(non_account_zone_conn)
+ self.non_account_alt_ro_zones.append(non_account_alt_zone_conn)
else:
self.rw_zones.append(zone_conn)
+ self.non_account_rw_zones.append(non_account_zone_conn)
+ self.non_account_alt_rw_zones.append(non_account_alt_zone_conn)
if z == zonegroup.master_zone:
self.master_zone = zone_conn
user_creds = gen_credentials()
user = multisite.User('tester', tenant=args.tenant, account='RGW11111111111111111')
+ non_account_user_creds = gen_credentials()
+ non_account_user = multisite.User('nonaccounttester', tenant=args.tenant)
+
+ non_account_alt_user_creds = gen_credentials()
+ non_account_alt_user = multisite.User('nonaccountalttester', tenant=args.tenant)
+
realm = multisite.Realm('r')
if bootstrap:
# create the realm on c1
arg = ['--display-name', 'TestUser']
arg += user_creds.credential_args()
user.create(zone, arg)
+ # create non-account test user
+ arg = ['--display-name', 'NonAccountTestUser']
+ arg += non_account_user_creds.credential_args()
+ non_account_user.create(zone, arg)
+ # create non-account alt test user
+ arg = ['--display-name', 'NonAccountAltTestUser']
+ arg += non_account_alt_user_creds.credential_args()
+ non_account_alt_user.create(zone, arg)
else:
# read users and update keys
admin_user.info(zone)
admin_creds = admin_user.credentials[0]
- arg = []
- user.info(zone, arg)
+ user.info(zone)
user_creds = user.credentials[0]
+ non_account_user.info(zone)
+ non_account_user_creds = non_account_user.credentials[0]
+ non_account_alt_user.info(zone)
+ non_account_alt_user_creds = non_account_alt_user.credentials[0]
if not bootstrap:
period.get(c1)
checkpoint_delay=args.checkpoint_delay,
reconfigure_delay=args.reconfigure_delay,
tenant=args.tenant)
- init_multi(realm, user, config)
+ init_multi(realm, user, non_account_user, non_account_alt_user, config)
def setup_module():
init(False)