feat: 扩展 Sub2API 成本与余额运维
This commit is contained in:
@@ -1068,6 +1068,19 @@ def selected_account_details(token, accounts):
|
||||
return details
|
||||
|
||||
def mutation_plan(detail, action, include_rules):
|
||||
if PAYLOAD.get("kind") == "account-name":
|
||||
before_name = str(detail.get("name") or "")
|
||||
desired_name = str(PAYLOAD.get("name") or "")
|
||||
return {
|
||||
"accountName": before_name,
|
||||
"accountId": detail.get("id"),
|
||||
"change": "noop" if before_name == desired_name else "update",
|
||||
"before": {"name": before_name},
|
||||
"desired": {"name": desired_name},
|
||||
"template": None,
|
||||
"_kind": "account-name",
|
||||
"_desiredName": desired_name,
|
||||
}
|
||||
if PAYLOAD.get("kind") == "priority":
|
||||
before_priority = int(detail.get("priority") or 0)
|
||||
desired_priority = int(PAYLOAD.get("priority"))
|
||||
@@ -1114,7 +1127,12 @@ def write_mutation_plan(token, plan):
|
||||
if plan["change"] == "noop":
|
||||
return {"attempted": False, "status": "noop", "error": None}
|
||||
try:
|
||||
payload = {"priority": plan["_desiredPriority"]} if plan["_kind"] == "priority" else {"credentials": plan["_desiredCredentials"]}
|
||||
if plan["_kind"] == "priority":
|
||||
payload = {"priority": plan["_desiredPriority"]}
|
||||
elif plan["_kind"] == "account-name":
|
||||
payload = {"name": plan["_desiredName"]}
|
||||
else:
|
||||
payload = {"credentials": plan["_desiredCredentials"]}
|
||||
data_of(curl_api("PUT", f"/api/v1/admin/accounts/{plan['accountId']}", bearer=token, payload=payload), "update account runtime config")
|
||||
return {"attempted": True, "status": "succeeded", "error": None}
|
||||
except Exception as exc:
|
||||
@@ -1129,6 +1147,10 @@ def reconcile_mutation_plan(token, plan, write, include_rules):
|
||||
actual_priority = int(actual_detail.get("priority") or 0)
|
||||
item["actual"] = {"priority": actual_priority}
|
||||
item["reconciled"] = actual_priority == plan["_desiredPriority"]
|
||||
elif plan["_kind"] == "account-name":
|
||||
actual_name = str(actual_detail.get("name") or "")
|
||||
item["actual"] = {"name": actual_name}
|
||||
item["reconciled"] = actual_name == plan["_desiredName"]
|
||||
else:
|
||||
actual_policy = normalize_policy(actual_detail.get("credentials"))
|
||||
item["actual"] = policy_summary(actual_policy, include_rules)
|
||||
|
||||
Reference in New Issue
Block a user