diff --git a/src/charm.py b/src/charm.py index a032080..ec49fe0 100755 --- a/src/charm.py +++ b/src/charm.py @@ -8,6 +8,7 @@ """Cloudflared charm service.""" import logging +import os import pathlib import re import subprocess # nosec @@ -129,6 +130,7 @@ def _reconcile(self, _: ops.EventBase) -> None: config = { "tunnel-token": tunnel_spec.tunnel_token, "metrics-port": metrics_ports[instance], + **self._proxy_config(), } if all(charmed_cloudflared.get(key) == str(value) for key, value in config.items()): continue @@ -139,6 +141,18 @@ def _reconcile(self, _: ops.EventBase) -> None: charmed_cloudflared.start(enable=True) self.unit.status = ops.ActiveStatus() + def _proxy_config(self) -> dict[str, str]: + """Get HTTP proxy related configurations from the juju model configuration. + + Returns: + A dictionary of HTTP proxy related configurations. + """ + return { + "http-proxy": os.environ.get("JUJU_CHARM_HTTP_PROXY", ""), + "https-proxy": os.environ.get("JUJU_CHARM_HTTPS_PROXY", ""), + "no-proxy": os.environ.get("JUJU_CHARM_NO_PROXY", ""), + } + def _subprocess_run(self, cmd: list[str]) -> None: """Run a subprocess command.