diff --git a/instances/templates/instance.html b/instances/templates/instance.html
index 55888d45..5d980d43 100644
--- a/instances/templates/instance.html
+++ b/instances/templates/instance.html
@@ -290,10 +290,9 @@
var label = $(this).parent();
var newPos = label.index() - 1;
if (newPos > -1) {
- $('#b_order label').eq(newPos).before("");
- label.remove();
+ // moved, not rebuilt: the checkbox keeps its handler
+ $('#b_order label').eq(newPos).before(label);
}
- $(".multiselect").multiselect();
});
set_orderlist($("#bootorder"));
});
@@ -305,10 +304,8 @@
var label = $(this).parent();
var newPos = label.index() + countSelected;
if (newPos < countOptions) {
- $('#b_order label').eq(newPos).after("");
- label.remove();
+ $('#b_order label').eq(newPos).after(label);
}
- $(".multiselect").multiselect();
});
set_orderlist($("#bootorder"));
});
diff --git a/instances/tests/test_change_network.py b/instances/tests/test_change_network.py
index 2f97028f..0e5cbae1 100644
--- a/instances/tests/test_change_network.py
+++ b/instances/tests/test_change_network.py
@@ -2,6 +2,7 @@ from unittest.mock import patch
from computes.models import Compute
from django.contrib.auth import get_user_model
+from django.contrib.messages import get_messages
from django.test import TestCase
from django.urls import reverse
from instances.models import Instance
@@ -33,6 +34,13 @@ class ChangeNetworkViewTestCase(TestCase):
})
change.assert_called_once_with("52:54:00:00:00:02", "52:54:00:00:00:03", "default", "net", "e1000", "")
+ def test_a_shut_off_vm_is_told_the_change_is_made(self):
+ with patch("instances.models.wvmInstance") as wvm:
+ wvm.return_value.get_status.return_value = 5
+ response = self.client.post(self.url, {"net-old-mac-1": "52:54:00:00:00:02", "net-source-1": "net:default",
+ "net-model-1": "virtio"}, HTTP_REFERER="/instances/%d/" % self.instance.id)
+ self.assertEqual([str(m) for m in get_messages(response.wsgi_request)], ["Network device changed"])
+
def test_invalid_mac_is_rejected(self):
change = self.post({
"net-old-mac-0": "52:54:00:00:00:01",
diff --git a/instances/tests/test_vm_audit_rows.py b/instances/tests/test_vm_audit_rows.py
index ab4fb703..f3d20213 100644
--- a/instances/tests/test_vm_audit_rows.py
+++ b/instances/tests/test_vm_audit_rows.py
@@ -6,6 +6,7 @@ from unittest.mock import patch
import libvirt
from computes.models import Compute
from django.contrib.auth import get_user_model
+from django.contrib.messages import get_messages
from django.test import TestCase
from django.urls import reverse
from instances.models import Instance
@@ -62,6 +63,11 @@ class VMRowTests(TestCase):
self.post("poweron")
self.assertEqual(self.rows(), [])
+ def test_an_empty_root_password_is_refused_with_a_message(self):
+ response = self.post("rootpasswd", {"passwd": ""})
+ self.assertEqual([str(m) for m in get_messages(response.wsgi_request)], ["Enter a password"])
+ self.assertEqual(self.rows(), [])
+
def test_qos_is_logged(self):
self.post("set_qos", {"qos_direction": "inbound", "net-mac-0": "52:54:00:00:00:01", "qos_average": "100"})
self.post("unset_qos", {"qos_direction": "inbound", "net-mac": "52:54:00:00:00:01"})
diff --git a/instances/views.py b/instances/views.py
index 31ffb997..a7788644 100755
--- a/instances/views.py
+++ b/instances/views.py
@@ -911,6 +911,8 @@ def set_root_pass(request, pk):
messages.success(request, _("Reset root password"))
else:
messages.error(request, AGENT_OR_SHUT_OFF)
+ else:
+ messages.error(request, _("Enter a password"))
return get_safe_redirect(
request, default=reverse("instances:instance", args=[instance.id]) + "#access"
)
@@ -1727,9 +1729,10 @@ def change_network(request, pk):
messages.error(request, err)
return redirect(back)
- msg = _("Network Device Config is changed. Please shutdown instance to activate.")
if instance.proxy.get_status() != 5:
- messages.success(request, msg)
+ messages.success(request, _("Network Device Config is changed. Please shutdown instance to activate."))
+ else:
+ messages.success(request, _("Network device changed"))
return redirect(back)