← Back to team overview

sts-sponsors team mailing list archive

[Merge] ~ack/maas:drop-interface-autoconf-param into maas:master

 

Alberto Donato has proposed merging ~ack/maas:drop-interface-autoconf-param into maas:master with ~ack/maas:interface-params-cleanups as a prerequisite.

Commit message:
drop the "autoconf" parameter for interfaces, as it's not supported by cloud-init/netplan.

This also updates existing accept_ra parameters to accept-ra in the db.

Requested reviews:
  MAAS Maintainers (maas-maintainers)

For more details, see:
https://code.launchpad.net/~ack/maas/+git/maas/+merge/442590
-- 
Your team MAAS Maintainers is requested to review the proposed merge of ~ack/maas:drop-interface-autoconf-param into maas:master.
diff --git a/src/maasserver/api/interfaces.py b/src/maasserver/api/interfaces.py
index 7510242..c985c92 100644
--- a/src/maasserver/api/interfaces.py
+++ b/src/maasserver/api/interfaces.py
@@ -192,9 +192,6 @@ class InterfacesHandler(OperationsHandler):
         @param (boolean) "accept_ra" [required=false] Accept router
         advertisements. (IPv6 only)
 
-        @param (boolean) "autoconf" [required=false] Perform stateless
-        autoconfiguration. (IPv6 only)
-
         @success (http-status-code) "server-success" 200
         @success (json) "success-json" A JSON object containing the new
         interface object.
@@ -325,9 +322,6 @@ class InterfacesHandler(OperationsHandler):
         @param (boolean) "accept_ra" [required=false] Accept router
         advertisements. (IPv6 only)
 
-        @param (boolean) "autoconf" [required=false] Perform stateless
-        autoconfiguration. (IPv6 only)
-
         @success (http-status-code) "server-success" 200
         @success (json) "success-json" A JSON object containing the new
         bond interface object.
@@ -371,9 +365,6 @@ class InterfacesHandler(OperationsHandler):
         @param (boolean) "accept_ra" [required=false] Accept router
         advertisements. (IPv6 only)
 
-        @param (boolean) "autoconf" [required=false] Perform stateless
-        autoconfiguration. (IPv6 only)
-
         @success (http-status-code) "server-success" 200
         @success (json) "success-json" A JSON object containing the new
         VLAN interface object.
@@ -439,9 +430,6 @@ class InterfacesHandler(OperationsHandler):
         @param (boolean) "accept_ra" [required=false] Accept router
         advertisements. (IPv6 only)
 
-        @param (boolean) "autoconf" [required=false] Perform stateless
-        autoconfiguration. (IPv6 only)
-
         @success (http-status-code) "server-success" 200
         @success (json) "success-json" A JSON object containing the new
         bridge interface object.
@@ -697,9 +685,6 @@ class InterfaceHandler(OperationsHandler):
         @param (string) "accept_ra" [required=false] Accept router
         advertisements. (IPv6 only)
 
-        @param (string) "autoconf" [required=false] Perform stateless
-        autoconfiguration. (IPv6 only)
-
         @param (boolean) "link_connected" [required=false]
         (Physical interfaces) Whether or not the interface is physically
         conntected to an uplink.  (Default: True).
diff --git a/src/maasserver/forms/interface.py b/src/maasserver/forms/interface.py
index 46b6229..58c1d0b 100644
--- a/src/maasserver/forms/interface.py
+++ b/src/maasserver/forms/interface.py
@@ -53,7 +53,6 @@ class InterfaceForm(MAASModelForm):
 
     # IPv6 parameters.
     accept_ra = forms.NullBooleanField(required=False)
-    autoconf = forms.NullBooleanField(required=False)
 
     # Device parameters
     ip_assignment = forms.MultipleChoiceField(
@@ -224,7 +223,6 @@ class InterfaceForm(MAASModelForm):
             interface.params = {}
         self._set_param(interface, "mtu")
         self._set_param(interface, "accept_ra", netplan_key="accept-ra")
-        self._set_param(interface, "autoconf")
 
 
 class ControllerInterfaceForm(MAASModelForm):
diff --git a/src/maasserver/forms/tests/test_interface.py b/src/maasserver/forms/tests/test_interface.py
index 0ce7041..0abd7e1 100644
--- a/src/maasserver/forms/tests/test_interface.py
+++ b/src/maasserver/forms/tests/test_interface.py
@@ -533,7 +533,6 @@ class TestPhysicalInterfaceForm(MAASServerTestCase):
         tags = [factory.make_name("tag") for _ in range(3)]
         mtu = random.randint(1000, 2000)
         accept_ra = factory.pick_bool()
-        autoconf = factory.pick_bool()
         form = PhysicalInterfaceForm(
             node=node,
             data={
@@ -543,13 +542,12 @@ class TestPhysicalInterfaceForm(MAASServerTestCase):
                 "tags": ",".join(tags),
                 "mtu": mtu,
                 "accept_ra": accept_ra,
-                "autoconf": autoconf,
             },
         )
         self.assertTrue(form.is_valid(), dict(form.errors))
         interface = form.save()
         self.assertEqual(
-            {"mtu": mtu, "accept-ra": accept_ra, "autoconf": autoconf},
+            {"mtu": mtu, "accept-ra": accept_ra},
             interface.params,
         )
 
@@ -559,11 +557,9 @@ class TestPhysicalInterfaceForm(MAASServerTestCase):
         )
         mtu = random.randint(1000, 2000)
         accept_ra = factory.pick_bool()
-        autoconf = factory.pick_bool()
         interface.params = {
             "mtu": mtu,
             "accept-ra": accept_ra,
-            "autoconf": autoconf,
         }
         new_name = "eth1"
         new_vlan = factory.make_VLAN(vid=33)
@@ -579,7 +575,7 @@ class TestPhysicalInterfaceForm(MAASServerTestCase):
         self.assertTrue(form.is_valid(), dict(form.errors))
         interface = form.save()
         self.assertEqual(
-            {"mtu": mtu, "accept-ra": accept_ra, "autoconf": autoconf},
+            {"mtu": mtu, "accept-ra": accept_ra},
             interface.params,
         )
 
@@ -589,21 +585,17 @@ class TestPhysicalInterfaceForm(MAASServerTestCase):
         )
         mtu = random.randint(1000, 2000)
         accept_ra = factory.pick_bool()
-        autoconf = factory.pick_bool()
         interface.params = {
             "mtu": mtu,
             "accept-ra": accept_ra,
-            "autoconf": autoconf,
         }
         new_mtu = random.randint(1000, 2000)
         new_accept_ra = not accept_ra
-        new_autoconf = not autoconf
         form = PhysicalInterfaceForm(
             instance=interface,
             data={
                 "mtu": new_mtu,
                 "accept_ra": new_accept_ra,
-                "autoconf": new_autoconf,
             },
         )
         self.assertTrue(form.is_valid(), dict(form.errors))
@@ -612,7 +604,6 @@ class TestPhysicalInterfaceForm(MAASServerTestCase):
             {
                 "mtu": new_mtu,
                 "accept-ra": new_accept_ra,
-                "autoconf": new_autoconf,
             },
             interface.params,
         )
@@ -623,15 +614,13 @@ class TestPhysicalInterfaceForm(MAASServerTestCase):
         )
         mtu = random.randint(1000, 2000)
         accept_ra = factory.pick_bool()
-        autoconf = factory.pick_bool()
         interface.params = {
             "mtu": mtu,
             "accept-ra": accept_ra,
-            "autoconf": autoconf,
         }
         form = PhysicalInterfaceForm(
             instance=interface,
-            data={"mtu": "", "accept_ra": "", "autoconf": ""},
+            data={"mtu": "", "accept_ra": ""},
         )
         self.assertTrue(form.is_valid(), dict(form.errors))
         interface = form.save()
diff --git a/src/maasserver/migrations/maasserver/0304_interface_params_no_autoconf.py b/src/maasserver/migrations/maasserver/0304_interface_params_no_autoconf.py
new file mode 100644
index 0000000..c827cbc
--- /dev/null
+++ b/src/maasserver/migrations/maasserver/0304_interface_params_no_autoconf.py
@@ -0,0 +1,27 @@
+# Generated by Django 3.2.12 on 2023-05-10 08:08
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ("maasserver", "0303_interface_params_cleanups"),
+    ]
+
+    operations = [
+        # drop 'autoconf' parameter
+        migrations.RunSQL(
+            "UPDATE maasserver_interface SET params = params - 'autoconf'"
+        ),
+        # convert 'accept_ra' to 'accept-ra'
+        migrations.RunSQL(
+            """
+            UPDATE maasserver_interface
+            SET params = (
+              params - 'accept_ra' ||
+              jsonb_build_object('accept-ra', (params->>'accept_ra')::bool)
+            )
+            WHERE params->>'accept_ra' IS NOT NULL
+            """
+        ),
+    ]
diff --git a/src/maasserver/models/tests/test_node.py b/src/maasserver/models/tests/test_node.py
index 4eb10d4..694844d 100644
--- a/src/maasserver/models/tests/test_node.py
+++ b/src/maasserver/models/tests/test_node.py
@@ -12575,7 +12575,6 @@ class TestNodeInterfaceClone_SimpleNetworkLayout(
             iface.params = {
                 "mtu": random.randint(600, 1400),
                 "accept_ra": factory.pick_bool(),
-                "autoconf": factory.pick_bool(),
             }
             iface.save()
         extra_interface = node.current_config.interface_set.all()[1]
diff --git a/src/maasserver/tests/test_preseed_network.py b/src/maasserver/tests/test_preseed_network.py
index 2737d7b..c8e3044 100644
--- a/src/maasserver/tests/test_preseed_network.py
+++ b/src/maasserver/tests/test_preseed_network.py
@@ -342,7 +342,6 @@ class TestSingleAddrFamilyLayout(MAASServerTestCase, AssertNetworkConfigMixin):
             iface.params = {
                 "mtu": random.randint(600, 1400),
                 "accept_ra": factory.pick_bool(),
-                "autoconf": factory.pick_bool(),
             }
             iface.save()
         extra_interface = node.current_config.interface_set.all()[1]
@@ -380,7 +379,6 @@ class TestSimpleNetworkLayout(MAASServerTestCase, AssertNetworkConfigMixin):
             iface.params = {
                 "mtu": random.randint(600, 1400),
                 "accept_ra": factory.pick_bool(),
-                "autoconf": factory.pick_bool(),
             }
             iface.save()
         extra_interface = node.current_config.interface_set.all()[1]

Follow ups