Source code for arbiterd.common.libvirt

# -*- coding: utf-8 -*-
# Copyright 2021 - 2021, Sean Mooney and the arbiterd contributors
# SPDX-License-Identifier: Apache-2.0
import importlib
import typing as ty

libvirt = None

LIBVIRT_URI = 'qemu:///system'

libvirt_obj = None


[docs]def init_libvirt(): global libvirt_obj if libvirt_obj is None: libvirt_obj = Libvirt()
[docs]class Libvirt(object): def __init__(self, uri: str = None) -> None: super().__init__() self.import_libvirt() self.uri = uri or LIBVIRT_URI self.conn = self.get_connection()
[docs] def import_libvirt(self): global libvirt if libvirt is None: libvirt = importlib.import_module('libvirt')
[docs] def get_connection(self) -> ty.Optional: try: return libvirt.openReadOnly('qemu:///system') except libvirt.libvirtError: return None
[docs] def list_domains(self) -> ty.Iterable: return self.conn.listAllDomains(0)
[docs] def get_domain_by_name(self, name: str) -> 'libvirt.virDomain': return self.conn.lookupByName(name)
[docs] def get_domain_by_uuid(self, uuid: str) -> 'libvirt.virDomain': return self.conn.lookupByUUIDString(uuid)