deploy fix bug
This commit is contained in:
parent
5d16f18188
commit
80364221f8
@ -352,9 +352,7 @@ class CloudOperator:
|
|||||||
"Weight": int(weight),
|
"Weight": int(weight),
|
||||||
}
|
}
|
||||||
|
|
||||||
location_id = str(clb_cfg.get("location_id", "")).strip()
|
location_id, domain, url = self.resolve_gateway_rule(clb_cfg)
|
||||||
domain = str(clb_cfg.get("domain", "")).strip()
|
|
||||||
url = str(clb_cfg.get("url", "")).strip()
|
|
||||||
if location_id:
|
if location_id:
|
||||||
payload["LocationId"] = location_id
|
payload["LocationId"] = location_id
|
||||||
elif domain and url:
|
elif domain and url:
|
||||||
@ -367,6 +365,49 @@ class CloudOperator:
|
|||||||
request_id = sdk_body(resp)["RequestId"]
|
request_id = sdk_body(resp)["RequestId"]
|
||||||
self.wait_for_clb_task(request_id)
|
self.wait_for_clb_task(request_id)
|
||||||
|
|
||||||
|
def resolve_gateway_rule(self, clb_cfg: dict[str, Any]) -> tuple[str, str, str]:
|
||||||
|
location_id = str(clb_cfg.get("location_id", "")).strip()
|
||||||
|
domain = str(clb_cfg.get("domain", "")).strip()
|
||||||
|
url = str(clb_cfg.get("url", "")).strip()
|
||||||
|
if location_id or (domain and url):
|
||||||
|
return location_id, domain, url
|
||||||
|
|
||||||
|
req = clb_models.DescribeListenersRequest()
|
||||||
|
req.from_json_string(
|
||||||
|
json.dumps(
|
||||||
|
{
|
||||||
|
"LoadBalancerId": str(clb_cfg["load_balancer_id"]),
|
||||||
|
"ListenerIds": [str(clb_cfg["listener_id"])],
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
resp = self.clb.DescribeListeners(req)
|
||||||
|
body = sdk_body(resp)
|
||||||
|
listeners = body.get("Listeners", [])
|
||||||
|
if not listeners:
|
||||||
|
raise RuntimeError(
|
||||||
|
f"CLB listener {clb_cfg['listener_id']} not found under load balancer {clb_cfg['load_balancer_id']}"
|
||||||
|
)
|
||||||
|
|
||||||
|
listener = listeners[0]
|
||||||
|
protocol = str(listener.get("Protocol", "")).upper()
|
||||||
|
if protocol not in {"HTTP", "HTTPS"}:
|
||||||
|
return "", "", ""
|
||||||
|
|
||||||
|
rules = listener.get("Rules") or []
|
||||||
|
if len(rules) == 1:
|
||||||
|
rule = rules[0]
|
||||||
|
return (
|
||||||
|
str(rule.get("LocationId", "")).strip(),
|
||||||
|
str(rule.get("Domain", "")).strip(),
|
||||||
|
str(rule.get("Url", "")).strip(),
|
||||||
|
)
|
||||||
|
|
||||||
|
raise RuntimeError(
|
||||||
|
f"listener {clb_cfg['listener_id']} is {protocol} and has {len(rules)} rules; "
|
||||||
|
"set gateway.clb.location_id or gateway.clb.domain+url in config/prod.yaml"
|
||||||
|
)
|
||||||
|
|
||||||
def wait_for_clb_task(self, request_id: str) -> None:
|
def wait_for_clb_task(self, request_id: str) -> None:
|
||||||
deadline = time.time() + 300
|
deadline = time.time() + 300
|
||||||
while time.time() < deadline:
|
while time.time() < deadline:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user