def stop_wipe_and_remove_all_labs(client_library: ClientLibrary): lab_list = client_library.get_lab_list() for lab_id in lab_list: lab = client_library.join_existing_lab(lab_id) lab.stop() lab.wipe() client_library.remove_lab(lab_id)
# set transport if needed - also proxy can be set if needed # cl.licensing.licensing.set_transport(ssms=ssms, proxy_server="172.16.1.100", proxy_port=8888) cl.licensing.set_transport(ssms=SSMS) cl.licensing.install_certificate(cert=CERT) # 'register_wait' method waits max 45s for registration status to become COMPLETED # and another 45s for authorization status to become IN_COMPLIANCE cl.licensing.register_wait(token=TOKEN) lab_list = cl.get_lab_list() for lab_id in lab_list: lab = cl.join_existing_lab(lab_id) lab.stop() lab.wipe() cl.remove_lab(lab_id) lab = cl.create_lab() lab = cl.join_existing_lab(lab_id="lab_1") s1 = lab.create_node("s1", "server", 50, 100) s2 = lab.create_node("s2", "server", 50, 200) print(s1, s2) # create a link between s1 and s2, equivalent to # s1_i1 = s1.create_interface() # s2_i1 = s2.create_interface() # lab.create_link(s1_i1, s2_i1) lab.connect_two_nodes(s1, s2) # this must remove the link between s1 and s2
def test_user_role_change(controller_url, client_library_session: ClientLibrary): cl_admin = client_library_session cl_admin_uid = client_library_session.user_management.user_id( cl_admin.username) # create non admin users cl_user1, cl_user2 = "cl_user1", "cl_user2" password = "******" res = cl_admin.user_management.create_user(username=cl_user1, pwd=password) cl_user1_uid = res["id"] res = cl_admin.user_management.create_user(username=cl_user2, pwd=password) cl_user2_uid = res["id"] cl_user1 = ClientLibrary( controller_url, username=cl_user1, password=password, ssl_verify=False, allow_http=True, ) cl_user2 = ClientLibrary( controller_url, username=cl_user2, password=password, ssl_verify=False, allow_http=True, ) cl_user1.create_lab("lab1-cl_user1") cl_user1.create_lab("lab2-cl_user1") assert cl_user2.all_labs(show_all=True) == [] # promote cl_user2 to admin cl_admin.user_management.update_user(user_id=cl_user2_uid, admin=True) # check if cl_user2 can see all the labs as admin all_labs = cl_user2.all_labs(show_all=True) assert len(all_labs) == 2 assert all_labs[0].owner == cl_user1_uid # check if cl_user2 can create user and delete users res = cl_user2.user_management.create_user(username="******", pwd=password) assert cl_user2.user_management.get_user(user_id=res["id"]) cl_user2.user_management.delete_user(user_id=res["id"]) with pytest.raises(requests.exceptions.HTTPError) as err: cl_user2.user_management.get_user(user_id=res["id"]) assert err.value.response.status_code == 404 # check cl_user2 can see licensing assert cl_user2.licensing.status() for lab in all_labs: cl_user2.remove_lab(lab.id) assert cl_user2.all_labs(show_all=True) == [] # promote cl_user1 to admin cl_admin.user_management.update_user(user_id=cl_user1_uid, admin=True) # check if cl_user1 can remove admin cl_user2 cl_user1.user_management.delete_user(user_id=cl_user2_uid) with pytest.raises(requests.exceptions.HTTPError) as err: cl_user1.user_management.get_user(user_id=cl_user2_uid) assert err.value.response.status_code == 404 # remove admin rights from cl_user1 cl_admin.user_management.update_user(user_id=cl_user1_uid, admin=False) lab = cl_admin.create_lab("origin-lab") assert cl_user1.all_labs(show_all=True) == [] with pytest.raises(requests.exceptions.HTTPError) as err: cl_user1.user_management.create_user(username="******", pwd=password) assert err.value.response.status_code == 403 with pytest.raises(requests.exceptions.HTTPError) as err: cl_user1.licensing.status() assert err.value.response.status_code == 403 cl_admin.user_management.delete_user(user_id=cl_user1_uid) # check that user cannot update its own user role with pytest.raises(requests.exceptions.HTTPError) as err: cl_admin.user_management.update_user(user_id=cl_admin_uid, admin=False) assert err.value.response.status_code == 400 # cleanup cl_admin.remove_lab(lab.id)
if args.action == 'create': lab = import_lab(client_library, args.topology) f = open(".lab_id", "w") f.write(lab.id) f.close() print('Starting ' + lab.title + '...') lab.start(wait=True) print('Done!') if args.action == 'destroy': f = open(".lab_id", "r") lab_id = f.read() f.close() print('Lab ID is ' + lab_id) lab = client_library.join_existing_lab(lab_id) print('Stoping lab' + lab_id) lab.stop() print('Wiping lab' + lab_id + ' out') lab.wipe() print('Removing lab' + lab_id) client_library.remove_lab(lab_id) print('Done!')