def main(argv): target_url = '' COMMAND = '' ALL = False AUTH = False DATASOURCE = False TERM = False COURSE = False USER = False MEMBERSHIP = False CLEANUP = False datasource_PK1 = None datasource_session = None usageStr = "\nrestdemo.py -t|--target <target root URL> -c|--command <command>\n" usageStr += "e.g restdemo.py -t www.myschool.edu -c create_course\n" usageStr += "command: <command>_<object> where <command> is one of the following:\n" usageStr += "\tcreate, read, read_all_, read_all_course_memberships, read_all_user_memberships, update, delete\n" usageStr += "and <object> is one of the following:\n" usageStr += "\tdatasource, term, course, user\n" usageStr += "-t is required; No -c args will run demo in predetermined order.\n" usageStr += "'-c authorize' demomonstrates the authorization process and does not create objects." usageStr += "-c commands require a valid datasource PK1 - \n" usageStr += "\ta datasource get will be run in these cases, defaulting to create\n" usageStr += "\tif the demo datasource does not exist." if len(sys.argv) > 1: #there are command line arguments try: opts, args = getopt.getopt(argv, "ht:c:", ["target=", "command="]) except getopt.GetoptError: print(usageStr) sys.exit(2) for opt, arg in opts: if opt == '-h': print(usageStr) sys.exit() elif opt == '-d': print("Deleting at end of run.") CLEANUP = True elif opt in ("-t", "--target"): target_url = arg.lstrip() elif opt in ("-c", "--command"): COMMAND = arg else: COMMAND = "Run All" print('[main] Target is:', target_url) print('[main] Command is:', COMMAND) else: print(usageStr) sys.exit(2) #Set up some booleans for processing flags and order of processing if "course" in COMMAND: print("[main] Run course command") COURSE = True elif "membership" in COMMAND: print("[main] Run membership command") MEMBERSHIP = True elif "user" in COMMAND: print("[main] Run user command") USER = True elif "term" in COMMAND: print("[main] Run term command") TERM = True elif "datasource" in COMMAND: print("[main] Run datasource command") DATASOURCE = True elif "authorize" in COMMAND: print("[main] Run authorization command") AUTH = True else: print("[main] Empty Command: Run All\n") ALL = True print('\n[main] Acquiring auth token...\n') authorized_session = AuthToken(target_url) authorized_session.setToken() print('\n[main] Returned token: ' + authorized_session.getToken() + '\n') if not AUTH: #run commands in required order if running ALL if DATASOURCE or ALL: #process Datasource command print("\n[main] Run datasource command: " + ('ALL' if ALL else COMMAND) + '...') datasource_session = DataSource(target_url, authorized_session.getToken()) if 'datasource' in COMMAND: datasource_session.execute(COMMAND, authorized_session.getToken()) else: if not datasource_PK1 or datasource_PK1 is None: datasource_session.createDataSource( authorized_session.getToken()) datasource_session.getDataSource( authorized_session.getToken()) datasource_session.getDataSources( authorized_session.getToken()) datasource_session.updateDataSource( authorized_session.getToken()) if TERM or ALL: term_session = Term(target_url, authorized_session.getToken()) #process term command print("\n[main] Run term command: " + ('ALL' if ALL else COMMAND) + '...') if 'term' in COMMAND: if (('delete' in COMMAND) or ('read' in COMMAND)): print( "[main] Deleting or getting does not require a datasource." ) else: if not datasource_PK1: print("[main] confirm datasource.") datasource_session = DataSource( target_url, authorized_session.getToken()) datasource_session.checkDataSource( authorized_session.getToken()) term_session.execute(COMMAND, "externalId:" + TERMEXTERNALID, authorized_session.getToken()) else: term_session.getTerms(authorized_session.getToken()) term_session.createTerm("externalId:" + DSKEXTERNALID, authorized_session.getToken()) term_session.getTerm(authorized_session.getToken()) term_session.updateTerm("externalId:" + DSKEXTERNALID, authorized_session.getToken()) if COURSE or ALL: course_session = Course(target_url, authorized_session.getToken()) #process course command print("\n[main] Run course command: " + ('ALL' if ALL else COMMAND) + '...') if 'course' in COMMAND: if (('delete' in COMMAND) or ('read' in COMMAND)): print( "[main] Deleting or getting does not require a datasource." ) else: if not datasource_PK1: print("[main] confirm datasource.") datasource_session = DataSource( target_url, authorized_session.getToken()) datasource_session.checkDataSource( authorized_session.getToken()) course_session.execute(COMMAND, "externalId:" + DSKEXTERNALID, authorized_session.getToken()) else: course_session.getCourses(authorized_session.getToken()) course_session.createCourse("externalId:" + DSKEXTERNALID, authorized_session.getToken()) course_session.getCourse(authorized_session.getToken()) course_session.updateCourse("externalId:" + DSKEXTERNALID, authorized_session.getToken()) if USER or ALL: user_session = User(target_url, authorized_session.getToken()) #process user command print("\n[main] Run user command: " + ('ALL' if ALL else COMMAND) + '...') if 'user' in COMMAND: if (('delete' in COMMAND) or ('read' in COMMAND)): print( "[main] Deleting or getting does not require a datasource." ) else: if not datasource_PK1: print("[main] confirm datasource.") datasource_session = DataSource( target_url, authorized_session.getToken()) datasource_session.checkDataSource( authorized_session.getToken()) user_session.execute(COMMAND, "externalId:" + DSKEXTERNALID, authorized_session.getToken()) else: user_session.getUsers(authorized_session.getToken()) user_session.createUser("externalId:" + DSKEXTERNALID, authorized_session.getToken()) user_session.getUser(authorized_session.getToken()) user_session.updateUser("externalId:" + DSKEXTERNALID, authorized_session.getToken()) if MEMBERSHIP or ALL: membership_session = Membership(target_url, authorized_session.getToken()) #process membership command print("\n[main] Run membership command: " + ('ALL' if ALL else COMMAND) + '...') if 'membership' in COMMAND: if (('delete' in COMMAND) or ('read' in COMMAND)): print( "[main] Deleting or getting does not require a datasource." ) else: if not datasource_PK1: print("[main] confirm datasource.") datasource_session = DataSource( target_url, authorized_session.getToken()) datasource_session.checkDataSource( authorized_session.getToken()) membership_session.execute(COMMAND, "externalId:" + DSKEXTERNALID, authorized_session.getToken()) else: membership_session.getCourseMemberships( authorized_session.getToken()) membership_session.createMembership( "externalId:" + DSKEXTERNALID, authorized_session.getToken()) membership_session.getUserMemberships( authorized_session.getToken()) membership_session.updateMembership( "externalId:" + DSKEXTERNALID, authorized_session.getToken()) membership_session.readUserMemberships( authorized_session.getToken()) #clean up if not using individual commands if ALL: print('\n[main] Completing Demo and deleting created objects...') print("[main] Deleting membership") membership_session.deleteMembership(authorized_session.getToken()) print("[main] Deleting Course") user_session.deleteUser(authorized_session.getToken()) print("[main] Deleting Course") course_session.deleteCourse(authorized_session.getToken()) print("[main] Deleting Term") term_session.deleteTerm(authorized_session.getToken()) print("[main] Deleting DataSource") datasource_session.deleteDataSource(authorized_session.getToken()) else: print("\nRemember to delete created demo objects!") print("[main] Processing Complete")
def main(argv): target_url = '' output_file = 'LearnObjectGen' object = 'all' index = 5000 req_number = 0 req_max = False usageStr = "$ python learnObjectGen.py -i|--index <start index> [-t|--target_url] [-f|--output_file] [-o|--object <Courses|Users|Memberships>] [-n|--number]" usageStr += "\n\t-t|--target_url : (Optional) Target URL - required to update with REST. If left blank output will be written to a the file specified by -f" usageStr += "\n\t-i|--index : (Optional) Starting index for object ids. e.g.: 1000" usageStr += "\n\t-n|--number : (Optional) Number of objects to create. e.g.: 10" usageStr += "\n\t-f|--output_file : (Optional) Snapshot Flat File prefix. Default: learnObjectGen" usageStr += "\nYou have to minimally provide either the target (-t) or index (-i)" usageStr += "\nProviding only the index arg writes Snapshot Flat Files for all objects (max count)." usageStr += "\nProviding only the target arg writes Snapshot Flat Files for all objects (max count) AND uses REST to create the objects on the target system." usageStr += "\n\tMax Counts: 100 Courses, 150 Users, 1000 Memberships" usageStr += "\nNOTE: Snapshot flat files are created to assist in managing created objects. These may be regenerated using the same index " usageStr += "and count arguments as when you created the objects and running without the -t argument.\n" usageStr += "Note: When creating memberships this tool will randomly distribute memberships, emulating a real world environment." usageStr += "Not all courses will have enrollments, not all Users will have enrollments. Regenerated membership files will not align with previously generated " usageStr += "membership snapshot files.\n" if len(sys.argv) > 1: #there are command line arguments try: opts, args = getopt.getopt( argv, "ht:f:o:i:n:", ["target=", "output_file=", "object=", "index=", "number="]) except getopt.GetoptError as err: print(err) print(usageStr) sys.exit(2) for opt, arg in opts: if opt in ("-h", "--help"): print(usageStr) sys.exit() elif opt in ("-t", "--target_url"): target_url = arg elif opt in ("-f", "--output_file"): output_file = arg elif opt in ("-i", "--index"): index = arg elif opt in ("-o", "--object"): object = arg elif opt in ("-n", "--number"): req_number = arg else: object = "all" if (req_number == 0): req_max = True if not output_file: output_file = OUTPUT_FILE if not index: index = INDEX print('[main] Object is:', object) print('[main] Index is:', index) print('[main] req_number is:', req_number) print('[main] req_max is:', req_max) if req_max: if object == 'all': print("Creating ", MAX_COURSES, " Courses, ", MAX_USERS, " Users, and ", MAX_MEMBERSHIPS, " Memberships.\n") elif object != 'all': print("Creating max number of " + object + "\n") else: if object == 'all': print("Creating ", req_number, " Courses, ", req_number, " Users, and ", req_number, " Memberships.\n") elif object != 'all': print("Creating ", req_number, " " + object + "\n") else: print(usageStr) sys.exit(2) start_time = datetime.datetime.now() if target_url: print('[main] Using REST APIs - Acquiring auth token...\n') global authorized_session authorized_session = AuthToken(target_url) authorized_session.setToken() print('[main] Returned token: ' + authorized_session.getToken() + '\n') print('[main] Checking DataSource and creating if necessary...\n') global datasource_session datasource_session = DataSource(target_url, authorized_session.getToken()) datasource_session.getDataSource(authorized_session.getToken()) if not datasource_session.datasource_PK1: datasource_session.createDataSource(authorized_session.getToken()) print("[main] Data Source not found - created new Data Source\n") else: print("[main] Data Source found.") else: print("[main] Writing snapshot flat file: {}".format(output_file)) #depending on all or individual objects iterate through and process the specified object if "all" in object: print("Processing All Objects") process_all(req_number, index, output_file, target_url) elif "courses" in object: print("Processing Courses") process_courses(req_number, index, output_file, target_url) elif "users" in object: print("Processing Users") if req_number == 0: req_number = MAX_USERS process_users(req_number, index, output_file, target_url) elif "memberships" in object: print("Processing Memberships") process_memberships(req_number, index, output_file, target_url) end_time = datetime.datetime.now() total_time = (end_time - start_time) print("Total Processing time: %s" % str(total_time))
def main(argv): target_url = '' COMMAND = '' ALL = False AUTH = False DATASOURCE = False TERM = False COURSE = False USER = False MEMBERSHIP = False CLEANUP = False datasource_PK1 = None usageStr = "\nrestdemo.py -t|--target <target root URL> -c|--command <command>\n" usageStr += "e.g restdemo.py -t www.myschool.edu -c create_course\n" usageStr += "command: <command>_<object> where <command> is one of the following:\n" usageStr += "\tcreate, read, read_all, update, delete\n" usageStr += "and <object> is one of the following:\n" usageStr += "\tdatasource, term, course, user, membership\n" usageStr += "-t is required; No -c args will run demo in predetermined order.\n" usageStr += "'-c authorize' demomonstrates the authorization process and does not create objects." usageStr += "-c commands require a valid datasource PK1 - \n" usageStr += "\ta datasource get will be run in these cases, defaulting to create\n" usageStr += "\tif the demo datasource does not exist." if len(sys.argv) > 1: #there are command line arguments try: opts, args = getopt.getopt(argv,"ht:c:",["target=","command="]) except getopt.GetoptError: print (usageStr) sys.exit(2) for opt, arg in opts: if opt == '-h': print (usageStr) sys.exit() elif opt == '-d': print ("Deleting at end of run.") CLEANUP = True elif opt in ("-t", "--target"): target_url = arg.lstrip() elif opt in ("-c", "--command"): COMMAND = arg else: COMMAND = "Run All" print ('[main] Target is:', target_url) print ('[main] Command is:', COMMAND) else: print(usageStr) sys.exit(2) #Set up some booleans for processing flags and order of processing if "course" in COMMAND: print("[main] Run course command") COURSE = True elif "user" in COMMAND: print("[main] Run user command") USER = True elif "membership" in COMMAND: print("[main] Run membership command") MEMBERSHIP = True elif "term" in COMMAND: print("[main] Run term command") TERM = True elif "datasource" in COMMAND: print("[main] Run datasource command") DATASOURCE = True elif "authorize" in COMMAND: print("[main] Run authorization command") AUTH = True else: print("[main] Empty Command: Run All\n") ALL = True print ('\n[main] Acquiring auth token...\n') authorized_session = AuthToken(target_url) authorized_session.setToken() print ('\n[main] Returned token: ' + authorized_session.getToken() + '\n') if not AUTH: #run commands in required order if running ALL if DATASOURCE or ALL: #process Datasource command print("\n[main] Run datasource command: " + ('ALL' if ALL else COMMAND) + '...') datasource_session = DataSource(target_url, authorized_session.getToken()) if 'datasource' in COMMAND: datasource_session.execute(COMMAND, authorized_session.getToken()) else: #datasource_session.getDataSources(authorized_session.getToken()) datasource_session.createDataSource(authorized_session.getToken()) datasource_PK1 = datasource_session.datasource_PK1 print("[main] datasource_PK1: " + datasource_PK1) datasource_session.getDataSource(authorized_session.getToken()) datasource_session.updateDataSource(authorized_session.getToken()) if TERM or ALL: term_session = Term(target_url, authorized_session.getToken()) #process term command print("\n[main] Run term command: " + ('ALL' if ALL else COMMAND) + '...') if 'term' in COMMAND: if (('delete' in COMMAND) or ('read' in COMMAND)): print ("[main] Deleting or getting does not require a datasource.") else: print("[main] datasource_PK1: not known... searching...") datasource_session = DataSource(target_url, authorized_session.getToken()) datasource_session.getDataSource(authorized_session.getToken()) datasource_PK1 = datasource_session.datasource_PK1 print("[main] datasource_PK1: " + datasource_PK1) if (datasource_PK1 is None): print ("[main] data source not found, creating for demo...") datasource_session.createDataSource(authorized_session.getToken()) datasource_PK1 = datasource_session.datasource_PK1 term_session.execute(COMMAND, datasource_PK1, authorized_session.getToken()) else: #term_session.getTerms(authorized_session.getToken()) term_session.createTerm(datasource_PK1, authorized_session.getToken()) term_session.getTerm(authorized_session.getToken()) term_session.updateTerm(datasource_PK1, authorized_session.getToken()) if COURSE or ALL: course_session = Course(target_url, authorized_session.getToken()) #process course command print("\n[main] Run course command: " + ('ALL' if ALL else COMMAND) + '...') if 'course' in COMMAND: if (('delete' in COMMAND) or ('read' in COMMAND)): print ("[main] Deleting or getting does not require a datasource.") else: print("[main] datasource_PK1: not known... searching...") datasource_session = DataSource(target_url, authorized_session.getToken()) datasource_session.getDataSource(authorized_session.getToken()) datasource_PK1 = datasource_session.datasource_PK1 print("[main] datasource_PK1: " + datasource_PK1) if (datasource_PK1 is None): print ("[main] data source not found, creating for demo...") datasource_session.createDataSource(authorized_session.getToken()) datasource_PK1 = datasource_session.datasource_PK1 course_session.execute(COMMAND, datasource_PK1, authorized_session.getToken()) else: #course_session.getCourses(authorized_session.getToken()) course_session.createCourse(datasource_PK1, authorized_session.getToken()) course_session.getCourse(authorized_session.getToken()) course_session.updateCourse(datasource_PK1, authorized_session.getToken()) if USER or ALL: user_session = User(target_url, authorized_session.getToken()) #process user command print("\n[main] Run user command: " + ('ALL' if ALL else COMMAND) + '...') if 'user' in COMMAND: if (('delete' in COMMAND) or ('read' in COMMAND)): print ("[main] Deleting or getting does not require a datasource.") else: print("[main] datasource_PK1: not known... searching...") datasource_session = DataSource(target_url, authorized_session.getToken()) datasource_session.getDataSource(authorized_session.getToken()) datasource_PK1 = datasource_session.datasource_PK1 print("[main] datasource_PK1: " + datasource_PK1) if (datasource_PK1 is None): print ("[main] data source not found, creating for demo...") datasource_session.createDataSource(authorized_session.getToken()) datasource_PK1 = datasource_session.datasource_PK1 user_session.execute(COMMAND, datasource_PK1, authorized_session.getToken()) else: #user_session.getUsers(authorized_session.getToken()) user_session.createUser(datasource_PK1, authorized_session.getToken()) user_session.getUser(authorized_session.getToken()) user_session.updateUser(datasource_PK1, authorized_session.getToken()) if MEMBERSHIP or ALL: membership_session = Membership(target_url, authorized_session.getToken()) #process membership command print("\n[main] Run membership command: " + ('ALL' if ALL else COMMAND) + '...') if 'membership' in COMMAND: if (('delete' in COMMAND) or ('read' in COMMAND)): print ("[main] Deleting or getting does not require a datasource.") else: print("[main] datasource_PK1: not known... searching...") datasource_session = DataSource(target_url, authorized_session.getToken()) datasource_session.getDataSource(authorized_session.getToken()) datasource_PK1 = datasource_session.datasource_PK1 print("[main] datasource_PK1: " + datasource_PK1) if (datasource_PK1 is None): print ("[main] data source not found, creating for demo...") datasource_session.createDataSource(authorized_session.getToken()) datasource_PK1 = datasource_session.datasource_PK1 membership_session.execute(COMMAND, datasource_PK1, authorized_session.getToken()) else: #membership_session.getMemberships(authorized_session.getToken()) membership_session.createMembership(datasource_PK1, authorized_session.getToken()) membership_session.getMembership(authorized_session.getToken()) membership_session.updateMembership(datasource_PK1, authorized_session.getToken()) membership_session.readUserMemberships(authorized_session.getToken()) #clean up if not using individual commands if ALL: print('\n[main] Completing Demo and deleting created objects...') print ("[main] Deleting membership") membership_session.deleteMembership(authorized_session.getToken()) print ("[main] Deleting Course") user_session.deleteUser(authorized_session.getToken()) print ("[main] Deleting Course") course_session.deleteCourse(authorized_session.getToken()) print ("[main] Deleting Term") term_session.deleteTerm(authorized_session.getToken()) print ("[main] Deleting DataSource") datasource_session.deleteDataSource(authorized_session.getToken()) else: print("Remember to delete created demo objects!") print("[main] Processing Complete")
def main(argv): target_url = '' output_file = 'LearnObjectGen' object = 'all' index = 5000 req_number = 0 req_max = False usageStr = "$ python learnObjectGen.py -i|--index <start index> [-t|--target_url] [-f|--output_file] [-o|--object <Courses|Users|Memberships>] [-n|--number]" usageStr += "\n\t-t|--target_url : (Optional) Target URL - required to update with REST. If left blank output will be written to a the file specified by -f" usageStr += "\n\t-i|--index : (Optional) Starting index for object ids. e.g.: 1000" usageStr += "\n\t-n|--number : (Optional) Number of objects to create. e.g.: 10" usageStr += "\n\t-f|--output_file : (Optional) Snapshot Flat File prefix. Default: learnObjectGen" usageStr += "\nYou have to minimally provide either the target (-t) or index (-i)" usageStr += "\nProviding only the index arg writes Snapshot Flat Files for all objects (max count)." usageStr += "\nProviding only the target arg writes Snapshot Flat Files for all objects (max count) AND uses REST to create the objects on the target system." usageStr += "\n\tMax Counts: 100 Courses, 150 Users, 1000 Memberships" usageStr += "\nNOTE: Snapshot flat files are created to assist in managing created objects. These may be regenerated using the same index " usageStr += "and count arguments as when you created the objects and running without the -t argument.\n" usageStr += "Note: When creating memberships this tool will randomly distribute memberships, emulating a real world environment." usageStr += "Not all courses will have enrollments, not all Users will have enrollments. Regenerated membership files will not align with previously generated " usageStr += "membership snapshot files.\n" if len(sys.argv) > 1: #there are command line arguments try: opts, args = getopt.getopt(argv,"ht:f:o:i:n:",["target=","output_file=","object=","index=","number="]) except getopt.GetoptError as err: print (err) print (usageStr) sys.exit(2) for opt, arg in opts: if opt in ("-h", "--help"): print (usageStr) sys.exit() elif opt in ("-t", "--target_url"): target_url = arg elif opt in ("-f", "--output_file"): output_file = arg elif opt in ("-i", "--index"): index = arg elif opt in ("-o", "--object"): object = arg elif opt in ("-n", "--number"): req_number = arg else: object = "all" if (req_number == 0): req_max = True if not output_file: output_file = OUTPUT_FILE if not index: index = INDEX print ('[main] Object is:', object) print ('[main] Index is:', index) print ('[main] req_number is:', req_number) print ('[main] req_max is:', req_max) if req_max: if object == 'all': print ("Creating ", MAX_COURSES, " Courses, ", MAX_USERS, " Users, and ", MAX_MEMBERSHIPS, " Memberships.\n") elif object != 'all': print ("Creating max number of " + object + "\n") else: if object == 'all': print ("Creating ", req_number, " Courses, ", req_number, " Users, and ", req_number, " Memberships.\n") elif object != 'all': print ("Creating ", req_number, " " + object + "\n") else: print(usageStr) sys.exit(2) start_time = datetime.datetime.now() if target_url: print ('[main] Using REST APIs - Acquiring auth token...\n') global authorized_session authorized_session = AuthToken(target_url) authorized_session.setToken() print ('[main] Returned token: ' + authorized_session.getToken() + '\n') print ('[main] Checking DataSource and creating if necessary...\n') global datasource_session datasource_session = DataSource(target_url, authorized_session.getToken()) datasource_session.getDataSource(authorized_session.getToken()) if not datasource_session.datasource_PK1: datasource_session.createDataSource(authorized_session.getToken()) print ("[main] Data Source not found - created new Data Source\n") else: print ("[main] Data Source found.") else: print ("[main] Writing snapshot flat file: {}".format(output_file)) #depending on all or individual objects iterate through and process the specified object if "all" in object: print("Processing All Objects") process_all(req_number, index, output_file, target_url) elif "courses" in object: print("Processing Courses") process_courses(req_number, index, output_file, target_url) elif "users" in object: print("Processing Users") if req_number == 0: req_number = MAX_USERS process_users(req_number, index, output_file, target_url) elif "memberships" in object: print("Processing Memberships") process_memberships(req_number, index, output_file, target_url) end_time = datetime.datetime.now() total_time = (end_time - start_time) print ("Total Processing time: %s" % str(total_time))