bitkeeper revision 1.1108.30.1 (410799e22TJDUoi5riSiL0r87tMEfA)

Resovled conflicts, spelling mistakes
This commit is contained in:
tw275@labyrinth.cl.cam.ac.uk committed 2004-07-28 12:19:46 +00:00
commit 14d37ca670
10 files changed
+376 -43

No files matched your search

+11 -8
View File
@@ -14,30 +14,33 @@ class CreatePage0( Sheet ):
def __init__( self, urlWriter ):
feilds = [( 'name', 'Name')]
feilds = [( 'name', 'VM Name:'),
( 'memory', 'RAM (Mb):' )]
Sheet.__init__( self, urlWriter, feilds, "Create New Domain - 1" )
Sheet.__init__( self, urlWriter, feilds, "Create New Domain", 0 )
class CreatePage1( Sheet ):
def __init__( self, urlWriter ):
feilds = [( 'name', 'Name')]
feilds = [( 'kernel_type', 'Kernel Type:'),
( 'kernel_location', 'Kernel location:')]
Sheet.__init__( self, urlWriter, feilds, "Create New Domain - 2" )
Sheet.__init__( self, urlWriter, feilds, "Setup Kernel Image", 1 )
class CreatePage2( Sheet ):
def __init__( self, urlWriter ):
feilds = [( 'name', 'Name')]
feilds = [( 'vbd_dom0', 'Location of vbd:'),
( 'vbd_dom0', 'Vitualised location:')]
Sheet.__init__( self, urlWriter, feilds, "Create New Domain - 3" )
Sheet.__init__( self, urlWriter, feilds, "Setup Virtual Block Devices", 2 )
class CreatePage3( Sheet ):
def __init__( self, urlWriter ):
feilds = [( 'name', 'Name')]
feilds = [( 'vifs', 'Number of Vifs:')]
Sheet.__init__( self, urlWriter, feilds, "Create New Domain - 4" )
Sheet.__init__( self, urlWriter, feilds, "Create New Domain - 4", 3 )
+108
View File
@@ -0,0 +1,108 @@
###########################################################
## XenSV Web Control Interface Daemon
## Copyright (C) 2004, K A Fraser (University of Cambridge)
## Copyright (C) 2004, Mike Wray <mike.wray@hp.com>
## Copyright (C) 2004, Tom Wilkie <tw275@cam.ac.uk>
###########################################################
import os
import os.path
import sys
import re
from xen.sv.params import *
from twisted.internet import reactor
from twisted.web import static, server, script
class Daemon:
"""The xend daemon.
"""
def __init__(self):
self.shutdown = 0
self.traceon = 0
def daemon_pids(self):
pids = []
pidex = '(?P<pid>\d+)'
pythonex = '(?P<python>\S*python\S*)'
cmdex = '(?P<cmd>.*)'
procre = re.compile('^\s*' + pidex + '\s*' + pythonex + '\s*' + cmdex + '$')
xendre = re.compile('^/usr/sbin/xend\s*(start|restart)\s*.*$')
procs = os.popen('ps -e -o pid,args 2>/dev/null')
for proc in procs:
pm = procre.match(proc)
if not pm: continue
xm = xendre.match(pm.group('cmd'))
if not xm: continue
#print 'pid=', pm.group('pid'), 'cmd=', pm.group('cmd')
pids.append(int(pm.group('pid')))
return pids
def new_cleanup(self, kill=0):
err = 0
pids = self.daemon_pids()
if kill:
for pid in pids:
print "Killing daemon pid=%d" % pid
os.kill(pid, signal.SIGHUP)
elif pids:
err = 1
print "Daemon already running: ", pids
return err
def cleanup(self, kill=False):
# No cleanup to do if PID_FILE is empty.
if not os.path.isfile(PID_FILE) or not os.path.getsize(PID_FILE):
return 0
# Read the pid of the previous invocation and search active process list.
pid = open(PID_FILE, 'r').read()
lines = os.popen('ps ' + pid + ' 2>/dev/null').readlines()
for line in lines:
if re.search('^ *' + pid + '.+xensv', line):
if not kill:
print "Daemon is already running (pid %d)" % int(pid)
return 1
# Old daemon is still active: terminate it.
os.kill(int(pid), 1)
# Delete the stale PID_FILE.
os.remove(PID_FILE)
return 0
def start(self, trace=0):
if self.cleanup(kill=False):
return 1
# Fork -- parent writes PID_FILE and exits.
pid = os.fork()
if pid:
# Parent
pidfile = open(PID_FILE, 'w')
pidfile.write(str(pid))
pidfile.close()
return 0
# Child
self.run()
return 0
def stop(self):
return self.cleanup(kill=True)
def run(self):
root = static.File( SV_ROOT )
root.indexNames = [ 'Main.rpy' ]
root.processors = { '.rpy': script.ResourceScript }
reactor.listenTCP( SV_PORT, server.Site( root ) )
reactor.run()
def exit(self):
reactor.diconnectAll()
sys.exit(0)
def instance():
global inst
try:
inst
except:
inst = Daemon()
return inst
+1 -1
View File
@@ -25,9 +25,9 @@ class HTMLBase( Resource ):
request.write( '<html><head><title>Xen</title><link rel="stylesheet" type="text/css" href="inc/style.css" />' )
request.write( '<script src="inc/script.js"></script>' )
request.write( '</head><body>' )
request.write('<form method="post" action="%s">' % request.uri)
def write_BOTTOM( self, request ):
request.write('<form method="post" action="%s">' % request.uri)
request.write('<input type="hidden" name="op" value="">')
request.write('</form>')
request.write( "</body></html>" )
+78 -32
View File
@@ -2,13 +2,14 @@ from xen.sv.util import *
from xen.sv.HTMLBase import HTMLBase
from xen.xend import sxp
class Wizard( HTMLBase ):
DEBUG = 1
class Wizzard( HTMLBase ):
def __init__( self, urlWriter, title, sheets ):
HTMLBase.__init__( self )
self.title = title
self.sheets = sheets
self.currSheet = 0
self.urlWriter = urlWriter
def write_MENU( self, request ):
@@ -22,45 +23,90 @@ class Wizard( HTMLBase ):
currSheet = getVar( 'sheet', request )
if not currSheet is None:
self.currSheet = int( currSheet )
currSheet = int( currSheet )
else:
currSheet = 0
self.sheets[ self.currSheet ]( self.urlWriter ).write_BODY( request )
op = getVar( 'op', request )
if op == 'next':
currSheet += 1
elif op == 'prev':
currSheet -= 1
self.sheets[ currSheet ]( self.urlWriter ).write_BODY( request )
request.write( "</td></tr><tr><td><table width='100%' border='0' cellspacing='0' cellpadding='0'><tr>" )
request.write( "<td width='80%'></td><td width='20%' align='center'>" )
request.write( "<p align='center'><img src='images/previous.png' onclick='doOp( \"prev\" )' onmouseover='update( \"wizText\", \"Previous\" )' onmouseout='update( \"wizText\", \"&nbsp;\" )'>&nbsp;" )
request.write( "<img src='images/next.png' onclick='doOp( \"next\" )' onmouseover='update( \"wizText\", \"Next\" )' onmouseout='update( \"wizText\", \"&nbsp;\" )'></p>" )
request.write( "<p align='center'><span id='wizText'></span></p></td></tr></table>" )
request.write( "<td width='80%'></td><td width='20%' align='center'><p align='center'>" )
if currSheet > 0:
request.write( "<img src='images/previous.png' onclick='doOp( \"prev\" )' onmouseover='update( \"wizText\", \"Previous\" )' onmouseout='update( \"wizText\", \"&nbsp;\" )'>&nbsp;" )
if currSheet < ( len( self.sheets ) - 1 ):
request.write( "<img src='images/next.png' onclick='doOp( \"next\" )' onmouseover='update( \"wizText\", \"Next\" )' onmouseout='update( \"wizText\", \"&nbsp;\" )'>" )
request.write( "</p><p align='center'><span id='wizText'></span></p></td></tr></table>" )
request.write( "</td></tr></table>" )
class Sheet( HTMLBase ):
def __init__( self, urlWriter, feilds, title ):
HTMLBase.__init__( self )
self.urlWriter = urlWriter
self.feilds = feilds
self.title = title
def parseForm( self, request ):
return sxp.toString( request.args )
def write_BODY( self, request ):
request.write( "<p>%s</p>" % self.title )
previous_values = request.args
for (feild, name) in self.feilds:
value = sxp.child_value( previous_values, feild )
if value is None:
value = ''
request.write( "<p>%s<input type='text' name='%s' value='%s'></p>" % (name, feild, value) )
def op_next( self, request ):
pass
def op_prev( self, request ):
pass
pass
class Sheet( HTMLBase ):
def __init__( self, urlWriter, feilds, title, location ):
HTMLBase.__init__( self )
self.urlWriter = urlWriter
self.feilds = feilds
self.title = title
self.location = location
self.passback = "()"
def parseForm( self, request ):
do_not_parse = [ 'mod', 'op', 'sheet' ]
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 = "(passback )"
last_passback = ssxp2hash( string2sxp( temp_passback ) )
if DEBUG: print last_passback
try:
del passed_back[ 'passback' ]
except:
pass
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
return last_passback #return the hash
def write_BODY( self, request ):
request.write( "<p>%s</p>" % self.title )
previous_values = self.parseForm( request ) #get the hash for quick reference
for (feild, name) in self.feilds:
value = previous_values.get( feild )
if value is None:
value = ''
request.write( "<p>%s<input type='text' name='%s' value='%s'></p>" % (name, feild, value) )
request.write( "<input type='hidden' name='passback' value=\"%s\"></p>" % self.passback )
request.write( "<input type='hidden' name='sheet' value='%s'></p>" % self.location )
+3
View File
@@ -0,0 +1,3 @@
SV_PORT = 8080
SV_ROOT = "/var/xen/sv/"
PID_FILE = "/var/xen/sv.pid"
+26 -1
View File
@@ -18,7 +18,32 @@ def sxp2hash( s ):
else:
sxphash[ child[0] ] = child[1]
return sxphash
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:
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.