feat: enable node addition/removal based externalip updates
parent
041b45bb94
commit
4a14d77cc5
|
|
@ -44,6 +44,7 @@ async def update_service_annotation(v1, service, external_ips):
|
|||
|
||||
async def watch_nodes(v1, external_ips_update_queue):
|
||||
w = watch.Watch()
|
||||
external_node_ipset = set()
|
||||
while True:
|
||||
try:
|
||||
logger.debug("Starting to watch nodes")
|
||||
|
|
@ -53,16 +54,29 @@ async def watch_nodes(v1, external_ips_update_queue):
|
|||
_request_timeout=NODE_REQUEST_TIMEOUT,
|
||||
):
|
||||
node = event["object"]
|
||||
logger.debug(f"Received event for node: {node.metadata.name}")
|
||||
event_type = event["type"]
|
||||
logger.debug(
|
||||
f"Received {event_type} event for node: {node.metadata.name}"
|
||||
)
|
||||
external_ips = [
|
||||
addr.address
|
||||
for addr in node.status.addresses
|
||||
if addr.type == "ExternalIP"
|
||||
]
|
||||
logger.debug(
|
||||
f"External IPs for node {node.metadata.name}: {external_ips}"
|
||||
)
|
||||
await external_ips_update_queue.put(external_ips)
|
||||
if event_type in {"ADDED", "MODIFIED"}:
|
||||
external_node_ipset.update(external_ips)
|
||||
logger.debug(
|
||||
f"External IPs for node {node.metadata.name}: {external_ips}"
|
||||
)
|
||||
elif event_type == "REMOVED":
|
||||
for ip in external_ips:
|
||||
if ip in external_node_ipset:
|
||||
external_node_ipset.remove(ip)
|
||||
logger.debug(
|
||||
f"External IPs for node {node.metadata.name}: {external_ips}"
|
||||
)
|
||||
external_node_ips = list(external_node_ipset)
|
||||
await external_ips_update_queue.put(external_node_ips)
|
||||
logger.debug(f"Added external IPs to update queue: {external_ips}")
|
||||
|
||||
except client.exceptions.ApiException as e:
|
||||
|
|
|
|||
Loading…
Reference in New Issue