mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
bitkeeper revision 1.1159.1.201 (41600e1fkVMoQU0dVgk1h6vT502hEg)
Merge
This commit is contained in:
commit
e2f19d9096
8 files changed
+167
-17
No files matched your search
@@ -211,9 +211,9 @@ class XendDomain:
|
||||
@param id: domain id
|
||||
@param notify: send a domain died event if true
|
||||
"""
|
||||
for info in self.domain_by_name.values():
|
||||
for (k, info) in self.domain_by_name.items():
|
||||
if info.id == id:
|
||||
del self.domain_by_name[info.name]
|
||||
del self.domain_by_name[k]
|
||||
if id in self.domain_by_id:
|
||||
info = self.domain_by_id[id]
|
||||
del self.domain_by_id[id]
|
||||
@@ -408,11 +408,15 @@ class XendDomain:
|
||||
@return: deferred
|
||||
"""
|
||||
|
||||
def cbok(dominfo):
|
||||
self._add_domain(dominfo)
|
||||
return dominfo
|
||||
deferred = XendDomainInfo.vm_restore(src, progress=progress)
|
||||
deferred.addCallback(cbok)
|
||||
if 0:
|
||||
def cbok(dominfo):
|
||||
self._add_domain(dominfo)
|
||||
return dominfo
|
||||
deferred = XendDomainInfo.vm_restore(src, progress=progress)
|
||||
deferred.addCallback(cbok)
|
||||
else:
|
||||
xmigrate = XendMigrate.instance()
|
||||
deferred = xmigrate.restore_begin(src)
|
||||
return deferred
|
||||
|
||||
def domain_get(self, id):
|
||||
|
||||
@@ -302,6 +302,19 @@ class XendMigrateInfo(XfrdInfo):
|
||||
self.dst_port,
|
||||
self.live ])
|
||||
|
||||
## def xfr_vm_suspend(self, xfrd, val):
|
||||
## def cbok(val):
|
||||
## # Special case for localhost: destroy devices early.
|
||||
## if self.dst_host in ["localhost", "127.0.0.1"]:
|
||||
## self.dominfo.restart_cancel()
|
||||
## self.dominfo.cleanup()
|
||||
## self.dominfo.destroy_console()
|
||||
## return val
|
||||
|
||||
## d = XfrdInfo.xfr_vm_suspend(self, xfrd, val)
|
||||
## d.addCallback(cbok)
|
||||
## return d
|
||||
|
||||
def xfr_migrate_ok(self, xfrd, val):
|
||||
dom = int(sxp.child0(val))
|
||||
self.state = 'ok'
|
||||
@@ -376,7 +389,35 @@ class XendSaveInfo(XfrdInfo):
|
||||
[ self.dominfo.name, self.dominfo.id,
|
||||
self.state, self.sxpr() ])
|
||||
|
||||
class XendRestoreInfo(XfrdInfo):
|
||||
"""Representation of a restore in-progress and its interaction with xfrd.
|
||||
"""
|
||||
|
||||
def __init__(self, xid, file):
|
||||
XfrdInfo.__init__(self)
|
||||
self.xid = xid
|
||||
self.state = 'begin'
|
||||
self.file = file
|
||||
|
||||
def sxpr(self):
|
||||
sxpr = ['restore',
|
||||
['id', self.xid],
|
||||
['file', self.file] ]
|
||||
return sxpr
|
||||
|
||||
def request(self, xfrd):
|
||||
print '***request>', self.file
|
||||
log.info('restore BEGIN: ' + str(self.sxpr()))
|
||||
xfrd.request(['xfr.restore', self.file ])
|
||||
|
||||
def xfr_restore_ok(self, xfrd, val):
|
||||
dom = int(sxp.child0(val))
|
||||
dominfo = self.xd.domain_get(dom)
|
||||
self.state = 'ok'
|
||||
if not self.deferred.called:
|
||||
self.deferred.callback(dominfo)
|
||||
|
||||
|
||||
class XendMigrate:
|
||||
"""External api for interaction with xfrd for migrate and save.
|
||||
Singleton.
|
||||
@@ -472,6 +513,12 @@ class XendMigrate:
|
||||
info = XendSaveInfo(xid, dominfo, file)
|
||||
return self.session_begin(info)
|
||||
|
||||
def restore_begin(self, file):
|
||||
xid = self.nextid()
|
||||
info = XendRestoreInfo(xid, file)
|
||||
return self.session_begin(info)
|
||||
|
||||
|
||||
def instance():
|
||||
global inst
|
||||
try:
|
||||
|
||||
@@ -45,7 +45,7 @@ class SrvDomainDir(SrvDir):
|
||||
errmsg = ''
|
||||
try:
|
||||
configstring = req.args.get('config')[0]
|
||||
print 'config:', configstring
|
||||
#print 'op_create>', 'config:', configstring
|
||||
pin = sxp.Parser()
|
||||
pin.input(configstring)
|
||||
pin.input_eof()
|
||||
|
||||