コード例 #1
0
ファイル: engine.py プロジェクト: viogq/nspawn
 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)
コード例 #2
0
ファイル: engine.py プロジェクト: viogq/nspawn
 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()
コード例 #3
0
ファイル: main.py プロジェクト: viogq/nspawn
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)
コード例 #4
0
ファイル: engine.py プロジェクト: viogq/nspawn
 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
コード例 #5
0
ファイル: systemd_nspawn.py プロジェクト: viogq/nspawn
 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}")
コード例 #6
0
ファイル: engine.py プロジェクト: viogq/nspawn
 def perform_stop(self) -> None:
     self.logger.debug("perform_stop")
     SYSTEM_CTL.stop(self.service_name()).assert_return()
コード例 #7
0
ファイル: engine.py プロジェクト: viogq/nspawn
 def perform_disable(self) -> None:
     self.logger.debug("perform_disable")
     SYSTEM_CTL.disable(self.service_name()).assert_return()
コード例 #8
0
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()
コード例 #9
0
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()