domain_name = domain_name + str(id_suffix) api.WriteMessageToReservationOutput(reservationContext["id"], "The requested domain already exists, appending {} to new domain name, please contact system admin at [email protected]".format(id_suffix)) api.AddNewDomain(domainName=domain_name, description="Domain for {0} {1}'s Trial".format(first_name, last_name)) else: api.AddNewDomain(domainName=domain_name, description="Domain for {0} {1}'s Trial".format(first_name, last_name)) # Create User Account api.WriteMessageToReservationOutput(reservationContext["id"], "2. Creating trial user") if new_username in [user.Name.lower() for user in api.GetAllUsersDetails().Users]: generated_password = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(8)) api.UpdateUser(username=new_username, email=email, isActive=True) api.UpdateUserPassword(username=new_username, password=generated_password) api.WriteMessageToReservationOutput(reservationContext["id"], "This user already had a trial, if this is an issue, please contact admin at [email protected]") else: generated_password = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(8)) api.AddNewUser(username=new_username, password=generated_password, email=email, isActive=True) api.UpdateUsersLimitations([UserUpdateRequest(Username=email, MaxConcurrentReservations="2", MaxReservationDuration=str(4*60))]) # Create Group and add to domain api.WriteMessageToReservationOutput(reservationContext["id"], "3. Configuring new domain permissions") new_group_name = domain_name api.AddNewGroup(groupName=new_group_name, description="Regular Users Group for " + domain_name + " domain", groupRole="Regular") api.AddUsersToGroup(usernames=[new_username, owner_email], groupName=new_group_name) api.AddGroupsToDomain(domainName=domain_name, groupNames=[new_group_name]) # Import content api.WriteMessageToReservationOutput(reservationContext["id"], "4. Importing Content to new domain") api_root_url = 'http://{0}:{1}/Api'.format(connectivityContext["serverAddress"], connectivityContext["qualiAPIPort"]) blueprints_to_export = [blueprint.Name for blueprint in api.GetDomainDetails("Master").Topologies]
api = CloudShellAPISession(host="localhost", username="******", password="******", domain="Global") with open("user_emails.txt") as f: user_lines = [x.rstrip() for x in f.readlines()] user_emails = [x for x in user_lines if x] users = [] for email in user_emails: split = email.split("@") user = User(email=email, user_name=split[0]) users.append(user) for user in users: print(f"adding user: {user.user_name}...") try: api.AddNewUser(username=user.user_name, email=user.email, password=DEFAULT_PASSWORD, isActive=True, isAdmin=IS_ADMINS) except Exception as e: print(f"issue creating user {user.user_name}. Skipping. Error: {str(e)}") else: print("user created") print("==========") print("adding users to group...") user_names = [x.user_name for x in users] api.AddUsersToGroup(usernames=user_names, groupName=TARGET_GROUP) print("Script Done!")