Skip to content

Commit 41021ac

Browse files
committed
py: prioritize requests_verify param over envs
Signed-off-by: Abhinav Gyawali <22275402+abhizer@users.noreply.github.com>
1 parent 5a2ad0b commit 41021ac

6 files changed

Lines changed: 47 additions & 22 deletions

File tree

python/feldera/rest/_helpers.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
import logging
2+
import os
3+
4+
15
def client_version() -> str:
26
from importlib.metadata import version, PackageNotFoundError
37

@@ -7,3 +11,26 @@ def client_version() -> str:
711
version = "unknown"
812

913
return version
14+
15+
16+
def requests_verify_from_env() -> str | bool:
17+
env_feldera_tls_insecure = os.environ.get("FELDERA_TLS_INSECURE")
18+
FELDERA_HTTPS_TLS_CERT = os.environ.get("FELDERA_HTTPS_TLS_CERT")
19+
20+
if env_feldera_tls_insecure is not None and FELDERA_HTTPS_TLS_CERT is not None:
21+
logging.warning(
22+
"environment variables FELDERA_HTTPS_TLS_CERT and "
23+
"FELDERA_TLS_INSECURE both are set."
24+
"\nFELDERA_HTTPS_TLS_CERT takes priority."
25+
)
26+
27+
if env_feldera_tls_insecure is None:
28+
FELDERA_TLS_INSECURE = False
29+
else:
30+
FELDERA_TLS_INSECURE = env_feldera_tls_insecure.strip().lower() in ("1", "true", "yes")
31+
32+
requests_verify = not FELDERA_TLS_INSECURE
33+
if FELDERA_HTTPS_TLS_CERT is not None:
34+
requests_verify = FELDERA_HTTPS_TLS_CERT
35+
36+
return requests_verify

python/feldera/rest/config.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from typing import Optional
22
import os
3+
from feldera.rest._helpers import requests_verify_from_env
4+
import logging
35

46

57
class Config:
@@ -14,7 +16,7 @@ def __init__(
1416
version: Optional[str] = None,
1517
timeout: Optional[float] = None,
1618
connection_timeout: Optional[float] = None,
17-
requests_verify: bool | str = True,
19+
requests_verify: Optional[bool | str] = None,
1820
) -> None:
1921
"""
2022
:param url: The url to the Feldera API (ex: https://try.feldera.com)
@@ -23,7 +25,10 @@ def __init__(
2325
:param timeout: The timeout for the HTTP requests
2426
:param connection_timeout: The connection timeout for the HTTP requests
2527
:param requests_verify: The `verify` parameter passed to the requests
26-
library. `True` by default.
28+
library. `True` by default. Can also be set using environment
29+
variables `FELDERA_TLS_INSECURE` to disable TLS and
30+
`FELDERA_HTTPS_TLS_CERT` to set the certificate path. The latter
31+
takes priority.
2732
"""
2833

2934
BASE_URL = (
@@ -37,11 +42,10 @@ def __init__(
3742
self.version: Optional[str] = version or "v0"
3843
self.timeout: Optional[float] = timeout
3944
self.connection_timeout: Optional[float] = connection_timeout
45+
env_verify = requests_verify_from_env()
46+
self.requests_verify: bool | str = (
47+
requests_verify if requests_verify is not None else env_verify
48+
)
4049

41-
FELDERA_TLS_INSECURE = True if os.environ.get("FELDERA_TLS_INSECURE") else False
42-
FELDERA_HTTPS_TLS_CERT = os.environ.get("FELDERA_HTTPS_TLS_CERT")
43-
requests_verify = not FELDERA_TLS_INSECURE
44-
if requests_verify and FELDERA_HTTPS_TLS_CERT is not None:
45-
requests_verify = FELDERA_HTTPS_TLS_CERT
46-
47-
self.requests_verify: bool | str = requests_verify
50+
if self.requests_verify is False:
51+
logging.warning("TLS verification is disabled.")

python/feldera/rest/feldera_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def __init__(
4949
api_key: Optional[str] = None,
5050
timeout: Optional[float] = None,
5151
connection_timeout: Optional[float] = None,
52-
requests_verify: bool | str = True,
52+
requests_verify: Optional[bool | str] = None,
5353
) -> None:
5454
"""
5555
:param url: The url to Feldera API (ex: https://try.feldera.com). If

python/feldera/testutils.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from feldera.pipeline_builder import PipelineBuilder
1414
from feldera.runtime_config import Resources, RuntimeConfig
1515
from feldera.rest import FelderaClient
16+
from feldera.rest._helpers import requests_verify_from_env
1617

1718
API_KEY = os.environ.get("FELDERA_API_KEY")
1819

@@ -46,12 +47,7 @@ def _get_effective_api_key():
4647
PIPELINE_TO_KAFKA_SERVER = os.environ.get(
4748
"FELDERA_PIPELINE_TO_KAFKA_SERVER", "redpanda:9092"
4849
)
49-
FELDERA_TLS_INSECURE = True if os.environ.get("FELDERA_TLS_INSECURE") else False
50-
FELDERA_HTTPS_TLS_CERT = os.environ.get("FELDERA_HTTPS_TLS_CERT")
51-
if not FELDERA_TLS_INSECURE and FELDERA_HTTPS_TLS_CERT is not None:
52-
FELDERA_REQUESTS_VERIFY = FELDERA_HTTPS_TLS_CERT
53-
else:
54-
FELDERA_REQUESTS_VERIFY = not FELDERA_TLS_INSECURE
50+
FELDERA_REQUESTS_VERIFY = requests_verify_from_env()
5551

5652

5753
class _LazyClient:

python/tests/__init__.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66
BASE_URL,
77
PIPELINE_TO_KAFKA_SERVER,
88
KAFKA_SERVER,
9-
FELDERA_TLS_INSECURE,
10-
FELDERA_HTTPS_TLS_CERT,
9+
FELDERA_REQUESTS_VERIFY,
1110
)
1211

1312
__all__ = [
@@ -18,6 +17,5 @@
1817
"BASE_URL",
1918
"PIPELINE_TO_KAFKA_SERVER",
2019
"KAFKA_SERVER",
21-
"FELDERA_TLS_INSECURE",
22-
"FELDERA_HTTPS_TLS_CERT",
20+
"FELDERA_REQUESTS_VERIFY",
2321
]

python/tests/platform/helper.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
from http import HTTPStatus
2323
from urllib.parse import quote, quote_plus
2424

25-
from tests import FELDERA_TLS_INSECURE, API_KEY, BASE_URL, unique_pipeline_name
2625
from feldera.testutils_oidc import get_oidc_test_helper
26+
from tests import FELDERA_REQUESTS_VERIFY, API_KEY, BASE_URL, unique_pipeline_name
2727

2828
API_PREFIX = "/v0"
2929

@@ -80,7 +80,7 @@ def http_request(method: str, path: str, **kwargs) -> requests.Response:
8080

8181
# Provide a default timeout to avoid hanging tests.
8282
timeout = kwargs.pop("timeout", 30)
83-
kwargs["verify"] = not FELDERA_TLS_INSECURE
83+
kwargs["verify"] = FELDERA_REQUESTS_VERIFY
8484
resp = requests.request(
8585
method.upper(), url, headers=headers, timeout=timeout, **kwargs
8686
)

0 commit comments

Comments
 (0)