Depending on the number of values configured on a `<multi/>` node the return format inside `get_config_dict() `changes from string to list.
Assume the following:
```
ssh {
listen-address 172.18.254.201
port 22
port 2222
}
```
This will yield: `{'listen_address': '172.18.254.201', 'port': ['22', '2222']}`
```
ssh {
listen-address 172.18.254.201
listen-address 172.18.254.202
port 22
port 2222
}
```
This will yield: `{['listen_address': '172.18.254.201', 'listen_address': '172.18.254.201'], 'port': ['22', '2222']}`
Thus using this code for templating becomes error prone and will add a lot of redundancy to the templates. It can be coded as:
```
{% if listen_address %}
# Specifies the local addresses sshd should listen on
{% if listen_address is string %}
ListenAddress {{ listen_address }}
{% else %}
{% for address in listen_address %}
ListenAddress {{ value }}
{% endfor %}
{% endif %}
{% endif %}
```
But is it would always return a list for a multi node (as what happens on `conf.return_values()`) the template will shrink to (and be consistent to return_values()):
```
{% if listen_address %}
# Specifies the local addresses sshd should listen on
{% for address in listen_address %}
ListenAddress {{ value }}
{% endfor %}
{% endif %}
```
# TagNodes
It turned out that this also becomes an issue on tag nodes.
## Interface with one IP address
```
>>> Config().get_config_dict(['interfaces', 'ethernet', 'eth2', 'address'])
{'address': '2.2.2.2/32'}
```
## Interface with two IP addresses
```
>>> Config().get_config_dict(['interfaces', 'ethernet', 'eth1', 'address'])
{'address': ['fd00::ffff/64', '1.1.1.1/32']}
```