Пример #1
0
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
    })
Пример #2
0
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
    })
Пример #3
0
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
    })
Пример #4
0
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
    })