diff --git a/app/__init__.py b/app/__init__.py index 463563425ce2f06a177c0ba9102163cfcfb57d8d..2d31e680b88318aa7e888fa77493dea7fa9f43e6 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -21,9 +21,6 @@ def create_app(config_name): def index(): global return_url - if 'username' not in session: - session['username'] = "name_test" + str(random.randint(0, 10000)) - if 'uid' not in session: session['uid']=str(uuid.uuid4()) @@ -31,7 +28,7 @@ def create_app(config_name): return_url = request.args.get("redir") or "/pun/sys/dashboard" if name != "": - return render_template('auth/SignUp.html', user=session['username'], room_id=session['uid']) + return render_template('auth/SignUp.html', room_id=session['uid']) # misc page error catching @app.errorhandler(403) diff --git a/app/templates/auth/SignUp.html b/app/templates/auth/SignUp.html index ea1b57f0318fab5403bd51cde58c26bcba0ac208..d2e94cd82619d7949f839430a462dba96530968f 100644 --- a/app/templates/auth/SignUp.html +++ b/app/templates/auth/SignUp.html @@ -11,9 +11,7 @@ var socket = io.connect('http://' + document.domain + ':' + location.port); socket.on( 'connect', function() { - socket.emit( 'user connected', { - user: document.getElementById("username").innerText - } ) + socket.emit( 'join_room' ) socket.on( 'creating account', function( msg ) { document.getElementById("error").innerText = ""; diff --git a/run.py b/run.py index 0a4251f76c6a4705393f23353254280327b8ef61..2bc594c736cf22caaa73dbb0598f999f477479a1 100644 --- a/run.py +++ b/run.py @@ -5,67 +5,42 @@ import time import signal import tasks - from flask import session from flask_socketio import SocketIO, join_room from app import create_app +from gevent import monkey +monkey.patch_all(subprocess=True) + config_name = os.getenv('FLASK_CONFIG') app = create_app(config_name) app.config['SECRET_KEY'] = 'vnkdjnfjknfl1232#' -socketio = SocketIO(app) - -# global username_global -# global room_global - +socketio = SocketIO(app, message_queue='amqp://reggie:reggie@ohpc:5672/socketio') -def create_account(username, fullname, reason): - # Todo: Ravi's and Louis's code goes here - print (time.strftime("%m-%d-%Y_%H:%M:%S") + '\tUser ' + username + ' added to queue') - socketio.emit("creating account", room=room_global) - signal.signal(signal.SIGALRM, account_agent) - signal.alarm(5) +@socketio.on('connect') +def socket_connect(): + pass +@socketio.on('join_room') +def on_room(): -def account_agent(*args): - # Todo: Code to create a consumer based on the username goes here - # Todo: Goal is to have it listening for confirmation. - username = session['username'] room = str(session['uid']) - - print(time.strftime("%m-%d-%Y_%H:%M:%S") + '\tAccount successfully created for ' + username) - socketio.emit("account ready", room=room) - return True - - -@socketio.on('user connected') -def user_connected(json, methods=['GET', 'POST']): - - username = json["user"] - room = str(session['uid']) - join_room(room) - - print(time.strftime("%m-%d-%Y_%H:%M:%S") + '\tUser ' + username + ' connected.') print('\t\t\t|-----Room ID: ' + room) @socketio.on('request account') def request_account(json, methods=['GET', 'POST']): print (time.strftime("%m-%d-%Y_%H:%M:%S") + '\tQueue request received: ' + str(json)) - print(json) - room = str(session['uid']) - socketio.emit("creating account", room=room) + sid = str(session['uid']) + print("Room: {}".format(sid)) try: - # create_account(json['username'], json['fullname'], json['reason']) - tasks.celery_create_account(json['username'], json['fullname'], json['reason'], room, socketio) - + tasks.celery_create_account.delay(json['username'], json['fullname'], json['reason'], session=sid) except Exception as e: print(time.strftime("%m-%d-%Y_%H:%M:%S") + "\tError in account creation: ", e) socketio.emit("Account creation failed", room) if __name__ == '__main__': - # app.run() socketio.run(app, host='0.0.0.0') diff --git a/tasks.py b/tasks.py index 18839c215cbc1f548cd5f7b00e519b1f5ccda224..f596d1d231d5e1dd9ccda5d8614708a1190adf04 100644 --- a/tasks.py +++ b/tasks.py @@ -7,20 +7,20 @@ from gevent import monkey monkey.patch_all(subprocess=True) broker_url = 'amqp://reggie:reggie@ohpc:5672/' -#broker_url = 'amqp://' celery = Celery('flask_user_reg', broker=broker_url) -# socketio = SocketIO(message_queue='amqp:///socketio') +socketio = SocketIO(message_queue='amqp://reggie:reggie@ohpc:5672/socketio') +def send_msg(event, room): + print("Post '{}' to room '{}'".format(event,room)) + socketio.emit(event, room=room) @celery.task -def celery_create_account(username, fullname, reason, room, socketio): - # Todo: Ravi's and Louis's code goes here +def celery_create_account(username, fullname, reason, session): + room = session print(time.strftime("%m-%d-%Y_%H:%M:%S") + '\tUser ' + username + ' added to queue') - socketio.emit("creating account", room=room) + send_msg('creating account', room) print(username) subprocess.call(["/opt/rabbitmq_agents/flask_producer.py", "ohpc_account_create", username]) - time.sleep(5) print(time.strftime("%m-%d-%Y_%H:%M:%S") + '\tAccount successfully created for ' + username) - socketio.emit('account ready', room=room) - + send_msg('account ready', room)