def do_action(self): print "CLEANED", self.cleaned_data try: connect('user', port=27777) users = Users() except: print "ERROR: INternal Server error, please contact the admin" pass try: project = Project( title=self.cleaned_data["title"], abstract=self.cleaned_data["abstract"], broader_impact=self.cleaned_data["broader_impact"], intellectual_merit=self.cleaned_data["intellectual_merit"], scale_of_use=self.cleaned_data["scale_of_use"], use_of_fg=self.cleaned_data["use_of_fg"], categories=self.cleaned_data["categories"], keywords=self.cleaned_data["keywords"], ) projects.add(project) pass except Exception, e: print e pass
def do_action(self): print "CLEANED", self.cleaned_data try: connect('user', port=27777) users = Users() except: print "ERROR: Internal Server error, please contact the admin" pass try: user = User( title=self.cleaned_data["title"], firstname=self.cleaned_data["firstname"], lastname=self.cleaned_data["lastname"], email=self.cleaned_data["email"], username=self.cleaned_data["username"], password=self.cleaned_data["password"], phone=self.cleaned_data["phone"], department=self.cleaned_data["department"], institution=self.cleaned_data["institution"], address=self.cleaned_data["address"], country=self.cleaned_data["country"], citizenship=self.cleaned_data["citizenship"], bio=self.cleaned_data["bio"], ) users.add(user) pass except Exception, e: print e pass
def run(self): banner("Install Cloudmesh Management") obj = Mongo() obj.check_mongo() get_mongo_db("manage", DBConnFactory.TYPE_MONGOENGINE) install.run(self) banner("Adding Super User") users = Users() found = User.objects(username='******') if not found: data = User( status="approved", title="None", firstname="Super", lastname="User", email="*****@*****.**", username="******", active=True, password=sha256_crypt.encrypt("MyPassword"), phone="555-555-5555", department="IT", institution="IU", institutionrole="Other", address="IU", country="United States(US)", citizenship="United States(US)", bio="Manage Project Committee", url="http://cloudmesh.github.io/cloudmesh.html", advisor="None", confirm=sha256_crypt.encrypt("MyPassword"), projects=[], ) users.add(data)
def do_action(self): print "CLEANED", self.cleaned_data try: connect('user', port=27777) users = Users() except: print "ERROR: Internal Server error, please contact the admin" pass
def test_adduserfromfile(self): HEADING() """ Test to add user from file """ user = Users() print "User count before addition: ", User.objects().count() file_path = "etc/cloudmesh_user_info.yaml" user.create_user_from_file(file_path) print "User count after addition: ", User.objects().count()
def test_listusers(self): HEADING() """ Test to list users in default format followed by JSON format """ user = Users() print "Listing users in default format" user.list_users() print "Listing users in JSON format" user.list_users(display_fmt='json')
from faker import Factory from pprint import pprint from passlib.hash import sha256_crypt import uuid from cloudmesh_base.util import banner from cloudmesh_management.mongo import Mongo obj = Mongo() obj.check_mongo() get_mongo_db("manage", DBConnFactory.TYPE_MONGOENGINE) # -------------------------------------------- # The generate class generates 10 random users # -------------------------------------------- users = Users() projects = Projects() # http://www.joke2k.net/faker fake = Factory.create() def random_user(): """ Returns a random user in a dict :rtype: dict """ firstname = fake.first_name() prefix = fake.prefix()
def do_management(self, args, arguments): """management: Command line for Administrators to manage users and projects Usage: management version management admin user generate [--count=N] management admin user list [USERNAME] [--format=FORMAT] [--status=STATUS] management admin user add [YAMLFILE] management admin user delete [USERNAME] management admin user clear management admin user status USERNAME management admin user approve [USERNAME] management admin user activate [USERNAME] management admin user suspend [USERNAME] management admin user block [USERNAME] management admin user deny [USERNAME] management admin user assign [USERNAME] [ROLE] management admin user password USERNAME PASSWORD management admin user projects USERNAME management admin project generate [--count=N] management admin project list [PROJECTID] [--format=FORMAT] management admin project add [YAMLFILE] management admin project delete [PROJECTID] management admin project clear management admin project status [PROJECTID] management admin project activate [PROJECTID] management admin project deactivate [PROJECTID] management admin project close [PROJECTID] management admin project add [USERNAME] [PROJECTID] [ROLE] management admin project remove [USERNAME] [PROJECTID] [ROLE] management admin export [DATABASE] [COLLECTION] [--user=USERNAME] [--password=PASSWORD] management admin import [--file=FILENAME] [--dir=DIRNAME] [--db=DBNAME] [--collection=NAME] [--user=USERNAME] [--password=PASSWORD] management committee setup management committee reviewer add [PROJECTID] [USERNAME] management committee reviewer remove [PROJECTID] [USERNAME] management committee list management committee project list [PROJECTID] [--format=FORMAT] [--status=STATUS] management committee project status management committee project approve [PROJECTID] management committee project deny [PROJECTID] management committee project block [PROJECTID] management committee project activate [PROJECTID] management committee project close [PROJECTID] management committee project open [PROJECTID] management user apply [--user=USERFILE|--project=PROJECTFILE] management user configure [USERNAME] management user password management user status management user add-sshkey [FILENAME] Options: --format=json Show the user details in json format """ # arguments = docopt(management_command.__doc__, args[1:]) try: if arguments['version']: Console.info("Version: " + get_version()) elif arguments['admin'] and arguments['user'] and arguments[ 'generate']: if arguments['--count']: count = int(arguments['--count']) generate_users(count) else: generate_users(10) elif arguments['admin'] and arguments['user'] and arguments['list']: user = Users() display_fmt = None user_name = None status = None if arguments['--format']: display_fmt = arguments['--format'] if arguments['USERNAME']: user_name = arguments['USERNAME'] if arguments['--status']: status = arguments['--status'] user.list_users(display_fmt, user_name, status) elif arguments['admin'] and arguments['user'] and arguments['add']: user = Users() user.create_user_from_file(arguments['YAMLFILE']) elif arguments['admin'] and arguments['user'] and arguments[ 'delete']: if arguments['USERNAME']: user = Users() user.delete_user(arguments['USERNAME']) else: Console.error("Please specify a user to be removed") elif arguments['admin'] and arguments['user'] and arguments[ 'clear']: user = Users() user.clear() elif arguments['admin'] and arguments['user'] and arguments[ 'status']: user = Users() user_status = user.get_user_status(arguments['USERNAME']) if user_status: Console.info("Status of user " + arguments['USERNAME'] + " - " + user.get_user_status(arguments['USERNAME'])) else: Console.info( "User {0} not available in the database.".format( arguments['USERNAME'])) return elif arguments['admin'] and arguments['user'] and arguments[ 'approve']: if arguments['USERNAME']: user = Users() user.amend_user_status(arguments['USERNAME'], new_status='approved') Console.info("User " + arguments['USERNAME'] + " approved.") else: Console.error("Please specify a user to be amended") elif arguments['admin'] and arguments['user'] and arguments[ 'activate']: if arguments['USERNAME']: user = Users() user.amend_user_status(arguments['USERNAME'], new_status='active') Console.info("User " + arguments['USERNAME'] + " activated.") else: Console.error("Please specify a user to be amended") elif arguments['admin'] and arguments['user'] and arguments[ 'suspend']: if arguments['USERNAME']: user = Users() user.amend_user_status(arguments['USERNAME'], new_status='suspended') Console.info("User " + arguments['USERNAME'] + " suspended.") else: Console.error("Please specify a user to be amended") elif arguments['admin'] and arguments['user'] and arguments[ 'block']: if arguments['USERNAME']: user = Users() user.amend_user_status(arguments['USERNAME'], new_status='blocked') Console.info("User " + arguments['USERNAME'] + " blocked.") else: Console.error("Please specify a user to be amended") elif arguments['admin'] and arguments['user'] and arguments['deny']: if arguments['USERNAME']: user = Users() user.amend_user_status(arguments['USERNAME'], new_status='denied') Console.info("User " + arguments['USERNAME'] + " denied.") else: Console.error("Please specify a user to be amended") elif arguments['admin'] and arguments['user'] and arguments[ 'assign']: if arguments['USERNAME'] and arguments['ROLE']: user = Users() user.set_role(arguments['USERNAME'], arguments['ROLE']) elif arguments['admin'] and arguments['user'] and arguments[ 'password']: user = Users() user.set_password(arguments['USERNAME'], arguments['PASSWORD']) elif arguments['admin'] and arguments['user'] and arguments[ 'projects']: user = Users() user.list_projects(arguments['USERNAME']) # # Project part # elif arguments['admin'] and arguments['project'] and arguments[ 'generate']: if arguments['--count']: count = int(arguments['--count']) generate_projects(count) Console.info(str(count) + " projects generated.") else: generate_projects(10) Console.info("10 projects generated.") elif arguments['admin'] and arguments['project'] and arguments[ 'list']: project = Projects() display_fmt = None project_id = None if arguments['--format']: display_fmt = arguments['--format'] if arguments['PROJECTID']: project_id = arguments['PROJECTID'] project.list_projects(display_fmt, project_id) elif arguments['admin'] and arguments['project'] and arguments[ 'add'] and arguments['YAMLFILE']: project = Projects() project.create_project_from_file(arguments['YAMLFILE']) elif arguments['admin'] and arguments['project'] and arguments[ 'delete']: if arguments['PROJECTID']: project = Projects() project.delete_project(arguments['PROJECTID']) else: Console.error("Please specify a project id to be removed") elif arguments['admin'] and arguments['project'] and arguments[ 'clear']: project = Projects() project.clear() Console.info("Projects cleared from the database.") elif arguments['admin'] and arguments['project'] and arguments[ 'status']: project = Projects() Console.info( "Status of project is: " + project.get_project_status(arguments['PROJECTID'])) elif arguments['admin'] and arguments['project'] and arguments[ 'activate']: if arguments['PROJECTID']: project = Projects() project.set_project_status(arguments['PROJECTID'], 'active') Console.info("Project " + arguments['PROJECTID'] + " activated.") else: Console.error("Please specify a project to be amended") elif arguments['admin'] and arguments['project'] and arguments[ 'deactivate']: if arguments['PROJECTID']: project = Projects() project.set_project_status(arguments['PROJECTID'], 'blocked') Console.info("Project " + arguments['PROJECTID'] + " de-activated.") else: Console.error("Please specify a project to be amended") elif arguments['admin'] and arguments['project'] and arguments[ 'close']: if arguments['PROJECTID']: project = Projects() project.set_project_status(arguments['PROJECTID'], 'closed') Console.info("Project " + arguments['PROJECTID'] + " closed.") else: Console.error("Please specify a project to be amended") elif arguments['admin'] and arguments['project'] and arguments[ 'add'] and arguments['USERNAME']: project = Projects() project.add_user(arguments['USERNAME'], arguments['PROJECTID'], arguments['ROLE']) elif arguments['admin'] and arguments['project'] and arguments[ 'remove'] and arguments['USERNAME']: project = Projects() project.remove_user(arguments['USERNAME'], arguments['PROJECTID'], arguments['ROLE']) # # Database export/import part # elif arguments['admin'] and arguments['export']: database = None username = None password = None if arguments['DATABASE']: database = arguments['DATABASE'] else: Console.info("Please specify the database..") # if arguments['COLLECTION']: coll_name = arguments['COLLECTION'] else: coll_name = "*" # if arguments['--user']: username = arguments['--user'] if arguments['--password']: password = arguments['--password'] # DBUtil().serialize(db=database, collection=coll_name, user_name=username, pwd=password) elif arguments['admin'] and arguments['import']: database = None coll_name = None filename = None username = None password = None dir_name = None if arguments['--file']: filename = arguments['--file'] if arguments['--dir']: dir_name = arguments['--dir'] if arguments['--db']: database = arguments['--db'] if arguments['--collection']: coll_name = arguments['--collection'] if arguments['--user']: username = arguments['--user'] if arguments['--password']: password = arguments['--password'] # DBUtil().de_serialize(file=filename, dir=dir_name, db=database, collection=coll_name, user_name=username, pwd=password) # # # COMMITTEE SECTION # # elif arguments['committee'] and arguments['setup']: committee = Committees() committee.setup_committee() elif arguments['committee'] and arguments['remove']: if arguments['PROJECTID']: project_id = arguments['PROJECTID'] committee = Committees() committee.remove_committee(project_id) else: Console.error("Please specify a valid project ID.") elif arguments['committee'] and arguments[ 'reviewer'] and arguments['add']: if arguments['USERNAME'] and arguments['PROJECTID']: username = arguments['USERNAME'] project_id = arguments['PROJECTID'] committee = Committees() committee.add_reviewers(project_id, username) Console.info( "User {0} added as a reviewer for the project with ID {1}" .format(username, project_id)) else: Console.error("Please specify a project ID and user name.") elif arguments['committee'] and arguments[ 'reviewer'] and arguments['remove']: if arguments['USERNAME'] and arguments['PROJECTID']: username = arguments['USERNAME'] project_id = arguments['PROJECTID'] committee = Committees() committee.remove_reviewers(project_id, username) Console.info( "User {0} added as a reviewer for the project with ID {1}" .format(username, project_id)) else: Console.error("Please specify a project ID and user name.") elif arguments['committee'] and arguments['list']: committee = Committees() committee.list_committee() elif arguments['committee'] and arguments['project'] and arguments[ 'status']: project = Projects() Console.info( "Status of project is: " + project.get_project_status(arguments['PROJECTID'])) elif arguments['committee'] and arguments['project'] and arguments[ 'list']: project = Projects() display_fmt = None project_id = None if arguments['--format']: display_fmt = arguments['--format'] if arguments['PROJECTID']: project_id = arguments['PROJECTID'] project.list_projects(display_fmt, project_id) elif arguments['committee'] and arguments['project'] and arguments[ 'approve']: if arguments['PROJECTID']: project = Projects() project.amend_project_status(arguments['PROJECTID'], 'approved') Console.info("Project " + arguments['PROJECTID'] + " approved.") else: Console.error("Please specify a project to be amended") elif arguments['committee'] and arguments['project'] and arguments[ 'deny']: if arguments['PROJECTID']: project = Projects() project.amend_project_status(arguments['PROJECTID'], 'denied') Console.info("Project " + arguments['PROJECTID'] + " denied.") else: Console.error("Please specify a project to be amended") elif arguments['committee'] and arguments['project'] and arguments[ 'block']: if arguments['PROJECTID']: project = Projects() project.amend_project_status(arguments['PROJECTID'], 'blocked') Console.info("Project " + arguments['PROJECTID'] + " blocked.") else: Console.error("Please specify a project to be amended") elif arguments['committee'] and arguments['project'] and arguments[ 'activate']: if arguments['PROJECTID']: project = Projects() project.set_project_status(arguments['PROJECTID'], 'active') Console.info("Project " + arguments['PROJECTID'] + " activated.") else: Console.error("Please specify a project to be amended") elif arguments['committee'] and arguments['project'] and arguments[ 'close']: if arguments['PROJECTID']: project = Projects() project.amend_project_status(arguments['PROJECTID'], 'closed') Console.info("Project " + arguments['PROJECTID'] + " closed.") else: Console.error("Please specify a project to be amended") elif arguments['committee'] and arguments['project'] and arguments[ 'open']: if arguments['PROJECTID']: project = Projects() project.amend_project_status(arguments['PROJECTID'], 'opened') Console.info("Project " + arguments['PROJECTID'] + " opened.") else: Console.error("Please specify a project to be amended") # # # USER SECTION # # elif arguments['user'] and arguments['apply']: if arguments['--user']: user = Users() user.create_user_from_file(arguments['--user']) elif arguments['--project']: project = Projects() project.create_project_from_file(arguments['--project']) else: Console.info( "Submit a yaml file in the following format if you are applying for a user account:" ) with open('etc/cloudmesh_user_info.yaml', 'r') as f: doc = yaml.load(f) print( "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" ) print(yaml.dump(doc, default_flow_style=False)) print( "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" ) Console.info( "Submit a yaml file in the following format if you want to setup a project:" ) print( "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" ) with open('etc/cloudmesh_project_info.yaml', 'r') as f: doc = yaml.load(f) print(yaml.dump(doc, default_flow_style=False)) print( "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" ) elif arguments['user'] and arguments['configure']: if arguments['USERNAME']: user = Users() user.create_config(arguments['USERNAME']) else: Console.error("Please specify a username to configure.") elif arguments['user'] and arguments['password']: user = Users() current_user = get_current_user() if current_user: if current_user == arguments['user']: user.set_password(arguments['user'], arguments['password']) else: Console.error("Set the password for your username.") else: Console.error("Local User configuration not found.") implement() elif arguments['user'] and arguments['status']: implement() except Exception, e: Console.error("Invalid arguments") print(e)