Make _CallHotplugCommands() a classmethod, rename _PassTapFd()
to _HMPPassFd() and make it a wrapper for MonitorSocket's GetFd().

Signed-off-by: Dimitris Aragiorgis <[email protected]>
---
 lib/hypervisor/hv_kvm/__init__.py |   25 ++++++++++++-------------
 1 file changed, 12 insertions(+), 13 deletions(-)

diff --git a/lib/hypervisor/hv_kvm/__init__.py 
b/lib/hypervisor/hv_kvm/__init__.py
index 17b5496..b9c0e03 100644
--- a/lib/hypervisor/hv_kvm/__init__.py
+++ b/lib/hypervisor/hv_kvm/__init__.py
@@ -1864,9 +1864,10 @@ class KVMHypervisor(hv_base.BaseHypervisor):
     if (int(v_major), int(v_min)) < (1, 0):
       raise errors.HotplugError("Hotplug not supported for qemu versions < 
1.0")
 
-  def _CallHotplugCommands(self, name, cmds):
+  @classmethod
+  def _CallHotplugCommands(cls, instance_name, cmds):
     for c in cmds:
-      self._CallMonitorCommand(name, c)
+      cls._CallMonitorCommand(instance_name, c)
       time.sleep(1)
 
   def _VerifyHotplugCommand(self, instance_name, device, dev_type,
@@ -1925,7 +1926,7 @@ class KVMHypervisor(hv_base.BaseHypervisor):
       # requested, generate separate "fd=" string for every fd
       tapfd = ",".join(["fd=%s" % fd for fd in fds])
       self._ConfigureNIC(instance, seq, device, tap)
-      self._PassTapFd(instance, fds, device)
+      self._HMPPassFd(instance.name, fds, kvm_devid)
       cmds = ["netdev_add tap,id=%s,%s%s" % (kvm_devid, tapfd, tap_extra)]
       args = "virtio-net-pci,bus=pci.0,addr=%s,mac=%s,netdev=%s,id=%s%s" % \
                (hex(device.pci), device.mac, kvm_devid, kvm_devid, nic_extra)
@@ -1978,21 +1979,19 @@ class KVMHypervisor(hv_base.BaseHypervisor):
       device.pci = self.HotDelDevice(instance, dev_type, device, _, seq)
       self.HotAddDevice(instance, dev_type, device, _, seq)
 
-  def _PassTapFd(self, instance, fds, nic):
+  @classmethod
+  def _HMPPassFd(cls, instance_name, fds, kvm_devid):
     """Pass file descriptor to kvm process via monitor socket using SCM_RIGHTS
 
+    Wrapper of MonitorSocket.GetFd()
+
     """
-    # TODO: factor out code related to unix sockets.
-    #       squash common parts between monitor and qmp
-    kvm_devid = _GenerateDeviceKVMId(constants.HOTPLUG_TARGET_NIC, nic)
-    command = "getfd %s\n" % kvm_devid
-    logging.info("%s", fds)
+    mon = MonitorSocket(cls._InstanceMonitor(instance_name))
     try:
-      monsock = MonitorSocket(self._InstanceMonitor(instance.name))
-      monsock.connect()
-      fdsend.sendfds(monsock.sock, command, fds=fds)
+      mon.connect()
+      mon.GetFd(fds, kvm_devid)
     finally:
-      monsock.close()
+      mon.close()
 
   @classmethod
   def _ParseKVMVersion(cls, text):
-- 
1.7.10.4

Reply via email to