aliyun_server_light.py增加安装jsite前端的api端点

This commit is contained in:
jingrow 2025-08-08 19:22:31 +08:00
parent e4ea8f6a53
commit 346324377f

View File

@ -414,6 +414,27 @@ class AliyunLightServerManager:
jingrow.log_error("获取可升级套餐列表失败", f"获取实例 {instance_id} 可升级套餐时发生错误: {str(e)}")
return {'success': False, 'error': str(e), 'message': '获取可升级套餐列表失败'}
def run_command(self, instance_id, command_content, parameters=None, command_name='CustomCommand', region_id='cn-shanghai', timeout=3600):
"""在实例上执行命令"""
client = self._get_client(region_id)
try:
request = swas__open20200601_models.RunCommandRequest(
region_id=region_id,
command_content=command_content,
type='RunShellScript',
enable_parameter=True if parameters else False,
parameters=parameters or {},
instance_id=instance_id,
name=command_name,
timeout=timeout
)
runtime = util_models.RuntimeOptions()
response = client.run_command_with_options(request, runtime)
return {'success': True, 'data': self._convert_response_to_dict(response.body), 'message': '命令执行成功'}
except Exception as e:
jingrow.log_error("执行命令失败", f"在实例 {instance_id} 上执行命令时发生错误: {str(e)}")
return {'success': False, 'error': str(e), 'message': '命令执行失败'}
# 全局管理器实例
_aliyun_manager = None
@ -1536,3 +1557,39 @@ def get_server_plan_price(instance_id):
def get_password(pagetype, name, fieldname):
return jingrow.get_pg(pagetype, name).get_password(fieldname)
@jingrow.whitelist()
def install_jsite(instance_id, site_name, git_repo, site_url, revalidate_token, server_url, api_key, api_secret, region_id='cn-shanghai'):
"""在实例上安装Jsite前端"""
try:
# 验证实例ID是否存在
server = jingrow.get_pg("Jsite Server", {"instance_id": instance_id})
if not server:
return {"success": False, "message": "找不到对应的服务器记录"}
# 如果未指定region_id从服务器记录中获取
if not region_id:
region_id = server.region
# 构建命令内容
command_content = 'curl -s -o /tmp/install_jsite.sh https://cloud.jingrow.com//files/install_jsite.sh && chmod +x /tmp/install_jsite.sh && /tmp/install_jsite.sh --site-name {{site_name}} --git-repo {{git_repo}} --site-url {{site_url}} --revalidate-token {{revalidate_token}} --server-url {{server_url}} --api-key {{api_key}} --api-secret {{api_secret}}'
# 构建参数
parameters = {
'site_name': site_name,
'git_repo': git_repo,
'site_url': site_url,
'revalidate_token': revalidate_token,
'server_url': server_url,
'api_key': api_key,
'api_secret': api_secret
}
manager = _get_manager()
result = manager.run_command(instance_id, command_content, parameters, 'installJsite', region_id, 3600)
return result
except Exception as e:
jingrow.log_error("安装Jsite失败", f"在实例 {instance_id} 上安装Jsite时发生错误: {str(e)}")
return {"success": False, "error": str(e), "message": "安装Jsite失败"}