nodemanagerservice: make note on communication
qemu: keep track of my nodemanager service
qemu: force started instances to have my hostId
git-svn-id: https://svn.apache.org/repos/asf/incubator/tashi/trunk@1370639 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/tashi/nodemanager/nodemanagerservice.py b/src/tashi/nodemanager/nodemanagerservice.py
index f0aaa8a..3a6055e 100755
--- a/src/tashi/nodemanager/nodemanagerservice.py
+++ b/src/tashi/nodemanager/nodemanagerservice.py
@@ -77,6 +77,7 @@
self.id = None
# XXXstroucki this fn could be in this level maybe?
+ # note we are passing our information down to the VMM here.
self.host = self.vmm.getHostInfo(self)
# populate self.instances
diff --git a/src/tashi/nodemanager/vmcontrol/qemu.py b/src/tashi/nodemanager/vmcontrol/qemu.py
index 1ddb679..f7b68e8 100644
--- a/src/tashi/nodemanager/vmcontrol/qemu.py
+++ b/src/tashi/nodemanager/vmcontrol/qemu.py
@@ -100,6 +100,8 @@
self.log = logging.getLogger(__file__)
self.ifPrefix = "tashi"
+ # keep a handle to my NM service
+ self.service = None
self.controlledVMs = {}
self.hostname = socket.gethostname()
self.usedPorts = []
@@ -408,8 +410,9 @@
# extern
def getHostInfo(self, service):
host = Host()
- host.id = service.id
host.name = self.hostname
+ self.service = service
+ host.id = self.service.id
# Linux specific
memoryStr = open("/proc/meminfo","r").readline().strip().split()
@@ -590,6 +593,10 @@
# parent process
os.close(pipe_w)
+
+ # enforce the new instance to have our hostId!
+ # otherwise, a migrated VM will have its previous hostId.
+ instance.hostId = self.service.id
child = self.anonClass(pid=pid, instance=instance, stderr=os.fdopen(pipe_r, 'r'), migratingOut = False, monitorHistory=[], errorBit = True, OSchild = True)
child.ptyFile = None
child.vncPort = -1