Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
notebooks-operations
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
702
Projekty
notebooks-operations
Commits
c3932593
Commit
c3932593
authored
7 months ago
by
Enol Fernandez
Browse files
Options
Downloads
Patches
Plain Diff
Remove B2Drop
parent
5d2a405d
No related branches found
No related tags found
1 merge request
!4
Set AuthZ
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
common/deployments/hub-staging.yaml
+3
-167
3 additions, 167 deletions
common/deployments/hub-staging.yaml
with
3 additions
and
167 deletions
common/deployments/hub-staging.yaml
+
3
−
167
View file @
c3932593
...
...
@@ -202,84 +202,11 @@ hub:
c.JupyterHub.extra_handlers = [(r'/welcome', WelcomeHandler)]
egi-notebooks-b2drop
:
|-
{
%
- raw %
}
import base64
import json
from jinja2 import BaseLoader
from jinja2 import Environment
from egi_notebooks_hub.onedata import OnedataSpawner
from kubernetes_asyncio.client.rest import ApiException
from tornado.httpclient import AsyncHTTPClient, HTTPClientError, HTTPRequest
class B2DropSpawner(OnedataSpawner)
:
async def auth_state_hook(self, spawner, auth_state)
:
await super().auth_state_hook(spawner, auth_state)
self.b2drop_ready = False
self.b2drop_user = ""
self.b2drop_pwd = ""
try
:
secret = await self.api.read_namespaced_secret(self.token_secret_name, self.namespace)
except ApiException
:
return
if secret and secret.data
:
self.b2drop_user = base64.b64decode(secret.data.get("b2drop-user", "")).decode()
self.b2drop_pwd = base64.b64decode(secret.data.get("b2drop-pwd", "")).decode()
self.b2drop_ready = (self.b2drop_user and self.b2drop_pwd)
def _render_options_form(self, profile_list)
:
# old:self._profile_list = self._init_profile_list(profile_list)
self._profile_list = self._get_initialized_profile_list(profile_list)
profile_form_template = Environment(loader=BaseLoader).from_string(
self.profile_form_template
)
return profile_form_template.render(profile_list=self._profile_list, b2drop_ready=self.b2drop_ready, b2drop_user=self.b2drop_user, b2drop_pwd=self.b2drop_pwd)
async def pre_spawn_hook(self, spawner)
:
await super(B2DropSpawner, self).pre_spawn_hook(spawner)
b2drop_user = self.user_options.get("b2drop-user", "")
b2drop_pwd = self.user_options.get("b2drop-pwd", "")
if not (b2drop_user and b2drop_pwd)
:
secret = await self.api.read_namespaced_secret(self.token_secret_name, self.namespace)
if secret and secret.data
:
b2drop_user = base64.b64decode(secret.data.get("b2drop-user", "")).decode()
b2drop_pwd = base64.b64decode(secret.data.get("b2drop-pwd", "")).decode()
if b2drop_user and b2drop_pwd
:
volume_mounts = [
{"mountPath"
:
"
/owncloud:shared"
,
"
name"
:
"
owncloud-home"
},
]
spawner.extra_containers.append(
{
"name"
:
"
b2drop"
,
"
image"
:
"
eginotebooks/webdav-rclone-sidecar:sha-0a62679"
,
"
env"
:
[
{
"
name"
:
"
WEBDAV_URL"
,
"
value"
:
"
https://b2drop.eudat.eu/remote.php/webdav"
},
{
"
name"
:
"
WEBDAV_PWD"
,
"
value"
:
b2drop_pwd
},
{
"
name"
:
"
WEBDAV_USER"
,
"
value"
:
b2drop_user
},
{
"
name"
:
"
WEBDAV_VENDOR"
,
"
value"
:
"
other"
},
{
"
name"
:
"
MOUNT_PATH"
,
"
value"
:
"
/owncloud/b2drop"
},
{
"
name"
:
"
MOUNT_WAIT_POINT"
,
"
value"
:
"
webdav-fs:
/owncloud
fuse.rclone"
},
]
,
"
resources"
:
self.sidecar_resources,
"securityContext"
:
{
"
runAsUser"
:
1000
,
"
fsUser"
:
1000
,
"
fsGroup"
:
100
,
"
privileged"
:
True
,
"
capabilities"
:
{
"
add"
:
[
"
SYS_ADMIN"
]},
}
,
"
volumeMounts"
:
volume_mounts,
}
)
def options_from_form(self, formdata)
:
data = super(B2DropSpawner, self)._options_from_form(formdata)
data.update({'b2drop-user'
:
formdata.get('b2drop-user', [None])[0],
'b2drop-pwd'
:
formdata.get('b2drop-pwd', [None])[0]})
return data
class WebDavOIDCSpawner(B2DropSpawner)
:
class WebDavOIDCSpawner(OneDataSpawner)
:
# ownCloud Infinite Scale parameters
# (https://owncloud.dev/apis/http/graph/spaces/#list-my-spaces-get-medrives)
OCIS_URL = "https://ocis-staging.apps.bst2-test.paas.psnc.pl"
...
...
@@ -374,100 +301,9 @@ hub:
else
:
self.log.info("No auth state, skipping ownCloud")
c.JupyterHub.spawner_class = WebDavOIDCSpawner
c.B2DropSpawner.token_mount_path = "/var/run/secrets/oidc/"
c.B2DropSpawner.http_timeout =
90
c.B2DropSpawner.profile_form_template = """
<style>
/*
.profile divs holds two div tags
:
one for a radio button, and one
for the profile's content.
*/
#kubespawner-profiles-list .profile {
display
:
flex;
flex-direction
:
row;
font-weight
:
normal;
border-bottom
:
1px solid
#ccc;
padding-bottom
:
12px;
}
#kubespawner-profiles-list .profile .radio {
padding
:
12px;
}
/* .option divs holds a label and a select tag */
#kubespawner-profiles-list .profile .option {
display
:
flex;
flex-direction
:
row;
align-items
:
center;
padding-bottom
:
12px;
}
#kubespawner-profiles-list .profile .option label {
font-weight
:
normal;
margin-right
:
8px;
min-width
:
96px;
}
</style>
<div class='form-group' id='kubespawner-profiles-list'>
{%- for profile in profile_list %}
{#- Wrap everything in a <label> so clicking anywhere selects the option
#}
<label for='profile-item-{{ profile.slug }}' class='profile'>
<div class='radio'>
<input type='radio' name='profile' id='profile-item-{{ profile.slug }}' value='{{ profile.slug }}' {% if profile.default %}checked{% endif %} />
</div>
<div>
<h3>{{ profile.display_name }}</h3>
{%- if profile.description %}
<p>{{ profile.description }}</p>
{%- endif %}
{%- if profile.profile_options %}
<div>
{%- for k, option in profile.profile_options.items() %}
<div class='option'>
<label for='profile-option-{{profile.slug}}-{{k}}'>{{option.display_name}}</label>
<select name="profile-option-{{profile.slug}}-{{k}}" class="form-control">
{%- for k, choice in option['choices'].items() %}
<option value="{{ k }}" {% if choice.default %}selected{%endif %}>{{ choice.display_name }}</option>
{%- endfor %}
</select>
</div>
{%- endfor %}
</div>
{%- endif %}
</div>
</label>
{%- endfor %}
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="headingOne">
<h4 class="panel-title">
<a class="collabpsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="false" aria-controls="collapseOne">
B2DROP connection
</a>
{%if b2drop_ready %}<span class="label label-success">Already configured!</span>{% endif %}
</h4>
</div>
<div id="collapseOne" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne">
<div class="panel-body">
<div class='form-group'>
<label for="b2drop-user" class="form-label">B2DROP app Username</label>
<input type="text" class="form-control" name="b2drop-user" id="b2drop-user" aria-describedby="b2drop-user-help" value="{{ b2drop_user }}">
<div id="b2drop-user-help" class="form-text">Create new app password at <a href="https://b2drop.eudat.eu/settings/user/security">B2DROP security configuration</a></div>
</div>
<div class='form-group'>
<label for="b2drop-pwd" class="form-label">B2DROP app Password</label>
<input type="password" class="form-control" name="b2drop-pwd" id="b2drop-pwd" value="{{ b2drop_pwd }}">
</div>
</div>
</div>
</div>
</div>
"""
c.WebDavOIDCSpawner.token_mount_path = "/var/run/secrets/oidc/"
c.WebDavOIDCSpawner.http_timeout =
90
{
%
endraw %
}
extraFiles
:
welcome.html
:
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment