diff options
author | mjw@wray-m-3.hpl.hp.com <mjw@wray-m-3.hpl.hp.com> | 2004-06-22 13:52:03 +0000 |
---|---|---|
committer | mjw@wray-m-3.hpl.hp.com <mjw@wray-m-3.hpl.hp.com> | 2004-06-22 13:52:03 +0000 |
commit | a0da930097f9d05196e7fda8a7d6ee1c597e7da1 (patch) | |
tree | 264307d9ed2b2dbd8990d18a91f55e687da2c0f8 /tools/xenmgr/lib/server/SrvConsoleServer.py | |
parent | c5d671661cf9fb924bd336e935df6926fdcd1e60 (diff) | |
download | xen-a0da930097f9d05196e7fda8a7d6ee1c597e7da1.tar.gz xen-a0da930097f9d05196e7fda8a7d6ee1c597e7da1.tar.bz2 xen-a0da930097f9d05196e7fda8a7d6ee1c597e7da1.zip |
bitkeeper revision 1.999 (40d83983YNm1foUR4ODZt9AAVdci-Q)
Switch to new method of shutting down domains.
Diffstat (limited to 'tools/xenmgr/lib/server/SrvConsoleServer.py')
-rw-r--r-- | tools/xenmgr/lib/server/SrvConsoleServer.py | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/tools/xenmgr/lib/server/SrvConsoleServer.py b/tools/xenmgr/lib/server/SrvConsoleServer.py index 6059ef2ebf..21d39140b2 100644 --- a/tools/xenmgr/lib/server/SrvConsoleServer.py +++ b/tools/xenmgr/lib/server/SrvConsoleServer.py @@ -36,6 +36,7 @@ import channel import blkif import netif import console +import domain from params import * DEBUG = 1 @@ -408,6 +409,16 @@ class EventFactory(protocol.Factory): proto.factory = self return proto +class VirqClient: + def __init__(self, daemon): + self.daemon = daemon + + def virqReceived(self, virq): + print 'VirqClient.virqReceived>', virq + + def lostChannel(self, channel): + print 'VirqClient.lostChannel>', channel + class Daemon: """The xend daemon. """ @@ -537,11 +548,13 @@ class Daemon: self.listenMgmt() self.listenEvent() self.listenNotifier() + self.listenVirq() SrvServer.create() reactor.run() def createFactories(self): self.channelF = channel.channelFactory() + self.domainCF = domain.DomainControllerFactory() self.blkifCF = blkif.BlkifControllerFactory() self.netifCF = netif.NetifControllerFactory() self.consoleCF = console.ConsoleControllerFactory() @@ -563,6 +576,10 @@ class Daemon: p.startListening() return p + def listenVirq(self): + virqChan = self.channelF.virqChannel(channel.VIRQ_DOM_EXC) + virqChan.registerClient(VirqClient(self)) + def exit(self): reactor.diconnectAll() sys.exit(0) @@ -650,28 +667,15 @@ class Daemon: if console.conn: console.conn.loseConnection() - def domain_start(self, id): - """Start domain running. + def domain_shutdown(self, dom, reason): + """Shutdown a domain. """ - dom = int(id) - if dom <= 0: return 0 - return xc.domain_start(dom=dom) + ctrl = self.domainCF.getInstanceByDom(dom) + if not ctrl: + raise ValueError('No domain controller: %d' % dom) + ctrl.shutdown(reason) + return 0 - def domain_stop(self, id): - """Stop domain running. - """ - dom = int(id) - if dom <= 0: return 0 - xc.domain_stop(dom=dom) - - def domain_destroy(self, id, force=0): - """Destroy a domain. Shutdown if force=0, terminate immediately if force=1. - """ - dom = int(id) - if dom <= 0: return 0 - return xc.domain_destroy(dom=dom, force=force) - - def instance(): global inst try: |