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
A prog2-höz tartozó friss repo anyagok itt elérhetőek:
https://git.iit.bme.hu/
Commit
4ae34984
authored
Aug 06, 2014
by
Kálmán Viktor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dashboard: clean up node detail
parent
67b6d1ea
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
64 additions
and
112 deletions
+64
-112
circle/dashboard/forms.py
+2
-4
circle/dashboard/static/dashboard/node-details.js
+22
-20
circle/dashboard/tables.py
+1
-38
circle/dashboard/templates/dashboard/node-detail.html
+23
-19
circle/dashboard/templates/dashboard/node-detail/_activity-timeline.html
+2
-2
circle/dashboard/templates/dashboard/node-detail/resources.html
+13
-3
circle/dashboard/templates/dashboard/node-detail/vm.html
+0
-24
circle/dashboard/views.py
+1
-2
No files found.
circle/dashboard/forms.py
View file @
4ae34984
...
...
@@ -925,10 +925,8 @@ class TraitForm(forms.ModelForm):
Field
(
'name'
,
id
=
"node-details-traits-input"
,
css_class
=
"input-sm input-traits"
),
Div
(
HTML
(
'<input type="submit" '
'class="btn btn-default btn-sm input-traits" '
'value="Add trait"/>'
,
),
Submit
(
"submit"
,
_
(
"Add trait"
),
css_class
=
"btn btn-primary btn-sm input-traits"
),
css_class
=
"input-group-btn"
,
),
css_class
=
"input-group"
,
...
...
circle/dashboard/static/dashboard/node-details.js
View file @
4ae34984
$
(
function
()
{
/* rename */
$
(
"#node-details-h1-name, .node-details-rename-button"
).
click
(
function
()
{
$
(
"#node-details-h1-name"
).
hide
();
...
...
@@ -43,26 +44,6 @@
return
false
;
});
function
changeNodeStatus
(
data
)
{
$
.
ajax
({
type
:
'POST'
,
url
:
data
[
'url'
],
headers
:
{
"X-CSRFToken"
:
getCookie
(
'csrftoken'
)},
success
:
function
(
re
,
textStatus
,
xhr
)
{
if
(
!
data
[
'redirect'
])
{
selected
=
[];
addMessage
(
re
[
'message'
],
'success'
);
}
else
{
window
.
location
.
replace
(
'/dashboard'
);
}
},
error
:
function
(
xhr
,
textStatus
,
error
)
{
addMessage
(
'Uh oh :('
,
'danger'
)
}
});
}
// remove trait
$
(
'.node-details-remove-trait'
).
click
(
function
()
{
var
to_remove
=
$
(
this
).
data
(
"trait-pk"
);
...
...
@@ -86,3 +67,24 @@ function changeNodeStatus(data) {
});
return
false
;
});
});
function
changeNodeStatus
(
data
)
{
$
.
ajax
({
type
:
'POST'
,
url
:
data
[
'url'
],
headers
:
{
"X-CSRFToken"
:
getCookie
(
'csrftoken'
)},
success
:
function
(
re
,
textStatus
,
xhr
)
{
if
(
!
data
[
'redirect'
])
{
selected
=
[];
addMessage
(
re
[
'message'
],
'success'
);
}
else
{
window
.
location
.
replace
(
'/dashboard'
);
}
},
error
:
function
(
xhr
,
textStatus
,
error
)
{
addMessage
(
'Uh oh :('
,
'danger'
)
}
});
}
circle/dashboard/tables.py
View file @
4ae34984
...
...
@@ -22,7 +22,7 @@ from django_tables2 import Table, A
from
django_tables2.columns
import
(
TemplateColumn
,
Column
,
BooleanColumn
,
LinkColumn
)
from
vm.models
import
Instance
,
Node
,
InstanceTemplate
,
Lease
from
vm.models
import
Node
,
InstanceTemplate
,
Lease
from
django.utils.translation
import
ugettext_lazy
as
_
from
django_sshkey.models
import
UserKey
...
...
@@ -140,43 +140,6 @@ class UserListTable(Table):
fields
=
(
'pk'
,
'username'
,
)
class
NodeVmListTable
(
Table
):
pk
=
TemplateColumn
(
template_name
=
'dashboard/vm-list/column-id.html'
,
verbose_name
=
"ID"
,
attrs
=
{
'th'
:
{
'class'
:
'vm-list-table-thin'
}},
)
name
=
TemplateColumn
(
template_name
=
"dashboard/vm-list/column-name.html"
)
admin
=
TemplateColumn
(
template_name
=
'dashboard/vm-list/column-admin.html'
,
attrs
=
{
'th'
:
{
'class'
:
'vm-list-table-admin'
}},
)
details
=
TemplateColumn
(
template_name
=
'dashboard/vm-list/column-details.html'
,
attrs
=
{
'th'
:
{
'class'
:
'vm-list-table-thin'
}},
)
actions
=
TemplateColumn
(
template_name
=
'dashboard/vm-list/column-actions.html'
,
attrs
=
{
'th'
:
{
'class'
:
'vm-list-table-thin'
}},
)
time_of_suspend
=
TemplateColumn
(
'{{ record.time_of_suspend|timeuntil }}'
,
verbose_name
=
_
(
"Suspend in"
))
time_of_delete
=
TemplateColumn
(
'{{ record.time_of_delete|timeuntil }}'
,
verbose_name
=
_
(
"Delete in"
))
class
Meta
:
model
=
Instance
attrs
=
{
'class'
:
(
'table table-bordered table-striped table-hover '
'vm-list-table'
)}
fields
=
(
'pk'
,
'name'
,
'state'
,
'time_of_suspend'
,
'time_of_delete'
,
)
class
UserListTablex
(
Table
):
class
Meta
:
model
=
User
...
...
circle/dashboard/templates/dashboard/node-detail.html
View file @
4ae34984
...
...
@@ -54,11 +54,13 @@
<div
class=
"row"
>
<div
class=
"col-md-2"
id=
"node-info-pane"
>
<div
id=
"node-info-data"
class=
"big"
>
<span
id=
"node-details-state"
class=
"label {% if node.state == 'ONLINE' %}label-success
{% elif node.state == 'MISSING' %}label-danger
{% elif node.state == 'DISABLED' %}label-warning
{% elif node.state == 'OFFLINE' %}label-warning
{% endif %}"
>
{{ node.get_status_display|upper }}
</span>
<span
id=
"node-details-state"
class=
"label
{% if node.state == 'ONLINE' %}label-success
{% elif node.state == 'MISSING' %}label-danger
{% elif node.state == 'DISABLED' %}label-warning
{% elif node.state == 'OFFLINE' %}label-warning{% endif %}"
>
<i
class=
"fa {{ node.get_status_icon }}"
></i>
{{ node.get_status_display|upper }}
</span>
</div>
</div>
<div
class=
"col-md-10"
id=
"node-detail-pane"
>
...
...
@@ -67,39 +69,41 @@
<li
class=
"active"
>
<a
href=
"#home"
data-toggle=
"pill"
class=
"text-center"
>
<i
class=
"fa fa-compass fa-2x"
></i><br>
{% trans "Home" %}
</a></li>
{% trans "Home" %}
</a>
</li>
<li>
<a
href=
"#resources"
data-toggle=
"pill"
class=
"text-center"
>
<i
class=
"fa fa-tasks fa-2x"
></i><br>
{% trans "Resources" %}
</a></li>
{% trans "Resources" %}
</a>
</li>
<li>
<a
href=
"#virtualmachines"
data-toggle=
"pill"
class=
"text-center"
>
<a
href=
"{% url "
dashboard
.
views
.
vm-list
"
%}?
s=
node:{{
node
.
name
}}"
target=
"blank"
class=
"text-center"
>
<i
class=
"fa fa-desktop fa-2x"
></i><br>
{% trans "Virtual Machines" %}
</a></li>
{% trans "Virtual Machines" %}
</a>
</li>
<li>
<a
href=
"#activity"
data-toggle=
"pill"
class=
"text-center"
>
<i
class=
"fa fa-clock-o fa-2x"
></i><br>
{% trans "Activity" %}
</a></li>
{% trans "Activity" %}
</a>
</li>
</ul>
<div
id=
"panel-body"
class=
"tab-content panel-body"
>
<div
class=
"tab-pane active"
id=
"home"
>
{% include "dashboard/node-detail/home.html" %}
</div>
<div
class=
"tab-pane"
id=
"resources"
>
{% include "dashboard/node-detail/resources.html" %}
</div>
<div
class=
"tab-pane"
id=
"activity"
>
{% include "dashboard/node-detail/activity.html" %}
</div>
<div
class=
"tab-pane"
id=
"virtualmachines"
>
{% include "dashboard/node-detail/vm.html" %}
</div>
</div>
</div>
</div>
</div>
</div>
<style>
.popover
{
max-width
:
600px
;
}
</style>
{% endblock %}
{% block extra_js %}
<script
src=
"{{ STATIC_URL}}dashboard/node-details.js"
></script>
<script
src=
"{{ STATIC_URL}}dashboard/node-details.js"
></script>
{% endblock %}
circle/dashboard/templates/dashboard/node-detail/_activity-timeline.html
View file @
4ae34984
...
...
@@ -6,9 +6,9 @@
<i
class=
"fa {% if not a.finished %}fa-refresh fa-spin {% else %}fa-plus{% endif %}"
></i>
</span>
<strong>
{% if user.is_superuser %}
{{ a.readable_name.get_admin_text }}
{{ a.readable_name.get_admin_text
|capfirst
}}
{% else %}
{{ a.readable_name.get_user_text }}{% endif %}
</strong>
{{ a.readable_name.get_user_text
|capfirst
}}{% endif %}
</strong>
{{ a.started|date:"Y-m-d H:i" }}, {{ a.user }}
{% if a.children.count > 0 %}
<div
class=
"sub-timeline"
>
...
...
circle/dashboard/templates/dashboard/node-detail/resources.html
View file @
4ae34984
...
...
@@ -4,15 +4,25 @@
<dl
class=
"dl-horizontal"
>
<dt>
{% trans "Node name" %}:
</dt><dd>
{{ node.name }}
</dd>
<dt>
{% trans "CPU cores" %}:
</dt><dd>
{{ node.info.core_num }}
</dd>
<dt>
{% trans "RAM size" %}:
</dt>
<dd>
{% widthratio node.info.ram_size 1048576 1 %} MB
</dd>
<dt>
{% trans "RAM size" %}:
</dt>
<dd>
{% widthratio node.info.ram_size 1048576 1 %} M
i
B
</dd>
<dt>
{% trans "Architecture" %}:
</dt><dd>
{{ node.info.architecture }}
</dd>
<dt>
{% trans "Host IP" %}:
</dt><dd>
{{ node.host.ipv4 }}
</dd>
<dt>
{% trans "Enabled" %}:
</dt><dd>
{{ node.enabled }}
</dd>
<dt>
{% trans "Host online" %}:
</dt><dd>
{{ node.online }}
</dd>
<dt>
{% trans "Priority" %}:
</dt><dd>
{{ node.priority }}
</dd>
<dt>
{% trans "Host owner" %}:
</dt><dd>
{{ node.host.owner }}
</dd>
<dt>
{% trans "Host owner" %}:
</dt>
<dd>
{% include "dashboard/_display-name.html" with user=node.host.owner show_org=True %}
</dd>
<dt>
{% trans "Vlan" %}:
</dt><dd>
{{ node.host.vlan }}
</dd>
<dt>
{% trans "Host name" %}:
</dt><dd>
{{ node.host.hostname }}
</dd>
<dt>
{% trans "Host name" %}:
</dt>
<dd>
{{ node.host.hostname }}
<a
href=
"{{ node.host.get_absolute_url }}"
class=
"btn btn-default btn-xs"
>
<i
class=
"fa fa-pencil"
></i>
{% trans "Edit host" %}
</a>
</dd>
</dl>
{% block extra_js %}
...
...
circle/dashboard/templates/dashboard/node-detail/vm.html
deleted
100644 → 0
View file @
67b6d1ea
{% load render_table from django_tables2 %}
{% block content %}
<div
class=
"panel-body"
>
{% render_table table %}
</div>
{% endblock %}
<script>
"use strict"
;
$
(
'a[data-toggle$="pill"][href!="#virtualmachines"]'
).
click
(
function
()
{
$
(
"#node-info-pane"
).
fadeIn
();
$
(
"#node-detail-pane"
).
removeClass
(
"col-md-12"
);
});
$
(
'a[href$="virtualmachines"]'
).
click
(
function
()
{
$
(
"#node-info-pane"
).
hide
();
$
(
"#node-detail-pane"
).
addClass
(
"col-md-12"
);
});
</script>
{% block extra_js %}
<script
src=
"{{ STATIC_URL}}dashboard/vm-list.js"
></script>
{% endblock %}
circle/dashboard/views.py
View file @
4ae34984
...
...
@@ -74,7 +74,7 @@ from .forms import (
)
from
.tables
import
(
NodeListTable
,
NodeVmListTable
,
TemplateListTable
,
LeaseListTable
,
NodeListTable
,
TemplateListTable
,
LeaseListTable
,
GroupListTable
,
UserKeyListTable
)
from
common.models
import
HumanReadableObject
,
HumanReadableException
...
...
@@ -997,7 +997,6 @@ class NodeDetailView(LoginRequiredMixin, SuperuserRequiredMixin, DetailView):
form
=
self
.
form_class
()
context
=
super
(
NodeDetailView
,
self
)
.
get_context_data
(
**
kwargs
)
instances
=
Instance
.
active
.
filter
(
node
=
self
.
object
)
context
[
'table'
]
=
NodeVmListTable
(
instances
)
na
=
NodeActivity
.
objects
.
filter
(
node
=
self
.
object
,
parent
=
None
)
.
order_by
(
'-started'
)
.
select_related
()
...
...
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