Source code for univention.management.console.modules.adtakeover

#!/usr/bin/python3
#
# Univention Management Console
#  module: system halt/reboot
#
# SPDX-FileCopyrightText: 2014-2025 Univention GmbH
# SPDX-License-Identifier: AGPL-3.0-only

import traceback
from functools import wraps

import univention.management.console as umc
import univention.management.console.modules as umcm
from univention.management.console.error import BadRequest
# from univention.lib.package_manager import CMD_DISABLE_EXEC, CMD_ENABLE_EXEC
from univention.management.console.log import MODULE
from univention.management.console.modules.adtakeover import takeover
from univention.management.console.modules.decorators import simple_response, threaded


_ = umc.Translation('univention-management-console-module-adtakeover').translate


[docs] def reset_progress(func): @wraps(func) def _foreground(self, request): self.progress.reset() MODULE.process('Running %s', func.__name__) try: return func(self, request) except takeover.TakeoverError as exc: MODULE.warning('Error during %s: %s', func.__name__, exc) message = str(exc) self.progress.error(message) raise BadRequest(message) except Exception: tb_text = traceback.format_exc() message = _("Execution of command '%(command)s' has failed:\n\n%(text)s") % { 'command': func.__name__, 'text': tb_text, } MODULE.process(message) self.progress.error(message) raise finally: self.progress.finish() return _foreground
[docs] class Instance(umcm.Base):
[docs] def init(self): self.progress = takeover.Progress()
[docs] @simple_response def poll(self): return self.progress.poll()
[docs] @simple_response def check_status(self): return takeover.check_status()
[docs] @simple_response def set_status_done(self): takeover.set_status_done()
[docs] @threaded @reset_progress def connect(self, request): username, password, ip = (request.options[var] for var in ['username', 'password', 'ip']) return takeover.count_domain_objects_on_server(ip, username, password, self.progress)
[docs] @threaded @reset_progress def copy_domain_data(self, request): username, password, ip = (request.options[var] for var in ['username', 'password', 'ip']) takeover.join_to_domain_and_copy_domain_data(ip, username, password, self.progress)
[docs] @simple_response def sysvol_info(self): return takeover.sysvol_info()
[docs] @threaded @reset_progress def check_sysvol(self, request): takeover.check_sysvol(self.progress)
[docs] @threaded @reset_progress def take_over_domain(self, request): takeover.take_over_domain(self.progress)