Permalink
Browse files

review fixes: rewords, copy-paste examples, async

  • Loading branch information...
1 parent 47f8184 commit f842a3dee3d201eda6e70596745435da95689178 @vchagaev vchagaev committed May 19, 2017
Showing with 57 additions and 29 deletions.
  1. +2 −2 etc/base_config.py
  2. +31 −20 everware/home_handler.py
  3. +2 −2 everware/spawner.py
  4. +3 −3 share/static/html/home.html
  5. +19 −2 share/static/html/spawn.html
View
@@ -14,8 +14,8 @@
c.Spawner.remove_containers = True
c.Spawner.tls_assert_hostname = False
c.Spawner.use_docker_client_env = True
-# give users an opportunity to restore any images via docker or not:
-# c.Spawner.user_images_check = False
+# give users an opportunity to restore any images via docker or not. Default: True
+# c.Spawner.share_user_images = False
# c.Authenticator.admin_users = {'anaderi', 'astiunov'}
View
@@ -31,6 +31,33 @@ def is_repository_changed(user):
else:
return False
+@gen.coroutine
+def commit_container(request, user, log):
+ spawner = user.spawner
+ image_tag = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
+ image_name = 'everware_image/' + spawner.escaped_name + '/' + spawner.escaped_repo_url + '_' + spawner.container_id
+ host_with_protocol = request.protocol + '://' + request.host
+ url_with_image = url_concat(host_with_protocol + '/hub/spawn',
+ dict(repourl='docker:' + image_name + ':' + image_tag))
+
+ log.info('Will commit %s' % url_with_image)
+
+ commit = yield spawner.docker(
+ 'commit',
+ container=spawner.container_id,
+ repository=image_name,
+ tag=image_tag,
+ message='Commit from control panel',
+ author=spawner.escaped_name
+ )
+
+ output_data = dict()
+ if commit:
+ output_data['url_with_image'] = url_with_image
+ else:
+ output_data['message'] = 'Sorry, can not save container'
+
+ return output_data
class HomeHandler(BaseHandler):
"""Render the user's home page."""
@@ -44,7 +71,7 @@ def get(self):
do_fork = self.get_argument('do_fork', False)
do_push = self.get_argument('do_push', False)
- do_commit = self.get_argument('do_commit', False)
+ do_commit_container = self.get_argument('do_commit_container', False)
notify_message = self.get_argument('message', '')
notify_url_to_image = self.get_argument('url_with_image', '')
if repourl:
@@ -62,25 +89,9 @@ def get(self):
commit_sha = user.spawner.commit_sha
repo_url = user.spawner.repo_url
- if user.running and do_commit:
- spawner = user.spawner
- image_tag = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
- image_name = 'everware_image/' + spawner.escaped_name + '/' + spawner.escaped_repo_url + '_' + spawner.container_id
- host_with_protocol = self.request.protocol + '://' + self.request.host
- url_with_image = url_concat(host_with_protocol + '/hub/spawn', dict(repourl='docker:' + image_name + ':' + image_tag))
-
- self.log.info('Will commit %s' % url_with_image)
-
- spawner.client.commit(
- container=spawner.container_id,
- repository=image_name,
- tag=image_tag,
- message='Commit from control panel',
- author=spawner.escaped_name
- )
-
- self.redirect(url_concat('/hub/home', dict(url_with_image=url_with_image)))
- return
+ if user.running and do_commit_container:
+ output_data = yield commit_container(self.request, user, self.log)
+ self.redirect(url_concat('/hub/home', output_data))
if user.running and getattr(user, 'login_service', '') == 'github':
if do_fork:
View
@@ -252,15 +252,15 @@ def wait_up(self):
yield self.notify_about_fail(message)
raise e
- user_images_check = Bool(default_value=True, config=True, help="If True, users will be able restore only own images")
+ share_user_images = Bool(default_value=True, config=True, help="If True, users will be able restore only own images")
@gen.coroutine
def build_image(self):
"""download the repo and build a docker image if needed"""
if self.form_repo_url.startswith('docker:'):
image_name = self.form_repo_url.replace('docker:', '')
- if image_name.startswith('everware_image') and not self.user.admin and self.user_images_check:
+ if image_name.startswith('everware_image') and not self.user.admin and self.share_user_images:
images_user = image_name.split('/')[1]
if self.escaped_name != images_user:
raise Exception('Access denied. Image %s is not yours.' % image_name)
@@ -21,7 +21,7 @@
{% else %}
<p>You don't have a repository with the same name. Do you want to <a id="push" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored small-button" href="/hub/home?do_fork=1">fork</a> it?</p>
{% endif %}
- <p>Also you can save current state. You will be able easily restore your work later. Just <a id="commit" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored small-button" href="/hub/home?do_commit=1">commit</a> it!</p>
+ <p>Also you can <a id="commit-container" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored small-button" href="/hub/home?do_commit_container=1">save container</a> to easily restore your work later.</p>
{% endif %}
</div>
</div>
@@ -76,7 +76,7 @@
<input class="mdl-textfield__input" type="text" id="notify-url" value="{{notify_url_to_image}}" readonly>
<label class="mdl-textfield__label" for="notify-url">Your link to restore state</label>
</div>
- <button class="mdl-button mdl-js-button mdl-button--icon notify-url--button notify-url__button" data-clipboard-target="#notify-url" title="Copy to clipboard">
+ <button class="mdl-button mdl-js-button mdl-button--icon notify-url--button" data-clipboard-target="#notify-url" title="Copy to clipboard">
<i class="material-icons">content_copy</i>
</button>
{% endif %}
@@ -87,7 +87,7 @@
{% block script %}
<script type="text/javascript">
require(["home", "clipboard"], function (home, Clipboard) {
- new Clipboard('.notify-url__button');
+ new Clipboard('.notify-url--button');
});
</script>
{% endblock %}
@@ -23,8 +23,18 @@
Paste the link to the git repository you want to try out. If you
need some inspiration try one of the following repositories:
<ul>
- <li><a href="https://github.com/everware/everware-dimuon-example">https://github.com/everware/everware-dimuon-example</a></li>
- <li><a href="https://github.com/betatim/everware-demo">https://github.com/betatim/everware-demo</a></li>
+ <li>
+ <a id="clipboard-example-1" href="https://github.com/everware/everware-dimuon-example">https://github.com/everware/everware-dimuon-example</a>
+ <button class="mdl-button mdl-js-button mdl-button--icon clipboard-example--button" data-text-source="clipboard-example-1" title="Copy to clipboard">
+ <i class="material-icons">content_copy</i>
+ </button>
+ </li>
+ <li>
+ <a id="clipboard-example-2" href="https://github.com/betatim/everware-demo">https://github.com/betatim/everware-demo</a>
+ <button class="mdl-button mdl-js-button mdl-button--icon clipboard-example--button" data-text-source="clipboard-example-2" title="Copy to clipboard">
+ <i class="material-icons">content_copy</i>
+ </button>
+ </li>
</ul>
Read the documentation
to <a href="https://github.com/everware/everware/wiki/Being-everware-compatible">learn
@@ -49,6 +59,13 @@
return false;
}
});
+
+ $('.clipboard-example--button').click(function (e) {
+ var input = $('#repository_input');
+ var linkId = $(e.currentTarget).attr('data-text-source');
+ var href = $('#' + linkId).attr('href');
+ input.val(href).parent().addClass('is-focused');
+ });
});
</script>
{% endblock %}

0 comments on commit f842a3d

Please sign in to comment.