Forums

Home / Forums

You need to log in to create posts and topics. Login · Register

Node roles and network interfaces not accessible in GUI after upgrade to 3.1.0

Good morning; after upgrading the cluster from 3.0.3 to 3.1.0, I've found out that I cannot access anymore the following screens under "Manage Nodes": Node Role Setting and Node Network Interfaces.

When I click on "Node Role Settings" a red error page is shown in the browser, and Petasan log contains:

29/05/2022 14:46:02 ERROR list index out of range
Traceback (most recent call last):
File "/opt/petasan/scripts/admin/node_manage_disks.py", line 147, in main_catch
func(args)
File "/opt/petasan/scripts/admin/node_manage_disks.py", line 733, in get_node_interfaces_info
interfaces_info = new_wizard.get_interfaces_info()
File "/usr/lib/python3/dist-packages/PetaSAN/backend/cluster/deploy.py", line 1287, in get_interfaces_info
interface_info[info_item_ls[0]] = info_item_ls[1]
IndexError: list index out of range
29/05/2022 14:46:02 ERROR Error while run command.
29/05/2022 14:46:02 ERROR unexpected EOF while parsing (<string>, line 0)
29/05/2022 14:46:02 ERROR Could not build url for endpoint 'wizard_controller.main'. Did you mean 'main_controller.login' instead?

If I try to access "Node Network Interfaces", a popup is shown in the browser but nothing happens, and Petasan.log shows:

Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/lib/python3/dist-packages/flask/app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib/python3/dist-packages/flask/_compat.py", line 39, in reraise
raise value
File "/usr/lib/python3/dist-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/lib/python3/dist-packages/PetaSAN/core/security/basic_auth.py", line 71, in decorated
return f(*args, **kwargs)
File "/usr/lib/python3/dist-packages/PetaSAN/core/security/basic_auth.py", line 91, in wrapped_function
return fn(*args, **kwargs)
File "/usr/lib/python3/dist-packages/PetaSAN/web/admin_controller/node.py", line 1018, in get_node_interfaces_info
eths_ls = get_node_interfaces(node_name)
File "/usr/lib/python3/dist-packages/PetaSAN/web/admin_controller/node.py", line 1040, in get_node_interfaces
return redirect(url_for('wizard_controller.main'), 307)
File "/usr/lib/python3/dist-packages/flask/helpers.py", line 370, in url_for
return appctx.app.handle_url_build_error(error, endpoint, values)
File "/usr/lib/python3/dist-packages/flask/app.py", line 2215, in handle_url_build_error
reraise(exc_type, exc_value, tb)
File "/usr/lib/python3/dist-packages/flask/_compat.py", line 39, in reraise
raise value
File "/usr/lib/python3/dist-packages/flask/helpers.py", line 357, in url_for
rv = url_adapter.build(
File "/usr/lib/python3/dist-packages/werkzeug/routing.py", line 2020, in build
raise BuildError(endpoint, values, method, self)
werkzeug.routing.BuildError: Could not build url for endpoint 'wizard_controller.main'. Did you mean 'main_controller.login' instead?

Please advise how I can fix this, some important settings are out of reach as long as these pages don't work.

Thank-you,

From any node, can you please post files

/etc/default/grub
/etc/udev/rules.d/70-persistent-net.rules
/etc/udev/rules.d/75-persistent-net-generator.rules

and output of

/opt/petasan/scripts/detect-interfaces.sh

 

/etc/default/grub

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo PetaSAN`
GRUB_CMDLINE_LINUX_DEFAULT="quiet net.ifnames=1 intel_idle.max_cstate=1 processor.max_cstate=1 pti=off spectre_v2=off l1tf=off nospec_store_bypass_disable no_stf_barrier"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

/etc/udev/rules.d/70-persistent-net.rules

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:87:9a:42", ATTR{type}=="1", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:6e:3e:04", ATTR{type}=="1", NAME="eth1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:89:bb:9c", ATTR{type}=="1", NAME="eth2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:6c:a0:12", ATTR{type}=="1", NAME="eth3"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:46:a4:66", ATTR{type}=="1", NAME="eth4"

/etc/udev/rules.d/75-persistent-net-generator.rules

SUBSYSTEM!="net", GOTO="persistent_net_generator_end"
ACTION!="add", GOTO="persistent_net_generator_end"
NAME=="?*", GOTO="persistent_net_generator_end"
KERNEL!="eth*|en*|wlan*", GOTO="persistent_net_generator_end"
DRIVERS=="?*", IMPORT{program}="/opt/petasan/scripts/util/if-name-generator.py $attr{address} %k "
ENV{PS_INTERFACE_NAME}=="?*", NAME="$env{PS_INTERFACE_NAME}"
LABEL="persistent_net_generator_end"

output of /opt/petasan/scripts/detect-interfaces.sh

device=eth0,mac=52:54:00:87:9a:42,pci=00:03.0,model=Red Hat, Inc. Virtio network device,path=ens3
device=eth1,mac=52:54:00:6e:3e:04,pci=00:04.0,model=Red Hat, Inc. Virtio network device,path=ens4
device=eth2,mac=52:54:00:89:bb:9c,pci=00:07.0,model=Red Hat, Inc. Virtio network device,path=ens7
device=eth3,mac=52:54:00:6c:a0:12,pci=00:08.0,model=Red Hat, Inc. Virtio network device,path=ens8
device=eth4,mac=52:54:00:46:a4:66,pci=00:09.0,model=Red Hat, Inc. Virtio network device,path=ens9

Please note that, as indicated in another post a couple of days ago, I had to remove the KERNEL=="eth*" option from each line in /etc/udev/rules.d/70-persistent-net.rules, otherwise the network interfaces got named ens3, ens4 and so on after the update to 3.1.0, and Petasan would not recognise them (the node would be completely cut off from the network).

Thank-you,

this seems the same issue as

http://www.petasan.org/forums/?view=thread&id=1070

Happens in virtualized kvm/Proxmox Virtio interface reporting its vendor as "Red Hat, Inc." the "," in middle causes issues in our parsing. The  forum reply does show the fix for this.

Brilliant, thank-you very much. Will this change survive the next updates?

Yes sure, this change will be included in the updates.