support for separate ListResources calls for slice and resources
authorsmbaker <smbaker@fc8clean.lan>
Tue, 27 Sep 2011 17:49:56 +0000 (10:49 -0700)
committersmbaker <smbaker@fc8clean.lan>
Tue, 27 Sep 2011 17:49:56 +0000 (10:49 -0700)
sface/config.py
sface/mainwindow.py
sface/rspecwindow.py
sface/screens/mainscreen.py
sface/screens/userscreen.py
sface/sfiprocess.py
sface/sliceview.py
sface/xmlrpcwindow.py
sface/xmlwidget.py

index f913771..8333312 100644 (file)
@@ -183,16 +183,22 @@ class Config:
 
     def getSliceRSpecFile(self): return self.fullpath("%s.rspec" % self.getSlice())
 
 
     def getSliceRSpecFile(self): return self.fullpath("%s.rspec" % self.getSlice())
 
+    def getResourcesRSpecFile(self): return self.fullpath("resources.rspec")
+
     def getSliceRecordFile(self): return self.fullpath ("%s.record" % self.getSlice())
 
     def getAuthorityRecordFile(self): return self.fullpath ("%s/%s.record" % self.getAuthority())
 
     def getSliceRecordFile(self): return self.fullpath ("%s.record" % self.getSlice())
 
     def getAuthorityRecordFile(self): return self.fullpath ("%s/%s.record" % self.getAuthority())
 
-    def getAuthorityListFile(self, i=None):
+    def getAuthorityListRecordFile(self, i=None):
+        # DEPRECATED
         if (i != None) and (i != 0):
             return self.fullpath ("%s_list.record.%d" % (self.getAuthority(),i))
         else:
             return self.fullpath ("%s_list.record" % self.getAuthority())
 
         if (i != None) and (i != 0):
             return self.fullpath ("%s_list.record.%d" % (self.getAuthority(),i))
         else:
             return self.fullpath ("%s_list.record" % self.getAuthority())
 
+    def getAuthorityListFile(self):
+        return self.fullpath ("%s_list.xml" % self.getAuthority())
+
 
 # configuration singleton
 config = Config()
 
 # configuration singleton
 config = Config()
index 719fd07..2068989 100644 (file)
@@ -9,7 +9,7 @@ from PyQt4.QtGui import *
 import sface.screens
 from sface.config import config
 from sface.logwindow import LogWindow
 import sface.screens
 from sface.config import config
 from sface.logwindow import LogWindow
-from sface.rspecwindow import RSpecWindow
+from sface.rspecwindow import RSpecWindow, ResourcesWindow
 from sface.screens.sfascreen import SfaScreen
 from sface.xmlrpcwindow import get_tracker, init_tracker
 
 from sface.screens.sfascreen import SfaScreen
 from sface.xmlrpcwindow import get_tracker, init_tracker
 
@@ -127,6 +127,7 @@ class MainWindow(QWidget):
         # to our parent. Otherwise, getting a segfault on exit in Ubuntu.
         self.logWindow = LogWindow(parent)
         self.rspecWindow = RSpecWindow(parent)
         # to our parent. Otherwise, getting a segfault on exit in Ubuntu.
         self.logWindow = LogWindow(parent)
         self.rspecWindow = RSpecWindow(parent)
+        self.resourcesWindow = ResourcesWindow(parent)
         self.trackerWindow = init_tracker(parent)
 
         self.pix = QLabel(self)
         self.trackerWindow = init_tracker(parent)
 
         self.pix = QLabel(self)
@@ -155,15 +156,17 @@ class MainWindow(QWidget):
             self.nav.setTitle(self.screenWidgets[0].getTitleText())
 
         self.status = Status(self)
             self.nav.setTitle(self.screenWidgets[0].getTitleText())
 
         self.status = Status(self)
-        self.tracker = QLabel("<a href='showtracker'>Show Xmlrpc</a>", self)
-        self.log = QLabel("<a href='showlog'>Show Log</a>", self)
-        self.rspec = QLabel("<a href='showlog'>Show RSpec</a>", self)
+        self.tracker = QLabel("<a href='showtracker'>Xmlrpc</a>", self)
+        self.log = QLabel("<a href='showlog'>Log</a>", self)
+        self.rspec = QLabel("<a href='showlog'>RSpec</a>", self)
+        self.resources = QLabel("<a href='showlog'>Resources</a>", self)
 
         hlayout = QHBoxLayout()
         hlayout.addWidget(self.status)
         hlayout.addStretch()
         hlayout.addWidget(self.tracker)
         hlayout.addWidget(self.rspec)
 
         hlayout = QHBoxLayout()
         hlayout.addWidget(self.status)
         hlayout.addStretch()
         hlayout.addWidget(self.tracker)
         hlayout.addWidget(self.rspec)
+        hlayout.addWidget(self.resources)
         hlayout.addWidget(self.log)
 
         layout = QVBoxLayout()
         hlayout.addWidget(self.log)
 
         layout = QVBoxLayout()
@@ -183,6 +186,8 @@ class MainWindow(QWidget):
                      self.showLogWindow)
         self.connect(self.rspec, SIGNAL('linkActivated(QString)'),
                      self.showRSpecWindow)
                      self.showLogWindow)
         self.connect(self.rspec, SIGNAL('linkActivated(QString)'),
                      self.showRSpecWindow)
+        self.connect(self.resources, SIGNAL('linkActivated(QString)'),
+                     self.showResourcesWindow)
 
     def redirectOutputToLog(self):
         self.logWindow.redirectOutput()
 
     def redirectOutputToLog(self):
         self.logWindow.redirectOutput()
@@ -206,6 +211,12 @@ class MainWindow(QWidget):
         self.rspecWindow.raise_()
         self.rspecWindow.activateWindow()
 
         self.rspecWindow.raise_()
         self.rspecWindow.activateWindow()
 
+    def showResourcesWindow(self, link):
+        self.resourcesWindow.show()
+        self.resourcesWindow.resize(500, 640)
+        self.resourcesWindow.raise_()
+        self.resourcesWindow.activateWindow()
+
     def animatePixmap(self, y):
         self.pix.move(0, y)
 
     def animatePixmap(self, y):
         self.pix.move(0, y)
 
index 7c6f061..19c535f 100644 (file)
@@ -8,6 +8,7 @@ from PyQt4.QtXml import *
 from sface.xmlwidget import *
 from sface.config import config
 from sface.screens.sfascreen import SfaScreen
 from sface.xmlwidget import *
 from sface.config import config
 from sface.screens.sfascreen import SfaScreen
+from sface.sfidata import SfiData
 
 
 class RSpecView(XmlView):
 
 
 class RSpecView(XmlView):
@@ -36,7 +37,7 @@ class RSpecView(XmlView):
             for r in range(rows):
                 child_index = index.child(r, 0)
                 search(child_index)
             for r in range(rows):
                 child_index = index.child(r, 0)
                 search(child_index)
-            
+
         root_rows = model.rowCount()
         for r in range(root_rows):
             index = model.index(r, 0)
         root_rows = model.rowCount()
         for r in range(root_rows):
             index = model.index(r, 0)
@@ -52,11 +53,28 @@ class RSpecWindow(XmlWindow):
     def showNode(self, hostname):
         self.view.expandMatchingText(hostname)
 
     def showNode(self, hostname):
         self.view.expandMatchingText(hostname)
 
-    def updateView(self):
-        XmlWindow.updateView(self)
+    def readContent(self):
+        rspec = SfiData().getSliceRSpec()
+        if not rspec:
+            return ""
+
+        return rspec.toxml()
+
+class ResourcesWindow(XmlWindow):
+    def __init__(self, parent=None):
+        XmlWindow.__init__(self, parent, 'Resources Window')
+
+    def initView(self):
+        return RSpecView(self)
+
+    def showNode(self, hostname):
+        self.view.expandMatchingText(hostname)
+
+    def readContent(self):
+        rspec = SfiData().getResourcesRSpec()
+        if not rspec:
+            return ""
+
+        return rspec.toxml()
 
 
-        rspec_file = config.getSliceRSpecFile()
-        if not os.path.exists(rspec_file):
-            return
 
 
-        self.document.setContent(open(rspec_file,'r').read())
index 96a9b06..c2a2118 100644 (file)
@@ -10,6 +10,7 @@ from sface.config import config
 from sface.sfirenew import RenewWindow
 from sface.sfiprocess import SfiProcess
 from sface.screens.sfascreen import SfaScreen
 from sface.sfirenew import RenewWindow
 from sface.sfiprocess import SfiProcess
 from sface.screens.sfascreen import SfaScreen
+from sface.sfidata import SfiData
 
 already_in_nodes = []
 
 
 already_in_nodes = []
 
@@ -366,6 +367,8 @@ class SliceWidget(QWidget):
         self.updateView()
 
     def submitFinished(self):
         self.updateView()
 
     def submitFinished(self):
+        self.disconnect(self.process, SIGNAL('finished()'), self.submitFinished)
+
         faultString = self.process.getFaultString()
         if not faultString:
             self.setStatus("<font color='green'>Slice data submitted.</font>")
         faultString = self.process.getFaultString()
         if not faultString:
             self.setStatus("<font color='green'>Slice data submitted.</font>")
@@ -377,18 +380,19 @@ class SliceWidget(QWidget):
         self.updateView()
         self.parent().signalAll("rspecUpdated")
 
         self.updateView()
         self.parent().signalAll("rspecUpdated")
 
-    def refreshFinished(self):
+    def refreshResourcesFinished(self):
+        self.disconnect(self.process, SIGNAL('finished()'), self.refreshResourcesFinished)
+
+        self.setStatus("Refreshing slice RSpec.")
+        self.connect(self.process, SIGNAL('finished()'), self.refreshRSpecFinished)
+        self.process.retrieveRspec()
+
+    def refreshRSpecFinished(self):
+        self.disconnect(self.process, SIGNAL('finished()'), self.refreshRSpecFinished)
         self.setStatus("<font color='green'>Slice data refreshed.</font>", timeout=5000)
         self.updateView()
         self.parent().signalAll("rspecUpdated")
 
         self.setStatus("<font color='green'>Slice data refreshed.</font>", timeout=5000)
         self.updateView()
         self.parent().signalAll("rspecUpdated")
 
-    def readSliceRSpec(self):
-        rspec_file = config.getSliceRSpecFile()
-        if os.path.exists(rspec_file):
-            xml = open(rspec_file).read()
-            return parse_rspec(xml)
-        return None
-
     def setStatus(self, msg, timeout=None):
         self.parent().setStatus(msg, timeout)
 
     def setStatus(self, msg, timeout=None):
         self.parent().setStatus(msg, timeout)
 
@@ -412,7 +416,7 @@ class SliceWidget(QWidget):
         return item.data(Qt.DisplayRole).toString()
 
     # Recursively walk the tree, making changes to the RSpec
         return item.data(Qt.DisplayRole).toString()
 
     # Recursively walk the tree, making changes to the RSpec
-    def process_subtree(self, rspec, item, depth = 0):
+    def process_subtree(self, rspec, resources, item, depth = 0):
         change = False
         model = self.nodeModel
 
         change = False
         model = self.nodeModel
 
@@ -424,8 +428,15 @@ class SliceWidget(QWidget):
             status = self.itemStatus(item)
             if status == node_status['add']:
                 print "Add hostname: %s" % hostname
             status = self.itemStatus(item)
             if status == node_status['add']:
                 print "Add hostname: %s" % hostname
-                rspec.add_slivers(str(hostname), testbed)
-                change = True
+
+                resource_node = resources.get_node_element(hostname)
+
+                if resource_node==None:
+                    print "Error: Failed to find %s in resources rspec" % hostname
+                else:
+                    rspec.merge_node(resource_node, testbed)
+                    rspec.add_slivers(str(hostname), testbed)
+                    change = True
             elif status == node_status['remove']:
                 print "Remove hostname: %s" % hostname
                 rspec.remove_slivers(str(hostname), testbed)
             elif status == node_status['remove']:
                 print "Remove hostname: %s" % hostname
                 rspec.remove_slivers(str(hostname), testbed)
@@ -454,7 +465,7 @@ class SliceWidget(QWidget):
 
         children = item.rowCount()
         for row in range(0, children):
 
         children = item.rowCount()
         for row in range(0, children):
-            status = self.process_subtree(rspec, item.child(row), depth + 1)
+            status = self.process_subtree(rspec, resources, item.child(row), depth + 1)
             change = change or status
 
         return change
             change = change or status
 
         return change
@@ -463,14 +474,14 @@ class SliceWidget(QWidget):
         if self.checkRunningProcess():
             return
 
         if self.checkRunningProcess():
             return
 
-        rspec = self.readSliceRSpec()
-        change = self.process_subtree(rspec, self.nodeModel.invisibleRootItem())
+        rspec = SfiData().getSliceRSpec()
+        resources = SfiData().getResourcesRSpec()
+        change = self.process_subtree(rspec, resources, self.nodeModel.invisibleRootItem())
 
         if not change:
             self.setStatus("<font color=red>No change in slice data. Not submitting!</font>", timeout=3000)
             return
 
 
         if not change:
             self.setStatus("<font color=red>No change in slice data. Not submitting!</font>", timeout=3000)
             return
 
-        self.disconnect(self.process, SIGNAL('finished()'), self.refreshFinished)
         self.connect(self.process, SIGNAL('finished()'), self.submitFinished)
 
         self.process.applyRSpec(rspec)
         self.connect(self.process, SIGNAL('finished()'), self.submitFinished)
 
         self.process.applyRSpec(rspec)
@@ -489,11 +500,10 @@ class SliceWidget(QWidget):
             self.setStatus("<font color='red'>There is already a process running. Please wait.</font>")
             return
 
             self.setStatus("<font color='red'>There is already a process running. Please wait.</font>")
             return
 
-        self.disconnect(self.process, SIGNAL('finished()'), self.submitFinished)
-        self.connect(self.process, SIGNAL('finished()'), self.refreshFinished)
+        self.connect(self.process, SIGNAL('finished()'), self.refreshResourcesFinished)
 
 
-        self.process.retrieveRspec()
-        self.setStatus("Refreshing slice data. This will take some time...")
+        self.process.retrieveResources()
+        self.setStatus("Refreshing resources. This will take some time...")
 
     def updateView(self):
         global already_in_nodes
 
     def updateView(self):
         global already_in_nodes
@@ -501,20 +511,27 @@ class SliceWidget(QWidget):
         self.network_names = []
         self.nodeModel.clear()
 
         self.network_names = []
         self.nodeModel.clear()
 
-        rspec = self.readSliceRSpec()
+        rspec = SfiData().getSliceRSpec()
         if not rspec:
             return None
 
         if not rspec:
             return None
 
+        resources = SfiData().getResourcesRSpec()
+        if not resources:
+            return None
+
         rootItem = self.nodeModel.invisibleRootItem()
         rootItem = self.nodeModel.invisibleRootItem()
-        #networks = sorted(rspec.get_network_list())
         networks = rspec.get_networks()
         networks = rspec.get_networks()
+
+        for network in resources.get_networks():
+            if not network in networks:
+                networks.append(network)
+
         for network in networks:
             self.network_names.append(network)
 
         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)
+            all_nodes = resources.get_nodes(network)
             sliver_nodes = rspec.get_nodes_with_slivers(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))
             available_nodes = [ node for node in all_nodes if node not in sliver_nodes ]
 
             networkItem = QStandardItem(QString(network))
@@ -553,7 +570,7 @@ class SliceWidget(QWidget):
             for node in available_nodes:
                 nodeItem = QStandardItem(QString(node))
                 statusItem = QStandardItem(QString(node_status['out']))
             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","")))
+                nodeStatus = QStandardItem(QString(resources.get_node_element(node, network).attrib.get("boot_state","")))
                 networkItem.appendRow([nodeItem, nodeStatus, statusItem, QStandardItem(QString("node"))])
 
         self.filterModel.setSourceModel(self.nodeModel)
                 networkItem.appendRow([nodeItem, nodeStatus, statusItem, QStandardItem(QString("node"))])
 
         self.filterModel.setSourceModel(self.nodeModel)
index db0d3e7..677a2db 100644 (file)
@@ -9,6 +9,7 @@ from sfa.util.record import SfaRecord, SliceRecord, AuthorityRecord, UserRecord
 from sface.config import config
 from sface.sfiprocess import SfiProcess
 from sface.screens.sfascreen import SfaScreen
 from sface.config import config
 from sface.sfiprocess import SfiProcess
 from sface.screens.sfascreen import SfaScreen
+from sface.sfidata import SfiData
 
 NAME_COLUMN = 0
 #ROLE_COLUMN = 1
 
 NAME_COLUMN = 0
 #ROLE_COLUMN = 1
@@ -154,17 +155,11 @@ class UserModel(QStandardItemModel):
                      slice_persons.append({"name": name, "role": "researcher", "member": user_status["in"]})
                      added_persons.append(name)
 
                      slice_persons.append({"name": name, "role": "researcher", "member": user_status["in"]})
                      added_persons.append(name)
 
-        i=0
-        while (os.path.exists(config.getAuthorityListFile(i))):
-            rec = self.readUserRecord(i)
-            if rec:
-                type = str(rec.get_type())
-                if (type == "user"):
-                    name = str(rec.get_name())
-                    if not name in added_persons:
-                        slice_persons.append({"name": name, "role": "", "member": user_status["out"]})
-                        added_persons.append(name)
-            i=i+1
+        userNames = SfiData().getAuthorityHrns(type="user")
+        for name in userNames:
+            if not name in added_persons:
+                slice_persons.append({"name": name, "role": "", "member": user_status["out"]})
+                added_persons.append(name)
 
         rootItem = self.invisibleRootItem()
 
 
         rootItem = self.invisibleRootItem()
 
@@ -217,15 +212,6 @@ class UserModel(QStandardItemModel):
 
         return researchers
 
 
         return researchers
 
-    def readUserRecord(self, i):
-        rec_file = config.getAuthorityListFile(i)
-        if os.path.exists(rec_file):
-            xml = open(rec_file).read()
-            rec = UserRecord()
-            rec.load_from_string(xml)
-            return rec
-        return None
-
 class UsersWidget(QWidget):
     def __init__(self, parent):
         QWidget.__init__(self, parent)
 class UsersWidget(QWidget):
     def __init__(self, parent):
         QWidget.__init__(self, parent)
@@ -303,24 +289,6 @@ class UsersWidget(QWidget):
         else:
             self.setStatus("<font color='red'>Authority rec refresh error: %s</font>" % (faultString))
 
         else:
             self.setStatus("<font color='red'>Authority rec refresh error: %s</font>" % (faultString))
 
-    def readSliceRecord(self):
-        rec_file = config.getSliceRecordFile()
-        if os.path.exists(rec_file):
-            xml = open(rec_file).read()
-            rec = SliceRecord()
-            rec.load_from_string(xml)
-            return rec
-        return None
-
-    def readAuthorityRecord(self):
-        rec_file = config.getAuthorityRecordFile()
-        if os.path.exists(rec_file):
-            xml = open(rec_file).read()
-            rec = AuthorityRecord()
-            rec.load_from_string(xml)
-            return rec
-        return None
-
     def setStatus(self, msg, timeout=None):
         self.parent().setStatus(msg, timeout)
 
     def setStatus(self, msg, timeout=None):
         self.parent().setStatus(msg, timeout)
 
@@ -334,7 +302,7 @@ class UsersWidget(QWidget):
         if self.checkRunningProcess():
             return
 
         if self.checkRunningProcess():
             return
 
-        rec = self.readSliceRecord()
+        rec = SfiData().getSliceRecord()
         change = self.userModel.updateRecord(rec)
 
         if not change:
         change = self.userModel.updateRecord(rec)
 
         if not change:
@@ -366,11 +334,11 @@ class UsersWidget(QWidget):
     def refreshAuthority(self):
         self.connect(self.process, SIGNAL('finished()'), self.getAuthorityRecordFinished)
 
     def refreshAuthority(self):
         self.connect(self.process, SIGNAL('finished()'), self.getAuthorityRecordFinished)
 
-        self.process.listRecords(config.getAuthority(), None, config.getAuthorityListFile())
+        self.process.listRecords(config.getAuthority(), None)
         self.setStatus("Refreshing user records. This will take some time...")
 
     def updateView(self):
         self.setStatus("Refreshing user records. This will take some time...")
 
     def updateView(self):
-        sliceRec = self.readSliceRecord()
+        sliceRec = SfiData().getSliceRecord()
 
         if not sliceRec:
             # wait until we've resolved the slicerecord before displaying
 
         if not sliceRec:
             # wait until we've resolved the slicerecord before displaying
index 6950554..ee49eb7 100644 (file)
@@ -3,6 +3,9 @@ import os
 import sys
 import time
 
 import sys
 import time
 
+from distutils.version import LooseVersion
+from sfa.util.version import version_core
+
 from PyQt4.QtCore import *
 from sface.config import config
 from sface.xmlrpcwindow import get_tracker, XmlrpcReader
 from PyQt4.QtCore import *
 from sface.config import config
 from sface.xmlrpcwindow import get_tracker, XmlrpcReader
@@ -119,20 +122,42 @@ class SfiProcess(QObject):
         self.start()
         return filename
 
         self.start()
         return filename
 
+    def retrieveResources(self):
+        mgr = config.getSlicemgr()
+        # Write RSpec to file
+        filename = config.getResourcesRSpecFile()
+        try:
+            os.remove(filename)
+        except:
+            pass
+        args = ["-u", config.getUser(), "-a", config.getAuthority(),
+                "-r", config.getRegistry(), "-s", mgr, "resources",
+                "-o", filename]
+
+        self.__init_command(args)
+        self.start()
+        return filename
+
 
     def listRecords(self, hrn, rectype=None, filename=None):
         args = ["-u", config.getUser(), "-a", config.getAuthority(),
                 "-r", config.getRegistry(), "-s", config.getSlicemgr(), "list", hrn]
 
 
     def listRecords(self, hrn, rectype=None, filename=None):
         args = ["-u", config.getUser(), "-a", config.getAuthority(),
                 "-r", config.getRegistry(), "-s", config.getSlicemgr(), "list", hrn]
 
-        if filename:
-            # we can't tell whether SFI will create one file or many, so delete
-            # leftovers from last time, then we'll know what we got, after we get it.
-            if os.path.exists(filename):
-                os.remove(filename)
-            if os.path.exists(filename + ".1"):
-                os.remove(filename + ".1")
-            args.append("-o")
-            args.append(filename)
+        if not filename:
+            if LooseVersion(version_core()['code_tag']) <= LooseVersion("1.0-35"):
+                # DEPRECATED
+                filename = config.getAuthorityListRecordFile()
+            else:
+                filename = config.getAuthorityListFile()
+
+        # we can't tell whether SFI will create one file or many, so delete
+        # leftovers from last time, then we'll know what we got, after we get it.
+        if os.path.exists(filename):
+            os.remove(filename)
+        if os.path.exists(filename + ".1"):
+            os.remove(filename + ".1")
+        args.append("-o")
+        args.append(filename)
 
         if rectype:
             args.append("-t")
 
         if rectype:
             args.append("-t")
index 92dd844..65b6572 100644 (file)
@@ -6,6 +6,7 @@ from PyQt4.QtGui import *
 
 from sfa.util.record import SfaRecord, SliceRecord, AuthorityRecord
 from sface.config import config
 
 from sfa.util.record import SfaRecord, SliceRecord, AuthorityRecord
 from sface.config import config
+from sface.sfidata import SfiData
 
 NAME_COLUMN = 0
 MEMBERSHIP_STATUS_COLUMN = 1
 
 NAME_COLUMN = 0
 MEMBERSHIP_STATUS_COLUMN = 1
@@ -118,16 +119,7 @@ class SliceModel(QStandardItemModel):
     def updateModel(self):
         self.clear()
 
     def updateModel(self):
         self.clear()
 
-        slice_names = []
-
-        i=0
-        while (os.path.exists(config.getAuthorityListFile(i))):
-            rec = self.readSliceRecord(i)
-            if rec:
-                name = str(rec.get_name())
-                if (rec.get_type() == "slice"):
-                    slice_names.append(name)
-            i=i+1
+        slice_names = SfiData().getAuthorityHrns(type="slice")
 
         rootItem = self.invisibleRootItem()
 
 
         rootItem = self.invisibleRootItem()
 
@@ -156,12 +148,3 @@ class SliceModel(QStandardItemModel):
 
         return slices
 
 
         return slices
 
-    def readSliceRecord(self, i):
-        rec_file = config.getAuthorityListFile(i)
-        if os.path.exists(rec_file):
-            xml = open(rec_file).read()
-            rec = SliceRecord()
-            rec.load_from_string(xml)
-            return rec
-        return None
-
index 995b108..532c754 100644 (file)
@@ -36,7 +36,7 @@ class XmlrpcReader():
             methodName = "<exception in parseMethodCall>"
 
         request["args"] = [str(x) for x in pythonParams]
             methodName = "<exception in parseMethodCall>"
 
         request["args"] = [str(x) for x in pythonParams]
-        request["methodName"] = methodName # methodNames[0].text
+        request["methodName"] = methodName
 
         return request
 
 
         return request
 
index 47dedeb..84e1e61 100644 (file)
@@ -191,6 +191,9 @@ class XmlWindow(QDialog):
         self.updateView()
         QDialog.show(self)
 
         self.updateView()
         QDialog.show(self)
 
+    def readContent(self):
+        raise ValueError("readContent needs to be implemented in the subclass")
+
     def updateView(self):
         del self.document
         del self.model
     def updateView(self):
         del self.document
         del self.model
@@ -202,12 +205,7 @@ class XmlWindow(QDialog):
 
         self.view.setModel(self.model)
 
 
         self.view.setModel(self.model)
 
-        #move the code below to rspec window
-        rspec_file = config.getSliceRSpecFile()
-        if not os.path.exists(rspec_file):
-            return
-
-        self.document.setContent(open(rspec_file,'r').read())
+        self.document.setContent(self.readContent())
 
         if self.document.childNodes().count() == 0:
             # empty document - do nothing
 
         if self.document.childNodes().count() == 0:
             # empty document - do nothing
@@ -368,4 +366,3 @@ def paint(self, painter, option, index):
     document.drawContents(painter)
     painter.restore()
 
     document.drawContents(painter)
     painter.restore()
 
-