Skip to content

Commit

Permalink
change {username}{servername} to {userid} to avoid volume length rest…
Browse files Browse the repository at this point in the history
…rictions of 63 characters (kubeflow#1200)

* shorten pvc, pod names

* change {username}{servername} to {userid} to avoid volume length restrictions

* remove extraneous changes

* avoid identifier length limitations for pvc and pod by removing prefix accounts.google: for iap and truncating escaped self.user.name to 63 characters

* add comment about overriding KubeSpawner method

* fix _parse_user_name error

* add TODO unit test for _parse_user_name
  • Loading branch information
kkasravi authored and k8s-ci-robot committed Jul 20, 2018
1 parent 06225ec commit 8daa29a
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions kubeflow/core/kubeform_spawner.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import json
import os
import string
import escapism
from kubespawner.spawner import KubeSpawner
from jhub_remote_user_authenticator.remote_user_auth import RemoteUserAuthenticator
from oauthenticator.github import GitHubOAuthenticator
Expand Down Expand Up @@ -111,6 +113,34 @@ def get_env(self):
env['GOOGLE_APPLICATION_CREDENTIALS'] = '{}/{}.json'.format(SERVICE_ACCOUNT_SECRET_MOUNT, gcp_secret_name)
return env

# TODO(kkasravi): add unit test
def _parse_user_name(self, username):
safe_chars = set(string.ascii_lowercase + string.digits)
name = username.split(':')[-1]
legacy = ''.join([s if s in safe_chars else '-' for s in name.lower()])
safe = escapism.escape(name, safe=safe_chars, escape_char='-').lower()
return legacy, safe, name

def _expand_user_properties(self, template):
# override KubeSpawner method to remove prefix accounts.google: for iap
# and truncate to 63 characters

# Set servername based on whether named-server initialised
if self.name:
servername = '-{}'.format(self.name)
else:
servername = ''

legacy, safe, name = self._parse_user_name(self.user.name)
rname = template.format(
userid=self.user.id,
username=safe,
unescaped_username=name,
legacy_escape_username=legacy,
servername=servername
)[:63]
return rname


###################################################
# JupyterHub Options
Expand Down

0 comments on commit 8daa29a

Please sign in to comment.