Bug Description
The Juju provider allows juju_machines to report their hostname, if wait_for_hostname is set link. This is the only information that someone can get for a Juju machine that runs an application in order to configure HAProxy charm for it.
HAProxy though supports resolvable hostnames as per the documentation link
If that hostname is tried to be added in the ingress-configurator tcp-backend-addresses, then a failure is thrown since it is not validated correctly. Log is attached below.
To Reproduce
# does not work
juju config ingress-configurator tcp-backend-addresses="juju-56c7de-1,juju-56c7de-2,juju-56c7de-3"
# works
juju config ingress-configurator tcp-backend-addresses="10.240.246.4,10.240.246.6,10.240.246.8"
Environment
haproxy 2.8/edge 333
ingress-configurator latest/edge 42
Juju 3.6.14
Juju cloud: LXD
Relevant log output
unit-ingress-configurator-non-tls-1: 10:19:03 INFO unit.ingress-configurator-non-tls/1.juju-log [{'type': 'ip_any_address', 'loc': ('backend_addresses', 0), 'msg': 'value is not a valid IPv4 or IPv6 address', 'input': 'juju-56c7de-1'}, {'type': 'ip_any_address', 'loc': ('backend_addresses', 1), 'msg': 'value is not a valid IPv4 or IPv6 address', 'input': 'juju-56c7de-2'}, {'type': 'ip_any_address', 'loc': ('backend_addresses', 2), 'msg': 'value is not a valid IPv4 or IPv6 address', 'input': 'juju-56c7de-3'}]
unit-ingress-configurator-non-tls-1: 10:19:03 ERROR unit.ingress-configurator-non-tls/1.juju-log Failed to validate haproxy-route-tcp requirements. Invalid config fields: ['backend_addresses-0', 'backend_addresses-1', 'backend_addresses-2']
unit-ingress-configurator-non-tls-1: 10:19:03 ERROR unit.ingress-configurator-non-tls/1.juju-log Error providing haproxy-route-tcp requirements.
Traceback (most recent call last):
File "/var/lib/juju/agents/unit-ingress-configurator-non-tls-1/charm/src/state/haproxy_route_tcp.py", line 188, in from_charm
return cls(
^^^^
File "/var/lib/juju/agents/unit-ingress-configurator-non-tls-1/charm/venv/lib/python3.12/site-packages/pydantic/_internal/_dataclasses.py", line 121, in __init__
s.__pydantic_validator__.validate_python(ArgsKwargs(args, kwargs), self_instance=s)
pydantic_core._pydantic_core.ValidationError: 3 validation errors for HaproxyRouteTcpRequirements
backend_addresses.0
value is not a valid IPv4 or IPv6 address [type=ip_any_address, input_value='juju-56c7de-1', input_type=str]
backend_addresses.1
value is not a valid IPv4 or IPv6 address [type=ip_any_address, input_value='juju-56c7de-2', input_type=str]
backend_addresses.2
value is not a valid IPv4 or IPv6 address [type=ip_any_address, input_value='juju-56c7de-3', input_type=str]
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/var/lib/juju/agents/unit-ingress-configurator-non-tls-1/charm/src/charm.py", line 141, in _provide_haproxy_route_tcp_requirements
tcp_requirements = HaproxyRouteTcpRequirements.from_charm(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/lib/juju/agents/unit-ingress-configurator-non-tls-1/charm/src/state/haproxy_route_tcp.py", line 204, in from_charm
raise InvalidHaproxyRouteTcpRequirementsError(
state.haproxy_route_tcp.InvalidHaproxyRouteTcpRequirementsError: Invalid haproxy-route-tcp configuration.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/var/lib/juju/agents/unit-ingress-configurator-non-tls-1/charm/src/charm.py", line 114, in _reconcile
self._provide_haproxy_route_tcp_requirements()
File "/var/lib/juju/agents/unit-ingress-configurator-non-tls-1/charm/src/charm.py", line 164, in _provide_haproxy_route_tcp_requirements
raise ProvideHaproxyRouteTcpRequirementsError(
ProvideHaproxyRouteTcpRequirementsError: Failed to provide haproxy-route-tcp requirements.
Additional context
No response
Bug Description
The Juju provider allows
juju_machines to report theirhostname, ifwait_for_hostnameis set link. This is the only information that someone can get for a Juju machine that runs an application in order to configure HAProxy charm for it.HAProxy though supports resolvable hostnames as per the documentation link
If that
hostnameis tried to be added in theingress-configurator tcp-backend-addresses, then a failure is thrown since it is not validated correctly. Log is attached below.To Reproduce
Environment
haproxy 2.8/edge 333
ingress-configurator latest/edge 42
Juju 3.6.14
Juju cloud: LXD
Relevant log output
unit-ingress-configurator-non-tls-1: 10:19:03 INFO unit.ingress-configurator-non-tls/1.juju-log [{'type': 'ip_any_address', 'loc': ('backend_addresses', 0), 'msg': 'value is not a valid IPv4 or IPv6 address', 'input': 'juju-56c7de-1'}, {'type': 'ip_any_address', 'loc': ('backend_addresses', 1), 'msg': 'value is not a valid IPv4 or IPv6 address', 'input': 'juju-56c7de-2'}, {'type': 'ip_any_address', 'loc': ('backend_addresses', 2), 'msg': 'value is not a valid IPv4 or IPv6 address', 'input': 'juju-56c7de-3'}] unit-ingress-configurator-non-tls-1: 10:19:03 ERROR unit.ingress-configurator-non-tls/1.juju-log Failed to validate haproxy-route-tcp requirements. Invalid config fields: ['backend_addresses-0', 'backend_addresses-1', 'backend_addresses-2'] unit-ingress-configurator-non-tls-1: 10:19:03 ERROR unit.ingress-configurator-non-tls/1.juju-log Error providing haproxy-route-tcp requirements. Traceback (most recent call last): File "/var/lib/juju/agents/unit-ingress-configurator-non-tls-1/charm/src/state/haproxy_route_tcp.py", line 188, in from_charm return cls( ^^^^ File "/var/lib/juju/agents/unit-ingress-configurator-non-tls-1/charm/venv/lib/python3.12/site-packages/pydantic/_internal/_dataclasses.py", line 121, in __init__ s.__pydantic_validator__.validate_python(ArgsKwargs(args, kwargs), self_instance=s) pydantic_core._pydantic_core.ValidationError: 3 validation errors for HaproxyRouteTcpRequirements backend_addresses.0 value is not a valid IPv4 or IPv6 address [type=ip_any_address, input_value='juju-56c7de-1', input_type=str] backend_addresses.1 value is not a valid IPv4 or IPv6 address [type=ip_any_address, input_value='juju-56c7de-2', input_type=str] backend_addresses.2 value is not a valid IPv4 or IPv6 address [type=ip_any_address, input_value='juju-56c7de-3', input_type=str] The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/var/lib/juju/agents/unit-ingress-configurator-non-tls-1/charm/src/charm.py", line 141, in _provide_haproxy_route_tcp_requirements tcp_requirements = HaproxyRouteTcpRequirements.from_charm(self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/var/lib/juju/agents/unit-ingress-configurator-non-tls-1/charm/src/state/haproxy_route_tcp.py", line 204, in from_charm raise InvalidHaproxyRouteTcpRequirementsError( state.haproxy_route_tcp.InvalidHaproxyRouteTcpRequirementsError: Invalid haproxy-route-tcp configuration. The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/var/lib/juju/agents/unit-ingress-configurator-non-tls-1/charm/src/charm.py", line 114, in _reconcile self._provide_haproxy_route_tcp_requirements() File "/var/lib/juju/agents/unit-ingress-configurator-non-tls-1/charm/src/charm.py", line 164, in _provide_haproxy_route_tcp_requirements raise ProvideHaproxyRouteTcpRequirementsError( ProvideHaproxyRouteTcpRequirementsError: Failed to provide haproxy-route-tcp requirements.Additional context
No response