Yes, in general that's the correct idiom. You probably need to explicitly import your base class though (i.e. add "import batchspawner.LsfSpawner" before you declare your subclass).
That said, both of those req_* options look like good candidates for adding to the base class, especially since req_partition already exists in at least one other batchspawner subclass. On Fri, Mar 16, 2018 at 11:15 AM, Brian Fulton-Howard <[email protected]> wrote: > Thanks! > > I have a potential addition to my config file. I had to subclass the > LsfSpawner class because it appears incomplete and doesn't have all of the > options required for our cluster. Does this look right? > > c.JupyterHub.spawner_class = 'wrapspawner.ProfilesSpawner' > c.Spawner.http_timeout = 120 > #----------------------------------------------------------- > ------------------- > # BatchSpawnerBase configuration > # Providing default values that we may omit in the profiles > #----------------------------------------------------------- > ------------------- > c.BatchSpawnerBase.req_runtime = '12:00' > #----------------------------------------------------------- > ------------------- > # ProfilesSpawner configuration > #----------------------------------------------------------- > ------------------- > # List of profiles to offer for selection. Signature is: > # List(Tuple( Unicode, Unicode, Type(Spawner), Dict )) > # corresponding to profile display name, unique key, Spawner class, > # dictionary of spawner config options. > # > # The first three values will be exposed in the input_template as > {display}, > # {key}, and {type} > # > > ## Override LsfSpawner to be compatible with Minerva > > class MinervaSpawner(batchspawner.LsfSpawner): > batch_script = Unicode('''#!/bin/sh > #BSUB -R "span[hosts=1]" # Only spawn job on one server > #BSUB -P {account} > #BSUB -q {queue} > #BSUB -m {partition} > #BSUB -R rusage[mem={memory}] > #BSUB -n {nprocs} > #BSUB -J spawner-jupyterhub > #BSUB -o {homedir}/.jupyterhub.lsf.out > #BSUB -e {homedir}/.jupyterhub.lsf.err''') > > req_partition = Unicode('', \ > help="Partition name to submit job to resource manager" > ).tag(config=True) > > req_account = Unicode('', \ > help="Account name to submit job to resource manager" > ).tag(config=True) > > c.ProfilesSpawner.profiles = [ > ( "Local server", 'local', 'jupyterhub.spawner.SudoSpawner', {'ip': > '0.0.0.0'} ), > ('Bode - 2 cores, 4 GB, 8 hours', 'bode2c4g12h', 'MinervaSpawner', > dict(req_nprocs='2', req_queue='premium', req_runtime='8:00', > req_memory='4000', > req_partition='bode', req_account='acc_LOAD')), > ('Manda - 8 cores, 128 GB, 4 hours', 'manda128gb', 'MinervaSpawner', > dict(req_nprocs='8', req_queue='premium', req_runtime='4:00', > req_memory='16000', > req_partition='bode', req_account='acc_LOAD')), > ('Bode - 2 cores, 4 GB, 24 hours', 'mesabi2c4gb24h', > 'batchspawner.TorqueSpawner', > dict(req_nprocs='2', req_queue='premium', req_runtime='24:00', > req_memory='4gb', > req_partition='bode', req_account='acc_LOAD')), > ] > > > > On Thursday, March 15, 2018 at 6:47:28 PM UTC-4, Michael Milligan wrote: >> >> Hi Brian - >> >> It is possible, and it sounds like you already mostly have the solution! >> The example config at the end of the batchspawner README should be roughly >> what you want, except that you will use the SudoSpawner instead of >> LocalProcessSpawner. Specifically, you need to install all of the spawners >> you are using alongside Jupyterhub (e.g. pip install wrapspawner, >> batchspawner, and sudospawner into the same virtualenv as jupyterhub) -- >> the ProfilesSpawner configuration will tell Jupyterhub which spawner to use >> in response to the user's menu selection. >> >> Sorry about the confusing state of the documentation about how to do >> this. Batchspawner and wrapspawner were originally distributed in the same >> repository, and when we split them apart it sounds like we may not have >> included enough context on one side or the other. We're happy to get >> suggestions about how to improve the docs if you'd like to give us some >> feedback when you get a chance. >> >> Regards, >> Michael >> >> On Thu, Mar 15, 2018 at 4:58 PM, Brian Fulton-Howard <[email protected]> >> wrote: >> >>> As I understand it, I need to use some combination of wrapspawner, >>> localspawner, sudospawner and batchspawner. I want to run jupyterhub as an >>> unprivileged user, but the admins are happy to edit the sudoers file to >>> make it work. What I'd like to do is give users in my lab a choice to start >>> on the LSF cluster (batchspawner) or locally (localspawner). Wrapspawner >>> would provide the interface to make a selection. >>> >>> Is this possible, and how would I go about doing it? I looked in the >>> documentation for the various spawners and didn't find any detailed >>> information. >>> >>> The cluster supports PAM, so I don't need any special authenticator. >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Project Jupyter" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> To view this discussion on the web visit https://groups.google.com/d/ms >>> gid/jupyter/a3f21888-0495-4fe0-b598-ca7e226bd61f%40googlegroups.com >>> <https://groups.google.com/d/msgid/jupyter/a3f21888-0495-4fe0-b598-ca7e226bd61f%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> -- > You received this message because you are subscribed to the Google Groups > "Project Jupyter" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/jupyter/1f26020c-41cf-4dc4-84d7-41a879c68bea%40googlegroups.com > <https://groups.google.com/d/msgid/jupyter/1f26020c-41cf-4dc4-84d7-41a879c68bea%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Project Jupyter" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jupyter/CAPuy8gr2EXTBABmQUArkMWzKkdCLtemK2q-ma2Aqu%3DCf_K11Hw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
