| 1 | from loguru import logger |
| 2 | |
| 3 | from app.connectors.portainer.schema.nodes import NodesResponse |
| 4 | from app.connectors.portainer.utils.universal import get_endpoint_id |
| 5 | from app.connectors.portainer.utils.universal import send_get_request |
| 6 | |
| 7 | |
| 8 | async def get_node_details() -> NodesResponse: |
| 9 | """ |
| 10 | Get the node details from the Portainer API. |
| 11 | """ |
| 12 | logger.info("Getting swarm node IPs") |
| 13 | endpoint_id = await get_endpoint_id() |
| 14 | logger.info(f"Endpoint ID: {endpoint_id}") |
| 15 | nodes_response = await send_get_request(f"/api/endpoints/{endpoint_id}/docker/nodes") |
| 16 | # Transform the response to match our simpler model |
| 17 | return NodesResponse(nodes=nodes_response["data"], success=True, message="Nodes fetched successfully") |