服务器状态Pending改为准备中,新建服务器后获取到公网ip且状态为运行中后才更新服务器记录
This commit is contained in:
parent
819b195a67
commit
25579862a2
@ -46,7 +46,7 @@ export default {
|
|||||||
fieldname: 'status',
|
fieldname: 'status',
|
||||||
options: [
|
options: [
|
||||||
{ label: '', value: '' },
|
{ label: '', value: '' },
|
||||||
{ label: '待处理', value: 'Pending' },
|
{ label: '准备中', value: 'Pending' },
|
||||||
{ label: '启动中', value: 'Starting' },
|
{ label: '启动中', value: 'Starting' },
|
||||||
{ label: '运行中', value: 'Running' },
|
{ label: '运行中', value: 'Running' },
|
||||||
{ label: '停止中', value: 'Stopping' },
|
{ label: '停止中', value: 'Stopping' },
|
||||||
@ -111,7 +111,7 @@ export default {
|
|||||||
width: 0.8,
|
width: 0.8,
|
||||||
format(value) {
|
format(value) {
|
||||||
const statusMap = {
|
const statusMap = {
|
||||||
'Pending': '待处理',
|
'Pending': '准备中',
|
||||||
'Starting': '启动中',
|
'Starting': '启动中',
|
||||||
'Running': '运行中',
|
'Running': '运行中',
|
||||||
'Stopping': '停止中',
|
'Stopping': '停止中',
|
||||||
@ -204,7 +204,7 @@ export default {
|
|||||||
statusBadge({ documentResource: jsiteServer }) {
|
statusBadge({ documentResource: jsiteServer }) {
|
||||||
const status = jsiteServer.pg?.status;
|
const status = jsiteServer.pg?.status;
|
||||||
const statusMap = {
|
const statusMap = {
|
||||||
'Pending': '待处理',
|
'Pending': '准备中',
|
||||||
'Starting': '启动中',
|
'Starting': '启动中',
|
||||||
'Running': '运行中',
|
'Running': '运行中',
|
||||||
'Stopping': '停止中',
|
'Stopping': '停止中',
|
||||||
|
|||||||
@ -903,7 +903,7 @@ def create_server_order(**kwargs):
|
|||||||
"pagetype": "Order",
|
"pagetype": "Order",
|
||||||
"order_id": order_id,
|
"order_id": order_id,
|
||||||
"order_type": "新建服务器",
|
"order_type": "新建服务器",
|
||||||
"team": team.name,
|
"team": team,
|
||||||
"status": "待支付",
|
"status": "待支付",
|
||||||
"total_amount": total_amount,
|
"total_amount": total_amount,
|
||||||
"title": f"{region_id}",
|
"title": f"{region_id}",
|
||||||
@ -1262,7 +1262,7 @@ def create_aliyun_server(order_name):
|
|||||||
"pagetype": "Jsite Server",
|
"pagetype": "Jsite Server",
|
||||||
"team": order.team,
|
"team": order.team,
|
||||||
"order_id": order.order_id,
|
"order_id": order.order_id,
|
||||||
"status": "Running",
|
"status": "Pending",
|
||||||
"instance_id": instance_id,
|
"instance_id": instance_id,
|
||||||
"region": region_id,
|
"region": region_id,
|
||||||
"image_id": image_id,
|
"image_id": image_id,
|
||||||
@ -1380,22 +1380,25 @@ def update_server_record(instance_ids):
|
|||||||
|
|
||||||
instance_info = instances[0] # 取第一个实例
|
instance_info = instances[0] # 取第一个实例
|
||||||
|
|
||||||
# 获取公网IP(最多重试30次)
|
# 获取公网IP(必需,实例状态为Running且最多重试30次)
|
||||||
public_ip = instance_info.get('public_ip_address')
|
if not instance_info.get('public_ip_address') or instance_info.get('status') != 'Running':
|
||||||
if not public_ip:
|
|
||||||
for retry in range(30):
|
for retry in range(30):
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
retry_details = get_aliyun_instance_details(instance_ids, region_id)
|
retry_details = get_aliyun_instance_details(instance_ids, region_id)
|
||||||
if retry_details and retry_details.get('success'):
|
if retry_details and retry_details.get('success'):
|
||||||
retry_instances = retry_details.get('data', {}).get('instances', [])
|
retry_instances = retry_details.get('data', {}).get('instances', [])
|
||||||
if retry_instances and retry_instances[0].get('public_ip_address'):
|
if retry_instances:
|
||||||
public_ip = retry_instances[0].get('public_ip_address')
|
current_status = retry_instances[0].get('status', '')
|
||||||
break
|
current_public_ip = retry_instances[0].get('public_ip_address')
|
||||||
|
if current_status == 'Running' and current_public_ip:
|
||||||
|
# 条件满足后,重新获取完整的实例信息
|
||||||
|
instance_info = retry_instances[0]
|
||||||
|
break
|
||||||
else:
|
else:
|
||||||
jingrow.log_error(f"获取公网IP失败-{instance_id}", f"实例 {instance_id} 在30次重试后仍未获取到公网IP")
|
jingrow.log_error(f"获取实例信息失败-{instance_id}", f"实例 {instance_id} 在30次重试后仍未变为Running状态或获取到公网IP")
|
||||||
return {"success": False, "message": f"实例 {instance_id} 在30次重试后仍未获取到公网IP"}
|
return {"success": False, "message": f"实例 {instance_id} 在30次重试后仍未变为Running状态或获取到公网IP"}
|
||||||
|
|
||||||
server.public_ip = public_ip
|
server.public_ip = instance_info.get('public_ip_address')
|
||||||
|
|
||||||
# 更新end_date(从expired_time转换)
|
# 更新end_date(从expired_time转换)
|
||||||
expired_time = instance_info.get('expired_time')
|
expired_time = instance_info.get('expired_time')
|
||||||
@ -1451,9 +1454,9 @@ def update_server_record(instance_ids):
|
|||||||
"success": True,
|
"success": True,
|
||||||
"message": "服务器信息更新成功",
|
"message": "服务器信息更新成功",
|
||||||
"updated_fields": {
|
"updated_fields": {
|
||||||
"public_ip": public_ip,
|
"public_ip": instance_info.get('public_ip_address'),
|
||||||
"end_date": server.end_date,
|
"end_date": server.end_date,
|
||||||
"status": server.status,
|
"status": instance_info.get('status'),
|
||||||
"system": server.system,
|
"system": server.system,
|
||||||
"os_type": server.os_type,
|
"os_type": server.os_type,
|
||||||
"plan_price": server.plan_price,
|
"plan_price": server.plan_price,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user