X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sfamainscreen.py;h=358da31219c54c367079a1d6825b0e5c447d1713;hp=5e7bbb88f8352c22cd36b0bfafe6dd3eb29ab518;hb=7ff54145f6c941892e3abf202b154b51a59dc7d4;hpb=fe9d09d2042b839a76fc04a5510f6b88592f2235 diff --git a/sfamainscreen.py b/sfamainscreen.py index 5e7bbb8..358da31 100644 --- a/sfamainscreen.py +++ b/sfamainscreen.py @@ -1,6 +1,8 @@ -from PyQt4.QtCore import Qt, QString -from PyQt4.QtGui import QWidget, QLabel, QTreeView, QStandardItemModel, QVBoxLayout +from PyQt4.QtCore import Qt, QString, SIGNAL +from PyQt4.QtGui import QWidget, QLabel, QTreeView, QStandardItemModel, QVBoxLayout, QSizePolicy + +from sfa.util.rspecHelper import RSpec from sfadata import SfaData from sfascreen import SfaScreen @@ -13,6 +15,7 @@ class SliceWidget(QWidget): self.nodeView = QTreeView(self) self.nodeView.setRootIsDecorated(False) self.nodeView.setAlternatingRowColors(True) + self.nodeView.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.nodeModel = QStandardItemModel(0, 2, self) self.nodeModel.setHeaderData(0, Qt.Horizontal, QString("Testbed")) @@ -20,19 +23,39 @@ class SliceWidget(QWidget): self.nodeView.setModel(self.nodeModel) + label = QLabel("Refresh", self) + label.setScaledContents(False) + layout = QVBoxLayout() + layout.addWidget(label) layout.addWidget(self.nodeView) self.setLayout(layout) + self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) - self.refresh() + self.connect(label, SIGNAL('linkActivated(QString)'), + self.refresh) + + + # TODO: use the methods from sfa-trunk + def rspec_get_networks(self, rspec): + return rspec.rspec.xpath("./network[@name]/@name") + def rspec_get_nodes_from_network(self, rspec, network): + return rspec.rspec.xpath("./network[@name='%s']/site/node/hostname/text()" % network) - def refresh(self): + def refresh(self, link=None): data = SfaData() - rspec = data.getRSpecFromSM() - nodes = rspec.get_node_list() - - for n in nodes: - print n +# xml = data.getRSpecFromSM() + import os + xml = open(os.path.expanduser("~/.sfi/ple.inria.heartbeat.rspec")).read() + rspec = RSpec(xml) + + networks = self.rspec_get_networks(rspec) + networks.reverse() + + for network in networks: + nodes = self.rspec_get_nodes_from_network(rspec, network) + for node in nodes: + self.addNode(network, node) def addNode(self, testbed, hostname): self.nodeModel.insertRow(0)