fix: FSM calls do_transfer_offer() correctly; resume remembers target_host/user/port
This commit is contained in:
@@ -81,8 +81,8 @@ class FSM:
|
|||||||
from source.source import do_stop_service
|
from source.source import do_stop_service
|
||||||
do_stop_service()
|
do_stop_service()
|
||||||
elif name == "TRANSFER":
|
elif name == "TRANSFER":
|
||||||
from transfer.transfer import do_transfer
|
from source.source import do_transfer_offer
|
||||||
do_transfer()
|
do_transfer_offer()
|
||||||
elif name == "DONE":
|
elif name == "DONE":
|
||||||
success("Source-режим завершён")
|
success("Source-режим завершён")
|
||||||
|
|
||||||
|
|||||||
@@ -330,23 +330,41 @@ def do_stop_service():
|
|||||||
|
|
||||||
def do_transfer_offer():
|
def do_transfer_offer():
|
||||||
step(4, "ПЕРЕНОС НА НОВЫЙ СЕРВЕР (опционально)")
|
step(4, "ПЕРЕНОС НА НОВЫЙ СЕРВЕР (опционально)")
|
||||||
if not confirm("Перенести архив на новый сервер сейчас", default="y"):
|
st = state.load_state()
|
||||||
success("Готово! Архив оставлен на текущем сервере.")
|
|
||||||
success(f"Manifest и архив лежат в: {_ARCHIVE_DIR}")
|
# При resume: проверяем, были ли уже введены target-параметры
|
||||||
state.set_stage("DONE")
|
resume_host = st.get("target_host")
|
||||||
return
|
resume_user = st.get("target_user")
|
||||||
|
resume_port = st.get("target_port", 22)
|
||||||
|
if resume_host and resume_host not in ("", "None"):
|
||||||
|
info(f"Обнаружены ранее введённые параметры target: {resume_user}@{resume_host}:{resume_port}")
|
||||||
|
if confirm("Использовать эти параметры повторно (если ошибка была в SSH-ключе, выберите Y, после фикса)", default="y"):
|
||||||
|
host, user, port_int = resume_host, resume_user or "root", int(resume_port)
|
||||||
|
else:
|
||||||
|
# Сбрасываем, чтобы запросить заново
|
||||||
|
state.set_stage("SOURCE_STOP", target_host=None, target_user=None, target_port=None)
|
||||||
|
host = user = None
|
||||||
|
else:
|
||||||
|
host = user = None
|
||||||
|
|
||||||
host = prompt("IP или домен нового сервера")
|
|
||||||
if not host:
|
if not host:
|
||||||
warn("IP/домен не указан. Перенос пропущен.")
|
if not confirm("Перенести архив на новый сервер сейчас", default="y"):
|
||||||
success(f"Архив оставлен в: {_ARCHIVE_DIR}")
|
success("Готово! Архив оставлен на текущем сервере.")
|
||||||
state.set_stage("DONE")
|
success(f"Manifest и архив лежат в: {_ARCHIVE_DIR}")
|
||||||
return
|
state.set_stage("DONE")
|
||||||
user = prompt("SSH user (root или обычный пользователь)")
|
return
|
||||||
if not user:
|
|
||||||
user = "root"
|
host = prompt("IP или домен нового сервера")
|
||||||
port = prompt("SSH порт (Enter=22)") or "22"
|
if not host:
|
||||||
port_int = int(port)
|
warn("IP/домен не указан. Перенос пропущен.")
|
||||||
|
success(f"Архив оставлен в: {_ARCHIVE_DIR}")
|
||||||
|
state.set_stage("DONE")
|
||||||
|
return
|
||||||
|
user = prompt("SSH user (root или обычный пользователь)")
|
||||||
|
if not user:
|
||||||
|
user = "root"
|
||||||
|
port = prompt("SSH порт (Enter=22)") or "22"
|
||||||
|
port_int = int(port)
|
||||||
|
|
||||||
# SSH-диагностика: ищем ключи, проверяем доступ
|
# SSH-диагностика: ищем ключи, проверяем доступ
|
||||||
from transfer.ssh import pick_or_setup_ssh_key
|
from transfer.ssh import pick_or_setup_ssh_key
|
||||||
|
|||||||
Reference in New Issue
Block a user