def urlcreate(request, g_name, g_password, host, port, private=False, volume_name="",): ''' For debugging purposes only, allows creation of RG via pure URL ''' session = request.session username = session['login_email'] kwargs = {} kwargs['port'] = int(port) kwargs['host'] = host kwargs['ms_username'] = g_name kwargs['ms_password'] = g_password kwargs['private'] = private if volume_name: vol = db.get_volume_by_name(volume_name) if not vol: return HttpResponse("No volume %s exists." % volume_name) if (vol.volume_id not in user.volumes_r) and (vol.volume_id not in user.volumes_rw): return HttpResponse("Must have read rights to volume %s to create RG for it." % volume_name) kwargs['volume_ids'] = list(vol.volume_id) try: new_rg = db.create_replica_gateway(user, vol, **kwargs) except Exception as E: return HttpResponse("RG creation error: %s" % E) return HttpResponse("RG succesfully created: " + str(new_rg))
def urlcreate( request, g_name, g_password, host, port, private=False, volume_name="", ): ''' For debugging purposes only, allows creation of RG via pure URL ''' session = request.session username = session['login_email'] kwargs = {} kwargs['port'] = int(port) kwargs['host'] = host kwargs['ms_username'] = g_name kwargs['ms_password'] = g_password kwargs['private'] = private if volume_name: vol = db.get_volume_by_name(volume_name) if not vol: return HttpResponse("No volume %s exists." % volume_name) if (vol.volume_id not in user.volumes_r) and (vol.volume_id not in user.volumes_rw): return HttpResponse( "Must have read rights to volume %s to create RG for it." % volume_name) kwargs['volume_ids'] = list(vol.volume_id) try: new_rg = db.create_replica_gateway(user, vol, **kwargs) except Exception as E: return HttpResponse("RG creation error: %s" % E) return HttpResponse("RG succesfully created: " + str(new_rg))
def create(request): ''' View to handle creation of RG's ''' session = request.session username = session['login_email'] user = db.read_user(username) # Helper method used to simplify error-handling. When fields are entered incorrectly, # a session message is set and this method is called. def give_create_form(username, session): message = session.pop('message', "") form = gatewayforms.CreateRG() t = loader.get_template( 'gateway_templates/create_replica_gateway.html') c = RequestContext(request, { 'username': username, 'form': form, 'message': message }) return HttpResponse(t.render(c)) if request.POST: # Validate input forms form = gatewayforms.CreateRG(request.POST, request.FILES) if form.is_valid(): kwargs = {} # Try and load JSON config file/data, if present. First check uploaded files, then # the text box. if "json_config" in request.FILES: if request.FILES['json_config'].multiple_chunks(): session[ 'message'] = "Uploaded file too large; please make smaller than 2.5M" return give_create_form(username, session) config = request.FILES['json_config'].read() try: kwargs['config'] = json.loads(config) except Exception as e: logging.info("Possible JSON load error: %s" % e) try: kwargs['config'] = json.loads("\"" + config + "\"") except Exception as e: logging.error("Definite JSON load error %s" % e) session['message'] = "Error parsing given JSON text." return give_create_form(username, session) # No upload, check text-box elif "json_config_text" in form.cleaned_data: try: kwargs['config'] = json.loads( form.cleaned_data['json_config_text']) except Exception as e: logging.info("Possible JSON load error: %s" % e) try: kwargs['config'] = json.loads( "\"" + str(form.cleaned_data['json_config_text']) + "\"") except Exception as e: logging.error("Definite JSON load error %s" % e) session['message'] = "Error parsing given JSON text." return give_create_form(username, session) try: kwargs['ms_username'] = form.cleaned_data['g_name'] kwargs['port'] = form.cleaned_data['port'] kwargs['host'] = form.cleaned_data['host'] kwargs['ms_password'] = form.cleaned_data['g_password'] kwargs['private'] = form.cleaned_data['private'] new_RG = db.create_replica_gateway(user, **kwargs) except Exception as E: session['message'] = "RG creation error: %s" % E return give_create_form(username, session) session['new_change'] = "Your new gateway is ready." session['next_url'] = '/syn/RG/allgateways/' session['next_message'] = "Click here to see all replica gateways." return redirect('/syn/thanks/') else: # Prep returned form values (so they don't have to re-enter stuff) if 'g_name' in form.errors: oldname = "" else: oldname = request.POST['g_name'] if 'host' in form.errors: oldhost = "" else: oldhost = request.POST['host'] if 'port' in form.errors: oldport = "" else: oldport = request.POST['port'] oldjson = request.POST['json_config_text'] # Prep error message message = "Invalid form entry: " for k, v in form.errors.items(): message = message + "\"" + k + "\"" + " -> " for m in v: message = message + m + " " # Give then the form again form = gatewayforms.CreateRG( initial={ 'g_name': oldname, 'host': oldhost, 'port': oldport, 'json_config_text': oldjson, }) t = loader.get_template( 'gateway_templates/create_replica_gateway.html') c = RequestContext(request, { 'username': username, 'form': form, 'message': message }) return HttpResponse(t.render(c)) else: # Not a POST, give them blank form return give_create_form(username, session)
def create(request): ''' View to handle creation of RG's ''' session = request.session username = session['login_email'] user = db.read_user( username ) # Helper method used to simplify error-handling. When fields are entered incorrectly, # a session message is set and this method is called. def give_create_form(username, session): message = session.pop('message', "") form = gatewayforms.CreateRG() t = loader.get_template('gateway_templates/create_replica_gateway.html') c = RequestContext(request, {'username':username,'form':form, 'message':message}) return HttpResponse(t.render(c)) if request.POST: # Validate input forms form = gatewayforms.CreateRG(request.POST, request.FILES) if form.is_valid(): kwargs = {} # Try and load JSON config file/data, if present. First check uploaded files, then # the text box. if "json_config" in request.FILES: if request.FILES['json_config'].multiple_chunks(): session['message'] = "Uploaded file too large; please make smaller than 2.5M" return give_create_form(username, session) config = request.FILES['json_config'].read() try: kwargs['config'] = json.loads(config) except Exception as e: logging.info("Possible JSON load error: %s" % e) try: kwargs['config'] = json.loads("\"" + config + "\"") except Exception as e: logging.error("Definite JSON load error %s" % e) session['message'] = "Error parsing given JSON text." return give_create_form(username, session) # No upload, check text-box elif "json_config_text" in form.cleaned_data: try: kwargs['config'] = json.loads(form.cleaned_data['json_config_text']) except Exception as e: logging.info("Possible JSON load error: %s" % e) try: kwargs['config'] = json.loads("\"" + str(form.cleaned_data['json_config_text']) + "\"") except Exception as e: logging.error("Definite JSON load error %s" % e) session['message'] = "Error parsing given JSON text." return give_create_form(username, session) try: kwargs['ms_username'] = form.cleaned_data['g_name'] kwargs['port'] = form.cleaned_data['port'] kwargs['host'] = form.cleaned_data['host'] kwargs['ms_password'] = form.cleaned_data['g_password'] kwargs['private'] = form.cleaned_data['private'] new_RG = db.create_replica_gateway(user, **kwargs) except Exception as E: session['message'] = "RG creation error: %s" % E return give_create_form(username, session) session['new_change'] = "Your new gateway is ready." session['next_url'] = '/syn/RG/allgateways/' session['next_message'] = "Click here to see all replica gateways." return redirect('/syn/thanks/') else: # Prep returned form values (so they don't have to re-enter stuff) if 'g_name' in form.errors: oldname = "" else: oldname = request.POST['g_name'] if 'host' in form.errors: oldhost = "" else: oldhost = request.POST['host'] if 'port' in form.errors: oldport = "" else: oldport = request.POST['port'] oldjson = request.POST['json_config_text'] # Prep error message message = "Invalid form entry: " for k, v in form.errors.items(): message = message + "\"" + k + "\"" + " -> " for m in v: message = message + m + " " # Give then the form again form = gatewayforms.CreateRG(initial={'g_name': oldname, 'host': oldhost, 'port': oldport, 'json_config_text':oldjson, }) t = loader.get_template('gateway_templates/create_replica_gateway.html') c = RequestContext(request, {'username':username,'form':form, 'message':message}) return HttpResponse(t.render(c)) else: # Not a POST, give them blank form return give_create_form(username, session)