Skip to content

Commit

Permalink
Merge pull request #67 from ellisonbg/more-updates
Browse files Browse the repository at this point in the history
More updates
  • Loading branch information
ellisonbg committed Jan 11, 2017
2 parents ded2ce4 + e1e786a commit 78c52fe
Show file tree
Hide file tree
Showing 11 changed files with 63 additions and 160 deletions.
10 changes: 0 additions & 10 deletions deploy_formgrade.yml

This file was deleted.

9 changes: 2 additions & 7 deletions host_vars/hostname.example
Original file line number Diff line number Diff line change
Expand Up @@ -177,11 +177,9 @@ oauth_client_secret: ''
# Set to `true` to enable.
use_nbgrader: false

# The API token formgrader will use to make Hub requests Create using something
# like `openssl rand -hex 32` and enter between quotation marks below.
formgrader_hubapi_token: ''

# The list of nbgrader courses. Each must have a unique `course_id` and `port`.
# IMPORTANT: These user accounts must be created before the ansible scripts
# are run. If OAuth is used, passwords must be disabled for those users.
nbgrader_courses:
- {
course_id: "course1",
Expand All @@ -203,9 +201,6 @@ nbgrader_courses:
# Set to `true` to enable.
use_cull_idle_servers: false

# The API token for culling, create using something like `openssl rand -hex 32`.
cull_idle_servers_hubapi_token: ''

# The interval (in seconds) for checking for idle servers to cull.
cull_every: 600

Expand Down
8 changes: 0 additions & 8 deletions roles/cull_idle/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,3 @@
- name: install cull_idle_servers.py into {{jupyterhub_srv_dir}}
copy: src=cull_idle_servers.py dest={{jupyterhub_srv_dir}} owner=root group=root mode=0700

- name: install supervisor config for cull_idle_servers
template: src=cull_idle_servers.conf.j2 dest=/etc/supervisor/conf.d/cull_idle_servers.conf owner=root group=root mode=0600

- name: load cull_idle_servers supervisor config
supervisorctl: name=cull_idle_servers state=present

- name: restart cull_idle_servers with supervisor
supervisorctl: name=cull_idle_servers state=restarted
12 changes: 0 additions & 12 deletions roles/cull_idle/templates/cull_idle_servers.conf.j2

This file was deleted.

51 changes: 0 additions & 51 deletions roles/formgrade/tasks/main.yml

This file was deleted.

12 changes: 0 additions & 12 deletions roles/formgrade/templates/nbgrader.conf.j2

This file was deleted.

18 changes: 0 additions & 18 deletions roles/formgrade/templates/nbgrader_config.py.j2

This file was deleted.

25 changes: 19 additions & 6 deletions roles/jupyterhub/templates/jupyterhub_config.py.j2
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,18 @@ c.JupyterHub.cleanup_proxy = False
c.JupyterHub.cleanup_servers = False
{% endif %}

c.JupyterHub.load_groups = [
{% if use_nbgrader -%}
{%- for course in nbgrader_courses -%}
'formgrade-{{course.course_id}}': [
{%- for grader in course.graders -%}
'{{grader}}',
{%- endfor %}
]
{% endfor -%}
{%- endif %}
]

{% if use_oauth %}
c.JupyterHub.authenticator_class = u'oauthenticator.LocalGitHubOAuthenticator'
c.LocalGitHubOAuthenticator.create_system_users = True
Expand Down Expand Up @@ -43,21 +55,22 @@ c.Authenticator.whitelist = set()
{% endif %}

c.JupyterHub.services = [
{% if use_nbgrader and formgrader_hubapi_token %}
{% if use_nbgrader %}
{%- for course in nbgrader_courses -%}
{
'name': 'formgrader-{{course.course_id}}',
'name': 'formgrade-{{course.course_id}}',
'admin': True,
'api_token': '{{formgrader_hubapi_token}}',
'url': 'http://127.0.0.1:{{course.port}}',
'user': {{course.owner}},
'cwd': '{{home_dir}}/{{course.owner}}/nbgrader/{{course.course_id}}'
},
{%- endfor -%}
{% endfor -%}
{% endif %}
{% if use_cull_idle_servers and cull_idle_servers_hubapi_token %}
{
'name': 'cull_idle_servers',
'admin': True,
'api_token': '{{cull_idle_servers_hubapi_token}}',
},
'command': ['/opt/conda/bin/python3', '{{jupyterhub_srv_dir}}/cull_idle_servers.py', '--cull-every={{cull_every}}', '--timeout={{cull_timeout}}']
},
{% endif %}
]
33 changes: 33 additions & 0 deletions roles/nbgrader/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,36 @@
- name: install the nbgrader serverextension
command: jupyter serverextension enable --sys-prefix --py nbgrader
become: true

- name: stat home directories of instructors
stat: path={{home_dir}}/{{item.owner}}
with_items:
- "{{nbgrader_courses}}"
register: home_dirs_exists

- name: fail if home directories of instructors don't exist
fail: msg="Instructors' home directory doesn't exist, create them first!"
when: item.stat.exists == False
with_items:
- "{{home_dirs_exists.results}}"

- name: make sure base exists
file: path={{home_dir}}/{{item[0].owner}}/nbgrader/{{item[0].course_id}}/ state={{item[1]}} owner={{item[0].owner}} group={{item[0].owner}} mode=0700
become: true
with_nested:
- "{{nbgrader_courses}}"
- ['directory', 'touch']

- name: make sure subdirectories exist
file: path={{home_dir}}/{{item[0].owner}}/nbgrader/{{item[0].course_id}}/{{item[1]}}/ state=directory owner={{item[0].owner}} group={{item[0].owner}} mode=0700
become: true
with_nested:
- "{{nbgrader_courses}}"
- ['source', 'release', 'feedback', 'autograded', 'submitted']

- name: install nbgrader config file
template: src=nbgrader_config.py.j2 dest={{home_dir}}/{{item.owner}}/nbgrader/{{item.course_id}}/nbgrader_config.py owner={{item.owner}} group={{item[0].owner}} mode=700
become: true
with_items:
- "{{nbgrader_courses}}"

9 changes: 9 additions & 0 deletions roles/nbgrader/templates/nbgrader_config.py.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Configuration file for nbgrader.
# Supervisord is responsible for logging.
c = get_config()

c.NbGrader.course_id = '{{item.course_id}}'

c.FormgradeApp.authenticator_class = u'nbgrader.auth.hubauth.HubAuth'
c.FormgradeApp.port = {{item.port}}
c.HubAuth.grader_group = u'formgrade-{{item.grader_group}}'
36 changes: 0 additions & 36 deletions roles/roles-readme.md

This file was deleted.

0 comments on commit 78c52fe

Please sign in to comment.