bitkeeper revision 1.1108.1.11 (40ffedd53In0viK6nHqcjQ7ZlYdFkw)

Filling-in vnet support.
This commit is contained in:
mjw@wray-m-3.hpl.hp.com committed 2004-07-22 16:39:49 +00:00
1 parent 20cd16c058
commit 10cd0830a1
2 files changed
+112 -1

No files matched your search

+108 -1
View File
@@ -1,9 +1,116 @@
# Copyright (C) 2004 Mike Wray <mike.wray@hp.com>
from xen.xend import sxp
from xen.xend.Args import FormFn
from xen.xend import PrettyPrint
from xen.xend import XendVnet
from SrvDir import SrvDir
class SrvVnet(SrvDir):
def __init__(self, vnetinfo):
SrvDir.__init__(self)
self.vnetinfo = vnetinfo
self.xvnet = XendVnet.instance()
def op_delete(self, op, req):
val = self.xvnet.vnet_delete(self.vnetinfo.id)
return val
def render_POST(self, req):
return self.perform(req)
def render_GET(self, req):
if self.use_sxp(req):
req.setHeader("Content-Type", sxp.mime_type)
sxp.show(self.vnetinfo.sxpr(), out=req)
else:
req.write('<html><head></head><body>')
self.print_path(req)
req.write('<p>Vnet %s</p>' % self.vnetinfo.id)
req.write("<code><pre>")
PrettyPrint.prettyprint(self.vnetinfo.sxpr(), out=req)
req.write("</pre></code>")
self.form(req)
req.write('</body></html>')
return ''
def form(self, req):
url = req.prePathURL()
req.write('<form method="post" action="%s">' % url)
req.write('<input type="submit" name="op" value="delete">')
req.write('</form>')
class SrvVnetDir(SrvDir):
"""Vnet directory.
"""
pass
def __init__(self):
SrvDir.__init__(self)
self.xvnet = XendVnet.instance()
def vnet(self, x):
val = None
vnetinfo = self.xvnet.vnet_get(x)
if not vnetinfo:
raise XendError('No such vnet ' + str(x))
val = SrvVnet(vnetinfo)
return val
def get(self, x):
v = SrvDir.get(self, x)
if v is not None:
return v
v = self.vnet(x)
return v
def op_create(self, op, req):
fn = FormFn(self.xvnet.vnet_create,
[['config', 'sxpr']])
val = fn(req.args, {})
return val
def render_POST(self, req):
return self.perform(req)
def render_GET(self, req):
try:
if self.use_sxp(req):
req.setHeader("Content-Type", sxp.mime_type)
self.ls_vnet(req, 1)
else:
req.write("<html><head></head><body>")
self.print_path(req)
self.ls(req)
self.ls_vnet(req)
self.form(req)
req.write("</body></html>")
return ''
except Exception, ex:
self._perform_err(ex, req)
def ls_vnet(self, req, use_sxp=0):
url = req.prePathURL()
if not url.endswith('/'):
url += '/'
if use_sxp:
vnets = self.xvnet.vnet_ls()
sxp.show(vnets, out=req)
else:
vnets = self.xvnet.vnets()
vnets.sort(lambda x, y: cmp(x.id, y.id))
req.write('<ul>')
for v in vnets:
req.write('<li><a href="%s%s"> Vnet %s</a>' % (url, v.id, v.id))
req.write('</li>')
req.write('</ul>')
def form(self, req):
"""Generate the form(s) for vnet dir operations.
"""
req.write('<form method="post" action="%s" enctype="multipart/form-data">'
% req.prePathURL())
req.write('<button type="submit" name="op" value="create">Create Vnet</button>')
req.write('Config <input type="file" name="config"><br>')
req.write('</form>')
+4
View File
@@ -9,6 +9,7 @@ from xen.xend import sxp
from xen.xend import Vifctl
from xen.xend.XendError import XendError
from xen.xend.XendLogging import log
from xen.xend import XendVnet
import channel
import controller
@@ -176,6 +177,9 @@ class NetDev(controller.Dev):
"""Bring the device up or down.
"""
Vifctl.vifctl(op, **self.vifctl_params(vmname=vmname))
vnet = XendVnet.instance().vnet_of_bridge(self.bridge)
if vnet:
vnet.vifctl(op, self.get_vifname(), self.get_mac())
def destroy(self):
"""Destroy the device's resources and disconnect from the back-end
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.