def volimport(request): with client as c: job = c.call('pool.get_current_import_disk_job') if job is not None: if job["state"] in ["SUCCESS", "FAILED", "ABORTED"]: return render(request, 'storage/import_stats.html', job) return render(request, 'storage/import_progress.html') if request.method == "POST": form = forms.VolumeImportForm(request.POST) if form.is_valid(): form.done(request) with client as c: c.call( 'pool.import_disk', "/dev/{0}".format(form.cleaned_data.get('volume_disks')), form.cleaned_data.get('volume_fstype').lower(), form.cleaned_data.get('volume_dest_path'), ) return render(request, 'storage/import_progress.html') else: if 'volume_disks' in request.POST: disks = request.POST.getlist('volume_disks') else: disks = None else: form = forms.VolumeImportForm() disks = [] return render(request, 'storage/import.html', { 'form': form, 'disks': disks })
def volimport(request): if os.path.exists(SOCKIMP): s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) s.connect(SOCKIMP) s.send("get_progress") data = json.loads(s.recv(1024)) s.close() if data["status"] == "finished": return render(request, 'storage/import_stats.html', {'vol': data["volume"]}) if data["status"] == "error": return render(request, 'storage/import_stats.html', { 'vol': data["volume"], 'error': data["error"], }) return render(request, 'storage/import_progress.html') if request.method == "POST": form = forms.VolumeImportForm(request.POST) if form.is_valid(): form.done(request) # usage for command below #Usage: sockscopy vol_to_import fs_type dest_path socket_path msg = "/usr/local/bin/sockscopy /dev/%s %s %s %s &" % ( form.cleaned_data.get('volume_disks'), form.cleaned_data.get('volume_fstype').lower(), form.cleaned_data.get('volume_dest_path'), SOCKIMP, ) subprocess.Popen( msg, shell=True, ) # give the background disk import code time to create a socket sleep(2) return render(request, 'storage/import_progress.html') else: if 'volume_disks' in request.POST: disks = request.POST.getlist('volume_disks') else: disks = None else: form = forms.VolumeImportForm() disks = [] return render(request, 'storage/import.html', { 'form': form, 'disks': disks })
def volimport(request): if os.path.exists(SOCKIMP): try: data = json.loads(get_import_progress_from_socket()) if data["status"] in ["finished", "error"]: return render( request, 'storage/import_stats.html', final_importdisk_return_response(data) ) return render(request, 'storage/import_progress.html') except Exception as e: data = { 'vol': '', 'status': 'error', 'error': str(e), 'traceback': traceback.format_exc() if sys.exc_info()[0] else False } return render(request, 'storage/import_stats.html', data) if request.method == "POST": form = forms.VolumeImportForm(request.POST) if form.is_valid(): form.done(request) # usage for command below # Usage: sockscopy vol_to_import fs_type dest_path socket_path subprocess.Popen([ "/usr/local/bin/sockscopy", "dev/{0}".format(form.cleaned_data.get('volume_disks')), form.cleaned_data.get('volume_fstype').lower(), form.cleaned_data.get('volume_dest_path'), SOCKIMP ]) # give the background disk import code time to create a socket sleep(2) return render(request, 'storage/import_progress.html') else: if 'volume_disks' in request.POST: disks = request.POST.getlist('volume_disks') else: disks = None else: form = forms.VolumeImportForm() disks = [] return render(request, 'storage/import.html', { 'form': form, 'disks': disks })
def volimport(request): if request.method == "POST": form = forms.VolumeImportForm(request.POST) if form.is_valid(): form.done(request) return JsonResp(request, message=_("Volume successfully added.")) else: if 'volume_disks' in request.POST: disks = request.POST.getlist('volume_disks') else: disks = None else: form = forms.VolumeImportForm() disks = [] return render(request, 'storage/import.html', { 'form': form, 'disks': disks })