bitkeeper revision 1.1159.1.329 (4186e250v4q4bACc3tLT1SAh95SQxw)

A coven of new wizards for Xensv (please test).  Some of this might
need refactoring but it should make the web interface more useful.

also: misc version updates, some extra docs stuff.
This commit is contained in:
mwilli2@equilibrium.research committed 2004-11-02 01:26:40 +00:00
1 parent ce404f149a
commit c22b0ab804
9 files changed
+225 -20

No files matched your search

+3 -2
View File
@@ -16,7 +16,7 @@ class CreateDomain( Wizard ):
CreatePage4,
CreateFinish ]
Wizard.__init__( self, urlWriter, "Create Domain Wizard", sheets )
Wizard.__init__( self, urlWriter, "Create Domain", sheets )
class CreatePage0( Sheet ):
@@ -31,7 +31,8 @@ class CreatePage1( Sheet ):
def __init__( self, urlWriter ):
Sheet.__init__( self, urlWriter, "Setup Kernel Image", 1 )
self.addControl( ListControl( 'builder', [('linux', 'Linux'), ('netbsd', 'NetBSD')], 'Kernel Type:' ) )
# For now we don't need to select a builder...
# self.addControl( ListControl( 'builder', [('linux', 'Linux'), ('netbsd', 'NetBSD')], 'Kernel Type:' ) )
self.addControl( FileControl( 'kernel', '/boot/vmlinuz-2.6.9-xenU', 'Kernel Image:' ) )
self.addControl( InputControl( 'extra', '', 'Kernel Command Line Parameters:' ) )
+14 -4
View File
@@ -3,6 +3,9 @@ from xen.sv.DomList import DomList
from xen.sv.NodeInfo import NodeInfo
from xen.sv.DomInfo import DomInfo
from xen.sv.CreateDomain import CreateDomain
from xen.sv.MigrateDomain import MigrateDomain
from xen.sv.SaveDomain import SaveDomain
from xen.sv.RestoreDomain import RestoreDomain
from xen.xend.XendClient import server
@@ -16,7 +19,14 @@ class Main( HTMLBase ):
self.modules = { "node": NodeInfo,
"list": DomList,
"info": DomInfo,
"create": CreateDomain }
"create": CreateDomain,
"migrate" : MigrateDomain,
"save" : SaveDomain,
"restore" : RestoreDomain }
# ordered list of module menus to display
self.module_menus = [ "node", "create", "migrate", "save",
"restore", "list" ]
HTMLBase.__init__(self)
def render_POST( self, request ):
@@ -53,10 +63,10 @@ class Main( HTMLBase ):
request.write( " <img src='images/xen.png' width='150' height='75' border='0'/></a><br/></td></tr>" )
request.write( " <tr><td height='60px' align='center'><p class='small'>SV Web Interface<br/>(C) <a href='mailto:tw275@cam.ac.uk'>Tom Wilkie</a> 2004</p></td></tr>")
request.write( " <tr><td align='center' valign='top'>" )
for (modName, module) in self.modules.items():
module( self.mainUrlWriter( modName ) ).write_MENU( request )
for modName in self.module_menus:
self.modules[modName]( self.mainUrlWriter( modName ) ).write_MENU( request )
request.write( " </td></tr>" )
request.write( " </table>" )
request.write( " &nbsp;" )
+72
View File
@@ -0,0 +1,72 @@
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 MigrateDomain( Wizard ):
def __init__( self, urlWriter ):
sheets = [ ChooseMigrateDomain,
DoMigrate ]
Wizard.__init__( self, urlWriter, "Migrate Domain", sheets )
class ChooseMigrateDomain( Sheet ):
def __init__( self, urlWriter ):
Sheet.__init__( self, urlWriter, "Configure Migration", 0)
try:
domains = server.xend_domains()
domains.sort()
except:
pass
domnames = []
for i in domains:
if i != 'Domain-0': domnames.append((i,i))
self.addControl( ListControl('domid',
domnames,
'Domain ID:') )
self.addControl( TickControl('live',
'True',
'Live migrate:') )
self.addControl( InputControl('rate',
'0',
'Rate limit:') )
self.addControl( InputControl( 'dest', 'myhost.mydomain',
'Name or IP address:',
".*") )
class DoMigrate( Sheet ):
def __init__(self, urlWriter ):
Sheet.__init__(self, urlWriter, "Migration Done", 1)
def write_BODY( self, request, err ):
if not self.passback: self.parseForm( request )
# print string2sxp(self.passback)
config = ssxp2hash ( string2sxp( self.passback ) )
try:
print config
print config['domid'], config['dest']
dom_sxp = server.xend_domain_migrate( config['domid'],
config['dest'],
config.get('live') == 'True',
config['rate'] )
success = "Your domain was successfully Migrated.\n"
except Exception, e:
success = "There was an error migrating your domain\n"
dom_sxp = str(e)
pt = PreTab( success + dom_sxp ) # 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 )
+46
View File
@@ -0,0 +1,46 @@
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 ):
def __init__( self, urlWriter ):
Sheet.__init__( self, urlWriter, "Configure Restore", 0)
self.addControl( InputControl( 'file', '',
'Suspend file name:',
".*") )
class DoRestore( Sheet ):
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 )
+59
View File
@@ -0,0 +1,59 @@
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 SaveDomain( Wizard ):
def __init__( self, urlWriter ):
sheets = [ ChooseSaveDomain,
DoSave ]
Wizard.__init__( self, urlWriter, "Save Domain", sheets )
class ChooseSaveDomain( Sheet ):
def __init__( self, urlWriter ):
Sheet.__init__( self, urlWriter, "Configure Save", 0)
try:
domains = server.xend_domains()
domains.sort()
except:
pass
domnames = []
for i in domains:
if i != 'Domain-0': domnames.append((i,i))
self.addControl( ListControl('domid',
domnames,
'Domain ID:') )
self.addControl( InputControl( 'file', '',
'Suspend file name:',
".*") )
class DoSave( Sheet ):
def __init__(self, urlWriter ):
Sheet.__init__(self, urlWriter, "Save 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_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)
pt = PreTab( success + dom_sxp ) # 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 )
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.