deleteslivers for the emulab aggregate
authorsmbaker <smbaker@fc8clean.lan>
Thu, 20 Oct 2011 20:54:41 +0000 (13:54 -0700)
committersmbaker <smbaker@fc8clean.lan>
Thu, 20 Oct 2011 20:54:41 +0000 (13:54 -0700)
sface/screens/mainscreen.py
sface/sfidata.py
sface/sfiprocess.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_()
index 57a6260..3405483 100644 (file)
@@ -38,6 +38,18 @@ class SfaceRSpec(RSpec):
     def remove_slivers(self, slivers, network=None, no_dupes=False):
         return self.version.remove_slivers(slivers, network, no_dupes)
 
+    def add_default_sliver_attribute(self, name, value, network=None):
+        self.version.add_default_sliver_attribute(name, value, network)
+
+    def add_sliver_attribute(self, hostname, name, value, network=None):
+        self.version.add_sliver_attribute(hostname, name, value, network)
+
+    def remove_default_sliver_attribute(self, name, value, network=None):
+        self.version.remove_default_sliver_attribute(name, value, network)
+
+    def remove_sliver_attribute(self, hostname, name, value, network=None):
+        self.version.remove_sliver_attribute(hostname, name, value, network)
+
     #def add_slivers(self, slivers, network=None, sliver_urn=None, no_dupes=False):
     #    return self.version.add_slivers(slivers, network, sliver_urn, no_dupes)
 
index 9287acd..fac19db 100644 (file)
@@ -196,6 +196,21 @@ class SfiProcess(QObject):
         self.__init_command(args)
         self.start()
 
+    def deleteSlivers(self, slice=None, aggAddr=None, aggPort=None):
+        if not slice:
+            slice = config.getSlice()
+
+        args = ["-u", config.getUser(), "-a", config.getAuthority(),
+                "-r", config.getRegistry(), "-s", config.getSlicemgr(), "delete"]
+
+        if aggAddr:
+            args = args + ["-a", aggAddr, "-p", str(aggPort)]
+
+        args = args + [slice]
+
+        self.__init_command(args)
+        self.start()
+
     def updateRecord(self, filename):
         args = ["-u", config.getUser(), "-a", config.getAuthority(),
                 "-r", config.getRegistry(), "-s", config.getSlicemgr(), "update", filename]