JupyterHub Repo Integration

This commit is contained in:
Amit Rathi 2019-05-22 20:16:17 +00:00 committed by Dmitriy Zaporozhets
parent 728ddeb6ae
commit 158a14ec20
3 changed files with 34 additions and 0 deletions

View File

@ -1,5 +1,7 @@
# frozen_string_literal: true
require 'securerandom'
module Clusters
module Applications
class Jupyter < ApplicationRecord
@ -80,6 +82,9 @@ module Clusters
"secretToken" => secret_token
},
"auth" => {
"state" => {
"cryptoKey" => crypto_key
},
"gitlab" => {
"clientId" => oauth_application.uid,
"clientSecret" => oauth_application.secret,
@ -95,6 +100,10 @@ module Clusters
}
end
def crypto_key
@crypto_key ||= SecureRandom.hex(32)
end
def project_id
cluster&.project&.id
end

View File

@ -0,0 +1,5 @@
---
title: Pass user's identity and token from JupyterHub to user's Jupyter environment
merge_request: 27314
author: Amit Rathi
type: added

View File

@ -8,8 +8,28 @@ hub:
extraConfig: |
c.KubeSpawner.cmd = ['jupyter-labhub']
async def add_auth_env(spawner):
'''
We set user's id, login and access token on single user image to
enable repository integration for JupyterHub.
See: https://gitlab.com/gitlab-org/gitlab-ce/issues/47138#note_154294790
'''
auth_state = await spawner.user.get_auth_state()
if not auth_state:
spawner.log.warning("No auth state for %s", spawner.user)
return
spawner.environment['GITLAB_ACCESS_TOKEN'] = auth_state['access_token']
spawner.environment['GITLAB_USER_LOGIN'] = auth_state['gitlab_user']['username']
spawner.environment['GITLAB_USER_ID'] = str(auth_state['gitlab_user']['id'])
c.KubeSpawner.pre_spawn_hook = add_auth_env
auth:
type: gitlab
state:
enabled: true
singleuser:
defaultUrl: "/lab"