"undefined method `desktop' for #<BatchConnect:" Error

Greetings,

We have the Jupyter App running using OOD, and I’m trying to setup our first “Interactive Desktop” for the same compute node, but I’m getting the “undefined method ‘desktop’” error on my browser when I try to reserve a session through the interactive desktop.

The OOD portal is on a RHEL 8 machine with SELinux in permissive mode
The Slurm Ctrl and compute node is an Ubuntu machine with 8 gpus
And I disabled the firewalls on both machines just in case, but error persists.

Attached are the form and submit form, respectively located at
/etc/ood/config/apps/bc_desktop/godel.yml and /etc/ood/config/apps/bc_desktop/submit/godel.yml.erb on the OOD node, and both files permissions are 644 (world readable).
When I run the command ls /usr/share/xsessions/ on the compute node, I get mate.desktop ubuntu.desktop, so I assume that the mate desktop requirement is fullfilled.

The nginx error logs aren’t providing me with any additional information:
ERROR "ERROR: NoMethodError - undefined methoddesktop’ for #<BatchConnect::SessionContext:0x0000556ae2edebd8>"`

Not sure where to go from here.
godel.yml (1.5 KB)
godel.yml.erb.txt (378 Bytes)

Welcome! Also, love the cluster name! Kurt would be proud.

Now, for the actual question, could you also post your submit file as well as this is likely what is causing the problem is a disconnect between something you are doing in the form and the submit.

Edit: Whoops! Just saw the .erb file and the submit attribute. Let me look this over for a bit and see what I can find.

One thing that jumps out is I don’t see the desktop listed in the form: section of the godel.yml file, which you are going to need. What happens with that added under the form: section?

Adding the desktop in the form section definitely made progress. A session now starts and completes without opening a terminal on Godel. I tried turning X11Forwarding on and restarted sshd, but the problem remains. Here is the output log from that session:

Script starting…
Generating connection YAML file…
ERROR: Collection default cannot be found
Launching desktop ‘mate’…
cat: /etc/xdg/autostart/gnome-keyring-gpg.desktop: No such file or directory
cat: /etc/xdg/autostart/mate-volume-control-applet.desktop: No such file or directory
cat: /etc/xdg/autostart/pulseaudio.desktop: No such file or directory
cat: /etc/xdg/autostart/rhsm-icon.desktop: No such file or directory
cat: /etc/xdg/autostart/xfce4-power-manager.desktop: No such file or directory
Unable to init server: Could not connect: Connection refused

** (mate-session:2489768): WARNING **: 14:01:41.660: Cannot open display:
Desktop ‘mate’ ended…
Cleaning up…

Yeah, looks like the VNC server never even boots up.

I think I see, you need to change the godel.yml.erb to have a vnc template, so:

---
batch_connect:
  template: vnc
  ...

What happens from there?

That worked, thank you so much. I also needed to add

  • bc_vnc_idle

to the form section. Also, X11Forwarding doesn’t need to be enabled. One thing that bothers me is when I run a command like nvidia-smi, I can see all 8 gpus from the Desktop app, even though I only requested 1 gpu in that form. That’s not the case with our Jupyter Notbeook instance, where the command !nvidia-smi from inside a notebook cell shows only 1 gpu.