async def add_receive_role_if_exists(client, member, survey_id): if (receive_role := db.get_survey_receive_role_or_none(survey_id)) is not None: survey_receive_role = get_role(client, receive_role) logging.info( f"Adding role ({survey_receive_role.name}) to user {member_to_string(member)}" ) await member.add_roles(survey_receive_role)
def night_quotes(update, context): """ Fill the db with the new quotes for all leagues. """ if utl.get_role(update) == 'Admin': cfg.JOB_QUEUE.run_once(jobs.job_night_quotes, when=3) else: chat_id = update.message.chat_id return context.bot.send_message(chat_id=chat_id, text='Fatti i cazzi tuoi')
def payload_handler(obj): if "payload" in obj: data = loads(obj.payload) user = bot.get_object(obj.from_id) chat = bot.get_chat(obj.peer_id) if "action" in data and "tag" in data: action = data["action"] tag = data["tag"] if action == "club": bot.cmd.commands["club"].exec(user, chat, [tag], obj) elif action == "members": club = brawl.get_club(tag) members= club.get("members") msg = "{} {} [{}/100]\n".format(bot.get_messages("btn-club"), club.get("name"), len(members)) for k in range(0, len(members)): msg += bot.get_messages("member", role=get_role(members[k]["role"]), t=members[k]["trophies"], name=members[k]["name"], tag=members[k]["tag"], n=k+1 ) msg += "\n" chat.sendMessage(msg) elif action == "brawlers": player = brawl.get_player(tag) brawlers = player.get("brawlers") msg = "{} {} ({}):\n".format(bot.get_messages("btn-player"), player.get("name"), len(brawlers)) for k in range(0, len(brawlers)): msg += bot.get_messages("brawler", trophies=brawlers[k]["trophies"], power=brawlers[k]["power"], name=brawlers[k]["name"], rank=brawlers[k]["rank"], n=k+1 ) msg += "\n" chat.sendMessage(msg) elif "command" in data and data["command"] == "start": chat.sendMessage("{}, привет!".format(user.getName(True))) bot.cmd.commands["help"].exec(user, chat, [], obj)
def set_topic(): user = VkApi(token=bot.get_settings("admin_token"), api_version=bot.vk.api_version) members = brawl.get_club_members("#R020J99L").response["items"] msg = "Список участников [{}/100]\n".format(len(members)) for k in range(0, len(members)): msg += bot.get_messages("member", role=get_role(members[k]["role"]), t=members[k]["trophies"], name=members[k]["name"], tag=members[k]["tag"], n=k+1 ) msg += "\n" try: user.method("board.editComment", { "group_id": bot.lp.group_id, "comment_id": 2, "topic_id": 41459579, "message": msg }) except: bot.log_exception()
def test_role_ops(self): test_role = get_random_string() assert utils.create_role(test_role) assert utils.get_role(test_role) != None assert utils.delete_role(test_role) assert utils.get_role(test_role) == None
def main(): f = open('log_test_values_cider.txt', 'w') original = sys.stdout sys.stdout = utils.Tee(sys.stdout, f) token = 0 domain_id, production_project_id, cms_project_id, atlas_project_id = ( 0, ) * 4 computing_project_id, visualisation_project_id, services_project_id = ( 0, ) * 3 operations_project_id = 0 try: token_json = utils.default_token_json('admin', 'demo') token = utils.get_token(token_json) print '=======================================================================' print 'This script will use the follow hierarchy to validate the quota values' print 'related to Nested Quotas on Cinder' print '=======================================================================' print 'Hierarchy:' print ' Domain_X ' print ' |' print ' ProductionIT - Mike' print ' / \ ' print ' Jay - CMS ATLAS - John' print ' / \ / \ ' print ' Computing Visualisation Operations Services ' print ' Walter Duncan Eric Xing' print '' print 'Actors:' print '' print 'Mike - Cloud Admin (i.e. role:cloud-admin) of ProductionIT' print 'Jay - Manager (i.e. role: project-admin) of Project CMS' print 'John - Manager (i.e. role: project-admin) of Project ATLAS' print 'Eric - Manager (i.e. role: project-admin) of Project Operations' print 'Xing - Manager (i.e. role: project-admin) of Project Services' print 'Walter - Manager (i.e. role: project-admin) of Project Computing' print 'Duncan - Manager (i.e. role: project-admin) of Project Visualisation' print '=======================================================================' # Create a new domain print 'Creating the domain...' domain = utils.domain_json() domain_id = utils.create_domain(domain, token) print 'Domain created: %s' % domain_id print '=======================================================================' print 'Creating the projects...' # Create project ProductionIT production_project_json = utils.project_json('ProductionIT', domain_id) production_project_id = utils.create_project(production_project_json, token) print "ProductionIT created: %s" % production_project_id print '=======================================================================' # Create Project CMS cms_project_json = utils.project_json('CMS', domain_id, production_project_id) cms_project_id = utils.create_project(cms_project_json, token) print "CMS created: %s" % cms_project_id print '=======================================================================' # Create Project Atlas atlas_project_json = utils.project_json('ATLAS', domain_id, production_project_id) atlas_project_id = utils.create_project(atlas_project_json, token) print "ATLAS created: %s" % atlas_project_id print '=======================================================================' # Create Project computing computing_project_json = utils.project_json('computing', domain_id, cms_project_id) computing_project_id = utils.create_project(computing_project_json, token) print "Computing created: %s" % computing_project_id print '=======================================================================' # Create Project visualisation visual_project_json = utils.project_json('visualisation', domain_id, cms_project_id) visualisation_project_id = utils.create_project( visual_project_json, token) print "Visualisation created: %s" % visualisation_project_id print '=======================================================================' # Create Project services services_project_json = utils.project_json('services', domain_id, atlas_project_id) services_project_id = utils.create_project(services_project_json, token) print "Services created: %s" % services_project_id print '=======================================================================' # Create Project operations operations_project_json = utils.project_json('operations', domain_id, atlas_project_id) operations_project_id = utils.create_project(operations_project_json, token) print "Operations created: %s" % operations_project_id print '=======================================================================' admin_role = utils.get_role(token, 'admin') # Creating users # Creating and grant admin role to mike in production print 'Creating the users...' mike = utils.create_user(token, 'Mike', domain_id) print "Mike: %s" % mike utils.grant_user_role(token, mike, admin_role, [production_project_id]) print '=======================================================================' # Creating and grant admin role to jay in cms jay = utils.create_user(token, 'Jay', domain_id) print "Jay: %s" % jay utils.grant_user_role(token, jay, admin_role, [cms_project_id]) print '=======================================================================' # Creating and grant admin role to john in atlas john = utils.create_user(token, 'John', domain_id) print "John: %s" % john utils.grant_user_role(token, john, admin_role, [atlas_project_id]) print '=======================================================================' # Creating and grant admin role to eric in operations eric = utils.create_user(token, 'Eric', domain_id) print "Eric: %s" % eric utils.grant_user_role(token, eric, admin_role, [operations_project_id]) print '=======================================================================' # Creating and grant admin role to xing in services xing = utils.create_user(token, 'Xing', domain_id) print "Xing: %s" % xing utils.grant_user_role(token, xing, admin_role, [services_project_id]) print '=======================================================================' # Creating and grant admin role to walter in computing walter = utils.create_user(token, 'Walter', domain_id) print "Walter: %s" % walter utils.grant_user_role(token, walter, admin_role, [computing_project_id]) print '=======================================================================' # Creating and grant admin role to duncan in visualisation duncan = utils.create_user(token, 'Duncan', domain_id) print "Ducnan: %s" % duncan utils.grant_user_role(token, duncan, admin_role, [visualisation_project_id]) print '=======================================================================' print 'Now, we will get a token for Mike in ProductionIT (root project)' print 'and show that the quota calculation in the hierarchy works well.' print '=======================================================================' # Get a token for Mike in ProductionIT mike_token_json = utils.get_token_json('Mike', production_project_id) mike_token = utils.get_token(mike_token_json) print 'Token for mike: %s' % mike_token print '=======================================================================' # Update the Prduction Quota to 100 print 'Updating the ProductionIT quota for 100...' quota_value = 100 production_quota = utils.update_quota(mike_token, production_project_id, production_project_id, quota_value) quota_show_production = utils.quota_show(mike_token, production_project_id, production_project_id) print '=======================================================================' print "Production Quota: %s" % quota_show_production print '=======================================================================' # Update the CMS Quota to 40 print 'Updating the CMS quota for 40...' quota_value = 40 cms_quota = utils.update_quota(mike_token, production_project_id, cms_project_id, quota_value) quota_show_production = utils.quota_show(mike_token, production_project_id, production_project_id) quota_show_cms = utils.quota_show(mike_token, production_project_id, cms_project_id) print 'Verify that allocated ProductionIT quota was updated to 40' print "Production Quota: %s" % quota_show_production print "CMS Quota: %s" % quota_show_cms print '=======================================================================' # Update the Atlas Quota to 30 print 'Updating the Atlas quota for 30...' quota_value = 30 atlas_quota = utils.update_quota(mike_token, production_project_id, atlas_project_id, quota_value) quota_show_production = utils.quota_show(mike_token, production_project_id, production_project_id) quota_show_atlas = utils.quota_show(mike_token, production_project_id, atlas_project_id) print 'Verify that allocated ProductionIT quota was updated to 70' print "Production Quota: %s" % quota_show_production print "Atlas Quota: %s" % quota_show_atlas print '=======================================================================' # Update the Computing Quota to 15 print 'Updating the Computing quota for 15...' quota_value = 15 computing_quota = utils.update_quota(mike_token, production_project_id, computing_project_id, quota_value) quota_show_cms = utils.quota_show(mike_token, production_project_id, cms_project_id) quota_show_computing = utils.quota_show(mike_token, production_project_id, computing_project_id) print 'Verify that allocated CMS quota was updated to 15' print "CMS Quota: %s" % quota_show_cms print "Computing Quota: %s" % quota_show_computing print '=======================================================================' # Update the visualisaton Quota to 15 print 'Updating the Visualisation quota for 15...' quota_value = 15 visualisation_quota = utils.update_quota(mike_token, production_project_id, visualisation_project_id, quota_value) quota_show_cms = utils.quota_show(mike_token, production_project_id, cms_project_id) quota_show_visualisation = utils.quota_show(mike_token, production_project_id, visualisation_project_id) print 'Verify that allocated CMS quota was updated to 30' print "CMS Quota: %s" % quota_show_cms print "Visualisation Quota: %s" % quota_show_visualisation print '=======================================================================' print 'Updating the Services quota for 10...' # Update the services Quota to 10 quota_value = 10 services_quota = utils.update_quota(mike_token, production_project_id, services_project_id, quota_value) quota_show_atlas = utils.quota_show(mike_token, production_project_id, atlas_project_id) quota_show_services = utils.quota_show(mike_token, production_project_id, services_project_id) print 'Verify that allocated Atlas quota was updated to 10' print "Atlas Quota: %s" % quota_show_atlas print "Service Quota: %s" % quota_show_services print '=======================================================================' # Update the operations Quota to 10 quota_value = 10 operations_quota = utils.update_quota(mike_token, production_project_id, operations_project_id, quota_value) quota_show_atlas = utils.quota_show(mike_token, production_project_id, atlas_project_id) quota_show_operations = utils.quota_show(mike_token, production_project_id, operations_project_id) print 'Verify that allocated Atlas quota was updated to 20' print "Atlas Quota: %s" % quota_show_atlas print "Operations Quota: %s" % quota_show_operations print '=======================================================================' # Update the CMS Quota to 40 quota_value = 71 print 'Trying update the CMS quota for 71...' cms_quota = utils.update_quota(mike_token, production_project_id, cms_project_id, quota_value) print "Error: %s" % cms_quota print '=======================================================================' print "Creating 10 Volumes in CMS..." # Get a token for Jay in CMS jay_token_json = utils.get_token_json('Jay', cms_project_id) jay_token = utils.get_token(jay_token_json) for i in range(0, 10): utils.create_volume(jay_token, cms_project_id) quota_show_cms = utils.quota_show(jay_token, cms_project_id, cms_project_id) print "CMS Quota: %s" % quota_show_cms print 'Now, we dont have free quota in CMS' print '=======================================================================' print "Trying update the computing quota to 16 (subproject for CMS)..." quota_value = 16 computing_quota = utils.update_quota(mike_token, production_project_id, computing_project_id, quota_value) print "Error: %s" % computing_quota print '=======================================================================' print 'Clean up...' except Exception as e: print 'Error' tear_down(token, [ production_project_id, cms_project_id, atlas_project_id, computing_project_id, visualisation_project_id, services_project_id, operations_project_id ], domain_id) f.close() print e tear_down(token, [ production_project_id, cms_project_id, atlas_project_id, computing_project_id, visualisation_project_id, services_project_id, operations_project_id ], domain_id) f.close()
def main(): f = open('log_test_authorization_cider.txt', 'w') original = sys.stdout sys.stdout = utils.Tee(sys.stdout, f) token = 0 domain_id, production_project_id, cms_project_id, atlas_project_id = ( 0, ) * 4 computing_project_id, visualisation_project_id, services_project_id = ( 0, ) * 3 operations_project_id = 0 try: token_json = utils.default_token_json('admin', 'demo') token = utils.get_token(token_json) print '=======================================================================' print 'This script will use the follow hierarchy to validate the authorization' print 'actions related to Nested Quotas on Cinder' print '=======================================================================' print 'Hierarchy:' print ' Domain_X ' print ' |' print ' ProductionIT - Mike' print ' / \ ' print ' Jay - CMS ATLAS - John' print ' / \ / \ ' print ' Computing Visualisation Operations Services ' print ' Walter Duncan Eric Xing' print '' print 'Actors:' print '' print 'Mike - Cloud Admin (i.e. role:cloud-admin) of ProductionIT' print 'Jay - Manager (i.e. role: project-admin) of Project CMS' print 'John - Manager (i.e. role: project-admin) of Project ATLAS' print 'Eric - Manager (i.e. role: project-admin) of Project Operations' print 'Xing - Manager (i.e. role: project-admin) of Project Services' print 'Walter - Manager (i.e. role: project-admin) of Project Computing' print 'Duncan - Manager (i.e. role: project-admin) of Project Visualisation' print '=======================================================================' admin_role = utils.get_role(token, 'admin') # Create a new domain print 'Creating the domain...' domain = utils.domain_json() domain_id = utils.create_domain(domain, token) print 'Domain created: %s' % domain_id print '=======================================================================' print 'Creating the projects...' # Create project ProductionIT production_project_json = utils.project_json('ProductionIT', domain_id) production_project_id = utils.create_project(production_project_json, token) print "ProductionIT created: %s" % production_project_id print '=======================================================================' # Create Project CMS cms_project_json = utils.project_json('CMS', domain_id, production_project_id) cms_project_id = utils.create_project(cms_project_json, token) print "CMS created: %s" % cms_project_id print '=======================================================================' # Create Project Atlas atlas_project_json = utils.project_json('ATLAS', domain_id, production_project_id) atlas_project_id = utils.create_project(atlas_project_json, token) print "ATLAS created: %s" % atlas_project_id print '=======================================================================' # Create Project computing computing_project_json = utils.project_json('computing', domain_id, cms_project_id) computing_project_id = utils.create_project(computing_project_json, token) print "Computing created: %s" % computing_project_id print '=======================================================================' # Create Project visualisation visual_project_json = utils.project_json('visualisation', domain_id, cms_project_id) visualisation_project_id = utils.create_project( visual_project_json, token) print "Visualisation created: %s" % visualisation_project_id print '=======================================================================' # Create Project services services_project_json = utils.project_json('services', domain_id, atlas_project_id) services_project_id = utils.create_project(services_project_json, token) print "Services created: %s" % services_project_id print '=======================================================================' # Create Project operations operations_project_json = utils.project_json('operations', domain_id, atlas_project_id) operations_project_id = utils.create_project(operations_project_json, token) print "Operations created: %s" % operations_project_id print '=======================================================================' # Creating users # Creating and grant admin role to mike in production print 'Creating the users...' mike = utils.create_user(token, 'Mike', domain_id) print "Mike: %s" % mike utils.grant_user_role(token, mike, admin_role, [production_project_id]) print '=======================================================================' # Creating and grant admin role to jay in cms jay = utils.create_user(token, 'Jay', domain_id) print "Jay: %s" % jay utils.grant_user_role(token, jay, admin_role, [cms_project_id]) print '=======================================================================' # Creating and grant admin role to john in atlas john = utils.create_user(token, 'John', domain_id) print "John: %s" % john utils.grant_user_role(token, john, admin_role, [atlas_project_id]) print '=======================================================================' # Creating and grant admin role to eric in operations eric = utils.create_user(token, 'Eric', domain_id) print "Eric: %s" % eric utils.grant_user_role(token, eric, admin_role, [operations_project_id]) print '=======================================================================' # Creating and grant admin role to xing in services xing = utils.create_user(token, 'Xing', domain_id) print "Xing: %s" % xing utils.grant_user_role(token, xing, admin_role, [services_project_id]) print '=======================================================================' # Creating and grant admin role to walter in computing walter = utils.create_user(token, 'Walter', domain_id) print "Walter: %s" % walter utils.grant_user_role(token, walter, admin_role, [computing_project_id]) print '=======================================================================' # Creating and grant admin role to duncan in visualisation duncan = utils.create_user(token, 'Duncan', domain_id) print "Ducnan: %s" % duncan utils.grant_user_role(token, duncan, admin_role, [visualisation_project_id]) print '=======================================================================' print 'Now, we will get a token for Mike in ProductionIT (root project)' print 'and show that Mike can update the quota for the root project.' print '=======================================================================' # Get a token for Mike in ProductionIT mike_token_json = utils.get_token_json('Mike', production_project_id) mike_token = utils.get_token(mike_token_json) print 'Token for mike: %s' % mike_token print '=======================================================================' # Update the Production Quota to 100 print 'Updating the ProductionIT quota for 100...' quota_value = 100 production_quota = utils.update_quota(mike_token, production_project_id, production_project_id, quota_value) print "Mike updating Production Quota: %s" % production_quota print '=======================================================================' print 'Trying get the default quota for CMS...' # Verify that the default quotas for CMS is zero cms_quota = utils.get_quota(mike_token, production_project_id, cms_project_id) print "Mike getting CMS Quota: %s" % cms_quota print '=======================================================================' print 'Trying update the CMS quota for 45...' # Update the CMS Quota to 45 quota_value = 45 new_cms_quota = utils.update_quota(mike_token, production_project_id, cms_project_id, quota_value) print "Mike updating CMS Quota: %s" % new_cms_quota print '=======================================================================' print 'Now, we get a token for Jay in CMS and we will try update the CMS Quota' print '=======================================================================' # Get a token for Jay in CMS jay_token_json = utils.get_token_json('Jay', cms_project_id) jay_token = utils.get_token(jay_token_json) print 'Token for Jay: %s ' % jay_token print '=======================================================================' # Raise a exception when try update the CMS Quota with # only a project_admin print 'Trying update the CMS quota for 50' quota_value = 50 forbidden_error = 403 new_cms_quota = utils.update_quota(jay_token, cms_project_id, cms_project_id, quota_value) if new_cms_quota == forbidden_error: print 'Error: Cannot update the quota for CMS with user Jay' print '=======================================================================' # Verify that the default quotas for Visualisation is zero cms_quota = utils.get_quota(jay_token, cms_project_id, cms_project_id) print "Trying get the CMS Quota: %s" % cms_quota print '=======================================================================' # Raise a exception when try update the Visualisation Quota with a # project_admin in a non-root project print 'Trying update the Visualisation Quota with Jay' quota_value = 10 new_visualisation_quota = utils.update_quota(jay_token, cms_project_id, visualisation_project_id, quota_value) if new_visualisation_quota == forbidden_error: print 'Error: Cannot update the quota for Visualisation with user Jay' else: print 'New Visualisation Quota: %s ' % new_visualisation_quota print '=======================================================================' # Raise a exception when try get the Visualisation Quota with a # project_admin in a non-root project print 'Trying get the Visualisation Quota with Jay' visualisation_quota = utils.get_quota(jay_token, cms_project_id, visualisation_project_id) if visualisation_quota == forbidden_error: print 'Error: Cannot get the quota for Visualisation with user Jay' else: print 'Get Visualisation Quota: %s ' % new_visualisation_quota print '=======================================================================' # Raise a exception when try get the Atlas Quota with a project_admin # in a non-root project atlas_quota = utils.get_quota(jay_token, cms_project_id, atlas_project_id) if atlas_quota == forbidden_error: print 'Error: Cannot get the quota for Atlas with user Jay' print '=======================================================================' # Get a token for Duncan in Visualisation duncan_token_json = utils.get_token_json('Duncan', visualisation_project_id) duncan_token = utils.get_token(duncan_token_json) print 'Get a token for Duncan in Visualisation: %s ' % duncan_token # Raise a exception when try get the Atlas Quota with a project_admin # in a subproject cms_quota = utils.get_quota(duncan_token, visualisation_project_id, cms_project_id) if cms_quota == forbidden_error: print 'Error: Cannot get the quota for CMS with user Duncan' print '=======================================================================' # Raise a exception when try update the Visualisation Quota # with a project_admin in a non-root project quota_value = 10 new_visualisation_quota = utils.update_quota(duncan_token, visualisation_project_id, visualisation_project_id, quota_value) if new_visualisation_quota == forbidden_error: print('Cannot update the quota for Visualisation with user Duncan') print '=======================================================================' # Verify that the default quotas for Visualisation is zero visual_quota = utils.get_quota(duncan_token, visualisation_project_id, visualisation_project_id) print('Duncan getting the Visualisation Quota: %s' % visual_quota) print '=======================================================================' print 'Clean up...' except Exception as e: print 'Error' tear_down(token, [ production_project_id, cms_project_id, atlas_project_id, computing_project_id, visualisation_project_id, services_project_id, operations_project_id ], domain_id) f.close() print e tear_down(token, [ production_project_id, cms_project_id, atlas_project_id, computing_project_id, visualisation_project_id, services_project_id, operations_project_id ], domain_id) f.close()
def main(): f = open("log_test_authorization_cider.txt", "w") original = sys.stdout sys.stdout = utils.Tee(sys.stdout, f) token = 0 domain_id, production_project_id, cms_project_id, atlas_project_id = (0,) * 4 computing_project_id, visualisation_project_id, services_project_id = (0,) * 3 operations_project_id = 0 try: token_json = utils.default_token_json("admin", "demo") token = utils.get_token(token_json) print "=======================================================================" print "This script will use the follow hierarchy to validate the authorization" print "actions related to Nested Quotas on Cinder" print "=======================================================================" print "Hierarchy:" print " Domain_X " print " |" print " ProductionIT - Mike" print " / \ " print " Jay - CMS ATLAS - John" print " / \ / \ " print " Computing Visualisation Operations Services " print " Walter Duncan Eric Xing" print "" print "Actors:" print "" print "Mike - Cloud Admin (i.e. role:cloud-admin) of ProductionIT" print "Jay - Manager (i.e. role: project-admin) of Project CMS" print "John - Manager (i.e. role: project-admin) of Project ATLAS" print "Eric - Manager (i.e. role: project-admin) of Project Operations" print "Xing - Manager (i.e. role: project-admin) of Project Services" print "Walter - Manager (i.e. role: project-admin) of Project Computing" print "Duncan - Manager (i.e. role: project-admin) of Project Visualisation" print "=======================================================================" admin_role = utils.get_role(token, "admin") # Create a new domain print "Creating the domain..." domain = utils.domain_json() domain_id = utils.create_domain(domain, token) print "Domain created: %s" % domain_id print "=======================================================================" print "Creating the projects..." # Create project ProductionIT production_project_json = utils.project_json("ProductionIT", domain_id) production_project_id = utils.create_project(production_project_json, token) print "ProductionIT created: %s" % production_project_id print "=======================================================================" # Create Project CMS cms_project_json = utils.project_json("CMS", domain_id, production_project_id) cms_project_id = utils.create_project(cms_project_json, token) print "CMS created: %s" % cms_project_id print "=======================================================================" # Create Project Atlas atlas_project_json = utils.project_json("ATLAS", domain_id, production_project_id) atlas_project_id = utils.create_project(atlas_project_json, token) print "ATLAS created: %s" % atlas_project_id print "=======================================================================" # Create Project computing computing_project_json = utils.project_json("computing", domain_id, cms_project_id) computing_project_id = utils.create_project(computing_project_json, token) print "Computing created: %s" % computing_project_id print "=======================================================================" # Create Project visualisation visual_project_json = utils.project_json("visualisation", domain_id, cms_project_id) visualisation_project_id = utils.create_project(visual_project_json, token) print "Visualisation created: %s" % visualisation_project_id print "=======================================================================" # Create Project services services_project_json = utils.project_json("services", domain_id, atlas_project_id) services_project_id = utils.create_project(services_project_json, token) print "Services created: %s" % services_project_id print "=======================================================================" # Create Project operations operations_project_json = utils.project_json("operations", domain_id, atlas_project_id) operations_project_id = utils.create_project(operations_project_json, token) print "Operations created: %s" % operations_project_id print "=======================================================================" # Creating users # Creating and grant admin role to mike in production print "Creating the users..." mike = utils.create_user(token, "Mike", domain_id) print "Mike: %s" % mike utils.grant_user_role(token, mike, admin_role, [production_project_id]) print "=======================================================================" # Creating and grant admin role to jay in cms jay = utils.create_user(token, "Jay", domain_id) print "Jay: %s" % jay utils.grant_user_role(token, jay, admin_role, [cms_project_id]) print "=======================================================================" # Creating and grant admin role to john in atlas john = utils.create_user(token, "John", domain_id) print "John: %s" % john utils.grant_user_role(token, john, admin_role, [atlas_project_id]) print "=======================================================================" # Creating and grant admin role to eric in operations eric = utils.create_user(token, "Eric", domain_id) print "Eric: %s" % eric utils.grant_user_role(token, eric, admin_role, [operations_project_id]) print "=======================================================================" # Creating and grant admin role to xing in services xing = utils.create_user(token, "Xing", domain_id) print "Xing: %s" % xing utils.grant_user_role(token, xing, admin_role, [services_project_id]) print "=======================================================================" # Creating and grant admin role to walter in computing walter = utils.create_user(token, "Walter", domain_id) print "Walter: %s" % walter utils.grant_user_role(token, walter, admin_role, [computing_project_id]) print "=======================================================================" # Creating and grant admin role to duncan in visualisation duncan = utils.create_user(token, "Duncan", domain_id) print "Ducnan: %s" % duncan utils.grant_user_role(token, duncan, admin_role, [visualisation_project_id]) print "=======================================================================" print "Now, we will get a token for Mike in ProductionIT (root project)" print "and show that Mike can update the quota for the root project." print "=======================================================================" # Get a token for Mike in ProductionIT mike_token_json = utils.get_token_json("Mike", production_project_id) mike_token = utils.get_token(mike_token_json) print "Token for mike: %s" % mike_token print "=======================================================================" # Update the Production Quota to 100 print "Updating the ProductionIT quota for 100..." quota_value = 100 production_quota = utils.update_quota(mike_token, production_project_id, production_project_id, quota_value) print "Mike updating Production Quota: %s" % production_quota print "=======================================================================" print "Trying get the default quota for CMS..." # Verify that the default quotas for CMS is zero cms_quota = utils.get_quota(mike_token, production_project_id, cms_project_id) print "Mike getting CMS Quota: %s" % cms_quota print "=======================================================================" print "Trying update the CMS quota for 45..." # Update the CMS Quota to 45 quota_value = 45 new_cms_quota = utils.update_quota(mike_token, production_project_id, cms_project_id, quota_value) print "Mike updating CMS Quota: %s" % new_cms_quota print "=======================================================================" print "Now, we get a token for Jay in CMS and we will try update the CMS Quota" print "=======================================================================" # Get a token for Jay in CMS jay_token_json = utils.get_token_json("Jay", cms_project_id) jay_token = utils.get_token(jay_token_json) print "Token for Jay: %s " % jay_token print "=======================================================================" # Raise a exception when try update the CMS Quota with # only a project_admin print "Trying update the CMS quota for 50" quota_value = 50 forbidden_error = 403 new_cms_quota = utils.update_quota(jay_token, cms_project_id, cms_project_id, quota_value) if new_cms_quota == forbidden_error: print "Error: Cannot update the quota for CMS with user Jay" print "=======================================================================" # Verify that the default quotas for Visualisation is zero cms_quota = utils.get_quota(jay_token, cms_project_id, cms_project_id) print "Trying get the CMS Quota: %s" % cms_quota print "=======================================================================" # Raise a exception when try update the Visualisation Quota with a # project_admin in a non-root project print "Trying update the Visualisation Quota with Jay" quota_value = 10 new_visualisation_quota = utils.update_quota(jay_token, cms_project_id, visualisation_project_id, quota_value) if new_visualisation_quota == forbidden_error: print "Error: Cannot update the quota for Visualisation with user Jay" else: print "New Visualisation Quota: %s " % new_visualisation_quota print "=======================================================================" # Raise a exception when try get the Visualisation Quota with a # project_admin in a non-root project print "Trying get the Visualisation Quota with Jay" visualisation_quota = utils.get_quota(jay_token, cms_project_id, visualisation_project_id) if visualisation_quota == forbidden_error: print "Error: Cannot get the quota for Visualisation with user Jay" else: print "Get Visualisation Quota: %s " % new_visualisation_quota print "=======================================================================" # Raise a exception when try get the Atlas Quota with a project_admin # in a non-root project atlas_quota = utils.get_quota(jay_token, cms_project_id, atlas_project_id) if atlas_quota == forbidden_error: print "Error: Cannot get the quota for Atlas with user Jay" print "=======================================================================" # Get a token for Duncan in Visualisation duncan_token_json = utils.get_token_json("Duncan", visualisation_project_id) duncan_token = utils.get_token(duncan_token_json) print "Get a token for Duncan in Visualisation: %s " % duncan_token # Raise a exception when try get the Atlas Quota with a project_admin # in a subproject cms_quota = utils.get_quota(duncan_token, visualisation_project_id, cms_project_id) if cms_quota == forbidden_error: print "Error: Cannot get the quota for CMS with user Duncan" print "=======================================================================" # Raise a exception when try update the Visualisation Quota # with a project_admin in a non-root project quota_value = 10 new_visualisation_quota = utils.update_quota( duncan_token, visualisation_project_id, visualisation_project_id, quota_value ) if new_visualisation_quota == forbidden_error: print ("Cannot update the quota for Visualisation with user Duncan") print "=======================================================================" # Verify that the default quotas for Visualisation is zero visual_quota = utils.get_quota(duncan_token, visualisation_project_id, visualisation_project_id) print ("Duncan getting the Visualisation Quota: %s" % visual_quota) print "=======================================================================" print "Clean up..." except Exception as e: print "Error" tear_down( token, [ production_project_id, cms_project_id, atlas_project_id, computing_project_id, visualisation_project_id, services_project_id, operations_project_id, ], domain_id, ) f.close() print e tear_down( token, [ production_project_id, cms_project_id, atlas_project_id, computing_project_id, visualisation_project_id, services_project_id, operations_project_id, ], domain_id, ) f.close()
def main(): f = open('log_test_values_cider.txt', 'w') original = sys.stdout sys.stdout = utils.Tee(sys.stdout, f) token = 0 domain_id, production_project_id, cms_project_id, atlas_project_id = (0, )*4 computing_project_id, visualisation_project_id, services_project_id = (0, )*3 operations_project_id = 0 try: token_json = utils.default_token_json('admin', 'demo') token = utils.get_token(token_json) print '=======================================================================' print 'This script will use the follow hierarchy to validate the quota values' print 'related to Nested Quotas on Cinder' print '=======================================================================' print 'Hierarchy:' print ' Domain_X ' print ' |' print ' ProductionIT - Mike' print ' / \ ' print ' Jay - CMS ATLAS - John' print ' / \ / \ ' print ' Computing Visualisation Operations Services ' print ' Walter Duncan Eric Xing' print '' print 'Actors:' print '' print 'Mike - Cloud Admin (i.e. role:cloud-admin) of ProductionIT' print 'Jay - Manager (i.e. role: project-admin) of Project CMS' print 'John - Manager (i.e. role: project-admin) of Project ATLAS' print 'Eric - Manager (i.e. role: project-admin) of Project Operations' print 'Xing - Manager (i.e. role: project-admin) of Project Services' print 'Walter - Manager (i.e. role: project-admin) of Project Computing' print 'Duncan - Manager (i.e. role: project-admin) of Project Visualisation' print '=======================================================================' # Create a new domain print 'Creating the domain...' domain = utils.domain_json() domain_id = utils.create_domain(domain, token) print 'Domain created: %s' % domain_id print '=======================================================================' print 'Creating the projects...' # Create project ProductionIT production_project_json = utils.project_json('ProductionIT', domain_id) production_project_id = utils.create_project(production_project_json, token) print "ProductionIT created: %s" % production_project_id print '=======================================================================' # Create Project CMS cms_project_json = utils.project_json('CMS', domain_id, production_project_id) cms_project_id = utils.create_project(cms_project_json, token) print "CMS created: %s" % cms_project_id print '=======================================================================' # Create Project Atlas atlas_project_json = utils.project_json('ATLAS', domain_id, production_project_id) atlas_project_id = utils.create_project(atlas_project_json, token) print "ATLAS created: %s" % atlas_project_id print '=======================================================================' # Create Project computing computing_project_json = utils.project_json('computing', domain_id, cms_project_id) computing_project_id = utils.create_project(computing_project_json, token) print "Computing created: %s" % computing_project_id print '=======================================================================' # Create Project visualisation visual_project_json = utils.project_json('visualisation', domain_id, cms_project_id) visualisation_project_id = utils.create_project(visual_project_json, token) print "Visualisation created: %s" % visualisation_project_id print '=======================================================================' # Create Project services services_project_json = utils.project_json('services', domain_id, atlas_project_id) services_project_id = utils.create_project(services_project_json, token) print "Services created: %s" % services_project_id print '=======================================================================' # Create Project operations operations_project_json = utils.project_json('operations', domain_id, atlas_project_id) operations_project_id = utils.create_project(operations_project_json, token) print "Operations created: %s" % operations_project_id print '=======================================================================' admin_role = utils.get_role(token, 'admin') # Creating users # Creating and grant admin role to mike in production print 'Creating the users...' mike = utils.create_user(token, 'Mike', domain_id) print "Mike: %s" % mike utils.grant_user_role(token, mike, admin_role, [production_project_id]) print '=======================================================================' # Creating and grant admin role to jay in cms jay = utils.create_user(token, 'Jay', domain_id) print "Jay: %s" % jay utils.grant_user_role(token, jay, admin_role, [cms_project_id]) print '=======================================================================' # Creating and grant admin role to john in atlas john = utils.create_user(token, 'John', domain_id) print "John: %s" % john utils.grant_user_role(token, john, admin_role, [atlas_project_id]) print '=======================================================================' # Creating and grant admin role to eric in operations eric = utils.create_user(token, 'Eric', domain_id) print "Eric: %s" % eric utils.grant_user_role(token, eric, admin_role, [operations_project_id]) print '=======================================================================' # Creating and grant admin role to xing in services xing = utils.create_user(token, 'Xing', domain_id) print "Xing: %s" % xing utils.grant_user_role(token, xing, admin_role, [services_project_id]) print '=======================================================================' # Creating and grant admin role to walter in computing walter = utils.create_user(token, 'Walter', domain_id) print "Walter: %s" % walter utils.grant_user_role(token, walter, admin_role, [computing_project_id]) print '=======================================================================' # Creating and grant admin role to duncan in visualisation duncan = utils.create_user(token, 'Duncan', domain_id) print "Ducnan: %s" % duncan utils.grant_user_role(token, duncan, admin_role, [visualisation_project_id]) print '=======================================================================' print 'Now, we will get a token for Mike in ProductionIT (root project)' print 'and show that the quota calculation in the hierarchy works well.' print '=======================================================================' # Get a token for Mike in ProductionIT mike_token_json = utils.get_token_json('Mike', production_project_id) mike_token = utils.get_token(mike_token_json) print 'Token for mike: %s' % mike_token print '=======================================================================' # Update the Prduction Quota to 100 print 'Updating the ProductionIT quota for 100...' quota_value = 100 production_quota = utils.update_quota(mike_token, production_project_id, production_project_id, quota_value) quota_show_production = utils.quota_show(mike_token, production_project_id, production_project_id) print '=======================================================================' print "Production Quota: %s" % quota_show_production print '=======================================================================' # Update the CMS Quota to 40 print 'Updating the CMS quota for 40...' quota_value = 40 cms_quota = utils.update_quota(mike_token, production_project_id, cms_project_id, quota_value) quota_show_production = utils.quota_show(mike_token, production_project_id, production_project_id) quota_show_cms = utils.quota_show(mike_token, production_project_id, cms_project_id) print 'Verify that allocated ProductionIT quota was updated to 40' print "Production Quota: %s" % quota_show_production print "CMS Quota: %s" % quota_show_cms print '=======================================================================' # Update the Atlas Quota to 30 print 'Updating the Atlas quota for 30...' quota_value = 30 atlas_quota = utils.update_quota(mike_token, production_project_id, atlas_project_id, quota_value) quota_show_production = utils.quota_show(mike_token, production_project_id, production_project_id) quota_show_atlas = utils.quota_show(mike_token, production_project_id, atlas_project_id) print 'Verify that allocated ProductionIT quota was updated to 70' print "Production Quota: %s" % quota_show_production print "Atlas Quota: %s" % quota_show_atlas print '=======================================================================' # Update the Computing Quota to 15 print 'Updating the Computing quota for 15...' quota_value = 15 computing_quota = utils.update_quota(mike_token, production_project_id, computing_project_id, quota_value) quota_show_cms = utils.quota_show(mike_token, production_project_id, cms_project_id) quota_show_computing = utils.quota_show(mike_token, production_project_id, computing_project_id) print 'Verify that allocated CMS quota was updated to 15' print "CMS Quota: %s" % quota_show_cms print "Computing Quota: %s" % quota_show_computing print '=======================================================================' # Update the visualisaton Quota to 15 print 'Updating the Visualisation quota for 15...' quota_value = 15 visualisation_quota = utils.update_quota(mike_token, production_project_id, visualisation_project_id, quota_value) quota_show_cms = utils.quota_show(mike_token, production_project_id, cms_project_id) quota_show_visualisation = utils.quota_show(mike_token, production_project_id, visualisation_project_id) print 'Verify that allocated CMS quota was updated to 30' print "CMS Quota: %s" % quota_show_cms print "Visualisation Quota: %s" % quota_show_visualisation print '=======================================================================' print 'Updating the Services quota for 10...' # Update the services Quota to 10 quota_value = 10 services_quota = utils.update_quota(mike_token, production_project_id, services_project_id, quota_value) quota_show_atlas = utils.quota_show(mike_token, production_project_id, atlas_project_id) quota_show_services = utils.quota_show(mike_token, production_project_id, services_project_id) print 'Verify that allocated Atlas quota was updated to 10' print "Atlas Quota: %s" % quota_show_atlas print "Service Quota: %s" % quota_show_services print '=======================================================================' # Update the operations Quota to 10 quota_value = 10 operations_quota = utils.update_quota(mike_token, production_project_id, operations_project_id, quota_value) quota_show_atlas = utils.quota_show(mike_token, production_project_id, atlas_project_id) quota_show_operations = utils.quota_show(mike_token, production_project_id, operations_project_id) print 'Verify that allocated Atlas quota was updated to 20' print "Atlas Quota: %s" % quota_show_atlas print "Operations Quota: %s" % quota_show_operations print '=======================================================================' # Update the CMS Quota to 40 quota_value = 71 print 'Trying update the CMS quota for 71...' cms_quota = utils.update_quota(mike_token, production_project_id, cms_project_id, quota_value) print "Error: %s" % cms_quota print '=======================================================================' print "Creating 10 Volumes in CMS..." # Get a token for Jay in CMS jay_token_json = utils.get_token_json('Jay', cms_project_id) jay_token = utils.get_token(jay_token_json) for i in range(0,10): utils.create_volume(jay_token, cms_project_id) quota_show_cms = utils.quota_show(jay_token, cms_project_id, cms_project_id) print "CMS Quota: %s" % quota_show_cms print 'Now, we dont have free quota in CMS' print '=======================================================================' print "Trying update the computing quota to 16 (subproject for CMS)..." quota_value = 16 computing_quota = utils.update_quota(mike_token, production_project_id, computing_project_id, quota_value) print "Error: %s" % computing_quota print '=======================================================================' print 'Clean up...' except Exception as e: print 'Error' tear_down(token, [production_project_id, cms_project_id, atlas_project_id, computing_project_id, visualisation_project_id, services_project_id, operations_project_id], domain_id) f.close() print e tear_down(token, [production_project_id, cms_project_id, atlas_project_id, computing_project_id, visualisation_project_id, services_project_id, operations_project_id], domain_id) f.close()