import paramiko

host = '8.140.221.49'
username = 'root'
private_key_path = r'C:\Users\FZX\.ssh\FzxBdsh-ECS.pem'

local_compose_path = r'd:\FzxBDSH\infrastructure\compose\podman-compose.aliyun-dev.yml'
remote_compose_path = '/opt/Fzxpodman/infrastructure/compose/podman-compose.aliyun-dev.yml'

print('='*80)
print('使用容器名称重新启动网关')
print('='*80)

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=username, key_filename=private_key_path, timeout=30)

# 1. 上传compose文件
print('\n1. 上传compose文件...')
sftp = ssh.open_sftp()
sftp.put(local_compose_path, remote_compose_path)
sftp.close()
print('上传成功!')

# 2. 删除旧网关容器
print('\n2. 删除旧网关容器...')
cmd = 'podman rm -f fzx-aliyun-gateway'
stdin, stdout, stderr = ssh.exec_command(cmd)
result = stdout.read().decode()
print(f'删除结果: {result.strip()}')

# 3. 重新启动网关
print('\n3. 使用podman-compose重新启动网关...')
cmd = 'cd /opt/Fzxpodman && podman-compose -f infrastructure/compose/podman-compose.aliyun-dev.yml up -d api-gateway'
stdin, stdout, stderr = ssh.exec_command(cmd, timeout=120)
result = stdout.read().decode()
print(f'启动结果: {result.strip()[-500:]}')

# 4. 等待启动
print('\n4. 等待网关启动...')
import time
time.sleep(45)

# 5. 检查网关状态
print('\n5. 检查网关状态...')
cmd = 'podman ps | grep fzx-aliyun-gateway'
stdin, stdout, stderr = ssh.exec_command(cmd)
result = stdout.read().decode()
print(f'网关容器状态: {result.strip()}')

# 6. 测试网关
print('\n6. 测试网关...')
cmd = 'curl -v http://localhost:8080/api/user/health 2>&1'
stdin, stdout, stderr = ssh.exec_command(cmd)
result = stdout.read().decode()
print(f'网关响应:\n{result}')

# 7. 检查网关日志
print('\n7. 检查网关日志...')
cmd = 'podman logs fzx-aliyun-gateway 2>&1 | tail -40'
stdin, stdout, stderr = ssh.exec_command(cmd)
result = stdout.read().decode()
print(f'网关日志:\n{result}')

ssh.close()

print('\n' + '='*80)
print('操作完成!')
print('='*80)