Commit 472b00ed by Gregory Nagy

merged

parents c6702fc4 fb11903b
......@@ -37,9 +37,8 @@
</div><!-- id:vm-details-tags -->
</div>
<div class="col-md-8">
<img src="/static/grafikon.png" style="width:45%"/>
<img src="/static/grafikon.png" style="width:45%"/>
<img src="/static/grafikon.png" style="width:45%"/>
<img src="/static/grafikon.png" style="width:45%"/>
<img src="{% url "dashboard.views.vm-graph" instance.pk "cpu" "6h" %}" style="width:100%"/>
<img src="{% url "dashboard.views.vm-graph" instance.pk "memory" "6h" %}" style="width:100%"/>
<img src="{% url "dashboard.views.vm-graph" instance.pk "network" "6h" %}" style="width:100%"/>
</div>
</div>
......@@ -57,7 +57,7 @@
</div>
{% for d in instance.disks.all %}
<h4 class="list-group-item-heading dashboard-vm-details-network-h3">
<i class="icon-file"></i> {{ d.name }} - {{ d.size|filesize }}
<i class="icon-file"></i> {{ d.name }} (#{{ d.id }}) - {{ d.size|filesize }}
</h4>
{% endfor %}
</div>
......
......@@ -7,6 +7,7 @@ from .views import (
TransferOwnershipView, TransferOwnershipConfirmView, NodeDelete,
TemplateList, LeaseDetail, NodeCreate, LeaseCreate, TemplateCreate,
FavouriteView, NodeStatus, GroupList, TemplateDelete, LeaseDelete,
VmGraphView,
)
urlpatterns = patterns(
......@@ -57,4 +58,8 @@ urlpatterns = patterns(
name='dashboard.views.favourite'),
url(r'^group/list/$', GroupList.as_view(),
name='dashboard.views.group-list'),
url((r'^vm/(?P<pk>\d+)/graph/(?P<metric>cpu|memory|network)/'
r'(?P<time>[0-9]+[hdwy])$'),
VmGraphView.as_view(),
name='dashboard.views.vm-graph'),
)
......@@ -1224,3 +1224,45 @@ class TransferOwnershipConfirmView(LoginRequiredMixin, View):
unicode(user), user.pk, new_owner, key)
raise PermissionDenied()
return (instance, new_owner)
class VmGraphView(LoginRequiredMixin, View):
def get(self, request, pk, metric, time, *args, **kwargs):
from urllib import urlencode
import urllib2
if metric not in ['cpu', 'memory', 'network']:
raise SuspiciousOperation()
try:
instance = Instance.objects.get(id=pk)
except Instance.DoesNotExist:
raise Http404()
if not instance.has_level(request.user, 'user'):
raise PermissionDenied()
prefix = 'vm.%s' % instance.vm_name
if metric == 'cpu':
target = ('cactiStyle(alias(derivative(%s.cpu.usage),'
'"cpu usage (%%)"))') % prefix
elif metric == 'memory':
target = ('cactiStyle(alias(%s.memory.usage,'
'"memory usage (%%)"))') % prefix
elif metric == 'network':
target = ('cactiStyle(aliasByMetric('
'derivative(%s.network.bytes_*)))') % prefix
else:
raise SuspiciousOperation()
title = '%s (%s) - %s' % (instance.name, instance.vm_name, metric)
params = urlencode({'target': target,
'from': '-%s' % time,
'title': title.encode('UTF-8')})
url = ('http://%s:%s/render/?width=500&height=200&%s'
% (getenv("GRAPHITE_HOST"),
getenv("GRAPHITE_PORT"),
params))
print url
response = urllib2.urlopen(urllib2.Request(url))
return HttpResponse(response.read(), mimetype="image/png")
print pk, metric
......@@ -59,11 +59,11 @@ class Firewall:
if rule.direction == '1': # going TO host
self.iptables('-A %s_%s -d %s %s %s -g %s' %
(vlan, host.vlan, ipaddr, dport_sport,
(vlan.name, host.vlan.name, ipaddr, dport_sport,
rule.extra, action))
else:
self.iptables('-A %s_%s -s %s %s %s -g %s' %
(host.vlan, vlan, ipaddr, dport_sport,
(host.vlan.name, vlan.name, ipaddr, dport_sport,
rule.extra, action))
def fw2vlan(self, rule):
......@@ -99,9 +99,10 @@ class Firewall:
if rule.direction == '1': # going TO host
self.iptables('-A %s_%s %s %s -g %s' %
(vlan, l_vlan, dport_sport, rule.extra, action))
(vlan.name, l_vlan.name, dport_sport,
rule.extra, action))
else:
self.iptables('-A %s_%s %s %s -g %s' % (l_vlan, vlan,
self.iptables('-A %s_%s %s %s -g %s' % (l_vlan.name, vlan.name,
dport_sport,
rule.extra, action))
......@@ -223,10 +224,10 @@ class Firewall:
for s_vlan in self.vlans:
for d_vlan in self.vlans:
self.iptables('-N %s_%s' % (s_vlan, d_vlan))
self.iptables('-N %s_%s' % (s_vlan.name, d_vlan.name))
self.iptables('-A FORWARD -i %s -o %s -g %s_%s' %
(s_vlan.name, d_vlan.name, s_vlan,
d_vlan))
(s_vlan.name, d_vlan.name, s_vlan.name,
d_vlan.name))
def ipt_filter_host_rules(self):
"""Build hosts' rules."""
......@@ -251,7 +252,8 @@ class Firewall:
for s_vlan in self.vlans:
for d_vlan in self.vlans:
self.iptables('-A %s_%s -g LOG_DROP' % (s_vlan, d_vlan))
self.iptables('-A %s_%s -g LOG_DROP' % (s_vlan.name,
d_vlan.name))
def __init__(self, proto=4):
self.RULES = []
......
......@@ -5,10 +5,10 @@ import os
class GraphiteHandler:
def __init__(self):
if os.getenv("GRAPHITE_SERVER") is "":
if os.getenv("GRAPHITE_HOST") in ['', None]:
raise RuntimeError
self.__server_name = os.getenv("GRAPHITE_SERVER")
if os.getenv("GRAPHITE_PORT") is "":
self.__server_name = os.getenv("GRAPHITE_HOST")
if os.getenv("GRAPHITE_PORT") in ['', None]:
raise RuntimeError
self.__server_port = os.getenv("GRAPHITE_PORT")
self.__queries = []
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment