VS-Code interactive app issue when downloading any extensions

I cannot get any any marketplace extensions to work. When trying to install python or jupyter I get this error: Failed to install ‘ms-toolsai.jupyter’.

For any extension that does download, it doesnt actually work, ex installed VS Code Jupyter Notebook Previewer and My Jupyter Notebook Previewer. When opening .ipynb file using either of the installed extensions I just get a black screen.

Another thing to note, all detail tabs for any extension dont actually show any information. Just a blank screen.

This is likely because while it is the VSCode editor, it is actually Code Server that you are using which does not connect to the MicroSoft Public Marketplace.

And some more docs around how you can do various things for the market place:

You will have to actually download any extension you are interested in and build it in order to use it with Code Server and then use the json.settings within the VScode editor to point to the path of the built binary, which will depend on the app.

What version of code-server are you using? Older versions, which I believe most OSC or public VSCode OOD apps use no longer work with extensions correctly (from my testing). A while back code-server refactored to use the newly open sourced VS Code Server backend. This change broke most OOD apps so they were never updated.

If you use the latest version of code-server (4.6.0) and a view.html.erb like below everything should work correctly.

<form action="/rnode/<%= host %>/<%= port %>/login?to=" method="post" target="_blank">
  <input type="hidden" name="password" value="<%= password %>">
  <button class="btn btn-primary" type="submit">
    <i class="fa fa-eye"></i> Connect

I’ll follow up with the full app in gitlab if your interested. I’m doing some finishing touches before moving the update to production.

Here’s the full working app NMSU_HPC / ood_bc_codeserver · GitLab. The extensions I tested worked without issues with this new version. I tested Python but not Jupyter.

I ended up getting this working with code server 3.9.3, vs code 1.54.2 and having to manually download ms-python v2021.5.926500501 and ms-toolsai.jupyter-2021.3.619093157.vsix

When I tried to use the latest version I was getting 404 errors when trying to load the app. I have not yet tested the app posted above with the latest version.

I tried using the view.html.erb file that you posted with code-server (4.6.0) but now I am having a different issue. The app will start but when I go to connect the page says: Not Found.
The url looks funky too:

if I delete the duplicate part to look like this : https://****/rnode/dgx-a100/30516 I just get a white screen

The logs do not indicate any issues, if I go to the compute node directly on that port I can get into vs code.

having below in view.html.erb semi works

<form id="<%= form_id %>" action="/rnode/<%= host %>/<%= port %>/" method="get" target="_blank">
  <button class="btn btn-primary" type="submit">
    <i class="fa fa-cogs"></i> Connect to VS Code

get the wrong url (still https:///rnode/dgx-a100/30516/rnode/dgx-a100/30516/) but manually changing to https:///rnode/dgx-a100/30516 I am able to login and download extensions. Still dont know why its adding this part twice rnode/dgx-a100/30516/.

Now the problem is the extension that I need doesnt work (jupyter) . Both python and jupyter download fine but when I go to open a jupyter notebook it never loads.
Console error:
The Web Worker Extension Host did not start in 60s, that might be a problem

pop up error: Extension activation failed, run the ‘Developer: Toggle Developer Tools’ command for more information. Source jupyter extension

Can you confirm what version of Ondemand you have deployed? I’m running 2.0.28 and don’t get the weird redirection issue. I ran into it with both an earlier version of ondemand and code-server so I don’t know which update fixed it. For now verify that you are actually using the new version of code-server and update to ondemand 2.0.28 if you can.

The view.html.erb you posted won’t log in as you are not passing in the password.

I am using OnDemand version: v2.0.9 and code-server 4.6.0. Should I try downgrading OnDemand version?

Can you confirm in your version that you are able to load an .ipynb notebook and run a cell?

How about we meet. I’ll DM you a meeting invite.

I blew away the full install (which was installed from source originally using ansible in deepops) and freshly installed using new .deb files for ubuntu 20.04. Also using the latest version of vs code and cloned a clean copy of NMSU_HPC / ood_bc_codeserver · GitLab. With everything being completely reinstalled and up to date I am still having the same exact issues (the issue with the url putting the port hostname and rnode twice but more importantly the jupyter extension still not working. I have also tried switching the python kernel when opening a jupyter notebook but doesnt work either). Any other suggestions?

OS Ubuntu 20.04
OnDemand version: 2.1.20220912-127981.1b38c8e.nightly
URL issue https://****/rnode/dgx-a100/60574/rnode/dgx-a100/60574/
Jupyter extension: v2022.8.1002170547
Python extension: v2022.14.0
code-server: 4.6.0 6d3f9ca6a6df30a1bfad6f073f6fa33c0e63abdb with Code 1.70.1
Python 3.8.10 64-bit path: /opt/deepops/env/bin/python

From what I can see this is possible an Apache issue of some kind for the redirect issue. I am on the latest 2.0.x stable release instead of unstable and running RHEL 8 version of apache. Here is what is likely the relevant pit in ood-portal.conf apache config

# Reverse "relative" proxy traffic to backend webserver through IP sockets:
  #     https://ondemand.nmsu.edu:443/rnode/HOST/PORT/index.html
  #     #=> http://HOST:PORT/index.html
  <LocationMatch "^/rnode/(?<host>discovery-(c|g)\\d+-ib0\\.cluster\\.local)/(?<port>\d+)(?<uri>/.*|)">
    AuthType openid-connect
    Require valid-user

    # ProxyPassReverse implementation
    Header edit Location "^([^/]+//[^/]+)|(?=/)|^([\./]{1,}(?<!/))" "/rnode/%{MATCH_HOST}e/%{MATCH_PORT}e"

    # ProxyPassReverseCookieDomain implemenation
    Header edit* Set-Cookie ";\s*(?i)Domain[^;]*" ""

    # ProxyPassReverseCookiePath implementation
    Header edit* Set-Cookie ";\s*(?i)Path[^;]*" ""
    Header edit  Set-Cookie "^([^;]+)" "$1; Path=/rnode/%{MATCH_HOST}e/%{MATCH_PORT}e"

    LuaHookFixups node_proxy.lua node_proxy_handler

I’m not sure how this compares to what is being generated on Ubuntu. This may need troubleshooting from someone in the core OOD team.

As far as Jupyter is concerned this has to be an issue with either conda not being available or missing packages in the base conda environment. Here is the base environment in that I showed you was working src/sstack/modules/conda/data/base.yaml · main · NMSU_HPC / sstack · GitLab.