/
githubmirror
/
adcli
Обзор
Документация
Войти
/
githubmirror
/
adcli
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
tests/topology_controllers.py
88 строк
2 KB
shridhargadekar
adcli CI configuration
05 май 2026, 22:55
05 май 2026, 22:55
e69f726
Код
Авторство
О чём код?
from __future__ import annotations from pytest_mh import BackupTopologyController from sssd_test_framework.config import SSSDMultihostConfig from sssd_test_framework.hosts.ad import ADHost from sssd_test_framework.hosts.client import ClientHost from sssd_test_framework.hosts.samba import SambaHost __all__ = [ "ADTopologyController", "SambaTopologyController", ] class ProvisionedBackupTopologyController(BackupTopologyController[SSSDMultihostConfig]): """ Provide basic restore functionality for topologies. """ def __init__(self) -> None: super().__init__() self.provisioned: bool = False def init(self, *args, **kwargs): super().init(*args, **kwargs) self.provisioned = self.name in self.multihost.provisioned_topologies def topology_teardown(self) -> None: if self.provisioned: return super().topology_teardown() def teardown(self) -> None: if self.provisioned: self.restore_vanilla() return super().teardown() class ClientTopologyController(ProvisionedBackupTopologyController): """ Client Topology Controller. """ pass class ADTopologyController(ProvisionedBackupTopologyController): """ AD Topology Controller. """ @BackupTopologyController.restore_vanilla_on_error def topology_setup(self, client: ClientHost, provider: ADHost) -> None: if self.provisioned: self.logger.info(f"Topology '{self.name}' is already provisioned") return # Remove any existing Kerberos configuration and keytab client.fs.rm("/etc/krb5.conf") client.fs.rm("/etc/krb5.keytab") client.fs.write("/etc/krb5.conf", "") # Backup so we can restore to this state after each test super().topology_setup() class SambaTopologyController(ADTopologyController): """ Samba Topology Controller. """ @BackupTopologyController.restore_vanilla_on_error def topology_setup(self, client: ClientHost, provider: SambaHost) -> None: if self.provisioned: self.logger.info(f"Topology '{self.name}' is already provisioned") return # Remove any existing Kerberos configuration and keytab client.fs.rm("/etc/krb5.conf") client.fs.rm("/etc/krb5.keytab") client.fs.write("/etc/krb5.conf", "") # Backup so we can restore to this state after each test super().topology_setup()