feat: enable node addition/removal based externalip updates

main
Malar Invention 2025-01-12 17:08:31 +05:30
parent 041b45bb94
commit 4a14d77cc5
1 changed files with 19 additions and 5 deletions

View File

@ -44,6 +44,7 @@ async def update_service_annotation(v1, service, external_ips):
async def watch_nodes(v1, external_ips_update_queue): async def watch_nodes(v1, external_ips_update_queue):
w = watch.Watch() w = watch.Watch()
external_node_ipset = set()
while True: while True:
try: try:
logger.debug("Starting to watch nodes") logger.debug("Starting to watch nodes")
@ -53,16 +54,29 @@ async def watch_nodes(v1, external_ips_update_queue):
_request_timeout=NODE_REQUEST_TIMEOUT, _request_timeout=NODE_REQUEST_TIMEOUT,
): ):
node = event["object"] 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 = [ external_ips = [
addr.address addr.address
for addr in node.status.addresses for addr in node.status.addresses
if addr.type == "ExternalIP" if addr.type == "ExternalIP"
] ]
if event_type in {"ADDED", "MODIFIED"}:
external_node_ipset.update(external_ips)
logger.debug( logger.debug(
f"External IPs for node {node.metadata.name}: {external_ips}" f"External IPs for node {node.metadata.name}: {external_ips}"
) )
await external_ips_update_queue.put(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}") logger.debug(f"Added external IPs to update queue: {external_ips}")
except client.exceptions.ApiException as e: except client.exceptions.ApiException as e: