threefoldtech / tfchain_graphql

Graphql for TFchain
Apache License 2.0
2 stars 3 forks source link

Interfaces should not be kept in a list #95

Closed LeeSmet closed 1 year ago

LeeSmet commented 1 year ago

It seems interfaces are just appended in a list, which leads to stale entries/duplicate entries. For example:

query MyQuery {
  nodes(where: {nodeID_eq: 656}) {
    interfaces {
      id
      ips
      name
    }
  }
}

leads to:

{
  "data": {
    "nodes": [
      {
        "interfaces": [
          {
            "id": "0000482034-000001-e4f62",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000565524-000001-4cb26",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000663646-000001-4b520",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000726370-000001-815c6",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778489-000029-1440b",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778511-000037-9fb8c",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778532-000031-68962",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778554-000025-ce0a6",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778576-000025-f2058",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778600-000009-f7fe1",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778621-000013-ab8b0",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778647-000023-ff8cf",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778670-000025-80742",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778692-000025-0e0c7",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778715-000025-71171",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778736-000027-8fc62",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778758-000017-39210",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778783-000011-3287a",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778807-000011-b0691",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778828-000011-8ad80",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778849-000017-763e7",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778874-000247-0666c",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000778997-000221-12cd4",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000817966-000011-8bdf8",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0000817996-000003-3f1a2",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0003058319-000003-24628",
            "ips": "192.168.29.198",
            "name": "zos"
          },
          {
            "id": "0004704630-000026-7de39",
            "ips": "192.168.29.198,192.168.29.225",
            "name": "zos"
          }
        ]
      }
    ]
  }
}

Not sure how zos reports interface changes, but old IP's for an interface with a given name should be invalidated if new ones come in (keeping in mind that only the same family ip's are invalidated, i.e. IPv4 IP only invalidates IPv4 IP)

DylanVerstraete commented 1 year ago

I think keeping a list is fine but maybe the update call doesn't properly update the interface list.

A-Harby commented 1 year ago

Verified. image