Skip to content

Commit

Permalink
notebooks: make server name dns-compliant
Browse files Browse the repository at this point in the history
  • Loading branch information
rokroskar committed May 30, 2018
1 parent 61f24c0 commit 2478c3a
Showing 1 changed file with 15 additions and 5 deletions.
20 changes: 15 additions & 5 deletions services/notebooks/notebooks_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,12 @@
import hashlib
import json
import os
import string
from urllib.parse import urljoin
from functools import wraps

import docker
import escapism
import gitlab
import requests
from flask import Flask, Response, abort, make_response, redirect, request
Expand All @@ -44,6 +46,18 @@
app = Flask(__name__)


def _server_name(namespace, project, commit_sha):
"""Form a DNS-safe server name."""
escape = lambda x: escapism.escape(
x, safe=set(string.ascii_lowercase + string.digits)
)
return '{namespace}-{project}-{commit_sha}'.format(
namespace=escape(namespace)[:10],
project=escape(project)[:10],
commit_sha=commit_sha[:7]
).lower()


def authenticated(f):
"""Decorator for authenticating with the Hub"""

Expand Down Expand Up @@ -97,11 +111,7 @@ def whoami(user):
@authenticated
def launch_notebook(user, namespace, project, commit_sha, notebook=None):
"""Launch user server with a given name."""
server_name = '{namespace}-{project}-{commit_sha}'.format(
namespace=namespace[:10],
project=project[:10],
commit_sha=commit_sha[:7]
)
server_name = _server_name(namespace, project, commit_sha)

headers = {auth.auth_header_name: 'token {0}'.format(auth.api_token)}

Expand Down

0 comments on commit 2478c3a

Please sign in to comment.