Pushed.

Thanks,
Jose

On Apr 29 17:00, Apollon Oikonomopoulos wrote:
> The KVM daemon keeps a persistent connection to the instances' QMP
> sockets, listening for asynchronous events. As each monitor socket
> (either human, or QMP) can handle only one client at a time, this has
> the side-effect that QMP cannot be used for regular instance operations.
> 
> We fix this by adding a dedicated QMP socket for use by kvmd and
> changing kvmd to look only for sockets with the specific extension.
> 
> Note that this change means that kvmd will not be able to monitor
> already running instances spawned by older versions of Ganeti.
> 
> Signed-off-by: Apollon Oikonomopoulos <[email protected]>
> ---
>  lib/hypervisor/hv_kvm.py | 10 ++++++++++
>  src/Ganeti/Kvmd.hs       |  2 +-
>  2 files changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/lib/hypervisor/hv_kvm.py b/lib/hypervisor/hv_kvm.py
> index f3cc177..1ec4ccc 100644
> --- a/lib/hypervisor/hv_kvm.py
> +++ b/lib/hypervisor/hv_kvm.py
> @@ -926,6 +926,13 @@ class KVMHypervisor(hv_base.BaseHypervisor):
>      return utils.PathJoin(cls._CTRL_DIR, "%s.qmp" % instance_name)
>  
>    @classmethod
> +  def _InstanceKvmdMonitor(cls, instance_name):
> +    """Returns the instance kvm daemon socket name
> +
> +    """
> +    return utils.PathJoin(cls._CTRL_DIR, "%s.kvmd" % instance_name)
> +
> +  @classmethod
>    def _InstanceShutdownMonitor(cls, instance_name):
>      """Returns the instance QMP output filename
>  
> @@ -1929,6 +1936,9 @@ class KVMHypervisor(hv_base.BaseHypervisor):
>        logging.debug("Enabling QMP")
>        kvm_cmd.extend(["-qmp", "unix:%s,server,nowait" %
>                        self._InstanceQmpMonitor(instance.name)])
> +      # Add a second monitor for kvmd
> +      kvm_cmd.extend(["-qmp", "unix:%s,server,nowait" %
> +                      self._InstanceKvmdMonitor(instance.name)])
>  
>      # Configure the network now for starting instances and bridged 
> interfaces,
>      # during FinalizeMigration for incoming instances' routed interfaces
> diff --git a/src/Ganeti/Kvmd.hs b/src/Ganeti/Kvmd.hs
> index ecbf424..f8c9d3f 100644
> --- a/src/Ganeti/Kvmd.hs
> +++ b/src/Ganeti/Kvmd.hs
> @@ -90,7 +90,7 @@ monitorDir :: String
>  monitorDir = AutoConf.localstatedir </> "run/ganeti/kvm-hypervisor/ctrl/"
>  
>  monitorExtension :: String
> -monitorExtension = ".qmp"
> +monitorExtension = ".kvmd"
>  
>  isMonitorPath :: FilePath -> Bool
>  isMonitorPath = (== monitorExtension) . takeExtension
> -- 
> 1.9.2
> 

-- 
Jose Antonio Lopes
Ganeti Engineering
Google Germany GmbH
Dienerstr. 12, 80331, München

Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschäftsführer: Graham Law, Christine Elizabeth Flores
Steuernummer: 48/725/00206
Umsatzsteueridentifikationsnummer: DE813741370

Reply via email to