Good morning all,
I'm rather new to this so please forgive my ignorance. I've searched official
Oracle documentation, the oVirt administration guide, reddit, LLMs, and about every other
source I could find but haven't seen anything that allows me set up a bond
successfully.
For background, I'm currently using one server as management and another server as a
local storage host. I'm not smart enough yet to do network storage.
I've tried to create a bond in two ways: the recommended way (in the administration
guide, Oracle documentation, etc.) of simply creating a bond within OLVM by
dragging/dropping interfaces to form a bond. Also, I've created a bond manually on my
management server and verified it was present in the hosts -> network interfaces
screen. When I attempt to assign a logical network to the bond, I get some variation of
the following in /var/log/vdsm/vdsm.log:
from=::ffff:10.90.104.68,37286, flow_id=6d139ffe-d9dc-4993-b050-72baa9eca527 (api:35)
2025-02-10 09:53:11,257-0600 ERROR (jsonrpc/1) [jsonrpc.JsonRpcServer] Internal server
error (__init__:343)
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/yajsonrpc/__init__.py", line 338, in
_handle_request
res = method(**params)
File "/usr/lib/python3.6/site-packages/vdsm/rpc/Bridge.py", line 186, in
_dynamicMethod
result = fn(*methodArgs)
File "<decorator-gen-508>", line 2, in setupNetworks
File "/usr/lib/python3.6/site-packages/vdsm/common/api.py", line 33, in
method
ret = func(*args, **kwargs)
File "/usr/lib/python3.6/site-packages/vdsm/API.py", line 1576, in
setupNetworks
supervdsm.getProxy().setupNetworks(networks, bondings, options)
File "/usr/lib/python3.6/site-packages/vdsm/common/supervdsm.py", line 38, in
__call__
return callMethod()
File "/usr/lib/python3.6/site-packages/vdsm/common/supervdsm.py", line 36, in
<lambda>
**kwargs)
File "<string>", line 2, in setupNetworks
File "/usr/lib64/python3.6/multiprocessing/managers.py", line 772, in
_callmethod
raise convert_to_error(kind, result)
libnmstate.error.NmstateVerificationError:
desired
=======
---
name: bond0
type: bond
state: up
ipv4:
enabled: false
ipv6:
enabled: false
link-aggregation:
mode: 802.3ad
options:
xmit_hash_policy: layer2+3
port:
- eno5
- eno6
current
=======
---
name: bond0
type: bond
state: up
ipv4:
enabled: false
ipv6:
enabled: false
lldp:
enabled: false
difference
==========
--- desired
+++ current
@@ -6,10 +6,5 @@
enabled: false
ipv6:
enabled: false
-link-aggregation:
- mode: 802.3ad
- options:
- xmit_hash_policy: layer2+3
- port:
- - eno5
- - eno6
+lldp:
+ enabled: false
After some research, it seemed like the solution was to take the "desired" state
and use nmstatectl apply filename.yaml to apply the desired state. However, doing so
produces the following in the same log:
2025-02-10 10:04:51,577 root DEBUG Interface ethernet.eno7 found. Merging the
interface information.
2025-02-10 10:04:51,577 root DEBUG Interface ethernet.eno8 found. Merging the
interface information.
2025-02-10 10:04:51,605 root DEBUG Async action: Rollback to checkpoint
/org/freedesktop/NetworkManager/Checkpoint/31 started
2025-02-10 10:04:51,607 root DEBUG Checkpoint
/org/freedesktop/NetworkManager/Checkpoint/31 rollback executed
2025-02-10 10:04:51,607 root DEBUG Interface eno3 rollback succeeded
2025-02-10 10:04:51,607 root DEBUG Interface lo rollback succeeded
2025-02-10 10:04:51,607 root DEBUG Interface eno2 rollback succeeded
2025-02-10 10:04:51,607 root DEBUG Interface eno8 rollback succeeded
2025-02-10 10:04:51,607 root DEBUG Interface eno6 rollback succeeded
2025-02-10 10:04:51,607 root DEBUG Interface eno5 rollback succeeded
2025-02-10 10:04:51,607 root DEBUG Interface eno7 rollback succeeded
2025-02-10 10:04:51,607 root DEBUG Interface eno4 rollback succeeded
2025-02-10 10:04:51,607 root DEBUG Interface eno1 rollback succeeded
2025-02-10 10:04:51,608 root DEBUG Interface PLZ-NET rollback succeeded
2025-02-10 10:04:51,608 root DEBUG Async action: Rollback to checkpoint
/org/freedesktop/NetworkManager/Checkpoint/31 finished
Traceback (most recent call last):
File "/usr/bin/nmstatectl", line 11, in <module>
load_entry_point('nmstate==1.4.6', 'console_scripts',
'nmstatectl')()
File "/usr/lib/python3.6/site-packages/nmstatectl/nmstatectl.py", line 74, in
main
return args.func(args)
File "/usr/lib/python3.6/site-packages/nmstatectl/nmstatectl.py", line 355, in
apply
args.save_to_disk,
File "/usr/lib/python3.6/site-packages/nmstatectl/nmstatectl.py", line 419, in
apply_state
save_to_disk=save_to_disk,
File "/usr/lib/python3.6/site-packages/libnmstate/netapplier.py", line 140, in
apply
plugins, net_state, verify_change, save_to_disk, verify_retry
File "/usr/lib/python3.6/site-packages/libnmstate/netapplier.py", line 190, in
_apply_ifaces_state
_verify_change(plugins, net_state)
File "/usr/lib/python3.6/site-packages/libnmstate/netapplier.py", line 197, in
_verify_change
net_state.verify(current_state)
File "/usr/lib/python3.6/site-packages/libnmstate/net_state.py", line 126, in
verify
self._verify_other_global_info(current_state)
File "/usr/lib/python3.6/site-packages/libnmstate/net_state.py", line 136, in
_verify_other_global_info
{key: cur_value},
libnmstate.error.NmstateVerificationError:
desired
=======
---
name: PLZ-NET
current
=======
---
name: null
difference
==========
--- desired
+++ current
@@ -1,2 +1,2 @@
---
-name: PLZ-NET
+name: null
I have no issues using a single interface. I drop the logical network (PLZ-NET) onto the
interface (e.g. eno2) and everything works swimmingly but bonding just won't work.
If anyone has guidance or can point me to a solution, I would greatly appreciate it.
I've been banging my head against the wall for a week.