dominfo.py

来自「xen 3.2.2 源码」· Python 代码 · 共 269 行

PY
269
字号
from xen.xend.XendClient import serverfrom xen.xend import PrettyPrintfrom xen.sv.HTMLBase import HTMLBasefrom xen.sv.util import *from xen.sv.GenTabbed import *from xen.sv.Wizard import *DEBUG=1class 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:           	passclass DomDeviceTab( CompositeTab ):    def __init__( self, urlWriter ):        CompositeTab.__init__( self, [ DomDeviceListTab, DomDeviceOptionsTab, DomDeviceActionTab ], urlWriter )class DomDeviceListTab( NullTab ):    title = "Device List"    def __init__( self, _ ):        passclass DomDeviceOptionsTab( NullTab ):    title = "Device Options"    def __init__( self, _ ):        passclass 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

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?