Skip to content

Commit c22c5c1

Browse files
committed
qa/rgw: add non-account (alt) users to multisite tests
Create a user and alt user without account to test PutBucketReplication scenarios as account is not supported to call that API yet. Signed-off-by: Seena Fallah <[email protected]>
1 parent 7e53cf7 commit c22c5c1

File tree

4 files changed

+70
-19
lines changed

4 files changed

+70
-19
lines changed

qa/tasks/rgw_multisite_tests.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,19 @@ def setup(self):
7878
user.create(master_zone, ['--display-name', 'TestUser',
7979
'--gen-access-key', '--gen-secret'])
8080

81+
# create non-account user
82+
log.info('creating non-account user..')
83+
non_account_user = multisite.User('rgw-multisite-test-non-account-user')
84+
non_account_user.create(master_zone, ['--display-name', 'NonAccountUser',
85+
'--gen-access-key', '--gen-secret'])
86+
# create non-account alt user
87+
log.info('creating non-account alt user..')
88+
non_account_alt_user = multisite.User('rgw-multisite-test-non-account-alt-user')
89+
non_account_alt_user.create(master_zone, ['--display-name', 'NonAccountAltUser',
90+
'--gen-access-key', '--gen-secret'])
91+
8192
config = self.config.get('config', {})
82-
tests.init_multi(realm, user, tests.Config(**config))
93+
tests.init_multi(realm, user, non_account_user, non_account_alt_user, tests.Config(**config))
8394
tests.realm_meta_checkpoint(realm)
8495

8596
def begin(self):

src/test/rgw/rgw_multi/conn.py

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,16 @@
55

66
def get_gateway_connection(gateway, credentials):
77
""" connect to the given gateway """
8+
# Always create a new connection to the gateway to ensure each set of credentials gets its own connection
9+
conn = boto.connect_s3(aws_access_key_id = credentials.access_key,
10+
aws_secret_access_key = credentials.secret,
11+
host = gateway.host,
12+
port = gateway.port,
13+
is_secure = False,
14+
calling_format = boto.s3.connection.OrdinaryCallingFormat())
815
if gateway.connection is None:
9-
gateway.connection = boto.connect_s3(
10-
aws_access_key_id = credentials.access_key,
11-
aws_secret_access_key = credentials.secret,
12-
host = gateway.host,
13-
port = gateway.port,
14-
is_secure = False,
15-
calling_format = boto.s3.connection.OrdinaryCallingFormat())
16-
return gateway.connection
16+
gateway.connection = conn
17+
return conn
1718

1819
def get_gateway_secure_connection(gateway, credentials):
1920
""" secure connect to the given gateway """
@@ -47,13 +48,15 @@ def get_gateway_iam_connection(gateway, credentials, region):
4748

4849
def get_gateway_s3_client(gateway, credentials, region):
4950
""" connect to boto3 s3 client api of the given gateway """
51+
# Always create a new connection to the gateway to ensure each set of credentials gets its own connection
52+
s3_client = boto3.client('s3',
53+
endpoint_url='http://' + gateway.host + ':' + str(gateway.port),
54+
aws_access_key_id=credentials.access_key,
55+
aws_secret_access_key=credentials.secret,
56+
region_name=region)
5057
if gateway.s3_client is None:
51-
gateway.s3_client = boto3.client('s3',
52-
endpoint_url='http://' + gateway.host + ':' + str(gateway.port),
53-
aws_access_key_id=credentials.access_key,
54-
aws_secret_access_key=credentials.secret,
55-
region_name=region)
56-
return gateway.s3_client
58+
gateway.s3_client = s3_client
59+
return s3_client
5760

5861

5962
def get_gateway_sns_client(gateway, credentials, region):

src/test/rgw/rgw_multi/tests.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,18 @@ def __init__(self, **kwargs):
4242
# implementations of these interfaces by calling init_multi()
4343
realm = None
4444
user = None
45+
non_account_user = None
46+
non_account_alt_user = None
4547
config = None
46-
def init_multi(_realm, _user, _config=None):
48+
def init_multi(_realm, _user, _non_account_user, _non_account_alt_user, _config=None):
4749
global realm
4850
realm = _realm
4951
global user
5052
user = _user
53+
global non_account_user
54+
non_account_user = _non_account_user
55+
global non_account_alt_user
56+
non_account_alt_user = _non_account_alt_user
5157
global config
5258
config = _config or Config()
5359
realm_meta_checkpoint(realm)
@@ -468,17 +474,31 @@ class ZonegroupConns:
468474
def __init__(self, zonegroup):
469475
self.zonegroup = zonegroup
470476
self.zones = []
477+
self.non_account_zones = []
478+
self.non_account_alt_zones = []
471479
self.ro_zones = []
480+
self.non_account_ro_zones = []
481+
self.non_account_alt_ro_zones = []
472482
self.rw_zones = []
483+
self.non_account_rw_zones = []
484+
self.non_account_alt_rw_zones = []
473485
self.master_zone = None
474486

475487
for z in zonegroup.zones:
476488
zone_conn = z.get_conn(user.credentials)
489+
non_account_zone_conn = z.get_conn(non_account_user.credentials)
490+
non_account_alt_zone_conn = z.get_conn(non_account_alt_user.credentials)
477491
self.zones.append(zone_conn)
492+
self.non_account_zones.append(non_account_zone_conn)
493+
self.non_account_alt_zones.append(non_account_alt_zone_conn)
478494
if z.is_read_only():
479495
self.ro_zones.append(zone_conn)
496+
self.non_account_ro_zones.append(non_account_zone_conn)
497+
self.non_account_alt_ro_zones.append(non_account_alt_zone_conn)
480498
else:
481499
self.rw_zones.append(zone_conn)
500+
self.non_account_rw_zones.append(non_account_zone_conn)
501+
self.non_account_alt_rw_zones.append(non_account_alt_zone_conn)
482502

483503
if z == zonegroup.master_zone:
484504
self.master_zone = zone_conn

src/test/rgw/test_multi.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,12 @@ def init(parse_args):
248248
user_creds = gen_credentials()
249249
user = multisite.User('tester', tenant=args.tenant, account='RGW11111111111111111')
250250

251+
non_account_user_creds = gen_credentials()
252+
non_account_user = multisite.User('nonaccounttester', tenant=args.tenant)
253+
254+
non_account_alt_user_creds = gen_credentials()
255+
non_account_alt_user = multisite.User('nonaccountalttester', tenant=args.tenant)
256+
251257
realm = multisite.Realm('r')
252258
if bootstrap:
253259
# create the realm on c1
@@ -388,13 +394,24 @@ def init(parse_args):
388394
arg = ['--display-name', 'TestUser']
389395
arg += user_creds.credential_args()
390396
user.create(zone, arg)
397+
# create non-account test user
398+
arg = ['--display-name', 'NonAccountTestUser']
399+
arg += non_account_user_creds.credential_args()
400+
non_account_user.create(zone, arg)
401+
# create non-account alt test user
402+
arg = ['--display-name', 'NonAccountAltTestUser']
403+
arg += non_account_alt_user_creds.credential_args()
404+
non_account_alt_user.create(zone, arg)
391405
else:
392406
# read users and update keys
393407
admin_user.info(zone)
394408
admin_creds = admin_user.credentials[0]
395-
arg = []
396-
user.info(zone, arg)
409+
user.info(zone)
397410
user_creds = user.credentials[0]
411+
non_account_user.info(zone)
412+
non_account_user_creds = non_account_user.credentials[0]
413+
non_account_alt_user.info(zone)
414+
non_account_alt_user_creds = non_account_alt_user.credentials[0]
398415

399416
if not bootstrap:
400417
period.get(c1)
@@ -403,7 +420,7 @@ def init(parse_args):
403420
checkpoint_delay=args.checkpoint_delay,
404421
reconfigure_delay=args.reconfigure_delay,
405422
tenant=args.tenant)
406-
init_multi(realm, user, config)
423+
init_multi(realm, user, non_account_user, non_account_alt_user, config)
407424

408425
def setup_module():
409426
init(False)

0 commit comments

Comments
 (0)