OSC / bc_osc_rstudio_server

Batch Connect - OSC RStudio Server
https://osc.github.io/Open-OnDemand/
MIT License
10 stars 18 forks source link

Passing environment variables to Interactive Apps #59

Closed soottikkal closed 3 years ago

soottikkal commented 7 years ago

A feature that enables to pass environment variables to interactive Apps is needed. For example, to use Rmpi or SparkR in Rstudio, one needs to load module openmpi or module spark before launching Rstudio.

nickjer commented 7 years ago

Currently the best way to hijack a VNC GUIs loading process is by launching a VNC Desktop and loading the GUI from a terminal within it. That is how a commercial user is launching ANSYS with Fluent.

For web servers like RStudio it isn't currently possible to hijack the loading process (at least not easily) as that previously led to apps crashing due to inconsistent module environments.

Although that isn't to say we shouldn't load specialized environments for apps. For instance in Jupyter we load the CUDA module by default if the user selected nodes with GPUs.

A couple possible suggestions for the RStudio Server case you mentioned:

soottikkal commented 7 years ago

The modules and their versions change with time and need. In that case, I assume it will be difficult to implement checkboxes for different modules.

nickjer commented 7 years ago

For the case of Rstudio Server we are locked into a specific version of R because of the libraries it was compiled against. So my only worry would be whether user-specified modules that use different libraries would play nice with installed RStudio Server.

If this is something that you want to test in the near term, the quickest solution would be we give you a quick tutorial on how to deploy and develop an interactive OnDemand app. That way you can copy over our RStudio Server app and modify it to meet your needs.

On the plus side, if you do improve the RStudio Server app in your private sandbox with added modules, we'd be more than happy to install your updated version into the production OnDemand. :smile:

ericfranz commented 7 years ago

So my only worry would be whether user-specified modules that use different libraries would play nice with installed RStudio Server.

@soottikkal has shared with me 2 different examples where "user specified modules" would work with the currently installed RStudio Server

While we can make modifications to the RStudio Server iHPC app to have new form elements for customizing modules loaded, for example, I think the point I'm interested in is if there was an option in the form for the user to be able to modify the environment (specify env vars, specify a bash script to source, etc.) of an iHPC app, a modification to the RStudio Server iHPC app would be unnecessary for some of these "edge cases".

ericfranz commented 7 years ago

@soottikkal it may be faster for us to update just the RStudio app at this time.

We could do both of these for RStudio very quickly (3 file modifications taking 5 minutes to do):

  1. checkboxes for your specific cases you identified:
    • [ ] Use Rmpi
    • [ ] Use Spark
  2. a single text box that lets the user specify modules to load, space delimited (we would pass as arguments directly to the module load command and the user could shoot themselves in the foot if they put something bad in here but that would give some more power for experimenting

Are there any other apps besides RStudio where you would find this useful? Would this cover all the immediate corner cases you have identified based on your own use and OSC client requests?

If so, I would make the changes and share an example pull request on the Jupyter app github repo and then you could use it as a model for making similar modifications in the future.

soottikkal commented 7 years ago

I would prefer the second option to have the flexibility to work with various R packages (Rmpi is just one of them) so that one can load different modules or versions just like how one would do in the terminal R application. I haven't worked with any other interactive Apps till now. There weren't many requests for this feature from OSC user community, but there is greater interest for parallel R. So if a user prefers to do parallel R in RStudio App, then we need to have this feature enabled.Thanks!

nickjer commented 6 years ago

This has been resolved in the https://github.com/OSC/bc_osc_rstudio_server/ app.