diff --git a/.gitignore b/.gitignore
index da59ccd..46e8713 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,3 +28,4 @@ src/*
# py.test's .cache/ directory
.cache/*
.idea/*
+.vscode/*
diff --git a/everware/_spawner_options_form.py b/everware/_spawner_options_form.py
new file mode 100644
index 0000000..9c1050d
--- /dev/null
+++ b/everware/_spawner_options_form.py
@@ -0,0 +1,87 @@
+SPAWNER_OPTIONS_FROM = """
+
+"""
diff --git a/everware/spawner.py b/everware/spawner.py
index db757c6..9229622 100755
--- a/everware/spawner.py
+++ b/everware/spawner.py
@@ -30,6 +30,7 @@
from .email_notificator import EmailNotificator
from .container_handler import ContainerHandler
from . import __version__
+from ._spawner_options_form import SPAWNER_OPTIONS_FROM
ssl._create_default_https_context = ssl._create_unverified_context
@@ -54,23 +55,31 @@ def client(self):
return self._byor_client
return super(CustomDockerSpawner, self).client
+ @property
+ def byor_is_used(self):
+ return self.user_options.get('byor_is_needed', False)
+
def _reset_byor(self):
self.container_ip = str(self.__class__.container_ip)
self._byor_client = None
- byor_timeout = Int(20, min=1, config=True, help='Timeout for connection to BYOR Docker daemon')
+ byor_timeout = Int(20, min=1, config=True,
+ help='Timeout for connection to BYOR Docker daemon')
+
@gen.coroutine
def _set_client(self):
"""Prepare a client for the user."""
if not self.byor_is_used:
self._reset_byor()
return
- byor_docker_url = self.user_options['byor_docker_url']
- # version='auto' causes a connection to the daemon
- self._byor_client = docker.Client(byor_docker_url,
- version='auto',
- timeout=self.byor_timeout)
- self.container_ip = byor_docker_url.split(':')[0]
+ byor_ip = self.user_options['byor_docker_ip'],
+ byor_port = self.user_options['byor_docker_port']
+ # version='auto' causes a connection to the daemon.
+ # That's why the method must be a coroutine.
+ self._byor_client = docker.Client('{}:{}'.format(byor_ip, byor_port),
+ version='auto',
+ timeout=self.byor_timeout)
+ self.container_ip = byor_ip
# We override the executor here to increase the number of threads
@property
@@ -138,105 +147,16 @@ def load_state(self, state):
self.user.spawn_pending = False
def _options_form_default(self):
- return """
-
- """
+ return SPAWNER_OPTIONS_FROM
def options_from_form(self, formdata):
options = {}
options['repo_url'] = formdata.get('repository_url', [''])[0].strip()
options['byor_is_needed'] = formdata.get('byor_is_needed', [''])[0].strip() == 'on'
- options['byor_docker_url'] = '{}:{}'.format(
- formdata.pop('byor_docker_ip', [''])[0].strip(),
- formdata.pop('byor_docker_port', [''])[0].strip()
- )
+ for field in ('byor_docker_ip', 'byor_docker_port'):
+ options[field] = formdata.pop(field, [''])[0].strip()
options.update(formdata)
- need_remove = formdata.get('need_remove', ['on'])[0].strip()
- options['need_remove'] = need_remove == 'on'
+ options['need_remove'] = formdata.get('need_remove', ['on'])[0].strip() == 'on'
if not options['repo_url']:
raise Exception('You have to provide the URL to a git repository.')
return options
@@ -259,10 +179,6 @@ def need_remove(self):
return self.user_options.get('need_remove', True)
@property
- def byor_is_used(self):
- return self.user_options.get('byor_is_needed', False)
-
- @property
def is_empty(self):
return self._is_empty