diff --git a/.rootkeys b/.rootkeys index 6c0a76071c..a98b088629 100644 --- a/.rootkeys +++ b/.rootkeys @@ -442,6 +442,7 @@ 40cf2937Z8WCNOnO2FcWdubvEAF9QQ tools/python/xen/xm/shutdown.py 40fcefb2K1xqVVT4D-p7nL2GzS4scg tools/sv/Main.rpy 40ffbcb66Dj5F-1kCK9BcgSqCWkt1w tools/sv/Makefile +4120b0e5L_nW-u0MWRfIdXg4ng4OjA tools/sv/images/destroy.png 4107c921_OR9NTSv2dKFiLCXxrXoxA tools/sv/images/finish.png 40fcefb3wXQMsl9WkgQAVtdrupm4sw tools/sv/images/left-end-highlight.jpg 40fcefb3K6ESt5sQhD9aCQRscQIlXQ tools/sv/images/left-end-no-highlight.jpg @@ -459,6 +460,9 @@ 40fcefb3dgsa24WLk_BJeYQHrDLuOg tools/sv/images/seperator-right-highlight.jpg 40fcefb3FtiX4Pd2kT8wDlp8u8xRhQ tools/sv/images/seperator.jpg 41013a82sUdUqBv8EoAUJii3gsZ-4g tools/sv/images/shutdown.png +4120b0e5RyNoIQNMjUs4A2kshovjaQ tools/sv/images/small-destroy.png +4120b0e6vW66wW6WvjQyFD0AZH2tng tools/sv/images/small-pause.png +4120b0e6USof7ieyGxEvtCdTMpxaQw tools/sv/images/small-unpause.png 4104ffca-jPHLVOrW0n0VghEXXtKxg tools/sv/images/unpause.png 40fcefb3yMSrZvApO9ToIi-iQwnchA tools/sv/images/xen.png 41013a83z27rKvWIxAfUBMVZ1eDCDg tools/sv/inc/script.js diff --git a/tools/python/xen/sv/CreateDomain.py b/tools/python/xen/sv/CreateDomain.py index b4fd52f0e8..77237a3a47 100644 --- a/tools/python/xen/sv/CreateDomain.py +++ b/tools/python/xen/sv/CreateDomain.py @@ -25,6 +25,7 @@ class CreatePage0( Sheet ): 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" ) ) class CreatePage1( Sheet ): @@ -83,9 +84,16 @@ class CreateFinish( Sheet ): xend_sxp = self.translate_sxp( string2sxp( self.passback ) ) - dom_sxp = server.xend_domain_create( xend_sxp ) + try: + dom_sxp = server.xend_domain_create( xend_sxp ) + success = "Your domain was successfully created.\n" + except: + success = "There was an error creating your domain.\nThe configuration used is as follows:\n" + dom_sxp = xend_sxp + + - pt = PreTab( sxp2prettystring( dom_sxp ) ) + pt = PreTab( success + sxp2prettystring( dom_sxp ) ) pt.write_BODY( request ) request.write( "
" % self.passback ) @@ -106,6 +114,7 @@ class CreateFinish( Sheet ): vals.name = get( 'name' ) vals.memory = get( 'memory' ) vals.cpu = get( 'cpu' ) + vals.cpu_weight = get( 'cpu_weight' ) vals.builder = get( 'builder' ) vals.kernel = get( 'kernel' ) @@ -121,7 +130,7 @@ class CreateFinish( Sheet ): vals.disk = vbds - #misc crap + #misc vals.pci = [] @@ -145,4 +154,8 @@ class CreateFinish( Sheet ): vals.cmdline_ip = "%s:%s:%s:%s:%s:eth0:%s" % (ip, nfs, gate, mask, host, dhcp) - return make_config( vals ) + try: + return make_config( vals ) + except: + return [["Error creating domain config."]] + diff --git a/tools/python/xen/sv/DomInfo.py b/tools/python/xen/sv/DomInfo.py index 6f8ac1ab5b..3e4fb70b13 100755 --- a/tools/python/xen/sv/DomInfo.py +++ b/tools/python/xen/sv/DomInfo.py @@ -5,6 +5,8 @@ from xen.sv.HTMLBase import HTMLBase from xen.sv.util import * from xen.sv.GenTabbed import * +DEBUG=1 + class DomInfo( GenTabbed ): def __init__( self, urlWriter ): @@ -76,8 +78,11 @@ class DomSXPTab( PreTab ): request.write( "Please Select a Domain
" ) return None - domInfo = server.xend_domain( self.dom ) - + try: + domInfo = server.xend_domain( self.dom ) + except: + domInfo = [["Error getting domain details."]] + self.source = sxp2prettystring( domInfo ) PreTab.write_BODY( self, request ) @@ -88,32 +93,54 @@ class DomActionTab( ActionTab ): actions = { "shutdown" : ( "Shutdown the Domain", "shutdown.png" ), "reboot" : ( "Reboot the Domain", "reboot.png" ), "pause" : ( "Pause the Domain", "pause.png" ), - "unpause" : ( "Unpause the Domain", "unpause.png" ) } + "unpause" : ( "Unpause the Domain", "unpause.png" ), + "destroy" : ( "Destroy the Domain", "destroy.png" ) } ActionTab.__init__( self, actions ) def op_shutdown( self, request ): dom = getVar( 'dom', request ) - if not dom is None: - print ">DomShutDown %s" % dom - #server.xend_node_shutdown() + if not dom is None and dom != '0': + if DEBUG: print ">DomShutDown %s" % dom + try: + server.xend_domain_shutdown( int( dom ), "halt" ) + except: + pass def op_reboot( self, request ): dom = getVar( 'dom', request ) - if not dom is None: - print ">DomReboot %s" % dom - #server.xend_node_reboot() - + 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: - print ">DomPause %s" % dom - server.xend_domain_pause( int( dom ) ) - + 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: - print ">DomUnpause %s" % dom - server.xend_domain_unpause( int( dom ) ) + 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 ), "halt" ) + except: + pass diff --git a/tools/python/xen/sv/DomList.py b/tools/python/xen/sv/DomList.py index faed020b05..d6e123143e 100755 --- a/tools/python/xen/sv/DomList.py +++ b/tools/python/xen/sv/DomList.py @@ -17,9 +17,14 @@ class DomList( HTMLBase ): def write_BODY( self, request, head=True, long=True ): - domains = map(int, server.xend_domains()) - domains.sort() + domains = None + try: + domains = server.xend_domains() + domains.sort() + except: + pass + request.write( "\n
" % domInfoHash )
+ else:
+ request.write( "
" % domInfoHash )
+
+ request.write( "