Removing an old Network Interface

I originally had two network interfaces bonded, it wasn’t particularly stable in that version of Scale, I couldn’t get it to stick through reboots. It sounded like it was a known problem and would get resolved in a subsequent release so I didn’t worry about. Now on 24.04.0, I figured I would try it again when I do I get the sqllite issue I see mentioned by others. My issue appears to be related to an old interface (enp1s0f0) from a NIC (used in the failed bridge) that I removed months ago cannot be deleted. How can I delete this old interface?

when I try to delete it I get the following error


Error: Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 198, in call_method
result = await self.middleware.call_with_audit(message[‘method’], serviceobj, methodobj, params, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1466, in call_with_audit
result = await self._call(method, serviceobj, methodobj, params, app=app,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1417, in _call
return await methodobj(*prepared_call.args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/service/crud_service.py”, line 199, in delete
return await self.middleware._call(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1417, in _call
return await methodobj(*prepared_call.args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/service/crud_service.py”, line 210, in nf
rv = await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 187, in nf
return await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 47, in nf
res = await f(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/plugins/network.py”, line 1416, in do_delete
await self.delete_network_interface(oid)
File “/usr/lib/python3/dist-packages/middlewared/plugins/network.py”, line 1428, in delete_network_interface
await self.delete_network_interface(lagg_member[‘lagg_physnic’])
File “/usr/lib/python3/dist-packages/middlewared/plugins/network.py”, line 1428, in delete_network_interface
await self.delete_network_interface(lagg_member[‘lagg_physnic’])
File “/usr/lib/python3/dist-packages/middlewared/plugins/network.py”, line 1428, in delete_network_interface
await self.delete_network_interface(lagg_member[‘lagg_physnic’])
[Previous line repeated 949 more times]
File “/usr/lib/python3/dist-packages/middlewared/plugins/network.py”, line 1425, in delete_network_interface
for lagg_member in await self.middleware.call(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1564, in call
return await self._call(
^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1417, in _call
return await methodobj(*prepared_call.args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 187, in nf
return await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/plugins/datastore/read.py”, line 98, in query
aliases = self._get_queryset_joins(table)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/plugins/datastore/read.py”, line 185, in _get_queryset_joins
result.update(self._get_queryset_joins(alias))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/plugins/datastore/read.py”, line 175, in _get_queryset_joins
for column in table.c:
^^^^^^^
File “/usr/lib/python3/dist-packages/sqlalchemy/util/langhelpers.py”, line 1113, in get
obj.dict[self.name] = result = self.fget(obj)
^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/sqlalchemy/sql/selectable.py”, line 737, in columns
self._populate_column_collection()
File “/usr/lib/python3/dist-packages/sqlalchemy/sql/selectable.py”, line 1643, in _populate_column_collection
self.element._generate_fromclause_column_proxies(self)
File “/usr/lib/python3/dist-packages/sqlalchemy/sql/selectable.py”, line 694, in _generate_fromclause_column_proxies
fromclause._columns._populate_separate_keys(
File “/usr/lib/python3/dist-packages/sqlalchemy/sql/base.py”, line 1294, in populate_separate_keys
cols = list(iter
)
^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/sqlalchemy/sql/selectable.py”, line 695, in
col._make_proxy(fromclause) for col in self.c
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/sqlalchemy/sql/schema.py”, line 2086, in _make_proxy
c = self._constructor(
^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/sqlalchemy.py”, line 35, in init
super().init(*args, **kwargs)
File “/usr/lib/python3/dist-packages/sqlalchemy/sql/schema.py”, line 1767, in init
self._init_items(*args)
File “/usr/lib/python3/dist-packages/sqlalchemy/sql/schema.py”, line 144, in _init_items
spwd(self, **kw)
File “/usr/lib/python3/dist-packages/sqlalchemy/sql/base.py”, line 1047, in _set_parent_with_dispatch
self._set_parent(parent, **kw)
File “/usr/lib/python3/dist-packages/sqlalchemy/sql/schema.py”, line 2577, in _set_parent
self.parent._on_table_attach(self._set_table)
File “/usr/lib/python3/dist-packages/sqlalchemy/sql/schema.py”, line 1987, in _on_table_attach
event.listen(self, “after_parent_attach”, fn)
File “/usr/lib/python3/dist-packages/sqlalchemy/event/api.py”, line 115, in listen
_event_key(target, identifier, fn).listen(*args, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/sqlalchemy/event/api.py”, line 25, in _event_key
tgt = evt_cls._accept_with(target)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/sqlalchemy/event/base.py”, line 245, in _accept_with
if hasattr(target, “dispatch”):
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/sqlalchemy/event/base.py”, line 321, in get
disp = self.dispatch._for_instance(obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/sqlalchemy/event/base.py”, line 127, in _for_instance
return self._for_class(instance_cls)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/sqlalchemy/event/base.py”, line 123, in _for_class
return self.class(self, instance_cls)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/sqlalchemy/event/base.py”, line 89, in init
self._empty_listeners = self._empty_listener_reg[instance_cls]
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
File “/usr/lib/python3.11/weakref.py”, line 415, in getitem
return self.data[ref(key)]
~~~~~~~~~^^^^^^^^^^
RecursionError: maximum recursion depth exceeded in comparison

Please get us a bug ticket on this one. That looks like something we should correct with a bugfix soon.

1 Like

Done