def perform_ensure(self) -> None: self.logger.debug("perform_ensure") if not SYSTEM_CTL.has_unit(self.service_name()): self.perform_create() if not SYSTEM_CTL.has_enabled(self.service_name()): self.perform_enable() if not SYSTEM_CTL.has_active(self.service_name()): self.perform_with_status(self.perform_start)
def perform_desure(self) -> None: self.logger.debug("perform_desure") if SYSTEM_CTL.has_active(self.service_name()): self.perform_with_status(self.perform_stop) if SYSTEM_CTL.has_enabled(self.service_name()): self.perform_disable() if SYSTEM_CTL.has_unit(self.service_name()): self.perform_delete()
def main(): parser = nsenter_parser() space = parser.parse_args() machine = space.machine script = space.script service = f"{machine}.service" if not SYSTEM_CTL.has_active(service): sys.exit(f"Service is not active: {service}") if not SYSTEM_CTL.has_machine(service): sys.exit(f"Service is not a machine: {service}") NSENTER.execute_invoke(machine, script)
def perform_with_status(self, perform_func) -> None: try: perform_func() except AssertionError as error: result = SYSTEM_CTL.status(self.service_name()) self.logger.error(f"Perform error: {error}") self.logger.error(f"Service status: {result}") raise error
def __init__(self): super().__init__('wrapper/systemd_nspawn') version = SYSTEM_CTL.property_VersionNumber() bucket = PartitionBucket.parse_option_list(version, self.option_list) if bucket.has_supported(): supported_list = render_option_list(bucket.supported_list()) self.with_params(self.binary, supported_list) if bucket.has_unsupported(): unsupported_list = render_option_list(bucket.unsupported_list()) self.logger.warning( f"Removing unsuppoted options: {unsupported_list}")
def perform_stop(self) -> None: self.logger.debug("perform_stop") SYSTEM_CTL.stop(self.service_name()).assert_return()
def perform_disable(self) -> None: self.logger.debug("perform_disable") SYSTEM_CTL.disable(self.service_name()).assert_return()
def perform_machine_delete(machine_result:MachineResult) -> None: "delete machine systemd service file" service_file = machine_result.machine_store.service_file() SUDO.files_delete(service_file) SYSTEM_CTL.daemon_reload()
def perform_machine_create(machine_result:MachineResult) -> None: "create machine systemd service file" service_text = produce_service_text(machine_result) service_file = machine_result.machine_store.service_file() SUDO.file_save(service_file, service_text) SYSTEM_CTL.daemon_reload()