+ self.process.getRSpecFromSM()
+ self.setStatus("Refreshing slice data. This will take some time...")
+
+ def updateView(self):
+ global already_in_nodes
+ already_in_nodes = []
+ self.network_names = []
+ self.nodeModel.clear()
+
+ rspec = self.readSliceRSpec()
+ if not rspec:
+ return None
+
+ rootItem = self.nodeModel.invisibleRootItem()
+ #networks = sorted(rspec.get_network_list())
+ networks = rspec.get_networks()
+ for network in networks:
+ self.network_names.append(network)
+
+ #all_nodes = rspec.get_node_list(network)
+ #sliver_nodes = rspec.get_sliver_list(network)
+ all_nodes = rspec.get_nodes(network)
+ sliver_nodes = rspec.get_nodes_with_slivers(network)
+ available_nodes = [ node for node in all_nodes if node not in sliver_nodes ]
+
+ networkItem = QStandardItem(QString(network))
+ msg = "%s Nodes\t%s Selected" % (len(all_nodes), len(sliver_nodes))
+ rootItem.appendRow([networkItem, QStandardItem(QString("")), QStandardItem(QString(msg)), QStandardItem(QString("network"))])
+
+ already_in_nodes += sliver_nodes
+
+ # Add default slice tags
+ nodeItem = QStandardItem(QString("%s for %s" % (default_tags, network)))
+ statusItem = QStandardItem(QString(""))
+ nodeStatus = QStandardItem(QString(""))
+ networkItem.appendRow([nodeItem, nodeStatus, statusItem, QStandardItem(QString("defaults"))])
+ attrs = rspec.get_default_sliver_attributes(network)
+ for (name, value) in attrs:
+ tagstring = QString("%s: %s" % (name, value))
+ tagItem = QStandardItem(tagstring)
+ status = QStandardItem(QString(tag_status['in']))
+ nodeStatus = QStandardItem(QString(""))
+ nodeItem.appendRow([tagItem, nodeStatus, status, QStandardItem(QString("attribute"))])
+
+ for node in sliver_nodes:
+ nodeItem = QStandardItem(QString(node))
+ statusItem = QStandardItem(QString(node_status['in']))
+ nodeStatus = QStandardItem(QString(rspec.get_node_element(node, network).attrib.get("boot_state","")))
+ networkItem.appendRow([nodeItem, nodeStatus, statusItem, QStandardItem(QString("node"))])
+
+ attrs = rspec.get_sliver_attributes(node, network)
+ for (name, value) in attrs:
+ tagstring = QString("%s: %s" % (name, value))
+ tagItem = QStandardItem(tagstring)
+ statusItem = QStandardItem(QString(tag_status['in']))
+ nodeStatus = QStandardItem(QString(""))
+ nodeItem.appendRow([tagItem, nodeStatus, statusItem, QStandardItem(QString("attribute"))])
+
+ for node in available_nodes:
+ nodeItem = QStandardItem(QString(node))
+ statusItem = QStandardItem(QString(node_status['out']))
+ nodeStatus = QStandardItem(QString(rspec.get_node_element(node, network).attrib.get("boot_state","")))
+ networkItem.appendRow([nodeItem, nodeStatus, statusItem, QStandardItem(QString("node"))])
+
+ self.filterModel.setSourceModel(self.nodeModel)
+ self.filterModel.setDynamicSortFilter(True)
+
+ headers = QStringList() << "Hostname or Tag" << "Node Status" << "Membership Status" << "Kind"
+ self.nodeModel.setHorizontalHeaderLabels(headers)
+
+ self.nodeView.setItemDelegateForColumn(0, self.nodeNameDelegate)
+ self.nodeView.setItemDelegateForColumn(1, self.nodeStatusDelegate)
+ self.nodeView.setModel(self.filterModel)
+ self.nodeView.hideColumn(KIND_COLUMN)
+ self.nodeView.expandAll()
+ self.nodeView.resizeColumnToContents(0)
+ self.nodeView.collapseAll()
+
+ def updateSliceName(self):
+ self.slicename.setText("Slice : %s" % (config.getSlice() or "None"))
+
+ def nodeSelectionChanged(self, hostname):
+ self.parent().nodeSelectionChanged(hostname)