aliyun_server_light.py增加安装jsite前端的api端点
This commit is contained in:
parent
e4ea8f6a53
commit
346324377f
@ -414,6 +414,27 @@ class AliyunLightServerManager:
|
|||||||
jingrow.log_error("获取可升级套餐列表失败", f"获取实例 {instance_id} 可升级套餐时发生错误: {str(e)}")
|
jingrow.log_error("获取可升级套餐列表失败", f"获取实例 {instance_id} 可升级套餐时发生错误: {str(e)}")
|
||||||
return {'success': False, 'error': str(e), 'message': '获取可升级套餐列表失败'}
|
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
|
_aliyun_manager = None
|
||||||
@ -1535,4 +1556,40 @@ def get_server_plan_price(instance_id):
|
|||||||
@jingrow.whitelist()
|
@jingrow.whitelist()
|
||||||
def get_password(pagetype, name, fieldname):
|
def get_password(pagetype, name, fieldname):
|
||||||
|
|
||||||
return jingrow.get_pg(pagetype, name).get_password(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失败"}
|
||||||
Loading…
x
Reference in New Issue
Block a user