3
from django.core.urlresolvers import reverse
4
from django.utils.translation import ugettext_lazy as _
6
from horizon import api
7
from horizon import tables
10
LOG = logging.getLogger(__name__)
13
class RenameNetworkLink(tables.LinkAction):
14
name = "rename_network"
15
verbose_name = _("Rename Network")
16
url = "horizon:nova:networks:rename"
17
attrs = {"class": "ajax-modal"}
20
class CreateNetworkLink(tables.LinkAction):
21
name = "create_network"
22
verbose_name = _("Create New Network")
23
url = "horizon:nova:networks:create"
24
classes = ("ajax-modal",)
27
class DeleteNetworkAction(tables.DeleteAction):
28
data_type_singular = _("Network")
29
data_type_plural = _("Networks")
31
def delete(self, request, obj_id):
32
api.quantum_delete_network(request, obj_id)
35
class NetworksTable(tables.DataTable):
36
id = tables.Column('id', verbose_name=_('Network Id'),
37
link="horizon:nova:networks:detail")
38
name = tables.Column('name', verbose_name=_('Name'))
39
used = tables.Column('used', verbose_name=_('Used'))
40
available = tables.Column('available', verbose_name=_('Available'))
41
total = tables.Column('total', verbose_name=_('Total'))
42
#tenant = tables.Column('tenant', verbose_name=_('Project'))
44
def get_object_id(self, datum):
47
def get_object_display(self, obj):
52
verbose_name = _("Networks")
53
row_actions = (DeleteNetworkAction, RenameNetworkLink,)
54
table_actions = (CreateNetworkLink, DeleteNetworkAction,)
57
class CreatePortLink(tables.LinkAction):
59
verbose_name = _("Create Ports")
60
url = "horizon:nova:networks:port_create"
61
classes = ("ajax-modal",)
63
def get_link_url(self, datum=None):
64
network_id = self.table.kwargs['network_id']
65
return reverse(self.url, args=(network_id,))
68
class DeletePortAction(tables.DeleteAction):
69
data_type_singular = _("Port")
70
data_type_plural = _("Ports")
72
def delete(self, request, obj_id):
73
api.quantum_delete_port(request,
74
self.table.kwargs['network_id'],
78
class DetachPortAction(tables.BatchAction):
80
action_present = _("Detach")
81
action_past = _("Detached")
82
data_type_singular = _("Port")
83
data_type_plural = _("Ports")
85
def action(self, request, datum_id):
86
body = {'port': {'state': 'DOWN'}}
87
api.quantum_set_port_state(request,
88
self.table.kwargs['network_id'],
92
class AttachPortAction(tables.LinkAction):
94
verbose_name = _("Attach Port")
95
url = "horizon:nova:networks:port_attach"
96
attrs = {"class": "ajax-modal"}
98
def get_link_url(self, datum=None):
99
network_id = self.table.kwargs['network_id']
100
return reverse(self.url, args=(network_id, datum['id']))
103
class NetworkDetailsTable(tables.DataTable):
104
id = tables.Column('id', verbose_name=_('Port Id'))
105
state = tables.Column('state', verbose_name=_('State'))
106
attachment = tables.Column('attachment', verbose_name=_('Attachment'))
108
def get_object_id(self, datum):
111
def get_object_display(self, obj):
115
name = "network_details"
116
verbose_name = _("Network Port Details")
117
row_actions = (DeletePortAction, AttachPortAction, DetachPortAction)
118
table_actions = (CreatePortLink, DeletePortAction,)