[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen master] tools: drop 'sv'



commit 484a3711b42261f3a82e21bf5164a7021d52356f
Author:     Ian Campbell <ian.campbell@xxxxxxxxxx>
AuthorDate: Wed Jul 31 16:15:57 2013 +0100
Commit:     Ian Campbell <ian.campbell@xxxxxxxxxx>
CommitDate: Tue Aug 20 15:39:58 2013 +0100

    tools: drop 'sv'
    
    I'm not even sure what this thing is. Looks like some sort of Twisted Python
    based frontend to xend.
    
    Whatever it is I am perfectly sure no one can be using it. Apart from drive 
by
    build fixes caused by updates elsewhere it has seen no real development 
since
    2005. I suspect it was never even finished/usable.
    
    Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
    Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
---
 tools/python/setup.py                |    1 -
 tools/python/xen/sv/CreateDomain.py  |  205 --------------------------
 tools/python/xen/sv/DomInfo.py       |  268 ----------------------------------
 tools/python/xen/sv/GenTabbed.py     |  147 -------------------
 tools/python/xen/sv/HTMLBase.py      |   53 -------
 tools/python/xen/sv/Main.py          |   82 -----------
 tools/python/xen/sv/NodeInfo.py      |   73 ---------
 tools/python/xen/sv/RestoreDomain.py |   50 -------
 tools/python/xen/sv/Wizard.py        |  245 -------------------------------
 tools/python/xen/sv/__init__.py      |    1 -
 tools/python/xen/sv/util.py          |  126 ----------------
 tools/sv/Makefile                    |    3 -
 tools/sv/images/destroy.png          |  Bin 2408 -> 0 bytes
 tools/sv/images/finish.png           |  Bin 1189 -> 0 bytes
 tools/sv/images/next.png             |  Bin 1270 -> 0 bytes
 tools/sv/images/pause.png            |  Bin 1662 -> 0 bytes
 tools/sv/images/previous.png         |  Bin 1285 -> 0 bytes
 tools/sv/images/reboot.png           |  Bin 3132 -> 0 bytes
 tools/sv/images/shutdown.png         |  Bin 2901 -> 0 bytes
 tools/sv/images/small-destroy.png    |  Bin 483 -> 0 bytes
 tools/sv/images/small-pause.png      |  Bin 434 -> 0 bytes
 tools/sv/images/small-unpause.png    |  Bin 500 -> 0 bytes
 tools/sv/images/unpause.png          |  Bin 1890 -> 0 bytes
 tools/sv/images/xen.png              |  Bin 10575 -> 0 bytes
 tools/sv/inc/script.js               |   31 ----
 tools/sv/inc/style.css               |   95 ------------
 tools/sv/index.psp                   |   34 -----
 27 files changed, 0 insertions(+), 1414 deletions(-)

diff --git a/tools/python/setup.py b/tools/python/setup.py
index 8e584e6..8127b21 100644
--- a/tools/python/setup.py
+++ b/tools/python/setup.py
@@ -132,7 +132,6 @@ setup(name            = 'xen',
       description     = 'Xen',
       packages        = ['xen',
                          'xen.lowlevel',
-                         'xen.sv',
                          ] + xend_packages,
       ext_package = "xen.lowlevel",
       ext_modules = modules
diff --git a/tools/python/xen/sv/CreateDomain.py 
b/tools/python/xen/sv/CreateDomain.py
deleted file mode 100755
index 748d99b..0000000
--- a/tools/python/xen/sv/CreateDomain.py
+++ /dev/null
@@ -1,205 +0,0 @@
-from xen.sv.Wizard import *
-from xen.sv.util import *
-from xen.sv.GenTabbed import PreTab
-
-from xen.xm.create import make_config, OptVals
-
-from xen.xend.XendClient import server
-
-class CreateDomain( Wizard ):
-    def __init__( self, urlWriter ):
-       
-       sheets = [ CreatePage0,
-                  CreatePage1,
-                  CreatePage2,
-                   CreatePage3,
-                   CreatePage4,
-                   CreateFinish ]
-    
-       Wizard.__init__( self, urlWriter, "Create Domain", sheets )
-
-    def op_finish( self, request ):
-        pass
-    
-class CreatePage0( Sheet ):
-
-    title = "General"
-    
-    def __init__( self, urlWriter ):
-        Sheet.__init__( self, urlWriter, "General", 0 )
-        self.addControl( InputControl( 'name', 'VM Name', 'VM Name:', 
"[\\w|\\S]+", "You must enter a name in this field" ) )
-        self.addControl( InputControl( 'memory', '64', 'Memory (Mb):', 
"[\\d]+", "You must enter a number in this field" ) )
-        self.addControl( InputControl( 'cpu', '0', 'CPU:', "[\\d]+", "You must 
enter a number in this feild" ) )
-        self.addControl( InputControl( 'cpu_weight', '1', 'CPU Weight:', 
"[\\d]+", "You must enter a number in this feild" ) )
-        self.addControl( InputControl( 'vcpus', '1', 'Virtual CPUs:', 
'[\\d]+', "You must enter a number in this feild") )
-                        
-class CreatePage1( Sheet ):
-
-    title = "Setup Kernel Image"
-
-    def __init__( self, urlWriter ):
-        Sheet.__init__( self, urlWriter, "Setup Kernel Image", 1 )
-        self.addControl( ListControl( 'builder', [('linux', 'Linux'), 
('netbsd', 'NetBSD')], 'Domain Builder:' ) )
-        self.addControl( FileControl( 'kernel', '/boot/vmlinuz-2.6.12-xenU', 
'Kernel Image:' ) )
-        self.addControl( InputControl( 'extra', '', 'Kernel Command Line 
Parameters:' ) )
-        self.addControl( ListControl( 'use-initrd', [('yes', 'Yes'), ('no', 
'No')], 'Use an Initial Ram Disk?:' ) )
-        self.addControl( FileControl( 'initrd', 
'/boot/initrd-2.6.12-xenU.img', 'Initial Ram Disk:' ) )
-
-    def validate( self, request ):
-        if not self.passback: self.parseForm( request )
-        check = True
-        request.write( previous_values.get( '>>>>>use-initrd' ) )
-        previous_values = ssxp2hash( string2sxp( self.passback ) ) #get the 
map for quick reference
-        if DEBUG: print previous_values
-        for (feild, control) in self.feilds:
-            if feild == 'initrd' and previous_values.get( 'use-initrd' ) != 
'no':
-                request.write( previous_values.get( '>>>>>use-initrd' ) )
-                if control.validate( previous_values.get( feild ) ):
-                    check = False
-            elif not control.validate( previous_values.get( feild ) ):
-                check = False
-
-            if DEBUG: print "> %s = %s" % (feild, previous_values.get( feild ))
-
-        return check
-                                                 
-
-class CreatePage2( Sheet ):
-
-    title = "Choose number of VBDS"
-
-    def __init__( self, urlWriter ):
-       Sheet.__init__( self, urlWriter, "Setup Virtual Block Device", 2 )
-        self.addControl( InputControl( 'num_vbds', '1', 'Number of VBDs:', 
'[\\d]+', "You must enter a number in this field" ) )
-
-class CreatePage3( Sheet ):
-
-    title = "Setup VBDS"
-
-    def __init__( self, urlWriter ):
-        Sheet.__init__( self, urlWriter, "Setup Virtual Block Device", 3 )
-        
-    def write_BODY( self, request ):
-        if not self.passback: self.parseForm( request )
-    
-       previous_values = sxp2hash( string2sxp( self.passback ) ) #get the hash 
for quick reference
-        
-        num_vbds = previous_values.get( 'num_vbds' )
-        
-        for i in range( int( num_vbds ) ):
-            self.addControl( InputControl( 'vbd%s_dom0' % i, 'phy:sda%s' % 
str(i + 1), 'Device %s name:' % i  ) )
-            self.addControl( InputControl( 'vbd%s_domU' % i, 'sda%s' % str(i + 
1), 'Virtualized device %s:' % i ) )
-            self.addControl( ListControl( 'vbd%s_mode' % i, [('w', 'Read + 
Write'), ('r', 'Read Only')], 'Device %s mode:' % i ) )
-            
-        self.addControl( InputControl( 'root', '/dev/sda1', 'Root device (in 
VM):' ) )
-        
-        Sheet.write_BODY( self, request )
-                
-class CreatePage4( Sheet ):
-
-    title = "Network Setting"
-
-    def __init__( self, urlWriter ):        
-        Sheet.__init__( self, urlWriter, "Network settings", 4 )
-        self.addControl( ListControl( 'dhcp', [('off', 'No'), ('dhcp', 
'Yes')], 'Use DHCP:' ) )
-        self.addControl( InputControl( 'hostname', 'hostname', 'VM Hostname:' 
) )
-        self.addControl( InputControl( 'ip_addr', '192.168.1.1', 'VM IP 
Address:' ) )
-        self.addControl( InputControl( 'ip_subnet', '255.255.255.0', 'VM 
Subnet Mask:' ) ) 
-        self.addControl( InputControl( 'ip_gateway', '192.168.1.1', 'VM 
Gateway:' ) )           
-        self.addControl( InputControl( 'ip_nfs', '192.168.1.1', 'NFS Server:' 
) )  
-                 
-class CreateFinish( Sheet ):
-
-    title = "Finish"
-
-    def __init__( self, urlWriter ):
-        Sheet.__init__( self, urlWriter, "All Done", 5 )
-        
-    def write_BODY( self, request ):
-    
-        if not self.passback: self.parseForm( request )
-        
-        xend_sxp = self.translate_sxp( string2sxp( self.passback ) )
-
-        request.write( "<pre>%s</pre>" % sxp2prettystring( xend_sxp ) )
-        
-        try:
-            server.xend_domain_create( xend_sxp )
-            request.write( "<p>You domain had been successfully created.</p>" )
-        except Exception, e:
-            request.write( "<p>There was an error creating your 
domain.<br/>The configuration used is as follows:\n</p>" )
-            request.write( "<pre>%s</pre>" % sxp2prettystring( xend_sxp ) )
-            request.write( "<p>The error was:</p>" )
-            request.write( "<pre>%s</pre>" % str( e ) )
-
-        request.write( "<input type='hidden' name='passback' 
value=\"%s\"></p>" % self.passback )
-        request.write( "<input type='hidden' name='sheet' value='%s'></p>" % 
self.location )
-    
-    def translate_sxp( self, fin_sxp ):
-       fin_hash = ssxp2hash( fin_sxp )
-    
-        def get( key ):
-            ret = fin_hash.get( key )
-            if ret:
-                return ret
-            else:
-                return ""
-        
-       vals = OptVals()
-        
-        vals.name =    get( 'name' )
-        vals.memory =  get( 'memory' )
-        vals.maxmem =   get( 'maxmem' )
-        vals.cpu =     get( 'cpu' )
-        vals.cpu_weight = get( 'cpu_weight' )
-        vals.vcpus = get( 'vcpus' )
-        
-        vals.builder =  get( 'builder' )       
-        vals.kernel =   get( 'kernel' )
-       vals.root =     get( 'root' )
-        vals.extra =   get( 'extra' )
-        
-        #setup vbds
-        
-        vbds = []
-        
-        for i in range( int( get( 'num_vbds' ) ) ):
-            vbds.append( ( get( 'vbd%s_dom0' % i ), get('vbd%s_domU' % i ), 
get( 'vbd%s_mode' % i ), None ) )
-        
-        vals.disk = vbds    
-            
-        #misc
-        
-        vals.pci = []
-        
-        vals.blkif = None
-        vals.netif = None
-        vals.restart = None
-        vals.console = None
-        vals.ramdisk = None
-        vals.ssidref = -1
-        vals.bootloader = None
-        vals.usb = []
-        vals.acpi = []
-        
-        #setup vifs
-        
-        vals.vif = []
-        vals.nics = 1
-                
-        ip =   get( 'ip_addr' )
-        nfs =  get( 'ip_nfs' )
-        gate = get( 'ip_gateway' )
-        mask = get( 'ip_subnet' )
-        host = get( 'hostname' )
-        dhcp = get( 'dhcp' )
-        
-        vals.cmdline_ip = "%s:%s:%s:%s:%s:eth0:%s" % (ip, nfs, gate, mask, 
host, dhcp)
-
-        opts = None
-        
-        try:
-            return make_config( opts, vals )
-        except Exception, e:
-            return [["There was an error creating the domain config SXP.  This 
is typically due to an interface change in xm/create.py:make_config", e]]    
-        
diff --git a/tools/python/xen/sv/DomInfo.py b/tools/python/xen/sv/DomInfo.py
deleted file mode 100755
index 89feca0..0000000
--- a/tools/python/xen/sv/DomInfo.py
+++ /dev/null
@@ -1,268 +0,0 @@
-from xen.xend.XendClient import server
-from xen.xend import PrettyPrint
-
-from xen.sv.HTMLBase import HTMLBase
-from xen.sv.util import *
-from xen.sv.GenTabbed import *
-from xen.sv.Wizard import *
-
-DEBUG=1
-
-class DomInfo( GenTabbed ):
-
-    def __init__( self, urlWriter ):
-        
-        self.dom = 0;
-                   
-        GenTabbed.__init__( self, "Domain Info", urlWriter, [ 'General', 
'SXP', 'Devices', 'Migrate', 'Save' ], [ DomGeneralTab, DomSXPTab, 
DomDeviceTab, DomMigrateTab, DomSaveTab ]  )
-
-    def write_BODY( self, request ):
-        try:
-            dom = int( getVar( 'dom', request ) )
-        except:
-            request.write( "<p>Please Select a Domain</p>" )
-            return None
-       
-        GenTabbed.write_BODY( self, request )
-        
-    def write_MENU( self, request ):
-       domains = []
-
-       try:
-           domains = server.xend_domains()
-           domains.sort()
-       except:
-           pass
-
-       request.write( "\n<table style='border:0px solid white' cellspacing='0' 
cellpadding='0' border='0' width='100%'>\n" )
-       request.write( "<tr class='domainInfoHead'>" )
-       request.write( "<td class='domainInfoHead' 
align='center'>Domain</td>\n" )
-       request.write( "<td class='domainInfoHead' align='center'>Name</td>\n" )
-       request.write( "<td class='domainInfoHead' align='center'>State</td>\n" 
)
-       request.write( "<td class='domainInfoHead' align='center'></td>\n" )
-       request.write( "</tr>" )
-
-       odd = True
-       if not domains is None:
-           for domain in domains:
-               odd = not odd;
-               if odd:
-                   request.write( "<tr class='domainInfoOdd'>\n" )
-               else:
-                   request.write( "<tr class='domainInfoEven'>\n" )
-               domInfo = getDomInfo( domain )
-               request.write( "<td class='domainInfo' 
align='center'>%(id)s</td>\n" % domInfo )
-               url = self.urlWriter( "&dom=%(id)s" % domInfo )
-               request.write( "<td class='domainInfo' align='center'><a 
href='%s'>%s</a></td>\n" % ( url, domInfo['name'] ) )
-               request.write( "<td class='domainInfo' 
align='center'>%(state)5s</td>\n" % domInfo )
-               if domInfo[ 'id' ] != "0":
-                   request.write( "<td class='domainInfo' align='center'>" )
-                   if domInfo[ 'state' ][ 2 ] == "-":
-                       request.write( "<img src='images/small-pause.png' 
onclick='doOp2( \"pause\", \"%(dom)-4s\" )'>" % domInfo )
-                   else:
-                       request.write( "<img src='images/small-unpause.png' 
onclick='doOp2( \"unpause\", \"%(dom)-4s\" )'>" % domInfo )
-                   request.write( "<img src='images/small-destroy.png' 
onclick='doOp2( \"destroy\", \"%(dom)-4s\" )'></td>" % domInfo )
-               else:
-                   request.write( "<td>&nbsp;</td>" )
-               request.write( "</tr>\n" )
-       else:
-           request.write( "<tr colspan='10'><p class='small'>Error getting 
domain list<br/>Perhaps XenD not running?</p></tr>")
-       request.write( "</table>" )
-       
-class DomGeneralTab( CompositeTab ):
-    def __init__( self, urlWriter ):
-       CompositeTab.__init__( self, [ DomGenTab, DomActionTab ], urlWriter )   
     
-       
-class DomGenTab( GeneralTab ):
-
-    def __init__( self, _ ):
-    
-        titles = {}
-    
-        titles[ 'ID' ] = 'dom'      
-        titles[ 'Name' ] = 'name'
-        titles[ 'CPU' ] = 'cpu'
-        titles[ 'Memory' ] = ( 'mem', memoryFormatter )
-        titles[ 'State' ] = ( 'state', stateFormatter )
-        titles[ 'Total CPU' ] = ( 'cpu_time', smallTimeFormatter )
-        titles[ 'Up Time' ] = ( 'up_time', bigTimeFormatter )
-    
-        GeneralTab.__init__( self, {}, titles )
-        
-    def write_BODY( self, request ):
-    
-        self.dom = getVar('dom', request)
-        
-        if self.dom is None:
-            request.write( "<p>Please Select a Domain</p>" )
-            return None
-            
-        self.dict = getDomInfo( self.dom )
-        
-        GeneralTab.write_BODY( self, request )
-            
-class DomSXPTab( PreTab ):
-
-    def __init__( self, _ ):
-        self.dom = 0
-        PreTab.__init__( self, "" )
-
-
-    def write_BODY( self, request ):
-        self.dom = getVar('dom', request)
-        
-        if self.dom is None:
-            request.write( "<p>Please Select a Domain</p>" )
-            return None
-
-        try:
-            domInfo = server.xend_domain( self.dom )
-        except:
-            domInfo = [["Error getting domain details."]]
-            
-        self.source = sxp2prettystring( domInfo )
-        
-        PreTab.write_BODY( self, request )
-       
-class DomActionTab( ActionTab ):
-
-    def __init__( self, _ ):
-       actions = { "shutdown" : "Shutdown",
-                   "reboot" : "Reboot",
-                    "pause" : "Pause",
-                    "unpause" : "Unpause",
-                    "destroy" : "Destroy" }
-        ActionTab.__init__( self, actions )    
-        
-    def op_shutdown( self, request ):
-       dom = getVar( 'dom', request )
-        if not dom is None and dom != '0':
-          if DEBUG: print ">DomShutDown %s" % dom
-           try:
-               server.xend_domain_shutdown( int( dom ), "poweroff" )
-           except:
-               pass
-    
-    def op_reboot( self, request ):
-               dom = getVar( 'dom', request )
-        if not dom is None and dom != '0':
-           if DEBUG: print ">DomReboot %s" % dom
-            try:
-               server.xend_domain_shutdown( int( dom ), "reboot" )
-            except:
-               pass
-                
-    def op_pause( self, request ):
-               dom = getVar( 'dom', request )
-        if not dom is None and dom != '0':
-           if DEBUG: print ">DomPause %s" % dom
-            try:
-                server.xend_domain_pause( int( dom ) )
-            except:
-               pass
-               
-    def op_unpause( self, request ):
-               dom = getVar( 'dom', request )
-        if not dom is None and dom != '0':
-          if DEBUG: print ">DomUnpause %s" % dom
-           try:
-               server.xend_domain_unpause( int( dom ) )
-          except:
-               pass
-               
-    def op_destroy( self, request ):
-       dom = getVar( 'dom', request )
-        if not dom is None and dom != '0':
-          if DEBUG: print ">DomDestroy %s" % dom
-           try:
-               server.xend_domain_destroy(int( dom ))
-           except:
-               pass
-
-class DomDeviceTab( CompositeTab ):
-
-    def __init__( self, urlWriter ):
-        CompositeTab.__init__( self, [ DomDeviceListTab, DomDeviceOptionsTab, 
DomDeviceActionTab ], urlWriter )
-
-class DomDeviceListTab( NullTab ):
-
-    title = "Device List"
-
-    def __init__( self, _ ):
-        pass
-
-class DomDeviceOptionsTab( NullTab ):
-
-    title = "Device Options"
-
-    def __init__( self, _ ):
-        pass
-
-class DomDeviceActionTab( ActionTab ):
-
-    def __init__( self, _ ):
-        ActionTab.__init__( self, { "addvcpu" : "Add VCPU", "addvbd" : "Add 
VBD", "addvif" : "Add VIF" } )
-
-class DomMigrateTab( CompositeTab ):
-
-    def __init__( self, urlWriter ):
-        CompositeTab.__init__( self, [ DomMigrateExtraTab, DomMigrateActionTab 
], urlWriter ) 
-
-class DomMigrateExtraTab( Sheet ):
-
-    def __init__( self, urlWriter ):
-        Sheet.__init__( self, urlWriter, "Configure Migration", 0)
-        self.addControl( TickControl('live', 'True', 'Live migrate:') )
-        self.addControl( InputControl('rate', '0', 'Rate limit:') )
-        self.addControl( InputControl( 'dest', 'host.domain', 'Name or IP 
address:', ".*") )
-                                                                               
                             
-class DomMigrateActionTab( ActionTab ):
-
-    def __init__( self, _ ):
-        actions = { "migrate" : "Migrate" }
-        ActionTab.__init__( self, actions )
-                
-    def op_migrate( self, request ):
-        try:
-            domid = int( getVar( 'dom', request ) )
-            live  = getVar( 'live', request )
-            rate  = getVar( 'rate', request )
-            dest  = getVar( 'dest', request )
-            dom_sxp = server.xend_domain_migrate( domid, dest, live == 'True', 
rate )
-            success = "Your domain was successfully Migrated.\n"
-        except Exception, e:
-            success = "There was an error migrating your domain\n"
-            dom_sxp = str(e)
-                                                        
-class DomSaveTab( CompositeTab ):
-
-    def __init__( self, urlWriter ):
-        CompositeTab.__init__( self, [ DomSaveExtraTab, DomSaveActionTab ], 
urlWriter ) 
-
-class DomSaveExtraTab( Sheet ):
-
-    title = "Save location"
-
-    def __init__( self, urlWriter ):
-        Sheet.__init__( self, urlWriter, "Save Domain to file", 0 )
-        self.addControl( InputControl( 'file', '', 'Suspend file name:', ".*") 
)
-               
-class DomSaveActionTab( ActionTab ):
-
-    def __init__( self, _ ):
-        actions = { "save" : "Save" }
-        ActionTab.__init__( self, actions )
-
-    def op_save( self, request ):
-
-        try:
-            dom_sxp = server.xend_domain_save( config['domid'], config['file'] 
)
-            success = "Your domain was successfully saved.\n"
-        except Exception, e:
-            success = "There was an error saving your domain\n"
-            dom_sxp = str(e)
-                                                                               
        
-        try:
-            dom = int( getVar( 'dom', request ) )
-        except:
-            pass
diff --git a/tools/python/xen/sv/GenTabbed.py b/tools/python/xen/sv/GenTabbed.py
deleted file mode 100755
index 6631663..0000000
--- a/tools/python/xen/sv/GenTabbed.py
+++ /dev/null
@@ -1,147 +0,0 @@
-import types
-
-from xen.sv.HTMLBase import HTMLBase
-from xen.sv.util import getVar
-
-class GenTabbed( HTMLBase ):
-
-    def __init__( self, title, urlWriter, tabStrings, tabObjects ):
-        HTMLBase.__init__(self)
-        self.tabStrings = tabStrings
-        self.tabObjects = tabObjects
-        self.urlWriter = urlWriter
-        self.title = title
-        
-    def write_BODY( self, request ):
-        if not self.__dict__.has_key( "tab" ):
-            try:
-                self.tab = int( getVar( 'tab', request, 0 ) )
-            except:
-                self.tab = 0
-            
-        request.write( "\n<div class='title'>%s</div>" % self.title )
-        
-        TabView( self.tab, self.tabStrings, self.urlWriter ).write_BODY( 
request )
-        
-        try:
-            request.write( "\n<div class='tab'>" )
-            render_tab = self.tabObjects[ self.tab ]
-            render_tab( self.urlWriter ).write_BODY( request )
-            request.write( "\n</div>" )
-        except Exception, e:
-            request.write( "\n<p>Error Rendering Tab</p>" )
-            request.write( "\n<p>%s</p>" % str( e ) )
-
-        request.write( "\n<input type=\"hidden\" name=\"tab\" value=\"%d\">" % 
self.tab )
-
-    def perform( self, request ):
-        request.write( "Tab> perform" )
-        request.write( "<br/>op: " + str( getVar( 'op', request ) ) )
-        request.write( "<br/>args: " + str( getVar( 'args', request ) ) )
-        request.write( "<br/>tab: " + str( getVar( 'tab', request ) ) )      
-
-        try:
-            action = getVar( 'op', request, 0 )
-            if action == "tab":
-                self.tab = int( getVar( 'args', request ) )
-            else:
-                this.tab = int( getVar( 'tab', request, 0 ) )
-                self.tabObjects[ self.tab ]( self.urlWriter ).perform( request 
)
-        except:
-            pass
-        
-class PreTab( HTMLBase ):
-
-    def __init__( self, source ):
-        HTMLBase.__init__( self )
-        self.source = source
-    
-    def write_BODY( self, request ):
-        request.write( "\n<pre>" )
-        request.write( self.source )
-        request.write( "\n</pre>" )
-
-class GeneralTab( HTMLBase ):
-                        
-    def __init__( self, dict, titles ):
-        HTMLBase.__init__( self )
-        self.dict = dict
-        self.titles = titles
-                        
-    def write_BODY( self, request ): 
-        
-        request.write( "\n<table width='100%' cellspacing='0' cellpadding='0' 
border='0'>" )
-        
-        def writeAttr( niceName, attr, formatter=None ):
-            if type( attr ) is types.TupleType:
-                ( attr, formatter ) = attr
-            
-            if attr in self.dict:
-                if formatter:
-                    temp = formatter( self.dict[ attr ] )
-                else:
-                    temp = str( self.dict[ attr ] )
-                request.write( "\n<tr><td width='50%%'><p>%s:</p></td><td 
width='50%%'><p>%s</p></td></tr>" % ( niceName, temp ) )
-        
-        for niceName, attr in self.titles.items():
-            writeAttr( niceName, attr )
-                            
-        request.write( "</table>" )
-
-class NullTab( HTMLBase ):
-    
-    def __init__( self, title="Null Tab" ):
-        HTMLBase.__init__( self )
-        self.title = title
-
-    def write_BODY( self, request ):
-        request.write( "\n<p>%s</p>" % self.title )
-
-class ActionTab( HTMLBase ):
-
-    def __init__( self, actions ):
-        self.actions = actions
-        HTMLBase.__init__( self )
-        
-    def write_BODY( self, request ):
-        for item in self.actions.items():
-            try:
-                ((op, attr), title) = item
-            except:
-                (op, title) = item
-                attr = ""
-            request.write( "\n<div class='button' onclick=\"doOp2( '%s', '%s' 
)\">%s</a></div>" % (op, attr, title) )
-
-class CompositeTab( HTMLBase ):
-
-    def __init__( self, tabs, urlWriter ):
-       HTMLBase.__init__( self )
-        self.tabs = tabs
-        self.urlWriter = urlWriter
-        
-    def write_BODY( self, request ):
-       for tab in self.tabs:
-            tab( self.urlWriter ).write_BODY( request )
-            
-    def perform( self, request ):
-       for tab in self.tabs:
-            tab( self.urlWriter ).perform( request )
-
-class TabView( HTMLBase ):
-
-        # tab - int, id into tabs of selected tab
-        # tabs - list of strings, tab names
-        # urlWriter -
-        def __init__( self, tab, tabs, urlWriter ):
-            HTMLBase.__init__(self)
-            self.tab = tab
-            self.tabs = tabs
-            self.urlWriter = urlWriter
-
-        def write_BODY( self, request ):
-            for i in range( len( self.tabs ) ):
-                if self.tab == i:
-                    at = " id='activeTab'"
-                else:
-                    at = ""
-                request.write( "\n<div%s class='tabButton' onclick=\"doOp2( 
'tab', '%d' )\">%s</div>" % ( at, i, self.tabs[ i ] ) )
diff --git a/tools/python/xen/sv/HTMLBase.py b/tools/python/xen/sv/HTMLBase.py
deleted file mode 100755
index d0fca13..0000000
--- a/tools/python/xen/sv/HTMLBase.py
+++ /dev/null
@@ -1,53 +0,0 @@
-from xen.sv.util import *
-
-class HTMLBase:
-
-    isLeaf = True
- 
-    def __init__( self ):
-        pass
-
-    def render_POST( self, request ):
-        self.perform( request )
-        return self.render_GET( request )
-        
-    def render_GET( self, request ):
-        pass
-    
-    def write_BODY( self, request ):
-        pass
-        
-    def write_TOP( self, request ):
-        pass
-    
-    def write_BOTTOM( self, request ):
-        pass
-    
-    def get_op_method(self, op):
-        """Get the method for an operation.
-        For operation 'foo' looks for 'op_foo'.
-
-        op     operation name
-        returns method or None
-        """
-        op_method_name = 'op_' + op
-        return getattr(self, op_method_name, None)
-        
-    def perform(self, req):
-        """General operation handler for posted operations.
-        For operation 'foo' looks for a method op_foo and calls
-        it with op_foo(req). Replies with code 500 if op_foo
-        is not found.
-
-        The method must return a list when req.use_sxp is true
-        and an HTML string otherwise (or list).
-        Methods may also return a Deferred (for incomplete processing).
-
-        req    request
-        """
-        op = req.args.get('op')
-        if not op is None and len(op) == 1:
-            op = op[0]
-            op_method = self.get_op_method(op)
-            if op_method:
-                op_method( req )   
diff --git a/tools/python/xen/sv/Main.py b/tools/python/xen/sv/Main.py
deleted file mode 100755
index ea62af1..0000000
--- a/tools/python/xen/sv/Main.py
+++ /dev/null
@@ -1,82 +0,0 @@
-
-from xen.sv.NodeInfo import NodeInfo
-from xen.sv.DomInfo  import DomInfo
-from xen.sv.CreateDomain import CreateDomain
-from xen.sv.RestoreDomain import RestoreDomain
-
-from xen.sv.util import getVar
-
-# adapter to make this all work with mod_python
-# as opposed to Twisted
-# (c) Tom Wilkie 2005
-
-class Args:
-    def __init__( self, req ):
-        from mod_python.util import FieldStorage
-        self.fieldStorage = FieldStorage( req, True )
-
-    # return a list of values for the given key,
-    # or None if key not there
-    def get( self, var ):
-        retVar = self.fieldStorage.getlist( var )
-        if len( retVar ) == 0:
-            return None
-        else:
-            return retVar
-
-    # return a list of tuples,
-    # (key, value) where value is a list of values
-    def items( self ):
-        result = [];
-        for key in self.fieldStorage.keys():
-            result.append( (key, self.fieldStorage.getlist( key ) ) )
-        return result
-                                                                               
                                                                             
-# This is the Main class
-# It pieces together all the modules
-
-class Main:
-    def __init__( self ):
-        self.modules = { "node": NodeInfo, 
-                         "create": CreateDomain,
-                         "restore" : RestoreDomain,
-                         "info": DomInfo }
-
-        self.init_done = False
-
-    def init_modules( self, request ):
-        for moduleName, module in self.modules.iteritems():
-            self.modules[ moduleName ] = module( self.urlWriter( moduleName, 
request.url ) )             
-
-    def render_menu( self, request ):
-        if not self.init_done:
-            self.init_modules( request )
-            self.init_done = True
-            
-        for _, module in self.modules.iteritems():
-            module.write_MENU( request )
-            request.write( "\n" )
-
-    def render_main( self, request ):
-        if not self.init_done:
-            self.init_modules( request )
-            self.init_done = True
-                                   
-        moduleName = getVar('mod', request)
-        if moduleName not in self.modules:
-            request.write( '<p>Please select a module</p>' )
-        else:
-            module = self.modules[ moduleName ]
-            module.write_BODY( request )
-
-    def do_POST( self, request ): 
-        if not self.init_done:
-            self.init_modules( request )
-            self.init_done = True                       
-        
-       moduleName = getVar( 'mod', request )      
-        if moduleName in self.modules:
-            self.modules[ moduleName ].perform( request )
-
-    def urlWriter( self, module, url ):
-        return lambda x: "%s?mod=%s%s" % ( url, module, x )
diff --git a/tools/python/xen/sv/NodeInfo.py b/tools/python/xen/sv/NodeInfo.py
deleted file mode 100755
index f8b47b1..0000000
--- a/tools/python/xen/sv/NodeInfo.py
+++ /dev/null
@@ -1,73 +0,0 @@
-from xen.xend.XendClient import server
-
-from xen.sv.util import *
-from xen.sv.GenTabbed import *
-
-class NodeInfo( GenTabbed ):
-
-    def __init__( self, urlWriter ):  
-        GenTabbed.__init__( self, "Node Details", urlWriter, [ 'General', 
'Dmesg', 'SXP' ], [ NodeGeneralTab, NodeDmesgTab, NodeSXPTab ] )
-    
-    def write_MENU( self, request ):
-        request.write( "<p class='small'><a href='%s'>Node details</a></p>" % 
self.urlWriter( '' ) )
-
-class NodeGeneralTab( CompositeTab ):
-    def __init__( self, urlWriter ):
-       CompositeTab.__init__( self, [ NodeInfoTab, NodeActionTab ], urlWriter 
)        
-        
-class NodeInfoTab( GeneralTab ):
-                        
-    def __init__( self, urlWriter ):
-         
-       nodeInfo = {}
-        try:
-            nodeInfo = sxp2hash( server.xend_node() )
-       except:
-            nodeInfo[ 'system' ] = 'Error getting node info'
-             
-        dictTitles = {}
-        dictTitles[ 'System' ] = 'system'
-        dictTitles[ 'Hostname' ] = 'host' 
-        dictTitles[ 'Release' ] = 'release' 
-        dictTitles[ 'Version' ] ='version' 
-        dictTitles[ 'Machine' ] = 'machine' 
-        dictTitles[ 'Cores' ] = 'cores' 
-        dictTitles[ 'Hyperthreading' ] = ( 'hyperthreads_per_core', 
hyperthreadFormatter )
-        dictTitles[ 'CPU Speed' ] = ( 'cpu_mhz', cpuFormatter )
-        dictTitles[ 'Memory' ] = ( 'memory', memoryFormatter )
-        dictTitles[ 'Free Memory' ] = ( 'free_memory', memoryFormatter )
-        
-        GeneralTab.__init__( self, dict=nodeInfo, titles=dictTitles )
-
-class NodeDmesgTab( PreTab ):
-
-    def __init__( self, urlWriter ):
-       try:
-            dmesg = server.xend_node_get_dmesg()
-        except:
-            dmesg = "Error getting node information: XenD not running?"
-        PreTab.__init__( self, dmesg )
-  
-class NodeActionTab( ActionTab ):
-
-    def __init__( self, urlWriter ):
-        ActionTab.__init__( self, { "shutdown" : "shutdown",
-               "reboot" : "reboot" } )    
-        
-    def op_shutdown( self, request ):
-        if debug: print ">NodeShutDown"
-       server.xend_node_shutdown()
-    
-    def op_reboot( self, request ):
-        if debug: print ">NodeReboot"
-        server.xend_node_reboot()
-
-class NodeSXPTab( PreTab ):
-
-    def __init__( self, urlWriter ):
-        try:
-            nodeSXP = sxp2string( server.xend_node() )
-        except:
-            nodeSXP = 'Error getting node sxp'
-
-        PreTab.__init__( self, nodeSXP )
diff --git a/tools/python/xen/sv/RestoreDomain.py 
b/tools/python/xen/sv/RestoreDomain.py
deleted file mode 100755
index b836a43..0000000
--- a/tools/python/xen/sv/RestoreDomain.py
+++ /dev/null
@@ -1,50 +0,0 @@
-from xen.sv.Wizard import *
-from xen.sv.util import *
-from xen.sv.GenTabbed import PreTab
-
-from xen.xm.create import make_config, OptVals
-
-from xen.xend.XendClient import server
-
-class RestoreDomain( Wizard ):
-    def __init__( self, urlWriter ):
-
-        sheets = [ ChooseRestoreDomain,
-                   DoRestore ]
-
-        Wizard.__init__( self, urlWriter, "Restore Domain", sheets )
-
-
-class ChooseRestoreDomain( Sheet ):
-    title = "Configure Restore"
-
-    def __init__( self, urlWriter ):
-        Sheet.__init__( self, urlWriter, "Configure Restore", 0)
-        
-        self.addControl( InputControl( 'file', '',
-                                       'Suspend file name:',
-                                       ".*") )
-
-class DoRestore( Sheet ):
-    title = "Restore Done"
-    
-    def __init__(self, urlWriter ):
-        Sheet.__init__(self, urlWriter, "Restore Done", 1)
-
-    def write_BODY( self, request, err ):
-
-        if not self.passback: self.parseForm( request )
-        config = ssxp2hash ( string2sxp( self.passback ) )
-      
-        try:
-            dom_sxp = server.xend_domain_restore( config['file'] )
-            success = "Your domain was successfully restored.\n"
-        except Exception, e:
-            success = "There was an error restoring your domain\n"
-            dom_sxp = str(e)
-        
-        pt = PreTab( success + sxp2prettystring( dom_sxp ) )
-        pt.write_BODY( request )
-
-        request.write( "<input type='hidden' name='passback' 
value=\"%s\"></p>" % self.passback )
-        request.write( "<input type='hidden' name='sheet' value='%s'></p>" % 
self.location )
diff --git a/tools/python/xen/sv/Wizard.py b/tools/python/xen/sv/Wizard.py
deleted file mode 100755
index c4ac53b..0000000
--- a/tools/python/xen/sv/Wizard.py
+++ /dev/null
@@ -1,245 +0,0 @@
-from xen.sv.util import *
-from xen.sv.HTMLBase import HTMLBase
-from xen.sv.GenTabbed import GenTabbed, ActionTab
-from xen.xend import sxp
-
-import re
-
-DEBUG = 0
-
-class Wizard( GenTabbed ):
-
-    def __init__( self, urlWriter, title, sheets ):
-        self.title = title
-        self.sheets = sheets
-        self.urlWriter = urlWriter
-        self.offset = 0
-        GenTabbed.__init__( self, title, urlWriter, map( lambda x: x.title, 
sheets ), sheets ) 
-        
-    def write_MENU( self, request ):
-       request.write( "<p class='small'><a href='%s'>%s</a></p>" % 
(self.urlWriter( '' ), self.title) ) 
-    
-    def write_BODY( self, request ):
-        GenTabbed.write_BODY( self, request )
-        actionTab = ActionTab( { ("tab", str(self.tab-1)) : "< Prev", ("tab", 
str(self.tab+1)) : "Next >", "finish" : "Finish" } )
-        actionTab.write_BODY( request )
-
-    def perform( self, request ):
-        try:
-            action = getVar( 'op', request, 0 )
-            if action == "tab":
-                self.tab = int( getVar( 'args', request ) )
-                oldtab = int( getVar( 'tab', request ) )
-                if not self.tabObjects[ oldtab ]( self.urlWriter ).validate( 
request ):
-                    self.tab = oldtab
-            else:
-                self.tab = int( getVar( 'tab', request, 0 ) )
-                self.tabObjects[ self.tab ]( self.urlWriter ).perform( request 
)
-                getattr( self, "op_" +  getVar( "op", request ), None )( 
request )
-        except:
-            pass
-            
-    def op_finish( self, request ):
-       pass  
-        
-class Sheet( HTMLBase ):
-
-    def __init__( self, urlWriter, title, location ):
-        HTMLBase.__init__( self )
-        self.urlWriter = urlWriter
-        self.fields = []
-        self.title = title
-        self.location = location
-        self.passback = None
-        
-    def parseForm( self, request ):
-       do_not_parse = [ 'mod', 'op', 'passback' ] 
-    
-       passed_back = request.args
-        
-        temp_passback = passed_back.get( "passback" )
-        
-        if temp_passback is not None and len( temp_passback ) > 0:
-            temp_passback = temp_passback[ len( temp_passback )-1 ]
-        else:
-            temp_passback = "( )"        
-        
-        last_passback = ssxp2hash( string2sxp( temp_passback ) ) #use special 
function - will work with no head on sxp
-        
-        if DEBUG: print last_passback
-        
-        for (key, value) in passed_back.items():
-            if key not in do_not_parse:
-                last_passback[ key ] = value[ len( value ) - 1 ]
-                
-        self.passback = sxp2string( hash2sxp( last_passback ) ) #store the sxp
-        
-        if DEBUG: print self.passback
-        
-    def write_BODY( self, request ):
-    
-       if not self.passback: self.parseForm( request )
-        
-       request.write( "<p>%s</p>" % self.title )
-    
-       previous_values = ssxp2hash( string2sxp( self.passback ) ) #get the 
hash for quick reference
-        
-        request.write( "<table width='100%' cellpadding='0' cellspacing='1' 
border='0'>" )
-        
-       for (field, control) in self.fields:
-            control.write_Control( request, previous_values.get( field ) )
-            if previous_values.get( field ) is not None and not 
control.validate( previous_values.get( field ) ):
-               control.write_Help( request )
-            
-        request.write( "</table>" )
-            
-        request.write( "<input type='hidden' name='passback' 
value=\"%s\"></p>" % self.passback )
-        #request.write( "<input type='hidden' name='visited-sheet%s' 
value='True'></p>" % self.location )
-                
-    def addControl( self, control ):
-       self.fields.append( [ control.getName(), control ] )
-        
-    def validate( self, request ):
-    
-        if not self.passback: self.parseForm( request )
-            
-       check = True
-        
-        previous_values = ssxp2hash( string2sxp( self.passback ) ) #get the 
map for quick reference
-       if DEBUG: print previous_values
-      
-       for (field, control) in self.fields:
-            if not control.validate( previous_values.get( field ) ):
-                check = False
-                if DEBUG: print "> %s = %s" % (field, previous_values.get( 
field ))
-
-        return check
-        
-class SheetControl( HTMLBase ):
-
-    def __init__( self, reg_exp = ".*" ):
-        HTMLBase.__init__( self )
-        self.name = ""
-        self.reg_exp = reg_exp 
-        
-    def write_Control( self, request, persistedValue ):
-        request.write( "<tr colspan='2'><td>%s</td></tr>" % persistedValue )
-        
-    def write_Help( self, request ):
-        request.write( "<tr><td align='right' colspan='2'><p 
class='small'>Text must match pattern:" )
-        request.write( " %s</p></td></tr>" % self.reg_exp )
-        
-    def validate( self, persistedValue ):
-       if persistedValue is None:
-            persistedValue = ""
-            
-        return not re.compile( self.reg_exp ).match( persistedValue ) is None
-
-    def getName( self ):
-       return self.name
-        
-    def setName( self, name ):
-       self.name = name
-        
-class InputControl( SheetControl ):
-
-    def __init__( self, name, defaultValue, humanText,  reg_exp = ".*", 
help_text = "You must enter the appropriate details in this field." ):
-        SheetControl.__init__( self, reg_exp )
-        self.setName( name )
-        
-        self.defaultValue = defaultValue
-        self.humanText = humanText
-        self.help_text = help_text
-        
-    def write_Control( self, request, persistedValue ):
-       if persistedValue is None:
-            persistedValue = self.defaultValue
-        
-        request.write( "<tr><td width='50%%'><p>%s</p></td><td 
width='50%%'><input size='40'type='text' name='%s' value=\"%s\"></td></tr>" % 
(self.humanText, self.getName(), persistedValue) )
-
-    def write_Help( self, request ):
-        request.write( "<tr><td align='right' colspan='2'><p class='small'>" )
-        request.write( " %s</p></td></tr>" % self.help_text )         
-        
-class TextControl( SheetControl ):
-
-    def __init__( self, text ):
-       SheetControl.__init__( self )
-        self.text = text
-        
-    def write_Control( self, request, persistedValue ):
-       request.write( "<tr><td colspan='2'><p>%s</p></td></tr>" % self.text )
-
-class SmallTextControl( SheetControl ):
-
-    def __init__( self, text ):
-       SheetControl.__init__( self )
-        self.text = text
-        
-    def write_Control( self, request, persistedValue ):
-       request.write( "<tr><td colspan='2'><p class='small'>%s</p></tr></td>" 
% self.text )
-        
-class ListControl( SheetControl ):
-
-    def __init__( self, name, options, humanText ):
-       SheetControl.__init__( self )
-        self.setName( name )
-        self.options = options
-        self.humanText = humanText
-        
-    def write_Control( self, request, persistedValue ):
-        request.write( "<tr><td width='50%%'><p>%s</p></td><td width='50%%'>" 
% self.humanText )
-       request.write( "<select name='%s'>" % self.getName() )
-        for (value, text) in self.options:
-            if value == persistedValue:
-               request.write( "<option value='%s' selected>%s\n" % (value, 
text) )
-            else:
-                request.write( "<option value='%s'>%s\n" % (value, text) )
-        request.write( "</select></td></tr>" )
-
-    def validate( self, persistedValue ):
-        for (value, text) in self.options:
-            if value == persistedValue:
-                return True
-                
-        return False
-        
-class FileControl( InputControl ):
-
-    def __init__( self, name, defaultValue, humanText,  reg_exp = ".*", 
help_text = "You must enter the appropriate details in this field." ):
-       InputControl.__init__( self, name, defaultValue, humanText )
-        
-    def validate( self, persistedValue ):
-        if persistedValue is None: return False
-        try:
-            open( persistedValue )
-            return True
-        except IOError, TypeError:
-            return False
-    
-    def write_Help( self, request ):
-        request.write( "<tr><td colspan='2' align='right'><p 
class='small'>File does not exist: you must enter a valid, absolute file 
path.</p></td></tr>" )
-
-class TickControl( SheetControl ):
-
-    def __init__( self, name, defaultValue, humanText ):
-        SheetControl.__init__( self )
-        self.setName( name )
-        self.defaultValue = defaultValue
-        self.humanText = humanText
-        
-    def write_Control( self, request, persistedValue ):
-        request.write( "<tr><td width='50%%'><p>%s</p></td><td width='50%%'>" 
% self.humanText )
-
-        #request.write( str( persistedValue ) )
-
-        #TODO: Theres a problem with this: it doesn't persist an untick, 
because the browsers don't pass it back. Need a fix...
-        
-        if persistedValue == 'True':
-           request.write( "<input type='checkbox' name='%s' value='True' 
checked>" % self.getName() )
-        else:
-           request.write( "<input type='checkbox' name='%s' value='True'>" % 
self.getName() )
-            
-        request.write( "</td></tr>" )
-
-      
diff --git a/tools/python/xen/sv/__init__.py b/tools/python/xen/sv/__init__.py
deleted file mode 100755
index 8d1c8b6..0000000
--- a/tools/python/xen/sv/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
- 
diff --git a/tools/python/xen/sv/util.py b/tools/python/xen/sv/util.py
deleted file mode 100755
index cfed397..0000000
--- a/tools/python/xen/sv/util.py
+++ /dev/null
@@ -1,126 +0,0 @@
-from xen.xend.XendClient import server
-from xen.xend import sxp
-from xen.xend import PrettyPrint
-
-import types
-
-def getDomInfo( domain ):
-    domInfoHash = {}
-    try:
-        domInfoHash = sxp2hash( server.xend_domain( domain ) )
-        domInfoHash['dom'] = domain
-    except:
-       domInfoHash['name'] = "Error getting domain details"
-    return domInfoHash
-
-def sxp2hash( s ):
-    sxphash = {}
-        
-    for child in sxp.children( s ):
-       if isinstance( child, types.ListType ) and len( child ) > 1:
-            if isinstance( child[1], types.ListType ) and len( child ) > 1:
-                sxphash[ child[0] ] = sxp2hash( child[1] )
-            else:
-                sxphash[ child[0] ] = child[1]
-        
-    return sxphash  
-    
-def ssxp2hash( s ):
-    sxphash = {}
-    
-    for i in s:
-       if isinstance( i, types.ListType ) and len( i ) > 1:
-          sxphash[ i[0] ] = i[1]
-    
-    return sxphash 
-    
-def hash2sxp( h ):
-    hashsxp = []
-    
-    for (key, item) in h.items():
-       hashsxp.append( [key, item] )
-        
-    return hashsxp    
-    
-def string2sxp( string ):
-    pin = sxp.Parser()
-    pin.input( string )
-    return pin.get_val()    
-
-def sxp2string( sexp ):
-    return sxp.to_string( sexp )    
-    
-def sxp2prettystring( sxp ):
-    class tmp:
-        def __init__( self ):
-                self.str = ""
-        def write( self, str ):
-                self.str = self.str + str
-    temp = tmp()
-    PrettyPrint.prettyprint( sxp, out=temp )
-    return temp.str
-
-def getVar( var, request, default=None ):
-   
-    arg = request.args.get( var )
-
-    if arg is None:
-        return default
-    else:
-        return arg[ len( arg )-1 ]
-
-def bigTimeFormatter( time ):
-    time = float( time )
-    weeks = time // 604800
-    remainder = time % 604800
-    days = remainder // 86400
-    
-    remainder = remainder % 86400
-
-    hms = smallTimeFormatter( remainder )
-    
-    return "%d weeks, %d days, %s" % ( weeks, days, hms )
-
-def smallTimeFormatter( time ):
-    time = float( time )
-    hours = time // 3600
-    remainder = time % 3600
-    mins = remainder // 60
-    secs = time % 60
-    return "%02d:%02d:%04.1f (hh:mm:ss.s)" % ( hours, mins, secs ) 
-
-def stateFormatter( state ):
-    states = [ 'Running', 'Blocked', 'Paused', 'Shutdown', 'Crashed' ]
-    
-    stateStr = ""
-    
-    for i in range( len( state ) ):
-        if state[i] != "-":
-            stateStr += "%s, " % states[ i ] 
-           
-    return stateStr + " (%s)" % state
-
-def memoryFormatter( mem ):
-    mem = int( mem )
-    if mem >= 1024:
-        mem = float( mem ) / 1024
-        return "%3.2fGb" % mem
-    else:    
-        return "%7dMb" % mem
-
-def cpuFormatter( mhz ):
-    mhz = int( mhz )
-    if mhz > 1000:
-        ghz = float( mhz ) / 1000.0
-        return "%4.2fGHz" % ghz
-    else:
-        return "%4dMHz" % mhz
-        
-def hyperthreadFormatter( threads ):
-    try:
-        if int( threads ) > 1:
-            return "Yes"
-        else:
-            return "No"
-    except:
-        return "No"
diff --git a/tools/sv/Makefile b/tools/sv/Makefile
deleted file mode 100644
index c9ae1de..0000000
--- a/tools/sv/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-
-.PHONY: all
-all:
diff --git a/tools/sv/images/destroy.png b/tools/sv/images/destroy.png
deleted file mode 100755
index 9545fc4..0000000
Binary files a/tools/sv/images/destroy.png and /dev/null differ
diff --git a/tools/sv/images/finish.png b/tools/sv/images/finish.png
deleted file mode 100755
index 6c5d18a..0000000
Binary files a/tools/sv/images/finish.png and /dev/null differ
diff --git a/tools/sv/images/next.png b/tools/sv/images/next.png
deleted file mode 100755
index da10bbf..0000000
Binary files a/tools/sv/images/next.png and /dev/null differ
diff --git a/tools/sv/images/pause.png b/tools/sv/images/pause.png
deleted file mode 100755
index 6e16daa..0000000
Binary files a/tools/sv/images/pause.png and /dev/null differ
diff --git a/tools/sv/images/previous.png b/tools/sv/images/previous.png
deleted file mode 100755
index 22292d6..0000000
Binary files a/tools/sv/images/previous.png and /dev/null differ
diff --git a/tools/sv/images/reboot.png b/tools/sv/images/reboot.png
deleted file mode 100755
index 358e6de..0000000
Binary files a/tools/sv/images/reboot.png and /dev/null differ
diff --git a/tools/sv/images/shutdown.png b/tools/sv/images/shutdown.png
deleted file mode 100755
index 48a52dc..0000000
Binary files a/tools/sv/images/shutdown.png and /dev/null differ
diff --git a/tools/sv/images/small-destroy.png 
b/tools/sv/images/small-destroy.png
deleted file mode 100755
index f800bd7..0000000
Binary files a/tools/sv/images/small-destroy.png and /dev/null differ
diff --git a/tools/sv/images/small-pause.png b/tools/sv/images/small-pause.png
deleted file mode 100755
index 7bbdbfa..0000000
Binary files a/tools/sv/images/small-pause.png and /dev/null differ
diff --git a/tools/sv/images/small-unpause.png 
b/tools/sv/images/small-unpause.png
deleted file mode 100755
index 6ae5687..0000000
Binary files a/tools/sv/images/small-unpause.png and /dev/null differ
diff --git a/tools/sv/images/unpause.png b/tools/sv/images/unpause.png
deleted file mode 100755
index c971308..0000000
Binary files a/tools/sv/images/unpause.png and /dev/null differ
diff --git a/tools/sv/images/xen.png b/tools/sv/images/xen.png
deleted file mode 100755
index 344c361..0000000
Binary files a/tools/sv/images/xen.png and /dev/null differ
diff --git a/tools/sv/inc/script.js b/tools/sv/inc/script.js
deleted file mode 100755
index ebafa1e..0000000
--- a/tools/sv/inc/script.js
+++ /dev/null
@@ -1,31 +0,0 @@
-function update( objRef, text ) {
-    if ( document.all || document.getElementById ) {
-        obj = ( document.getElementById )? document.getElementById( objRef ) : 
document.all( objRef );
-        obj.innerHTML= text
-    }
-}
-
-function buttonMouseOver( objRef ) {
-    if ( document.all || document.getElementById ) {
-        obj = ( document.getElementById )? document.getElementById( objRef ) : 
document.all( objRef );
-        objRef.style.background = "white";
-    }
-}
-
-function buttonMouseOut( objRef ) {
-    if ( document.all || document.getElementById ) {
-        obj = ( document.getElementById )? document.getElementById( objRef ) : 
document.all( objRef );
-        objRef.style.background = "grey";
-    }
-}
-
-function doOp( op ) {
-    document.forms[0].op.value = op
-    document.forms[0].submit()
-}
-
-function doOp2( op, args ) {
-    document.forms[0].op.value = op
-    document.forms[0].args.value = args
-    document.forms[0].submit()
-}
diff --git a/tools/sv/inc/style.css b/tools/sv/inc/style.css
deleted file mode 100755
index 1606b21..0000000
--- a/tools/sv/inc/style.css
+++ /dev/null
@@ -1,95 +0,0 @@
-.small  {
-       font-size: 10px
-}
-
-TD.domainInfo     { 
-       font-size: 10px; 
-       color: black
-}
-
-TD.domainInfoHead {
-       font-size: 10px; 
-       color: white; 
-       font-face: bold
-}
-
-TD.domainInfoHead {background-color: black}
-TR.domainInfoOdd  {background-color: white}
-TR.domainInfoEven {background-color: lightgrey}
-
-body { 
-       margin:         0px;
-       padding:        0px;
-       font-family:    Arial, Helvetica, sans-serif;
-       font-size:      12px;
-       color:          #000000;
-}
-
-div#menu {
-        position:       absolute;
-        left:           10px;
-        top:            10px;
-        width:          160px;
-        padding:        10px;
-        border:         0px solid black;
-        text-align:     center;
-}
-
-div#main {
-        position:       absolute;
-        left:           200px;
-        top:            10px;
-        right:          10px;
-        padding:        10px;
-        border:         0px solid black;
-}
-
-div.button {
-        float:          right;
-        margin:         10px 0px 0px 10px;
-        padding:        5px;
-        text-align:     center;
-        border:         1px solid black;
-        background:     gray;
-       cursor:         hand;
-}
-
-div.tabButton {
-       position:       relative;
-       top:            0px;
-        float:          left;
-        margin:         0px 10px -1px 0px;
-        padding:        5px;
-        text-align:     center;
-        border:         1px solid black;
-        background:     gray;
-       cursor:         hand;
-}
-
-div.tabButton#activeTab {
-       top:            0px;
-        background:     white;
-        border-color:   black black white black;
-}
-
-div.button:hover, div.tabButton:hover {
-        background:     white;
-}
-
-div.button a, div.tabButton a {
-        font-size:      12px;
-       font-weight:    bold;
-}
-
-div.title {
-       float:          right;
-       font-size:      14px;
-       font-weight:    bold;
-}
-
-div.tab {
-        overflow:       auto;
-        clear:          both;
-        border:         1px solid black;
-        padding:        10px;
-}
diff --git a/tools/sv/index.psp b/tools/sv/index.psp
deleted file mode 100755
index 829d468..0000000
--- a/tools/sv/index.psp
+++ /dev/null
@@ -1,34 +0,0 @@
-<%
-import sys
-
-debug = True and False
-
-for path in sys.path:
-    if debug: req.write( path + "<br/>" )
-
-from xen.sv.Main import Main, TwistedAdapter
-
-main = Main()
-request = TwistedAdapter( req )
-main.do_POST( request )
-%>
-<html>
-<head>
-       <title>XenSV</title>
-       <script src="inc/script.js"></script>
-       <link rel="StyleSheet" type="text/css" href="inc/style.css">
-</head>
-<body>
-    <form method="post" action="<%=request.uri%>">
-        <div id="menu">
-               <img src="images/xen.png">
-               <% main.render_menu( request ) %>
-       </div>
-       <div id="main">
-               <% main.render_main( request ) %>
-       </div>
-       <input type="hidden" name="op" value="">
-        <input type="hidden" name="args" value="">
-    </form>
-</body>
-</html>
--
generated by git-patchbot for /home/xen/git/xen.git#master

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.