deleteslivers for the emulab aggregate
[sface.git] / sface / screens / mainscreen.py
index 985e315..3c1be13 100644 (file)
@@ -519,11 +519,29 @@ class SliceWidget(QWidget):
         if not faultString:
             peers = SfiData().getSliceMgrVersion()["peers"]
             self.submit_aggs = [(key, peers[key]) for key in peers.keys()]
+            self.delete_aggs = [(key, peers[key]) for key in peers.keys() if key.startswith("emulab")]
             str = "<font color='green'>Successfully retrieved agg list.</font> "
-            self.submitNextAgg(str)
+            #self.submitNextAgg(str)
+            self.deleteNextAgg(str)
         else:
             self.setStatus("<font color='red'>getSliceMgrVersion failed: %s</font>" % (faultString))
 
+    def deleteNextAgg(self, statusStr=""):
+        if (self.delete_aggs == []):
+            self.submitNextAgg(statusStr)
+            return
+
+        self.delete_agg = self.delete_aggs.pop()
+
+        urlParts = urlparse.urlsplit(self.delete_agg[1])
+        amPort = urlParts.port
+        amAddr = urlParts.hostname+urlParts.path
+
+        self.setStatus(statusStr + "Deleting slivers on %s..." % (self.delete_agg[0]))
+
+        self.connect(self.process, SIGNAL('finished()'), self.deleteNextAggFinished)
+        self.process.deleteSlivers(aggAddr = amAddr, aggPort = amPort)
+
     def submitNextAgg(self, statusStr=""):
         if (self.submit_aggs == []):
             self.setStatus(statusStr + "<font color='green'>Finished submitting. %d/%d aggs succeeded.</font>" %
@@ -555,6 +573,17 @@ class SliceWidget(QWidget):
 
         self.submitNextAgg(str)
 
+    def deleteNextAggFinished(self):
+        self.disconnect(self.process, SIGNAL('finished()'), self.deleteNextAggFinished)
+
+        faultString = self.process.getFaultString()
+        if not faultString:
+            str = "<font color='green'>Succeeded deleteslivers on %s.</font> " % (self.delete_agg[0])
+        else:
+            str = "<font color='red'>Failed deleteslivers on %s.</font> " % (self.delete_agg[0])  # , faultString)
+
+        self.deleteNextAgg(str)
+
     def renew(self):
         dlg = RenewWindow(parent=self)
         dlg.exec_()