Skip to content
Snippets Groups Projects
kvm.py 857 B
Newer Older
Thibault VINCENT's avatar
Thibault VINCENT committed
# -*- coding: utf-8 -*-
from libvirtwrapper import LibvirtHypervisor
Thibault VINCENT's avatar
Thibault VINCENT committed

Benziane Chakib's avatar
Benziane Chakib committed
class KvmHypervisor(LibvirtHypervisor):
    '''
    Base class of a Kvm Hypervisor
    '''
    _instance = None
Benziane Chakib's avatar
Benziane Chakib committed
    def __init__(self):
Benziane Chakib's avatar
Benziane Chakib committed
        super(KvmHypervisor, self).__init__('kvm')
Benziane Chakib's avatar
Benziane Chakib committed
    def __new__(cls, *args, **kwargs):
        '''
        .. note::
            We use singleton design pattern to force only a single instance
Thibault VINCENT's avatar
Thibault VINCENT committed
            of our libvirt hypervisor handle, it's essential since we connect
Benziane Chakib's avatar
Benziane Chakib committed
            with libvirt only on localhost so we must assure one single 
            connection to the hypervisor
        '''
        if cls._instance is None:
            cls._instance = super(KvmHypervisor, cls).__new__(cls, *args,
Thibault VINCENT's avatar
Thibault VINCENT committed
                                                                    **kwargs)
Benziane Chakib's avatar
Benziane Chakib committed
        return cls._instance