mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 02:30:03 +01:00
bitkeeper revision 1.1159.38.5 (41235bac45keyRYBSLnIxXITxalrzg)
Add 'live' parameter to migrate.
This commit is contained in:
1 parent
4a4b2b5c41
commit
17acf34b9f
8 files changed
+47
-19
No files matched your search
@@ -480,10 +480,11 @@ class Xend:
|
||||
{'op' : 'save',
|
||||
'file' : filename })
|
||||
|
||||
def xend_domain_migrate(self, id, dst):
|
||||
def xend_domain_migrate(self, id, dst, live=0):
|
||||
return self.xendPost(self.domainurl(id),
|
||||
{'op' : 'migrate',
|
||||
'destination': dst })
|
||||
{'op' : 'migrate',
|
||||
'destination': dst,
|
||||
'live' : live })
|
||||
|
||||
def xend_domain_pincpu(self, id, cpu):
|
||||
return self.xendPost(self.domainurl(id),
|
||||
|
||||
@@ -586,7 +586,7 @@ class XendDomain:
|
||||
self.refresh_schedule()
|
||||
return val
|
||||
|
||||
def domain_migrate(self, id, dst):
|
||||
def domain_migrate(self, id, dst, live):
|
||||
"""Start domain migration.
|
||||
|
||||
@param id: domain id
|
||||
@@ -597,7 +597,7 @@ class XendDomain:
|
||||
print 'domain_migrate>', id, dst
|
||||
dominfo = self.domain_lookup(id)
|
||||
xmigrate = XendMigrate.instance()
|
||||
val = xmigrate.migrate_begin(dominfo.id, dst)
|
||||
val = xmigrate.migrate_begin(dominfo.id, dst, live=live)
|
||||
print 'domain_migrate<', val
|
||||
return val
|
||||
|
||||
|
||||
@@ -259,7 +259,7 @@ class XendMigrateInfo(XfrdInfo):
|
||||
"""Representation of a migrate in-progress and its interaction with xfrd.
|
||||
"""
|
||||
|
||||
def __init__(self, xid, dom, host, port):
|
||||
def __init__(self, xid, dom, host, port, live):
|
||||
XfrdInfo.__init__(self)
|
||||
self.xid = xid
|
||||
self.state = 'begin'
|
||||
@@ -268,10 +268,14 @@ class XendMigrateInfo(XfrdInfo):
|
||||
self.dst_host = host
|
||||
self.dst_port = port
|
||||
self.dst_dom = None
|
||||
self.live = live
|
||||
self.start = 0
|
||||
|
||||
def sxpr(self):
|
||||
sxpr = ['migrate', ['id', self.xid], ['state', self.state] ]
|
||||
sxpr = ['migrate',
|
||||
['id', self.xid ],
|
||||
['state', self.state ],
|
||||
['live', self.live ] ]
|
||||
sxpr_src = ['src', ['host', self.src_host], ['domain', self.src_dom] ]
|
||||
sxpr.append(sxpr_src)
|
||||
sxpr_dst = ['dst', ['host', self.dst_host] ]
|
||||
@@ -289,7 +293,8 @@ class XendMigrateInfo(XfrdInfo):
|
||||
self.src_dom,
|
||||
vmconfig,
|
||||
self.dst_host,
|
||||
self.dst_port])
|
||||
self.dst_port,
|
||||
self.live ])
|
||||
|
||||
def xfr_migrate_ok(self, xfrd, val):
|
||||
dom = int(sxp.child0(val))
|
||||
@@ -410,7 +415,7 @@ class XendMigrate:
|
||||
reactor.connectTCP('localhost', XFRD_PORT, xcf)
|
||||
return info
|
||||
|
||||
def migrate_begin(self, dom, host, port=XFRD_PORT):
|
||||
def migrate_begin(self, dom, host, port=XFRD_PORT, live=0):
|
||||
"""Begin to migrate a domain to another host.
|
||||
|
||||
@param dom: domain
|
||||
@@ -421,7 +426,7 @@ class XendMigrate:
|
||||
# Check dom for existence, not migrating already.
|
||||
# Subscribe to migrate notifications (for updating).
|
||||
xid = self.nextid()
|
||||
info = XendMigrateInfo(xid, dom, host, port)
|
||||
info = XendMigrateInfo(xid, dom, host, port, live)
|
||||
self.session_begin(info)
|
||||
return info.deferred
|
||||
|
||||
|
||||
@@ -80,7 +80,8 @@ class SrvDomain(SrvDir):
|
||||
def op_migrate(self, op, req):
|
||||
fn = FormFn(self.xd.domain_migrate,
|
||||
[['dom', 'str'],
|
||||
['destination', 'str']])
|
||||
['destination', 'str'],
|
||||
['live', 'int']])
|
||||
deferred = fn(req.args, {'dom': self.dom.id})
|
||||
print 'op_migrate>', deferred
|
||||
deferred.addCallback(self._op_migrate_cb, req)
|
||||
@@ -244,4 +245,5 @@ class SrvDomain(SrvDir):
|
||||
req.write('<form method="post" action="%s">' % url)
|
||||
req.write('<br><input type="submit" name="op" value="migrate">')
|
||||
req.write(' To host: <input type="text" name="destination">')
|
||||
req.write('<input type="checkbox" name="live" value="1">Live')
|
||||
req.write('</form>')
|
||||
@@ -22,6 +22,10 @@ gopts.opt('help', short='h',
|
||||
fn=set_true, default=0,
|
||||
use="Print this help.")
|
||||
|
||||
gopts.opt('live', short='l',
|
||||
fn=set_true, default=0,
|
||||
use="Use live migration.")
|
||||
|
||||
def help(argv):
|
||||
gopts.argv = argv
|
||||
gopts.usage()
|
||||
@@ -38,5 +42,5 @@ def main(argv):
|
||||
dst = args[1]
|
||||
if dom in [DOM0_NAME, DOM0_ID]:
|
||||
opts.err('Cannot migrate ' + dom)
|
||||
server.xend_domain_migrate(dom, dst)
|
||||
server.xend_domain_migrate(dom, dst, opts.vals.live)
|
||||
|
||||