1 from pyjamas.ui.VerticalPanel import VerticalPanel
2 from pyjamas.ui.HorizontalPanel import HorizontalPanel
3 from pyjamas.ui.CaptionPanel import CaptionPanel
4 from pyjamas.ui.ListBox import ListBox
5 from pyjamas.ui.TextBox import TextBox
6 from pyjamas.ui.Button import Button
7 from pyjamas.ui.HTML import HTML
8 from pyjamas.ui import HasAlignment
10 class AddPanel(CaptionPanel):
11 def __init__(self, top):
12 CaptionPanel.__init__(self, "Add attribute")
15 hp = HorizontalPanel()
16 self.nodes = ListBox()
17 self.nodes.addItem("All nodes")
18 for sliver in self.top.rspec.get_sliver_list():
19 self.nodes.addItem(sliver)
21 self.attrs = ListBox()
22 # Hardcoded for now...
23 names = ['capabilities', 'codemux', 'cpu_pct', 'cpu_share',
24 'delegations', 'disk_max', 'initscript', 'ip_addresses',
25 'net_i2_max_kbyte', 'net_i2_max_rate', 'net_i2_min_rate',
26 'net_i2_share', 'net_i2_thresh_kbyte',
27 'net_max_kbyte', 'net_max_rate', 'net_min_rate',
28 'net_share', 'net_thresh_kbyte',
31 self.attrs.addItem(name)
33 self.value = TextBox()
38 hp.add(Button("Add", self.go))
43 name = self.attrs.getItemText(self.attrs.getSelectedIndex())
44 value = self.value.getText()
45 nodeindex = self.nodes.getSelectedIndex()
47 self.top.rspec.add_default_sliver_attribute(name, value)
49 node = self.nodes.getItemText(nodeindex)
50 self.top.rspec.add_sliver_attribute(node, name, value)
54 class AttributePanel(HorizontalPanel):
55 def __init__(self, top, name, value, node=None):
56 HorizontalPanel.__init__(self)
63 self.setVerticalAlignment(HasAlignment.ALIGN_MIDDLE)
65 b = Button("X", self.delete_all)
67 b = Button("X", self.delete)
69 self.add(HTML("%s: %s" % (self.name, self.value)))
71 def delete_all(self, sender):
72 self.top.rspec.remove_default_sliver_attribute(self.name, self.value)
75 def delete(self, sender):
76 self.top.rspec.remove_sliver_attribute(self.node, self.name, self.value)
80 class SliverPanel(VerticalPanel):
81 def __init__(self, sfadata, rspec):
82 VerticalPanel.__init__(self)
89 self.add(AddPanel(self))
91 allattrs = self.rspec.get_default_sliver_attributes()
93 slivers = self.rspec.get_sliver_list()
94 for sliver in slivers:
95 attrs = self.rspec.get_sliver_attributes(sliver)
96 attrdict[sliver] = attrs
99 cp = CaptionPanel("All nodes")
101 for (name, value) in allattrs:
102 ap = AttributePanel(self, name, value)
107 for sliver in slivers:
109 cp = CaptionPanel(sliver)
110 for (name, value) in attrdict[sliver]:
111 ap = AttributePanel(self, name, value, sliver)