Skip to content

Commit

Permalink
feat: add support for http_proxy
Browse files Browse the repository at this point in the history
  • Loading branch information
shipperizer committed Jun 25, 2024
1 parent 81feacb commit a9e892c
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 2 deletions.
12 changes: 12 additions & 0 deletions charmcraft.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -89,3 +89,15 @@ config:
httpreq_username:
type: string
description: Basic authentication username
http_proxy:
description: URL of the HTTP proxy eg http://proxy.internal:6666, it will set the HTTP_PROXY var in the workload environment
type: string
default: ''
https_proxy:
description: URL of the HTTPS proxy eg http://proxy.internal:6666, it will set the HTTPS_PROXY var in the workload environment
type: string
default: ''
no_proxy:
description: Domains that need to be excluded from proxying no_proxy="test.com,test.co.uk", it is a comma separate list
type: string
default: ''
46 changes: 44 additions & 2 deletions lib/charms/lego_base_k8s/v0/lego_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ def _plugin_config(self):

# Increment this PATCH version before using `charmcraft publish-lib` or reset
# to 0 if you are raising the major API version
LIBPATCH = 9
LIBPATCH = 10


logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -224,7 +224,7 @@ def _push_csr_to_workload(self, csr: str) -> None:
def _execute_lego_cmd(self) -> bool:
"""Execute lego command in workload container."""
process = self._container.exec(
self._cmd, timeout=300, working_dir="/tmp", environment=self._plugin_config
self._cmd, timeout=300, working_dir="/tmp", environment=self._common_config | self._plugin_config
)
try:
stdout, error = process.wait_output()
Expand Down Expand Up @@ -316,6 +316,27 @@ def _cmd(self) -> List[str]:
"run",
]

@property
def _common_config(self) -> Dict[str, str]:
"""Common configuration for the command
Used to set the environment context
Returns:
dict[str, str]: common configuration.
"""
common_config = {
"HTTPREQ_ENDPOINT": self._httpreq_endpoint,
}
if self._http_proxy:
common_config["HTTP_PROXY"] = self._http_proxy
if self._https_proxy:
common_config["HTTPS_PROXY"] = self._https_proxy
if self._no_proxy:
common_config["NO_PROXY"] = self._no_proxy

return common_config

@property
@abstractmethod
def _plugin_config(self) -> Dict[str, str]:
Expand Down Expand Up @@ -358,3 +379,24 @@ def _server(self) -> Optional[str]:
if not isinstance(server, str):
return None
return server

@property
def _http_proxy(self) -> Optional[str]:
http_proxy = self.model.config.get("http_proxy", None)
if not isinstance(http_proxy, str):
return None
return http_proxy

@property
def _https_proxy(self) -> Optional[str]:
https_proxy = self.model.config.get("https_proxy", None)
if not isinstance(https_proxy, str):
return None
return https_proxy

@property
def _no_proxy(self) -> Optional[str]:
no_proxy = self.model.config.get("no_proxy", None)
if not isinstance(no_proxy, str):
return None
return no_proxy

0 comments on commit a9e892c

Please sign in to comment.