class TestAccountClient(unittest.TestCase): def setUp(self): self.client = AccountClient() def test_add_account_success(self): """ ACCOUNT (CLIENTS): create a new account and get information about account.""" account = account_name_generator() type, email = 'USER', '*****@*****.**' ret = self.client.add_account(account, type, email) assert ret with pytest.raises(Duplicate): self.client.add_account(account, type, email) with pytest.raises(InvalidObject): self.client.add_account('BAD_ACCOUNT_NAME', type, email) with pytest.raises(InvalidObject): self.client.add_account('toooooooloooooonaccounnnnnnnntnammmmme', type, email) acc_info = self.client.get_account(account) assert acc_info['account'] == account def test_get_account_notfound(self): """ ACCOUNT (CLIENTS): try to get information about not existing account.""" account = str(uuid()) with pytest.raises(AccountNotFound): self.client.get_account(account) def test_list_accounts(self): """ ACCOUNT (CLIENTS): get list of all accounts.""" dn = config_get('bootstrap', 'x509_identity') acc_list = [account_name_generator() for _ in range(5)] for account in acc_list: self.client.add_account(account, 'USER', '*****@*****.**') svr_list = [a['account'] for a in self.client.list_accounts(account_type='SERVICE', identity=dn)] assert 'root' in svr_list svr_list = [a['account'] for a in self.client.list_accounts(account_type='USER')] for account in acc_list: assert account in svr_list def test_update_account(self): """ ACCOUNT (CLIENTS): create a new account and update it.""" account = account_name_generator() type, email = 'USER', '*****@*****.**' ret = self.client.add_account(account, type, email) assert ret self.client.update_account(account=account, key='status', value='SUSPENDED') status = self.client.get_account(account=account)['status'] assert status == 'SUSPENDED' self.client.update_account(account=account, key='status', value='ACTIVE') status = self.client.get_account(account=account)['status'] assert status == 'ACTIVE' self.client.update_account(account=account, key='email', value='test') email = self.client.get_account(account=account)['email'] assert email == 'test'
class TestAccountClient(): def setup(self): self.client = AccountClient() def test_add_account_success(self): """ ACCOUNT (CLIENTS): create a new account and get information about account.""" account = account_name_generator() type = 'USER' ret = self.client.add_account(account, type) assert_true(ret) with assert_raises(Duplicate): self.client.add_account(account, type) with assert_raises(InvalidObject): self.client.add_account('BAD_ACCOUNT_NAME', type) with assert_raises(InvalidObject): self.client.add_account('toooooooloooooonaccounnnnnnnntnammmmme', type) acc_info = self.client.get_account(account) assert_equal(acc_info['account'], account) @raises(AccountNotFound) def test_get_account_notfound(self): """ ACCOUNT (CLIENTS): try to get information about not existing account.""" account = str(uuid()) self.client.get_account(account) def test_list_accounts(self): """ ACCOUNT (CLIENTS): get list of all accounts.""" dn = '/C=CH/ST=Geneva/O=CERN/OU=PH-ADP-CO/CN=DDMLAB Client Certificate/[email protected]' acc_list = [account_name_generator() for i in xrange(5)] for account in acc_list: self.client.add_account(account, 'USER') svr_list = [a['account'] for a in self.client.list_accounts(account_type='SERVICE', identity=dn)] assert_true('root' in svr_list) svr_list = [a['account'] for a in self.client.list_accounts(account_type='USER')] for account in acc_list: assert_true(account in svr_list)
def test_accounts_at_different_vos(self): """ MULTI VO (CLIENT): Test that accounts from 2nd vo don't interfere """ account_client = AccountClient() usr_uuid = str(generate_uuid()).lower()[:16] tst = 'tst-%s' % usr_uuid new = 'new-%s' % usr_uuid shr = 'shr-%s' % usr_uuid account_client.add_account(tst, 'USER', '*****@*****.**') account_client.add_account(shr, 'USER', '*****@*****.**') add_account(new, 'USER', '*****@*****.**', 'root', **self.new_vo) add_account(shr, 'USER', '*****@*****.**', 'root', **self.new_vo) account_list_tst = [a['account'] for a in account_client.list_accounts()] account_list_new = [a['account'] for a in list_accounts(filter={}, **self.new_vo)] assert_true(tst in account_list_tst) assert_false(new in account_list_tst) assert_true(shr in account_list_tst) assert_false(tst in account_list_new) assert_true(new in account_list_new) assert_true(shr in account_list_new)
class TestAccountClient(): def __init__(self): self.client = AccountClient() def test_add_account_success(self): """ ACCOUNT (CLIENTS): create a new account and get information about account.""" account = account_name_generator() type, email = 'USER', '*****@*****.**' ret = self.client.add_account(account, type, email) assert_true(ret) with assert_raises(Duplicate): self.client.add_account(account, type, email) with assert_raises(InvalidObject): self.client.add_account('BAD_ACCOUNT_NAME', type, email) with assert_raises(InvalidObject): self.client.add_account('toooooooloooooonaccounnnnnnnntnammmmme', type, email) acc_info = self.client.get_account(account) assert_equal(acc_info['account'], account) @raises(AccountNotFound) def test_get_account_notfound(self): """ ACCOUNT (CLIENTS): try to get information about not existing account.""" account = str(uuid()) self.client.get_account(account) def test_list_accounts(self): """ ACCOUNT (CLIENTS): get list of all accounts.""" dn = config_get('bootstrap', 'x509_identity') acc_list = [account_name_generator() for _ in xrange(5)] for account in acc_list: self.client.add_account(account, 'USER', '*****@*****.**') svr_list = [ a['account'] for a in self.client.list_accounts(account_type='SERVICE', identity=dn) ] assert_true('root' in svr_list) svr_list = [ a['account'] for a in self.client.list_accounts(account_type='USER') ] for account in acc_list: assert_true(account in svr_list) def test_ban_unban_account(self): """ ACCOUNT (CLIENTS): create a new account and ban/unban it.""" account = account_name_generator() type, email = 'USER', '*****@*****.**' ret = self.client.add_account(account, type, email) assert_true(ret) self.client.set_account_status(account=account, status='SUSPENDED') status = self.client.get_account(account=account)['status'] assert_equal(status, 'SUSPENDED') self.client.set_account_status(account=account, status='ACTIVE') status = self.client.get_account(account=account)['status'] assert_equal(status, 'ACTIVE')
from rucio.client.accountclient import AccountClient rclient = Client() accclient = AccountClient() MY_RSE='UNI-BONN_LOCALGROUPDISK' def get_usage(acc): usage = list(accclient.get_local_account_usage(acc['account'], MY_RSE)) if usage: return usage[0] else: return {} pool = Pool(24) accdict = list(accclient.list_accounts(filters={'country-de' : 'user'})) + list(accclient.list_accounts(filters={'country-de' : 'admin'})) res = pool.map(get_usage, accdict) print("name","mail","identity","files","bytes","limit",sep="\t") for A in range(0,len(accdict)): if res[A] and res[A]['bytes']!=0: limit = accclient.get_local_account_limit(accdict[A]['account'], MY_RSE) print(accdict[A]['account'],accdict[A]['email'],res[A]['files'],res[A]['bytes'],limit[MY_RSE],sep="\t") #identities = list(accclient.list_identities(accdict[A]['account'])) #for ident in range(0,len(identities)): # if ident == 0: # print(accdict[A]['account'],identities[ident]['email'],identities[ident]['identity'],res[A]['files'],res[A]['bytes'],sep="\t") # else: # print("",identities[ident]['email'],identities[ident]['identity'],"","",sep="\t")
from rucio.client.accountclient import AccountClient try: with open('accounts.json', 'r') as json_file: all_accounts = json.load(json_file) except IOError: all_accounts = {} try: with open('dn_emails.json', 'r') as json_file: dn_emails = json.load(json_file) except IOError: dn_emails = {} ac = AccountClient() for account in ac.list_accounts(): account_name = account['account'] account_email = account['email'] print(account) if account_name not in all_accounts: all_accounts.update({account_name: {'dns': set()}}) else: all_accounts[account_name]['email'] = account_email all_accounts[account_name]['dns'] = set( all_accounts[account_name]['dns']) for identity in ac.list_identities(account_name): if identity['type'] == 'X509': all_accounts[account_name]['dns'].add(identity['identity'])