Lxc list shows a container's IP, but can't get it through the API

Exhibit A:

$ lxc list
+--------------+---------+-----------------------+------+------------+-----------+----------+
|     NAME     |  STATE  |         IPV4          | IPV6 |    TYPE    | SNAPSHOTS | LOCATION |
+--------------+---------+-----------------------+------+------------+-----------+----------+
| SLDC-CLDN-01 | STOPPED |                       |      | PERSISTENT | 0         | demo-hv1 |
+--------------+---------+-----------------------+------+------------+-----------+----------+
| SLDC-CLDN-02 | RUNNING | 10.254.254.149 (eth0) |      | PERSISTENT | 0         | demo-hv1 |
+--------------+---------+-----------------------+------+------------+-----------+----------+
| SLDC-CLDN-03 | STOPPED |                       |      | PERSISTENT | 0         | demo-hv1 |
+--------------+---------+-----------------------+------+------------+-----------+----------+
| SLDC-CLDN-04 | STOPPED |                       |      | PERSISTENT | 0         | demo-hv1 |
+--------------+---------+-----------------------+------+------------+-----------+----------+
| SLDC-CLDN-05 | STOPPED |                       |      | PERSISTENT | 0         | demo-hv1 |
+--------------+---------+-----------------------+------+------------+-----------+----------+
| SLDC-CLDN-06 | STOPPED |                       |      | PERSISTENT | 0         | demo-hv1 |
+--------------+---------+-----------------------+------+------------+-----------+----------+

Exhibit B:

$ curl --silent --unix-socket /var/snap/lxd/common/lxd/unix.socket a/1.0/containers/SLDC-CLDN-02 | jq .
{
  "type": "sync",
  "status": "Success",
  "status_code": 200,
  "operation": "",
  "error_code": 0,
  "error": "",
  "metadata": {
    "architecture": "x86_64",
    "config": {
      "boot.autostart": "1",
      "image.architecture": "x86_64",
      "image.description": "Centos 7 x86_64 (20190325_07:08)",
      "image.name": "centos-7-x86_64-default-20190325_07:08",
      "image.os": "centos",
      "image.release": "7",
      "image.serial": "20190325_07:08",
      "image.variant": "default",
      "limits.cpu": "1",
      "limits.memory": "1GB",
      "user.user-data": "runcmd:\n    - sed -i 's/session.*required.*pam_loginuid.so/#session\\trequired\\tpam_loginuid.so/' /etc/pam.d/*\n    - sed -i 's/session.*required.*pam_limits.so/#session\\trequired\\tpam_limits.so/' /etc/pam.d/*\nlocale: en_US.UTF-8\ntimezone: Europe/Amsterdam\nusers:\n    - name: root\n        ssh_authorized_keys:\n        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCVS7y0YUA6JmbI9cTNPyZTOY3NoHSu0w5Lp5f+4KNMXXygjduJqUY1WoDgwPafSyMjvWjOgju4GWB53RvU9SBHr1LdJEn86BQ7PVrekghHUGgNQKAnyNw8mHkl8oAQK2qRHu81q3vB3DZ7/EcjlnPmuwqJCNraiMi7sZ1YSzwQobXImaKav/9gaRDIW3ONzZjMQs70HNI4dyJffG1IlgCSQzxuFMD3KZw/htGGkGOqwBin+5qgoZzp1i0jJL4adnet83WCAanHnsm86QnweUBRQOH5JuVflimTw60mk7SzPCubELSXIwYUxaM4SoaNSp5cozSBwggEqaUPkayGvuKz tf-lxc-ans@builhost1\n        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDa0qBwFcY84k7dTkd4fX1De2QYGtY6aK6OCsEYH/gPSvHb59JvCsS7BnhrkSa7JK0vdv2h1/xbs1JajsMcNjdHrNwHlA+XPK9dPf4Op1HqTfAQzJxo+w1o1Ff5kXbRtyKb6ZWc3r2HjndIvIxN5t2NgGZ20oZji4CiB0MHEH2AjgUie1D25NQAg7QUF/D2en5PbAyovbA7q3VW6IFMQhAfhBtYcQO8xxdymrMCB+y3mZFsMs2BjpDtbFLiSAjwcy9mx5KIyDqA+k8qlV1ayuDX6WFQoxCGQ2S62+Du5TTE4TOP9kmoyM160IyboN/7lRb2oMeaho06tFGFtkqSSruX mdione@nimbus\n\n",
      "volatile.base_image": "2d8190b364998ba6edfbcd08509ffce3433f8e84c864a394e9f5c305bacf52f8",
      "volatile.eth0.host_name": "veth0a7e4763",
      "volatile.eth0.hwaddr": "00:16:3e:51:e1:17",
      "volatile.eth1.host_name": "veth75499f2b",
      "volatile.eth1.hwaddr": "00:16:3e:45:4c:74",
      "volatile.idmap.base": "0",
      "volatile.idmap.current": "[{\"Isuid\":true,\"Isgid\":false,\"Hostid\":1000000,\"Nsid\":0,\"Maprange\":1000000000},{\"Isuid\":false,\"Isgid\":true,\"Hostid\":1000000,\"Nsid\":0,\"Maprange\":1000000000}]",
      "volatile.idmap.next": "[{\"Isuid\":true,\"Isgid\":false,\"Hostid\":1000000,\"Nsid\":0,\"Maprange\":1000000000},{\"Isuid\":false,\"Isgid\":true,\"Hostid\":1000000,\"Nsid\":0,\"Maprange\":1000000000}]",
      "volatile.ipmi.host_name": "veth7ac14039",
      "volatile.ipmi.hwaddr": "00:16:3e:ad:0a:66",
      "volatile.last_state.idmap": "[{\"Isuid\":true,\"Isgid\":false,\"Hostid\":1000000,\"Nsid\":0,\"Maprange\":1000000000},{\"Isuid\":false,\"Isgid\":true,\"Hostid\":1000000,\"Nsid\":0,\"Maprange\":1000000000}]",
      "volatile.last_state.power": "RUNNING"
    },
    "devices": {
      "foobar001": {
        "path": "/foobar001",
        "pool": "local",
        "source": "SLDC-CLDN-02-foobar001",
        "type": "disk"
      },
      "foobar002": {
        "path": "/foobar002",
        "pool": "local",
        "source": "SLDC-CLDN-02-foobar002",
        "type": "disk"
      },
      "foobar003": {
        "path": "/foobar003",
        "pool": "local",
        "source": "SLDC-CLDN-02-foobar003",
        "type": "disk"
      },
      "foobar004": {
        "path": "/foobar004",
        "pool": "local",
        "source": "SLDC-CLDN-02-foobar004",
        "type": "disk"
      },
      "eth0": {
        "name": "eth0",
        "nictype": "bridged",
        "parent": "br20",
        "type": "nic"
      },
      "eth1": {
        "name": "eth1",
        "nictype": "bridged",
        "parent": "br10",
        "type": "nic"
      },
      "ipmi": {
        "name": "ipmi",
        "nictype": "bridged",
        "parent": "br20",
        "type": "nic"
      }
    },
    "ephemeral": false,
    "profiles": [
      "default"
    ],
    "stateful": false,
    "description": "",
    "created_at": "2019-12-03T11:35:59.087463442+01:00",
    "expanded_config": {
      "boot.autostart": "1",
      "environment.http_proxy": "",
      "image.architecture": "x86_64",
      "image.description": "Centos 7 x86_64 (20190325_07:08)",
      "image.name": "centos-7-x86_64-default-20190325_07:08",
      "image.os": "centos",
      "image.release": "7",
      "image.serial": "20190325_07:08",
      "image.variant": "default",
      "limits.cpu": "1",
      "limits.memory": "1GB",
      "user.network_mode": "",
      "user.user-data": "runcmd:\n    - sed -i 's/session.*required.*pam_loginuid.so/#session\\trequired\\tpam_loginuid.so/' /etc/pam.d/*\n    - sed -i 's/session.*required.*pam_limits.so/#session\\trequired\\tpam_limits.so/' /etc/pam.d/*\nlocale: en_US.UTF-8\ntimezone: Europe/Amsterdam\nusers:\n    - name: root\n        ssh_authorized_keys:\n        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCVS7y0YUA6JmbI9cTNPyZTOY3NoHSu0w5Lp5f+4KNMXXygjduJqUY1WoDgwPafSyMjvWjOgju4GWB53RvU9SBHr1LdJEn86BQ7PVrekghHUGgNQKAnyNw8mHkl8oAQK2qRHu81q3vB3DZ7/EcjlnPmuwqJCNraiMi7sZ1YSzwQobXImaKav/9gaRDIW3ONzZjMQs70HNI4dyJffG1IlgCSQzxuFMD3KZw/htGGkGOqwBin+5qgoZzp1i0jJL4adnet83WCAanHnsm86QnweUBRQOH5JuVflimTw60mk7SzPCubELSXIwYUxaM4SoaNSp5cozSBwggEqaUPkayGvuKz tf-lxc-ans@builhost1\n        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDa0qBwFcY84k7dTkd4fX1De2QYGtY6aK6OCsEYH/gPSvHb59JvCsS7BnhrkSa7JK0vdv2h1/xbs1JajsMcNjdHrNwHlA+XPK9dPf4Op1HqTfAQzJxo+w1o1Ff5kXbRtyKb6ZWc3r2HjndIvIxN5t2NgGZ20oZji4CiB0MHEH2AjgUie1D25NQAg7QUF/D2en5PbAyovbA7q3VW6IFMQhAfhBtYcQO8xxdymrMCB+y3mZFsMs2BjpDtbFLiSAjwcy9mx5KIyDqA+k8qlV1ayuDX6WFQoxCGQ2S62+Du5TTE4TOP9kmoyM160IyboN/7lRb2oMeaho06tFGFtkqSSruX mdione@nimbus\n\n",
      "volatile.base_image": "2d8190b364998ba6edfbcd08509ffce3433f8e84c864a394e9f5c305bacf52f8",
      "volatile.eth0.host_name": "veth0a7e4763",
      "volatile.eth0.hwaddr": "00:16:3e:51:e1:17",
      "volatile.eth1.host_name": "veth75499f2b",
      "volatile.eth1.hwaddr": "00:16:3e:45:4c:74",
      "volatile.idmap.base": "0",
      "volatile.idmap.current": "[{\"Isuid\":true,\"Isgid\":false,\"Hostid\":1000000,\"Nsid\":0,\"Maprange\":1000000000},{\"Isuid\":false,\"Isgid\":true,\"Hostid\":1000000,\"Nsid\":0,\"Maprange\":1000000000}]",
      "volatile.idmap.next": "[{\"Isuid\":true,\"Isgid\":false,\"Hostid\":1000000,\"Nsid\":0,\"Maprange\":1000000000},{\"Isuid\":false,\"Isgid\":true,\"Hostid\":1000000,\"Nsid\":0,\"Maprange\":1000000000}]",
      "volatile.ipmi.host_name": "veth7ac14039",
      "volatile.ipmi.hwaddr": "00:16:3e:ad:0a:66",
      "volatile.last_state.idmap": "[{\"Isuid\":true,\"Isgid\":false,\"Hostid\":1000000,\"Nsid\":0,\"Maprange\":1000000000},{\"Isuid\":false,\"Isgid\":true,\"Hostid\":1000000,\"Nsid\":0,\"Maprange\":1000000000}]",
      "volatile.last_state.power": "RUNNING"
    },
    "expanded_devices": {
      "foobar001": {
        "path": "/foobar001",
        "pool": "local",
        "source": "SLDC-CLDN-02-foobar001",
        "type": "disk"
      },
      "foobar002": {
        "path": "/foobar002",
        "pool": "local",
        "source": "SLDC-CLDN-02-foobar002",
        "type": "disk"
      },
      "foobar003": {
        "path": "/foobar003",
        "pool": "local",
        "source": "SLDC-CLDN-02-foobar003",
        "type": "disk"
      },
      "foobar004": {
        "path": "/foobar004",
        "pool": "local",
        "source": "SLDC-CLDN-02-foobar004",
        "type": "disk"
      },
      "eth0": {
        "name": "eth0",
        "nictype": "bridged",
        "parent": "br20",
        "type": "nic"
      },
      "eth1": {
        "name": "eth1",
        "nictype": "bridged",
        "parent": "br10",
        "type": "nic"
      },
      "ipmi": {
        "name": "ipmi",
        "nictype": "bridged",
        "parent": "br20",
        "type": "nic"
      },
      "root": {
        "path": "/",
        "pool": "local",
        "type": "disk"
      }
    },
    "name": "SLDC-CLDN-02",
    "status": "Running",
    "status_code": 103,
    "last_used_at": "2019-12-03T11:36:10.632928799+01:00",
    "location": "demo-hv1",
    "type": "container"
  }
}

Who does lxc list get the IP? My original issue is that https://github.com/sl1pm4t/terraform-provider-lxd can’t properly detect nodes up (it’s waiting for one IP address to appear).

you should use lxc --debug to see what to use.

lxc list --debug alp 2>&1 >/dev/null | grep Sending
t=2019-12-03T16:40:06+0100 lvl=dbug msg="Sending request to LXD" etag= method=GET url=http://unix.socket/1.0
t=2019-12-03T16:40:06+0100 lvl=dbug msg="Sending request to LXD" etag= method=GET url="http://unix.socket/1.0/instances?recursion=1"
t=2019-12-03T16:40:06+0100 lvl=dbug msg="Sending request to LXD" etag= method=GET url="http://unix.socket/1.0/instances/alp/snapshots?recursion=1"
t=2019-12-03T16:40:06+0100 lvl=dbug msg="Sending request to LXD" etag= method=GET url=http://unix.socket/1.0/instances/alp/state

the problem is that you are asking for a container (a static thing) but the IP belongs to an instance.

curl --silent --unix-socket /var/snap/lxd/common/lxd/unix.socket a/1.0/instances/alp/state | jq . | grep address

        "addresses": [
            "address": "10.10.0.50",
            "address": "fe80::216:3eff:feef:769d",
        "addresses": [
            "address": "127.0.0.1",
            "address": "::1",