Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Fukász Rómeó Ervin
/
cloud
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
caf8f033
authored
May 07, 2015
by
Kálmán Viktor
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into feature-django18
Conflicts: requirements/base.txt
parents
a43c9ead
0ac5aa0b
Hide whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
173 additions
and
89 deletions
+173
-89
circle/circle/settings/base.py
+1
-0
circle/circle/settings/local.py
+2
-2
circle/dashboard/compilers.py
+23
-0
circle/dashboard/static/dashboard/activity.js
+2
-0
circle/dashboard/static/dashboard/dashboard.js
+4
-3
circle/dashboard/static/dashboard/dashboard.less
+28
-1
circle/dashboard/static/dashboard/vm-details.js
+3
-2
circle/dashboard/static/template.less
+7
-0
circle/dashboard/templates/base.html
+10
-5
circle/dashboard/templates/dashboard/_display-name.html
+5
-0
circle/dashboard/templates/dashboard/_manage_access.html
+2
-2
circle/dashboard/templates/dashboard/base.html
+6
-7
circle/dashboard/templates/dashboard/group-detail.html
+1
-1
circle/dashboard/templates/dashboard/index-groups.html
+1
-1
circle/dashboard/templates/dashboard/index-nodes.html
+8
-4
circle/dashboard/templates/dashboard/index-templates.html
+2
-2
circle/dashboard/templates/dashboard/index-users.html
+1
-1
circle/dashboard/templates/dashboard/index-vm.html
+4
-2
circle/dashboard/templates/dashboard/profile.html
+0
-1
circle/dashboard/templates/dashboard/store/index-files.html
+1
-1
circle/dashboard/templates/dashboard/vm-detail.html
+2
-2
circle/dashboard/templates/dashboard/vm-detail/_activity-timeline.html
+3
-3
circle/dashboard/templates/dashboard/vm-detail/console.html
+32
-11
circle/dashboard/templates/dashboard/vm-detail/home.html
+7
-4
circle/dashboard/templates/dashboard/vm-detail/network.html
+8
-7
circle/dashboard/templates/dashboard/vm-detail/resources.html
+3
-3
circle/dashboard/views/graph.py
+1
-1
circle/templates/registration/base.html
+0
-7
circle/templates/registration/login.html
+5
-13
requirements/base.txt
+1
-3
No files found.
circle/circle/settings/base.py
View file @
caf8f033
...
@@ -156,6 +156,7 @@ STATIC_URL = get_env_variable('DJANGO_STATIC_URL', default='/static/')
...
@@ -156,6 +156,7 @@ STATIC_URL = get_env_variable('DJANGO_STATIC_URL', default='/static/')
STATICFILES_FINDERS
=
(
STATICFILES_FINDERS
=
(
'django.contrib.staticfiles.finders.FileSystemFinder'
,
'django.contrib.staticfiles.finders.FileSystemFinder'
,
'django.contrib.staticfiles.finders.AppDirectoriesFinder'
,
'django.contrib.staticfiles.finders.AppDirectoriesFinder'
,
'pipeline.finders.PipelineFinder'
,
)
)
########## END STATIC FILE CONFIGURATION
########## END STATIC FILE CONFIGURATION
STATICFILES_DIRS
=
[
normpath
(
join
(
SITE_ROOT
,
'bower_components'
))]
STATICFILES_DIRS
=
[
normpath
(
join
(
SITE_ROOT
,
'bower_components'
))]
...
...
circle/circle/settings/local.py
View file @
caf8f033
...
@@ -110,8 +110,8 @@ if DEBUG:
...
@@ -110,8 +110,8 @@ if DEBUG:
from
django.dispatch
import
Signal
from
django.dispatch
import
Signal
Signal
.
send_robust
=
Signal
.
send
Signal
.
send_robust
=
Signal
.
send
PIPELINE_
DISABLED_
COMPILERS
=
(
PIPELINE_COMPILERS
=
(
'
pipeline.compilers.less.
LessCompiler'
,
'
dashboard.compilers.Dummy
LessCompiler'
,
)
)
ADMIN_ENABLED
=
True
ADMIN_ENABLED
=
True
circle/dashboard/compilers.py
0 → 100644
View file @
caf8f033
# Copyright 2014 Budapest University of Technology and Economics (BME IK)
#
# This file is part of CIRCLE Cloud.
#
# CIRCLE is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
#
# CIRCLE is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
from
pipeline.compilers.less
import
LessCompiler
class
DummyLessCompiler
(
LessCompiler
):
def
compile_file
(
self
,
*
args
,
**
kwargs
):
pass
circle/dashboard/static/dashboard/activity.js
View file @
caf8f033
...
@@ -145,11 +145,13 @@ $(function() {
...
@@ -145,11 +145,13 @@ $(function() {
$
(
"#dashboard-vm-details-connect-button"
).
removeClass
(
'disabled'
);
$
(
"#dashboard-vm-details-connect-button"
).
removeClass
(
'disabled'
);
}
}
$
(
"[data-target=#_console]"
).
attr
(
"data-toggle"
,
"pill"
).
attr
(
"href"
,
"#console"
).
parent
(
"li"
).
removeClass
(
"disabled"
);
$
(
"[data-target=#_console]"
).
attr
(
"data-toggle"
,
"pill"
).
attr
(
"href"
,
"#console"
).
parent
(
"li"
).
removeClass
(
"disabled"
);
$
(
"#getScreenshotButton"
).
prop
(
"disabled"
,
false
);
}
else
{
}
else
{
if
(
data
.
connect_uri
)
{
if
(
data
.
connect_uri
)
{
$
(
"#dashboard-vm-details-connect-button"
).
addClass
(
'disabled'
);
$
(
"#dashboard-vm-details-connect-button"
).
addClass
(
'disabled'
);
}
}
$
(
"[data-target=#_console]"
).
attr
(
"data-toggle"
,
"_pill"
).
attr
(
"href"
,
"#"
).
parent
(
"li"
).
addClass
(
"disabled"
);
$
(
"[data-target=#_console]"
).
attr
(
"data-toggle"
,
"_pill"
).
attr
(
"href"
,
"#"
).
parent
(
"li"
).
addClass
(
"disabled"
);
$
(
"#getScreenshotButton"
).
prop
(
"disabled"
,
true
);
}
}
if
(
data
.
status
==
"STOPPED"
||
data
.
status
==
"PENDING"
)
{
if
(
data
.
status
==
"STOPPED"
||
data
.
status
==
"PENDING"
)
{
...
...
circle/dashboard/static/dashboard/dashboard.js
View file @
caf8f033
...
@@ -10,10 +10,11 @@ $(function () {
...
@@ -10,10 +10,11 @@ $(function () {
$
(
".not-tab-pane"
).
removeClass
(
"not-tab-pane"
).
addClass
(
"tab-pane"
);
$
(
".not-tab-pane"
).
removeClass
(
"not-tab-pane"
).
addClass
(
"tab-pane"
);
$
(
'.vm-create'
).
click
(
function
(
e
)
{
$
(
'.vm-create'
).
click
(
function
(
e
)
{
var
template
=
$
(
this
).
data
(
"template"
);
var
url
=
$
(
this
).
data
(
"href"
);
if
(
!
url
)
url
=
$
(
this
).
prop
(
"href"
);
$
.
ajax
({
$
.
ajax
({
type
:
'GET'
,
type
:
'GET'
,
url
:
$
(
this
).
attr
(
'href'
)
,
url
:
url
,
success
:
function
(
data
)
{
success
:
function
(
data
)
{
$
(
'body'
).
append
(
data
);
$
(
'body'
).
append
(
data
);
vmCreateLoaded
();
vmCreateLoaded
();
...
@@ -140,7 +141,7 @@ $(function () {
...
@@ -140,7 +141,7 @@ $(function () {
// success
// success
},
},
error
:
function
(
xhr
,
textStatus
,
error
)
{
error
:
function
(
xhr
,
textStatus
,
error
)
{
console
.
log
(
"oh babám"
);
addMessage
(
gettext
(
"An error occurred. ("
)
+
xhr
.
status
+
")"
,
'danger'
);
}
}
});
});
$
(
star
).
tooltip
(
'destroy'
).
tooltip
({
'placement'
:
'right'
});
$
(
star
).
tooltip
(
'destroy'
).
tooltip
({
'placement'
:
'right'
});
...
...
circle/dashboard/static/dashboard/dashboard.less
View file @
caf8f033
...
@@ -10,6 +10,21 @@ html {
...
@@ -10,6 +10,21 @@ html {
min-height: 100%;
min-height: 100%;
}
}
.navbar-nav img {
width: 46px;
height: 46px;
margin-top: -4px;
}
.profile-avatar {
width: 24px;
height: 24px;
}
.navbar-fixed-top {
border: 0px;
}
/* Set widths on the navbar form inputs since otherwise they're 100% wide */
/* Set widths on the navbar form inputs since otherwise they're 100% wide */
.navbar-form input[type="text"],
.navbar-form input[type="text"],
.navbar-form input[type="password"] {
.navbar-form input[type="password"] {
...
@@ -32,7 +47,7 @@ html {
...
@@ -32,7 +47,7 @@ html {
#dashboard-menu {
#dashboard-menu {
margin-right:
15
px;
margin-right:
0
px;
}
}
/* we need this for mobile view */
/* we need this for mobile view */
...
@@ -56,6 +71,9 @@ html {
...
@@ -56,6 +71,9 @@ html {
padding-bottom: 12.5px;
padding-bottom: 12.5px;
}
}
#dashboard-menu > li:last-child > a {
padding: 4px 0 0 0;
}
}
}
.no-margin {
.no-margin {
...
@@ -110,6 +128,11 @@ html {
...
@@ -110,6 +128,11 @@ html {
background-color: black!important;
background-color: black!important;
}
}
.timeline img{
border-radius: 50%;
margin-bottom: 2px;
}
.timeline a {
.timeline a {
color: black;
color: black;
}
}
...
@@ -1321,3 +1344,7 @@ textarea[name="new_members"] {
...
@@ -1321,3 +1344,7 @@ textarea[name="new_members"] {
padding-top: 5px;
padding-top: 5px;
padding-bottom: 5px;
padding-bottom: 5px;
}
}
.acl-table td:first-child {
text-align: center;
}
circle/dashboard/static/dashboard/vm-details.js
View file @
caf8f033
...
@@ -185,12 +185,13 @@ $(function() {
...
@@ -185,12 +185,13 @@ $(function() {
$
(
"i"
,
this
).
addClass
(
"fa-spinner fa-spin"
);
$
(
"i"
,
this
).
addClass
(
"fa-spinner fa-spin"
);
$
(
this
).
prop
(
"disabled"
,
true
);
$
(
this
).
prop
(
"disabled"
,
true
);
ct
.
slideDown
();
ct
.
slideDown
();
var
img
=
$
(
"img"
,
ct
).
prop
(
"src"
,
'/dashboard/vm/'
+
vm
+
'/screenshot/
'
);
var
img
=
$
(
"img"
,
ct
).
prop
(
"src"
,
'/dashboard/vm/'
+
vm
+
'/screenshot/
?rnd='
+
Math
.
random
()
);
});
});
// if the image is loaded remove the spinning stuff
// if the image is loaded remove the spinning stuff
// note: this should not work if the image is cached, but it's not
// note: this should not work if the image is cached, but it's not
// see: http://stackoverflow.com/a/3877079/1112653
// see: http://stackoverflow.com/a/3877079/1112653
// note #2: it actually gets cached, so a random number is appended
$
(
"#vm-console-screenshot img"
).
load
(
function
(
e
)
{
$
(
"#vm-console-screenshot img"
).
load
(
function
(
e
)
{
$
(
"#getScreenshotButton"
).
prop
(
"disabled"
,
false
)
$
(
"#getScreenshotButton"
).
prop
(
"disabled"
,
false
)
.
find
(
"i"
).
removeClass
(
"fa-spinner fa-spin"
);
.
find
(
"i"
).
removeClass
(
"fa-spinner fa-spin"
);
...
@@ -200,7 +201,7 @@ $(function() {
...
@@ -200,7 +201,7 @@ $(function() {
// screenshot close
// screenshot close
$
(
"#vm-console-screenshot button"
).
click
(
function
()
{
$
(
"#vm-console-screenshot button"
).
click
(
function
()
{
$
(
this
).
paren
t
(
"div"
).
slideUp
();
$
(
this
).
closes
t
(
"div"
).
slideUp
();
});
});
// select connection string
// select connection string
...
...
circle/dashboard/static/template.less
View file @
caf8f033
...
@@ -55,6 +55,9 @@ html {
...
@@ -55,6 +55,9 @@ html {
.bigbig {
.bigbig {
font-size: 3em;
font-size: 3em;
}
}
.big-tag {
font-size: 1.2em;
}
/* small buttons for tags, copied from Bootstraps input-sm, bnt-sm */
/* small buttons for tags, copied from Bootstraps input-sm, bnt-sm */
.btn-tags, .btn-traits {
.btn-tags, .btn-traits {
padding: 3px 6px;
padding: 3px 6px;
...
@@ -148,3 +151,7 @@ footer a, footer a:hover, footer a:visited {
...
@@ -148,3 +151,7 @@ footer a, footer a:hover, footer a:visited {
.btn-toolbar {
.btn-toolbar {
margin-bottom: 5px;
margin-bottom: 5px;
}
}
.vm-details-home-edit-description {
font-size: 85%; /* ~ small tag */
}
circle/dashboard/templates/base.html
View file @
caf8f033
{% load i18n %}
{% load i18n %}
{% load staticfiles %}
{% load staticfiles %}
{% load cache %}
{% load cache %}
{% load
compressed
%}
{% load
pipeline
%}
<!DOCTYPE html>
<!DOCTYPE html>
<html
lang=
"{{lang}}"
>
<html
lang=
"{{lang}}"
>
<head>
<head>
...
@@ -14,7 +14,7 @@
...
@@ -14,7 +14,7 @@
<title>
{% block title %}{% block title-page %}{% endblock %} | {% block title-site %}CIRCLE{% endblock %}{% endblock %}
</title>
<title>
{% block title %}{% block title-page %}{% endblock %} | {% block title-site %}CIRCLE{% endblock %}{% endblock %}
</title>
{%
compressed_css
'all' %}
{%
stylesheet
'all' %}
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<!--[if lt IE 9]>
...
@@ -28,7 +28,12 @@
...
@@ -28,7 +28,12 @@
<body>
<body>
<div
class=
"navbar navbar-inverse navbar-fixed-top"
>
<div
class=
"navbar navbar-inverse navbar-fixed-top"
>
<div
class=
"navbar-header"
>
<div
class=
"navbar-header"
>
{% block navbar-brand %}{% endblock %}
{% block navbar-brand %}
<a
class=
"navbar-brand"
href=
"{% url "
dashboard
.
index
"
%}"
style=
"padding: 10px 15px;"
>
{% include "branding.html" %}
</a>
{% endblock %}
<button
type=
"button"
class=
"navbar-toggle"
data-toggle=
"collapse"
data-target=
".navbar-collapse"
>
<button
type=
"button"
class=
"navbar-toggle"
data-toggle=
"collapse"
data-target=
".navbar-collapse"
>
<span
class=
"icon-bar"
></span>
<span
class=
"icon-bar"
></span>
<span
class=
"icon-bar"
></span>
<span
class=
"icon-bar"
></span>
...
@@ -67,7 +72,7 @@
...
@@ -67,7 +72,7 @@
</div>
</div>
{% endfor %}
{% endfor %}
{% endif %}
{% endif %}
</div>
</div>
{% endblock messages %}
{% endblock messages %}
{% block content %}
{% block content %}
<h1
class=
"alert alert-error"
>
Please override "content" block.
</h1>
<h1
class=
"alert alert-error"
>
Please override "content" block.
</h1>
...
@@ -84,7 +89,7 @@
...
@@ -84,7 +89,7 @@
<script
src=
"{% static "
jquery
/
dist
/
jquery
.
min
.
js
"
%}"
></script>
<script
src=
"{% static "
jquery
/
dist
/
jquery
.
min
.
js
"
%}"
></script>
<script
src=
"{{ STATIC_URL }}jsi18n/{{ LANGUAGE_CODE }}/djangojs.js"
></script>
<script
src=
"{{ STATIC_URL }}jsi18n/{{ LANGUAGE_CODE }}/djangojs.js"
></script>
{%
compressed_js
'all' %}
{%
javascript
'all' %}
{% block extra_script %}
{% block extra_script %}
{% endblock %}
{% endblock %}
...
...
circle/dashboard/templates/dashboard/_display-name.html
View file @
caf8f033
{% load i18n %}
{% load i18n %}
{% if user and user.pk %}
{% if user and user.pk %}
{% if show_pic %}
<img
class=
"profile-avatar"
src=
"{{ user.profile.get_avatar_url }}"
/>
{% endif%}
{% if user.get_full_name %}{{ user.get_full_name }}{% else %}{{ user.username }}{% endif %}{% if new_line %}
<br
/>
{% endif %}
{% if user.get_full_name %}{{ user.get_full_name }}{% else %}{{ user.username }}{% endif %}{% if new_line %}
<br
/>
{% endif %}
{% if show_org %}
{% if show_org %}
...
@@ -10,4 +14,5 @@
...
@@ -10,4 +14,5 @@
({% trans "username" %}: {{ user.username }})
({% trans "username" %}: {{ user.username }})
{% endif %}
{% endif %}
{% endif %}
{% endif %}
{% endif %}
{% endif %}
circle/dashboard/templates/dashboard/_manage_access.html
View file @
caf8f033
{% load i18n %}
{% load i18n %}
<form
action=
"{{ acl.url }}"
method=
"post"
>
{% csrf_token %}
<form
action=
"{{ acl.url }}"
method=
"post"
>
{% csrf_token %}
<table
class=
"table table-striped table-with-form-fields"
id=
"{{table_id}}"
>
<table
class=
"table table-striped table-with-form-fields
acl-table
"
id=
"{{table_id}}"
>
<thead>
<thead>
<tr>
<tr>
<th></th>
<th></th>
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
{% for i in acl.users %}
{% for i in acl.users %}
<tr>
<tr>
<td>
<td>
<i
class=
"fa fa-user"
></i
>
<img
class=
"profile-avatar"
src=
"{{ i.user.profile.get_avatar_url }}"
/
>
</td>
</td>
<td>
<td>
<a
href=
"{% url "
dashboard
.
views
.
profile
"
username=
i.user.username
%}"
<a
href=
"{% url "
dashboard
.
views
.
profile
"
username=
i.user.username
%}"
...
...
circle/dashboard/templates/dashboard/base.html
View file @
caf8f033
...
@@ -10,12 +10,6 @@
...
@@ -10,12 +10,6 @@
{% endblock %}
{% endblock %}
{% block navbar-brand %}
<a
class=
"navbar-brand"
href=
"{% url "
dashboard
.
index
"
%}"
style=
"padding: 10px 15px;"
>
{% include "branding.html" %}
</a>
{% endblock %}
{% block navbar %}
{% block navbar %}
{% if user.is_authenticated and user.pk and not request.token_user %}
{% if user.is_authenticated and user.pk and not request.token_user %}
<ul
class=
"nav navbar-nav navbar-right"
id=
"dashboard-menu"
>
<ul
class=
"nav navbar-nav navbar-right"
id=
"dashboard-menu"
>
...
@@ -90,9 +84,14 @@
...
@@ -90,9 +84,14 @@
{% endif %}
{% endif %}
</a>
</a>
<ul
class=
"dropdown-menu"
id=
"notification-messages"
>
<ul
class=
"dropdown-menu"
id=
"notification-messages"
>
<li>
{% trans "Loading..." %}
</li>
<li>
{% trans "Loading..." %}
</li>
</ul>
</ul>
</li>
</li>
<li
class=
"hidden-xs"
>
<a
href=
"{% url "
dashboard
.
views
.
profile-preferences
"
%}"
>
<img
class=
"profile-avatar"
src=
"{{ user.profile.get_avatar_url }}"
/>
</a>
</li>
</ul>
</ul>
{% else %}
{% else %}
...
...
circle/dashboard/templates/dashboard/group-detail.html
View file @
caf8f033
...
@@ -90,7 +90,7 @@
...
@@ -90,7 +90,7 @@
{% for i in users %}
{% for i in users %}
<tr>
<tr>
<td>
<td>
<i
class=
"fa fa-user"
></i
>
<i
mg
class=
"profile-avatar"
src=
"{{ i.profile.get_avatar_url}}"
/
>
</td>
</td>
<td>
<td>
<a
href=
"{% url "
dashboard
.
views
.
profile
"
username=
i.username
%}"
title=
"{{ i.username }}"
<a
href=
"{% url "
dashboard
.
views
.
profile
"
username=
i.username
%}"
title=
"{{ i.username }}"
...
...
circle/dashboard/templates/dashboard/index-groups.html
View file @
caf8f033
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
<div
class=
"col-xs-6"
>
<div
class=
"col-xs-6"
>
<form
action=
"{% url "
dashboard
.
views
.
group-list
"
%}"
method=
"GET"
id=
"dashboard-group-search-form"
>
<form
action=
"{% url "
dashboard
.
views
.
group-list
"
%}"
method=
"GET"
id=
"dashboard-group-search-form"
>
<div
class=
"input-group input-group-sm"
>
<div
class=
"input-group input-group-sm"
>
<input
id=
"dashboard-group-search-input"
name=
"s"
type=
"text"
class=
"form-control"
placeholder=
"{% trans "
Search
..."
%}"
/>
<input
name=
"s"
type=
"text"
class=
"form-control"
placeholder=
"{% trans "
Search
..."
%}"
/>
<div
class=
"input-group-btn"
>
<div
class=
"input-group-btn"
>
<button
type=
"submit"
class=
"btn btn-primary"
><i
class=
"fa fa-search"
></i></button>
<button
type=
"submit"
class=
"btn btn-primary"
><i
class=
"fa fa-search"
></i></button>
</div>
</div>
...
...
circle/dashboard/templates/dashboard/index-nodes.html
View file @
caf8f033
...
@@ -72,11 +72,15 @@
...
@@ -72,11 +72,15 @@
value=
"{% widthratio node_num.running sum_node_num 100 %}"
>
value=
"{% widthratio node_num.running sum_node_num 100 %}"
>
</p>
</p>
<p>
<p>
{% blocktrans with running=node_num.running missing=node_num.missing disabled=node_num.disabled offline=node_num.offline %}
<span
class=
"big"
>
<span
class=
"big"
>
<big>
{{ node_num.running }}
</big>
running
<span
class=
"big-tag"
>
{{ running }}
</span>
running
</span>
</span>
+
+
<big>
{{ node_num.missing }}
</big>
<span
class=
"big-tag"
>
{{ missing }}
</span>
missing +
missing +
<br><big>
{{ node_num.disabled }}
</big>
disabled +
<big>
{{ node_num.offline }}
</big>
offline
<br>
<span
class=
"big-tag"
>
{{ disabled }}
</span>
disabled +
<span
class=
"big-tag"
>
{{ offline }}
</span>
offline
{% endblocktrans %}
</p>
</p>
<ul
class=
"list-inline"
id=
"dashboard-node-taglist"
>
<ul
class=
"list-inline"
id=
"dashboard-node-taglist"
>
{% for i in nodes %}
{% for i in nodes %}
...
...
circle/dashboard/templates/dashboard/index-templates.html
View file @
caf8f033
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
<i
class=
"fa fa-{{ t.os_type }}"
></i>
{{ t.name }}
<i
class=
"fa fa-{{ t.os_type }}"
></i>
{{ t.name }}
</span>
</span>
<small
class=
"text-muted index-template-list-system"
>
{{ t.system }}
</small>
<small
class=
"text-muted index-template-list-system"
>
{{ t.system }}
</small>
<div
href=
"{% url "
dashboard
.
views
.
vm-create
"
%}?
template=
{{
t
.
pk
}}"
class=
"pull-right vm-create"
>
<div
data-
href=
"{% url "
dashboard
.
views
.
vm-create
"
%}?
template=
{{
t
.
pk
}}"
class=
"pull-right vm-create"
>
<i
data-container=
"body"
title=
"{% trans "
Start
VM
instance
"
%}"
<i
data-container=
"body"
title=
"{% trans "
Start
VM
instance
"
%}"
class=
"fa fa-play"
></i>
class=
"fa fa-play"
></i>
</div>
</div>
...
@@ -37,7 +37,7 @@
...
@@ -37,7 +37,7 @@
<div
class=
"col-xs-5 col-sm-6"
>
<div
class=
"col-xs-5 col-sm-6"
>
<form
action=
"{% url "
dashboard
.
views
.
template-list
"
%}"
method=
"GET"
id=
"dashboard-template-search-form"
>
<form
action=
"{% url "
dashboard
.
views
.
template-list
"
%}"
method=
"GET"
id=
"dashboard-template-search-form"
>
<div
class=
"input-group input-group-sm"
>
<div
class=
"input-group input-group-sm"
>
<input
id=
"dashboard-group-search-input"
name=
"s"
type=
"text"
class=
"form-control"
placeholder=
"{% trans "
Search
..."
%}"
/>
<input
name=
"s"
type=
"text"
class=
"form-control"
placeholder=
"{% trans "
Search
..."
%}"
/>
<div
class=
"input-group-btn"
>
<div
class=
"input-group-btn"
>
<button
type=
"submit"
class=
"btn btn-primary"
><i
class=
"fa fa-search"
></i></button>
<button
type=
"submit"
class=
"btn btn-primary"
><i
class=
"fa fa-search"
></i></button>
</div>
</div>
...
...
circle/dashboard/templates/dashboard/index-users.html
View file @
caf8f033
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
<div
class=
"col-xs-5 col-sm-6"
>
<div
class=
"col-xs-5 col-sm-6"
>
<form
action=
"{% url "
dashboard
.
views
.
user-list
"
%}"
method=
"GET"
id=
"dashboard-user-search-form"
>
<form
action=
"{% url "
dashboard
.
views
.
user-list
"
%}"
method=
"GET"
id=
"dashboard-user-search-form"
>
<div
class=
"input-group input-group-sm"
>
<div
class=
"input-group input-group-sm"
>
<input
id=
"dashboard-group-search-input"
name=
"s"
type=
"text"
class=
"form-control"
placeholder=
"{% trans "
Search
..."
%}"
/>
<input
name=
"s"
type=
"text"
class=
"form-control"
placeholder=
"{% trans "
Search
..."
%}"
/>
<div
class=
"input-group-btn"
>
<div
class=
"input-group-btn"
>
<button
type=
"submit"
class=
"btn btn-primary"
><i
class=
"fa fa-search"
></i></button>
<button
type=
"submit"
class=
"btn btn-primary"
><i
class=
"fa fa-search"
></i></button>
</div>
</div>
...
...
circle/dashboard/templates/dashboard/index-vm.html
View file @
caf8f033
...
@@ -90,7 +90,7 @@
...
@@ -90,7 +90,7 @@
<p
class=
"pull-right"
>
<p
class=
"pull-right"
>
<input
class=
"knob"
data-fgColor=
"chartreuse"
data-thickness=
".4"
data-max=
"{{ request.user.profile.instance_limit }}"
data-width=
"100"
data-height=
"100"
data-readOnly=
"true"
value=
"{{ instances|length|add:more_instances }}"
>
<input
class=
"knob"
data-fgColor=
"chartreuse"
data-thickness=
".4"
data-max=
"{{ request.user.profile.instance_limit }}"
data-width=
"100"
data-height=
"100"
data-readOnly=
"true"
value=
"{{ instances|length|add:more_instances }}"
>
</p>
</p>
<span
class=
"bigbig"
>
{% blocktrans with count=running_vm_num %}
<
big>
{{ count }}
</big
>
running{% endblocktrans %}
</span>
<span
class=
"bigbig"
>
{% blocktrans with count=running_vm_num %}
<
span
class=
"big-tag"
>
{{ count }}
</span
>
running{% endblocktrans %}
</span>
<ul
class=
"list-inline"
style=
"max-height: 95px; overflow: hidden;"
>
<ul
class=
"list-inline"
style=
"max-height: 95px; overflow: hidden;"
>
{% for vm in running_vms %}
{% for vm in running_vms %}
<li
style=
"display: inline-block; padding: 2px;"
>
<li
style=
"display: inline-block; padding: 2px;"
>
...
@@ -111,7 +111,9 @@
...
@@ -111,7 +111,9 @@
<strong>
{{ counter }}
</strong>
machines total
<strong>
{{ counter }}
</strong>
machines total
{% endblocktrans %}
{% endblocktrans %}
</a>
</a>
<p
class=
"big text-warning"
>
{% blocktrans with count=stopped_vm_num %}
<big>
{{ count }}
</big>
stopped{% endblocktrans %}
</p>
<p
class=
"big text-warning"
>
{% blocktrans with count=stopped_vm_num %}{{ count }} stopped{% endblocktrans %}
</p>
</div>
</div>
</div>
</div>
</div>
</div>
circle/dashboard/templates/dashboard/profile.html
View file @
caf8f033
...
@@ -24,7 +24,6 @@
...
@@ -24,7 +24,6 @@
{% trans "Back" %}
</a>
{% trans "Back" %}
</a>
</div>
</div>
<h3
class=
"no-margin"
>
<h3
class=
"no-margin"
>
<i
class=
"fa fa-user"
></i>
{% include "dashboard/_display-name.html" with user=profile show_org=True %}
{% include "dashboard/_display-name.html" with user=profile show_org=True %}
</h3>
</h3>
</div>
</div>
...
...
circle/dashboard/templates/dashboard/store/index-files.html
View file @
caf8f033
...
@@ -58,7 +58,7 @@
...
@@ -58,7 +58,7 @@
<div
class=
"text-right"
>
<div
class=
"text-right"
>
<form
class=
"pull-left"
method=
"POST"
action=
"{% url "
dashboard
.
views
.
store-refresh-toplist
"
%}"
>
<form
class=
"pull-left"
method=
"POST"
action=
"{% url "
dashboard
.
views
.
store-refresh-toplist
"
%}"
>
{% csrf_token %}
{% csrf_token %}
<button
class=
"btn btn-success btn-xs"
type=
"submit"
title=
"{% trans "
Refresh
"
%}"
/
>
<button
class=
"btn btn-success btn-xs"
type=
"submit"
title=
"{% trans "
Refresh
"
%}"
>
<i
class=
"fa fa-refresh"
></i>
<i
class=
"fa fa-refresh"
></i>
</button>
</button>
</form>
</form>
...
...
circle/dashboard/templates/dashboard/vm-detail.html
View file @
caf8f033
{% extends "dashboard/base.html" %}
{% extends "dashboard/base.html" %}
{% load staticfiles %}
{% load staticfiles %}
{% load i18n %}
{% load i18n %}
{% load
compressed
%}
{% load
pipeline
%}
{% block title-page %}{{ instance.name }} | vm{% endblock %}
{% block title-page %}{{ instance.name }} | vm{% endblock %}
...
@@ -242,5 +242,5 @@
...
@@ -242,5 +242,5 @@
{% endblock %}
{% endblock %}
{% block extra_js %}
{% block extra_js %}
{%
compressed_js
'vm-detail' %}
{%
javascript
'vm-detail' %}
{% endblock %}
{% endblock %}
circle/dashboard/templates/dashboard/vm-detail/_activity-timeline.html
View file @
caf8f033
...
@@ -19,9 +19,9 @@
...
@@ -19,9 +19,9 @@
- {{ a.percentage }}%
- {{ a.percentage }}%
{% endif %}
{% endif %}
</strong>
</strong>
{% endspaceless %}{% if a.times
<
2
%}
<
span
title=
"{{ a.started }}"
>
{{ a.started|arrowfilter:LANGUAGE_CODE }}
</span>
{% endif %}{% if a.user %},
{% endspaceless %}{% if a.times
<
2
%}
&
nbsp
;
<
span
title=
"{{ a.started }}"
>
{{ a.started|arrowfilter:LANGUAGE_CODE }}
</span>
{% endif %}{% if a.user %},
<a
class=
"no-style-link"
href=
"{% url "
dashboard
.
views
.
profile
"
username=
a.user.username
%}"
>
<a
class=
"no-style-link"
href=
"{% url "
dashboard
.
views
.
profile
"
username=
a.user.username
%}"
>
{% include "dashboard/_display-name.html" with user=a.user show_org=True %}
{% include "dashboard/_display-name.html" with user=a.user show_org=True
show_pic=True
%}
</a>
</a>
{% endif %}
{% endif %}
{% if a.is_abortable_for_user %}
{% if a.is_abortable_for_user %}
...
@@ -45,7 +45,7 @@
...
@@ -45,7 +45,7 @@
{{ s.finished|arrowfilter:LANGUAGE_CODE }}
{{ s.finished|arrowfilter:LANGUAGE_CODE }}
</span>
</span>
{% else %}
{% else %}
<i
class=
"fa fa-refresh fa-spin"
class=
"sub-activity-loading-icon"
></i>
<i
class=
"fa fa-refresh fa-spin"
></i>
{% endif %}
{% endif %}
{% if s.has_failed %}
{% if s.has_failed %}
<div
class=
"label label-danger"
>
{% trans "failed" %}
</div>
<div
class=
"label label-danger"
>
{% trans "failed" %}
</div>
...
...
circle/dashboard/templates/dashboard/vm-detail/console.html
View file @
caf8f033
{% load i18n %}
{% load i18n %}
{% load staticfiles %}
{% load staticfiles %}
<div
class=
"btn-toolbar"
>
{% if perms.vm.access_console %}
{% if not perms.vm.vm_access_console %}
<button
id=
"sendCtrlAltDelButton"
class=
"btn btn-danger btn-sm"
>
{% trans "Send Ctrl+Alt+Del" %}
</button>
<div
class=
"alert alert-warning"
>
<button
id=
"sendPasswordButton"
class=
"btn btn-default btn-sm"
>
{% trans "Type password" %}
</button>
{% trans "You are not authorized to access the VNC console." %}
</div>
{% endif %}
{% endif %}
<button
id=
"getScreenshotButton"
class=
"btn btn-info btn-sm pull-right"
data-vm-pk=
"{{ instance.pk }}"
><i
class=
"fa fa-picture"
></i>
{% trans "Screenshot" %}
</button>
<div
class=
"row"
>
<div
class=
"col-xs-7"
>
<div
class=
"btn-toolbar"
>
{% if perms.vm.access_console %}
<button
id=
"sendCtrlAltDelButton"
class=
"btn btn-danger btn-sm"
>
{% trans "Send Ctrl+Alt+Del" %}
</button>
<button
id=
"sendPasswordButton"
class=
"btn btn-default btn-sm"
>
{% trans "Type password" %}
</button>
{% endif %}
</div>
</div>
<div
class=
"col-xs-5 text-right"
>
<button
id=
"getScreenshotButton"
class=
"btn btn-info btn-sm"
data-vm-pk=
"{{ instance.pk }}"
>
<i
class=
"fa fa-photo"
></i>
{% trans "Screenshot" %}
</button>
</div>
</div>
</div>
{% if perms.vm.access_console %}
{% if perms.vm.access_console %}
<div
class=
"alert alert-info"
id=
"noVNC_status"
>
<div
class=
"alert alert-info"
id=
"noVNC_status"
></div>
</div>
{% endif %}
{% endif %}
<div
id=
"vm-console-screenshot"
>
<div
id=
"vm-console-screenshot"
>
<button
class=
"btn btn-danger btn-sm pull-right"
>
{% trans "Close" %}
</button>
<h3>
<h3>
{% trans "Screenshot" %}
</h3>
<button
class=
"btn btn-danger btn-sm pull-right"
>
{% trans "Close" %}
</button>
<img
/>
{% trans "Screenshot" %}
</h3>
<img
alt=
"{% trans "
Screenshot
"
%}"
/>
<hr
/>
<hr
/>
</div>
</div>
{% if perms.vm.access_console %}
{% if perms.vm.access_console %}
<canvas
id=
"noVNC_canvas"
width=
"640
px"
height=
"20px
"
>
Canvas not supported.
<canvas
id=
"noVNC_canvas"
width=
"640
"
height=
"20
"
>
Canvas not supported.
</canvas>
</canvas>
<script>
<script>
...
...
circle/dashboard/templates/dashboard/vm-detail/home.html
View file @
caf8f033
...
@@ -39,7 +39,7 @@
...
@@ -39,7 +39,7 @@
<dd>
<dd>
{% csrf_token %}
{% csrf_token %}
<div
class=
"vm-details-home-edit-description-click"
>
<div
class=
"vm-details-home-edit-description-click"
>
<
small
class=
"vm-details-home-edit-description"
>
{{ instance.description|linebreaks }}
</small
>
<
div
class=
"vm-details-home-edit-description"
>
{{ instance.description|linebreaks }}
</div
>
</div>
</div>
<div
id=
"vm-details-home-description"
class=
"js-hidden"
>
<div
id=
"vm-details-home-description"
class=
"js-hidden"
>
<form
method=
"POST"
>
<form
method=
"POST"
>
...
@@ -174,9 +174,12 @@
...
@@ -174,9 +174,12 @@
{% include "dashboard/_graph-time-buttons.html" %}
{% include "dashboard/_graph-time-buttons.html" %}
</div>
</div>
<div
class=
"graph-images text-center"
>
<div
class=
"graph-images text-center"
>
<img
src=
"{% url "
dashboard
.
views
.
vm-graph
"
instance
.
pk
"
cpu
"
graph_time
%}"
/>
<img
src=
"{% url "
dashboard
.
views
.
vm-graph
"
instance
.
pk
"
cpu
"
graph_time
%}"
<img
src=
"{% url "
dashboard
.
views
.
vm-graph
"
instance
.
pk
"
memory
"
graph_time
%}"
/>
alt=
"{% trans "
CPU
usage
"
%}"
/>
<img
src=
"{% url "
dashboard
.
views
.
vm-graph
"
instance
.
pk
"
network
"
graph_time
%}"
/>
<img
src=
"{% url "
dashboard
.
views
.
vm-graph
"
instance
.
pk
"
memory
"
graph_time
%}"
alt=
"{% trans "
Memory
usage
"
%}"
/>
<img
src=
"{% url "
dashboard
.
views
.
vm-graph
"
instance
.
pk
"
network
"
graph_time
%}"
alt=
"{% trans "
Network
usage
"
%}"
/>
</div>
</div>
{% endif %}
{% endif %}
</div>
</div>
...
...
circle/dashboard/templates/dashboard/vm-detail/network.html
View file @
caf8f033
{% load i18n %}
{% load i18n %}
{% load network_tags %}
{% load network_tags %}
<div
id=
"vm-details-add-interface"
>
{% with op=op.add_interface %}{% if op %}
<a
href=
"{{op.get_url}}"
class=
"btn btn-{{op.effect}} operation pull-right"
{%
if
op
.
disabled
%}
disabled
{%
endif
%}
>
<i
class=
"fa fa-{{op.icon}}"
></i>
{% trans "add interface" %}
</a>
{% endif %}{% endwith %}
</div>
<h2>
<h2>
<div
id=
"vm-details-add-interface"
>
{% with op=op.add_interface %}{% if op %}
<a
href=
"{{op.get_url}}"
class=
"btn btn-{{op.effect}} operation pull-right"
{%
if
op
.
disabled
%}
disabled
{%
endif
%}
>
<i
class=
"fa fa-{{op.icon}}"
></i>
{% trans "add interface" %}
</a>
{% endif %}{% endwith %}
</div>
{% trans "Interfaces" %}
{% trans "Interfaces" %}
</h2>
</h2>
...
...
circle/dashboard/templates/dashboard/vm-detail/resources.html
View file @
caf8f033
...
@@ -45,12 +45,12 @@
...
@@ -45,12 +45,12 @@
<div
id=
"vm-details-resources-disk"
>
<div
id=
"vm-details-resources-disk"
>
<h3>
<h3>
{% trans "Disks" %}
<div
class=
"pull-right"
>
<div
class=
"pull-right"
>
<div
id=
"disk-ops"
>
<div
id=
"disk-ops"
>
{% include "dashboard/vm-detail/_disk-operations.html" %}
{% include "dashboard/vm-detail/_disk-operations.html" %}
</div>
</div>
</div>
</div>
{% trans "Disks" %}
</h3>
</h3>
<div
class=
"clearfix"
></div>
<div
class=
"clearfix"
></div>
...
@@ -69,7 +69,7 @@
...
@@ -69,7 +69,7 @@
{% if user.is_superuser %}
{% if user.is_superuser %}
<hr/>
<hr/>
<div
class=
"row"
id=
""
>
<div
class=
"row"
>
<div
class=
"col-sm-12"
>
<div
class=
"col-sm-12"
>
<h3>
<h3>
{% trans "Required traits" %}
{% trans "Required traits" %}
...
@@ -81,7 +81,7 @@
...
@@ -81,7 +81,7 @@
<hr/>
<hr/>
<div
class=
"row"
id=
""
>
<div
class=
"row"
>
<div
class=
"col-sm-12"
>
<div
class=
"col-sm-12"
>
<h3>
<h3>
{% trans "Raw data" %}
{% trans "Raw data" %}
...
...
circle/dashboard/views/graph.py
View file @
caf8f033
...
@@ -212,7 +212,7 @@ class VmNetwork(object):
...
@@ -212,7 +212,7 @@ class VmNetwork(object):
'alias(scaleToSeconds(nonNegativeDerivative('
'alias(scaleToSeconds(nonNegativeDerivative('
'
%
s.network.bytes_sent-
%
s), 10), "in -
%
s (bits/s)")'
%
(
'
%
s.network.bytes_sent-
%
s), 10), "in -
%
s (bits/s)")'
%
(
params
))
params
))
return
'group(
%
s)'
%
','
.
join
(
metrics
)
return
'group(
%
s)'
%
','
.
join
(
metrics
)
if
metrics
else
None
register_graph
(
VmNetwork
,
'network'
,
VmGraphView
)
register_graph
(
VmNetwork
,
'network'
,
VmGraphView
)
...
...
circle/templates/registration/base.html
View file @
caf8f033
...
@@ -74,13 +74,6 @@
...
@@ -74,13 +74,6 @@
{% endblock %}
{% endblock %}
{% block navbar-brand %}
<a
class=
"navbar-brand"
href=
"{% url "
dashboard
.
index
"
%}"
style=
"padding: 10px 15px;"
>
<img
src=
"{% static "
dashboard
/
img
/
logo
.
png
"
%}"
style=
"height: 25px;"
/>
</a>
{% endblock %}
{% block content %}
{% block content %}
<div
class=
"content"
>
<div
class=
"content"
>
{% block content_box %}{% endblock %}
{% block content_box %}{% endblock %}
...
...
circle/templates/registration/login.html
View file @
caf8f033
...
@@ -10,12 +10,6 @@
...
@@ -10,12 +10,6 @@
{% include "open-graph.html" %}
{% include "open-graph.html" %}
{% endblock %}
{% endblock %}
{% block navbar-brand %}
<a
class=
"navbar-brand"
href=
"{% url "
dashboard
.
index
"
%}"
style=
"padding: 10px 15px;"
>
<img
src=
"{% static "
dashboard
/
img
/
logo
.
png
"
%}"
style=
"height: 25px;"
/>
</a>
{% endblock %}
{% block content_box %}
{% block content_box %}
<div
class=
"row"
>
<div
class=
"row"
>
{% if form.password.errors or form.username.errors %}
{% if form.password.errors or form.username.errors %}
...
@@ -25,10 +19,7 @@
...
@@ -25,10 +19,7 @@
{% endif %}
{% endif %}
<div
class=
"col-xs-{% if saml2 %}6{% else %}12{% endif %}"
>
<div
class=
"col-xs-{% if saml2 %}6{% else %}12{% endif %}"
>
<div
class=
"login-form"
>
<div
class=
"login-form"
>
<form
action=
""
method=
"POST"
>
{% crispy form %}
{% csrf_token %}
{% crispy form %}
</form>
</div>
</div>
</div>
</div>
{% if saml2 %}
{% if saml2 %}
...
@@ -37,11 +28,12 @@
...
@@ -37,11 +28,12 @@
<a
href=
"{% url "
saml2_login
"
%}"
>
{% trans "Click here!" %}
</a>
<a
href=
"{% url "
saml2_login
"
%}"
>
{% trans "Click here!" %}
</a>
</div>
</div>
{% endif %}
{% endif %}
</div>
<div
class=
"row"
>
<div
class=
"row"
>
<div
class=
"col-sm-12"
>
<div
class=
"col-sm-12"
>
<a
class=
"pull-right"
href=
"{% url "
accounts
.
password-reset
"
%}"
>
{% trans "Forgot your password?" %}
</a>
<a
class=
"pull-right"
href=
"{% url "
accounts
.
password-reset
"
%}"
style=
"margin-right: 15px;"
>
{% trans "Forgot your password?" %}
</a>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% endblock %}
requirements/base.txt
View file @
caf8f033
...
@@ -39,6 +39,4 @@ six==1.9.0
...
@@ -39,6 +39,4 @@ six==1.9.0
slimit==0.8.1
slimit==0.8.1
sqlparse==0.1.15
sqlparse==0.1.15
pika==0.9.14
pika==0.9.14
Fabric==1.10.1
django-pipeline==1.4.7
lxml==3.4.4
git+https://github.com/BME-IK/django-pipeline.git
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment