Exemplo n.º 1
0
def network(request, host_id, pool):
    """
    Networks block
    """
    if not request.user.is_authenticated():
        return redirect('login')

    errors = []
    compute = Compute.objects.get(id=host_id)

    try:
        conn = wvmNetwork(compute.hostname, compute.login, compute.password,
                          compute.type, pool)
        networks = conn.get_networks()
        state = conn.is_active()
        device = conn.get_bridge_device()
        autostart = conn.get_autostart()
        ipv4_forward = conn.get_ipv4_forward()
        ipv4_dhcp_range_start = conn.get_ipv4_dhcp_range_start()
        ipv4_dhcp_range_end = conn.get_ipv4_dhcp_range_end()
        ipv4_network = conn.get_ipv4_network()
        fixed_address = conn.get_mac_ipaddr()
    except libvirtError as err:
        errors.append(err)

    if request.method == 'POST':
        if 'start' in request.POST:
            try:
                conn.start()
                return redirect(request.get_full_path())
            except libvirtError as error_msg:
                errors.append(error_msg.message)
        if 'stop' in request.POST:
            try:
                conn.stop()
                return redirect(request.get_full_path())
            except libvirtError as error_msg:
                errors.append(error_msg.message)
        if 'delete' in request.POST:
            try:
                conn.delete()
                return redirect('networks', args=[host_id])
            except libvirtError as error_msg:
                errors.append(error_msg.message)
        if 'set_autostart' in request.POST:
            try:
                conn.set_autostart(1)
                return redirect(request.get_full_path())
            except libvirtError as error_msg:
                errors.append(error_msg.message)
        if 'unset_autostart' in request.POST:
            try:
                conn.set_autostart(0)
                return redirect(request.get_full_path())
            except libvirtError as error_msg:
                errors.append(error_msg.message)

    conn.close()

    return render(request, 'network.html', locals())
Exemplo n.º 2
0
def network(request, compute_id, pool):
    """
    :param request:
    :param compute_id:
    :param pool:
    :return:
    """

    compute = get_object_or_404(Compute, pk=compute_id)

    try:
        conn = wvmNetwork(
            compute.hostname,
            compute.login,
            compute.password,
            compute.type,
            pool,
        )
        networks = conn.get_networks()
        state = conn.is_active()
        device = conn.get_bridge_device()
        autostart = conn.get_autostart()
        net_mac = conn.get_network_mac()
        net_forward = conn.get_network_forward()
        qos = conn.get_qos()
        dhcp_range_start = ipv4_dhcp_range_end = dict()

        ip_networks = conn.get_ip_networks()
        for family, ip_network in ip_networks.items():
            if family == "ipv4":
                ipv4_dhcp_range_start = conn.get_dhcp_range_start(family)
                ipv4_dhcp_range_end = conn.get_dhcp_range_end(family)
                ipv4_network = ip_network
                ipv4_fixed_address = conn.get_dhcp_host_addr(family)
            elif family == "ipv6":
                ipv6_dhcp_range_start = conn.get_dhcp_range_start(family)
                ipv6_dhcp_range_end = conn.get_dhcp_range_end(family)
                ipv6_network = ip_network
                ipv6_fixed_address = conn.get_dhcp_host_addr(family)
            else:
                raise Exception(_("Unknown Network Family"))

        xml = conn._XMLDesc(0)
    except libvirtError as lib_err:
        messages.error(request, lib_err)
        return HttpResponseRedirect(reverse("networks", args=compute_id))

    if request.method == "POST":
        if "start" in request.POST:
            try:
                conn.start()
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                messages.error(request, lib_err)
        if "stop" in request.POST:
            try:
                conn.stop()
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                messages.error(request, lib_err)
        if "delete" in request.POST:
            try:
                conn.delete()
                return HttpResponseRedirect(
                    reverse("networks", args=[compute_id]))
            except libvirtError as lib_err:
                messages.error(request, lib_err)
        if "set_autostart" in request.POST:
            try:
                conn.set_autostart(1)
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                messages.error(request, lib_err)
        if "unset_autostart" in request.POST:
            try:
                conn.set_autostart(0)
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                messages.error(request, lib_err)
        if "modify_fixed_address" in request.POST:
            name = request.POST.get("name", "")
            address = request.POST.get("address", "")
            family = request.POST.get("family", "ipv4")

            if family == "ipv4":
                mac_duid = request.POST.get("mac", "")
            if family == "ipv6":
                mac_duid = request.POST.get("id", "")

            try:
                ret_val = conn.modify_fixed_address(name, address, mac_duid,
                                                    family)
                messages.success(
                    request,
                    _("Fixed address operation completed for %(family)s") %
                    {"family": family.upper()})
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                messages.error(request, lib_err)
            except ValueError as val_err:
                messages.error(request, val_err)
        if "delete_fixed_address" in request.POST:
            ip = request.POST.get("address", "")
            family = request.POST.get("family", "ipv4")
            conn.delete_fixed_address(ip, family)
            messages.success(
                request,
                _("%(family)s Fixed Address is Deleted.") %
                {"family": family.upper()})
            return HttpResponseRedirect(request.get_full_path())
        if "modify_dhcp_range" in request.POST:
            range_start = request.POST.get("range_start", "")
            range_end = request.POST.get("range_end", "")
            family = request.POST.get("family", "ipv4")
            try:
                conn.modify_dhcp_range(range_start, range_end, family)
                messages.success(
                    request,
                    _("%(family)s DHCP Range is Changed.") %
                    {"family": family.upper()})
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                messages.error(request, lib_err)
        if "edit_network" in request.POST:
            edit_xml = request.POST.get("edit_xml", "")
            if edit_xml:
                conn.edit_network(edit_xml)
                if conn.is_active():
                    messages.success(
                        request,
                        _("Network XML is changed. \\"
                          "Stop and start network to activate new config."),
                    )
                else:
                    messages.success(request, _("Network XML is changed."))
                return HttpResponseRedirect(request.get_full_path())
        if "set_qos" in request.POST:
            qos_dir = request.POST.get("qos_direction", "")
            average = request.POST.get("qos_average") or 0
            peak = request.POST.get("qos_peak") or 0
            burst = request.POST.get("qos_burst") or 0

            try:
                conn.set_qos(qos_dir, average, peak, burst)
                if conn.is_active():
                    messages.success(
                        request,
                        _("%(qos_dir)s QoS is updated. Network XML is changed. Stop and start network to activate new config"
                          ) % {"qos_dir": qos_dir.capitalize()})
                else:
                    messages.success(
                        request,
                        _("%(qos_dir)s QoS is set") %
                        {"qos_dir": qos_dir.capitalize()})
            except libvirtError as lib_err:
                messages.error(request, lib_err)
            return HttpResponseRedirect(request.get_full_path())
        if "unset_qos" in request.POST:
            qos_dir = request.POST.get("qos_direction", "")
            conn.unset_qos(qos_dir)

            if conn.is_active():
                messages.success(
                    request,
                    _("%(qos_dir)s QoS is deleted. Network XML is changed. \
                        Stop and start network to activate new config") %
                    {"qos_dir": qos_dir.capitalize()})
            else:
                messages.success(
                    request,
                    _("%(qos_dir)s QoS is deleted") %
                    {"qos_dir": qos_dir.capitalize()})
            return HttpResponseRedirect(request.get_full_path())
    conn.close()

    return render(request, "network.html", locals())
Exemplo n.º 3
0
def network(request, host_id, pool):
    """
    Networks block
    """
    errors = []
    compute = Compute.objects.get(id=host_id)
    conn = None

    try:
        conn = wvmNetwork(compute.hostname, compute.login, compute.password,
                          compute.type, pool)
        networks = conn.get_networks()
        state = conn.is_active()
        device = conn.get_bridge_device()
        autostart = conn.get_autostart()
        ipv4_forward = conn.get_ipv4_forward()
        ipv4_dhcp_range = conn.get_ipv4_dhcp_range()
        ipv4_network = conn.get_ipv4_network()
        fixed_address = conn.get_mac_ipaddr()

        object = {
            'errors': {},
            'response': {
                'networks': networks,
                'state': state,
                'device': device,
                'autostart': autostart,
                'ipv4_forward': ipv4_forward,
                'ipv4_dhcp_range': {
                    'start':
                    str(ipv4_dhcp_range[0]) if ipv4_dhcp_range else None,
                    'end': str(ipv4_dhcp_range[1] if ipv4_dhcp_range else None)
                },
                'ipv4_network': str(ipv4_network),
                'fixed_address': fixed_address
            }
        }
    except libvirtError as err:
        errors.append(err)
        object = {'errors': [str(error) for error in errors]}

    if request.method == 'POST':
        if 'start' in request.POST:
            try:
                conn.start()
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as error_msg:
                errors.append(error_msg.message)
        if 'stop' in request.POST:
            try:
                conn.stop()
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as error_msg:
                errors.append(error_msg.message)
        if 'delete' in request.POST:
            try:
                conn.delete()
                return HttpResponseRedirect('/%s/networks' % host_id)
            except libvirtError as error_msg:
                errors.append(error_msg.message)
        if 'set_autostart' in request.POST:
            try:
                conn.set_autostart(1)
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as error_msg:
                errors.append(error_msg.message)
        if 'unset_autostart' in request.POST:
            try:
                conn.set_autostart(0)
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as error_msg:
                errors.append(error_msg.message)

    if conn:
        conn.close()

    return render(object, 'network.html', locals(), request)
Exemplo n.º 4
0
def network(request, compute_id, pool):
    """
    :param request:
    :return:
    """

    if not request.user.is_superuser:
        return HttpResponseRedirect(reverse('index'))

    error_messages = []
    compute = get_object_or_404(Compute, pk=compute_id)

    try:
        conn = wvmNetwork(compute.hostname, compute.login, compute.password,
                          compute.type, pool)
        networks = conn.get_networks()
        state = conn.is_active()
        device = conn.get_bridge_device()
        autostart = conn.get_autostart()
        ipv4_forward = conn.get_ipv4_forward()
        ipv4_dhcp_range_start = conn.get_ipv4_dhcp_range_start()
        ipv4_dhcp_range_end = conn.get_ipv4_dhcp_range_end()
        ipv4_network = conn.get_ipv4_network()
        fixed_address = conn.get_mac_ipaddr()
        xml = conn._XMLDesc(0)
    except libvirtError as lib_err:
        error_messages.append(lib_err)

    if request.method == 'POST':
        if 'start' in request.POST:
            try:
                conn.start()
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'stop' in request.POST:
            try:
                conn.stop()
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'delete' in request.POST:
            try:
                conn.delete()
                return HttpResponseRedirect(
                    reverse('networks', args=[compute_id]))
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'set_autostart' in request.POST:
            try:
                conn.set_autostart(1)
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'unset_autostart' in request.POST:
            try:
                conn.set_autostart(0)
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'modify_fixed_address' in request.POST:
            name = request.POST.get('name', '')
            address = request.POST.get('address', '')
            mac = request.POST.get('mac', '')
            try:
                ret_val = conn.modify_fixed_address(name, address, mac)
                messages.success(request, "Fixed Address Operation Completed.")
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
            except ValueError as val_err:
                error_messages.append(val_err.message)
        if 'delete_fixed_address' in request.POST:
            mac = request.POST.get('mac', '')
            conn.delete_fixed_address(mac)
            messages.success(request, "Fixed Address is Deleted.")
            return HttpResponseRedirect(request.get_full_path())
        if 'modify_dhcp_range' in request.POST:
            range_start = request.POST.get('range_start', '')
            range_end = request.POST.get('range_end', '')
            try:
                conn.modify_dhcp_range(range_start, range_end)
                messages.success(request, "DHCP Range is Changed.")
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'edit_network' in request.POST:
            edit_xml = request.POST.get('edit_xml', '')
            if edit_xml:
                try:
                    new_conn = wvmNetworks(compute.hostname, compute.login,
                                           compute.password, compute.type)
                    conn.define_network(edit_xml)
                    if conn.is_active():
                        messages.success(
                            request,
                            _("Network XML is changed. Stop and start network to activate new config."
                              ))
                    else:
                        messages.success(request, _("Network XML is changed."))
                    return HttpResponseRedirect(request.get_full_path())
                except libvirtError as lib_err:
                    error_messages.append(lib_err.message)

    conn.close()

    return render(request, 'network.html', locals())
Exemplo n.º 5
0
def network(request, host_id, pool):
    """
    Networks block
    """
    if not request.user.is_authenticated():
        return HttpResponseRedirect('/login')

    errors = []
    compute = Compute.objects.get(id=host_id)

    try:
        conn = wvmNetwork(compute.hostname,
                          compute.login,
                          compute.password,
                          compute.type,
                          pool)
        networks = conn.get_networks()
        state = conn.is_active()
        device = conn.get_bridge_device()
        autostart = conn.get_autostart()
        ipv4_forward = conn.get_ipv4_forward()
        ipv4_dhcp_range = conn.get_ipv4_dhcp_range()
        ipv4_network = conn.get_ipv4_network()
        fixed_address = conn.get_mac_ipaddr()
    except libvirtError as err:
        errors.append(err.message)

    if request.method == 'POST':
        if 'start' in request.POST:
            try:
                conn.start()
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as error_msg:
                errors.append(error_msg.message)
        if 'stop' in request.POST:
            try:
                conn.stop()
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as error_msg:
                errors.append(error_msg.message)
        if 'delete' in request.POST:
            try:
                conn.delete()
                return HttpResponseRedirect('/networks/%s/' % host_id)
            except libvirtError as error_msg:
                errors.append(error_msg.message)
        if 'set_autostart' in request.POST:
            try:
                conn.set_autostart(1)
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as error_msg:
                errors.append(error_msg.message)
        if 'unset_autostart' in request.POST:
            try:
                conn.set_autostart(0)
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as error_msg:
                errors.append(error_msg.message)

    conn.close()

    return render_to_response('network.html', locals(), context_instance=RequestContext(request))
Exemplo n.º 6
0
def network(request, compute_id, pool):
    """
    :param request:
    :return:
    """

    if not request.user.is_authenticated():
        return HttpResponseRedirect(reverse('index'))

    if not request.user.is_superuser:
        return HttpResponseRedirect(reverse('index'))

    error_messages = []
    compute = get_object_or_404(Compute, pk=compute_id)

    try:
        conn = wvmNetwork(compute.hostname,
                          compute.login,
                          compute.password,
                          compute.type,
                          pool)
        networks = conn.get_networks()
        state = conn.is_active()
        device = conn.get_bridge_device()
        autostart = conn.get_autostart()
        ipv4_forward = conn.get_ipv4_forward()
        ipv4_dhcp_range_start = conn.get_ipv4_dhcp_range_start()
        ipv4_dhcp_range_end = conn.get_ipv4_dhcp_range_end()
        ipv4_network = conn.get_ipv4_network()
        fixed_address = conn.get_mac_ipaddr()
    except libvirtError as lib_err:
        error_messages.append(lib_err)

    if request.method == 'POST':
        if 'start' in request.POST:
            try:
                conn.start()
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'stop' in request.POST:
            try:
                conn.stop()
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'delete' in request.POST:
            try:
                conn.delete()
                return HttpResponseRedirect(reverse('networks', args=[compute_id]))
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'set_autostart' in request.POST:
            try:
                conn.set_autostart(1)
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'unset_autostart' in request.POST:
            try:
                conn.set_autostart(0)
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)

    conn.close()

    return render(request, 'network.html', locals())
Exemplo n.º 7
0
def network(request, compute_id, pool):
    """
    :param request:
    :param compute_id:
    :param pool:
    :return:
    """

    if not request.user.is_superuser:
        return HttpResponseRedirect(reverse('index'))

    error_messages = []
    compute = get_object_or_404(Compute, pk=compute_id)

    try:
        conn = wvmNetwork(compute.hostname,
                          compute.login,
                          compute.password,
                          compute.type,
                          pool)
        networks = conn.get_networks()
        state = conn.is_active()
        device = conn.get_bridge_device()
        autostart = conn.get_autostart()
        net_mac = conn.get_network_mac()
        net_forward = conn.get_network_forward()
        qos = conn.get_qos()
        dhcp_range_start = ipv4_dhcp_range_end = dict()

        ip_networks = conn.get_ip_networks()
        for family, ip_network in ip_networks.items():
            if family == "ipv4":
                ipv4_dhcp_range_start = conn.get_dhcp_range_start(family)
                ipv4_dhcp_range_end = conn.get_dhcp_range_end(family)
                ipv4_network = ip_network
                ipv4_fixed_address = conn.get_dhcp_host_addr(family)
            elif family == "ipv6":
                ipv6_dhcp_range_start = conn.get_dhcp_range_start(family)
                ipv6_dhcp_range_end = conn.get_dhcp_range_end(family)
                ipv6_network = ip_network
                ipv6_fixed_address = conn.get_dhcp_host_addr(family)
            else:
                raise Exception("Unknown Network Family")

        xml = conn._XMLDesc(0)
    except libvirtError as lib_err:
        error_messages.append(lib_err)
        return HttpResponseRedirect(reverse('networks', args=compute_id))

    if request.method == 'POST':
        if 'start' in request.POST:
            try:
                conn.start()
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'stop' in request.POST:
            try:
                conn.stop()
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'delete' in request.POST:
            try:
                conn.delete()
                return HttpResponseRedirect(reverse('networks', args=[compute_id]))
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'set_autostart' in request.POST:
            try:
                conn.set_autostart(1)
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'unset_autostart' in request.POST:
            try:
                conn.set_autostart(0)
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'modify_fixed_address' in request.POST:
            name = request.POST.get('name', '')
            address = request.POST.get('address', '')
            family = request.POST.get('family', 'ipv4')

            if family == 'ipv4':
                mac_duid = request.POST.get('mac', '')
            if family == 'ipv6':
                mac_duid = request.POST.get('id', '')

            try:
                ret_val = conn.modify_fixed_address(name, address, mac_duid, family)
                messages.success(request, "{} Fixed Address Operation Completed.".format(family.upper()))
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
            except ValueError as val_err:
                error_messages.append(val_err.message)
        if 'delete_fixed_address' in request.POST:
            ip = request.POST.get('address', '')
            family = request.POST.get('family', 'ipv4')
            conn.delete_fixed_address(ip, family)
            messages.success(request, "{} Fixed Address is Deleted.".format(family.upper()))
            return HttpResponseRedirect(request.get_full_path())
        if 'modify_dhcp_range' in request.POST:
            range_start = request.POST.get('range_start', '')
            range_end = request.POST.get('range_end', '')
            family = request.POST.get('family', 'ipv4')
            try:
                conn.modify_dhcp_range(range_start, range_end, family)
                messages.success(request, "{} DHCP Range is Changed.".format(family.upper()))
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'edit_network' in request.POST:
            edit_xml = request.POST.get('edit_xml', '')
            if edit_xml:
                conn.edit_network(edit_xml)
                if conn.is_active():
                    messages.success(request, _("Network XML is changed. \\"
                                                "Stop and start network to activate new config."))
                else:
                    messages.success(request, _("Network XML is changed."))
                return HttpResponseRedirect(request.get_full_path())
        if 'set_qos' in request.POST:
            qos_dir = request.POST.get('qos_direction', '')
            average = request.POST.get('qos_average') or 0
            peak = request.POST.get('qos_peak') or 0
            burst = request.POST.get('qos_burst') or 0

            try:
                conn.set_qos(qos_dir, average, peak, burst)
                if conn.is_active():
                    messages.success(request, "{} Qos is set. Network XML is changed.".format(qos_dir.capitalize()) +
                                     "Stop and start network to activate new config")
                else:
                    messages.success(request, "{} Qos is set".format(qos_dir.capitalize()))
            except libvirtError as le:
                messages.error(request, le.message)
            return HttpResponseRedirect(request.get_full_path())
        if 'unset_qos' in request.POST:
            qos_dir = request.POST.get('qos_direction', '')
            conn.unset_qos(qos_dir)

            if conn.is_active():
                messages.success(request, "{} Qos is deleted. Network XML is changed. ".format(qos_dir.capitalize()) +
                                 "Stop and start network to activate new config.")
            else:
                messages.success(request, "{} Qos is deleted".format(qos_dir.capitalize()))
            return HttpResponseRedirect(request.get_full_path())
    conn.close()

    return render(request, 'network.html', locals())
Exemplo n.º 8
0
def network(request, compute_id, pool):
    """
    :param request:
    :return:
    """

    if not request.user.is_authenticated():
        return HttpResponseRedirect(reverse('index'))

    if not request.user.is_superuser:
        return HttpResponseRedirect(reverse('index'))

    error_messages = []
    compute = get_object_or_404(Compute, pk=compute_id)

    try:
        conn = wvmNetwork(compute.hostname, compute.login, compute.password,
                          compute.type, pool)
        networks = conn.get_networks()
        state = conn.is_active()
        device = conn.get_bridge_device()
        autostart = conn.get_autostart()
        ipv4_forward = conn.get_ipv4_forward()
        ipv4_dhcp_range_start = conn.get_ipv4_dhcp_range_start()
        ipv4_dhcp_range_end = conn.get_ipv4_dhcp_range_end()
        ipv4_network = conn.get_ipv4_network()
        fixed_address = conn.get_mac_ipaddr()
    except libvirtError as lib_err:
        error_messages.append(lib_err)

    if request.method == 'POST':
        if 'start' in request.POST:
            try:
                conn.start()
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'stop' in request.POST:
            try:
                conn.stop()
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'delete' in request.POST:
            try:
                conn.delete()
                return HttpResponseRedirect(
                    reverse('networks', args=[compute_id]))
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'set_autostart' in request.POST:
            try:
                conn.set_autostart(1)
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)
        if 'unset_autostart' in request.POST:
            try:
                conn.set_autostart(0)
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as lib_err:
                error_messages.append(lib_err.message)

    conn.close()

    return render(request, 'network.html', locals())
Exemplo n.º 9
0
def network(request, host_id, pool):
    """
    Networks block
    """
    errors = []
    compute = Compute.objects.get(id=host_id)
    conn = None

    try:
        conn = wvmNetwork(compute.hostname,
                          compute.login,
                          compute.password,
                          compute.type,
                          pool)
        networks = conn.get_networks()
        state = conn.is_active()
        device = conn.get_bridge_device()
        autostart = conn.get_autostart()
        ipv4_forward = conn.get_ipv4_forward()
        ipv4_dhcp_range = conn.get_ipv4_dhcp_range()
        ipv4_network = conn.get_ipv4_network()
        fixed_address = conn.get_mac_ipaddr()

        object = {
            'errors': {},
            'response': {
                'networks': networks,
                'state': state,
                'device': device,
                'autostart': autostart,
                'ipv4_forward': ipv4_forward,
                'ipv4_dhcp_range': {
                    'start': str(ipv4_dhcp_range[0]) if ipv4_dhcp_range else None,
                    'end': str(ipv4_dhcp_range[1] if ipv4_dhcp_range else None)
                },
                'ipv4_network': str(ipv4_network),
                'fixed_address': fixed_address
            }
        }
    except libvirtError as err:
        errors.append(err)
        object = {
            'errors': [str(error) for error in errors]
        }

    if request.method == 'POST':
        if 'start' in request.POST:
            try:
                conn.start()
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as error_msg:
                errors.append(error_msg.message)
        if 'stop' in request.POST:
            try:
                conn.stop()
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as error_msg:
                errors.append(error_msg.message)
        if 'delete' in request.POST:
            try:
                conn.delete()
                return HttpResponseRedirect('/%s/networks' % host_id)
            except libvirtError as error_msg:
                errors.append(error_msg.message)
        if 'set_autostart' in request.POST:
            try:
                conn.set_autostart(1)
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as error_msg:
                errors.append(error_msg.message)
        if 'unset_autostart' in request.POST:
            try:
                conn.set_autostart(0)
                return HttpResponseRedirect(request.get_full_path())
            except libvirtError as error_msg:
                errors.append(error_msg.message)

    if conn:
        conn.close()

    return render(object, 'network.html', locals(), request)