Skip to content

Commit 32d5cfa

Browse files
committed
Allow clients to pass vault config during instantiation
Update requirements.txt
1 parent 3a93d13 commit 32d5cfa

3 files changed

Lines changed: 42 additions & 14 deletions

File tree

‎requirements.txt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cryptography==49.0.0
1+
cryptography==50.0.*
22
packaging==26.*
33
python-dotenv==1.2.*
44
requests==2.*

‎vaultapi_client/config.py‎

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -137,31 +137,40 @@ def __assert__(self) -> None | NoReturn:
137137
Fernet(self.vault_secret)
138138

139139

140-
def getenv(*args, default: str = None) -> str:
140+
def getenv(*args, default: str | None = None) -> str | None:
141141
"""Returns the key-ed environment variable or the default value."""
142142
for key in args:
143-
if value := os.environ.get(key.upper()) or os.environ.get(key.lower()):
143+
if value := os.getenv(key.lower()) or os.getenv(key.upper()):
144144
return value
145145
return default
146146

147147

148-
def resolve_secrets(try_aws: bool) -> EnvConfig | NoReturn:
148+
def resolve_secrets(
149+
aws: bool,
150+
vault_server: str | None = None,
151+
vault_apikey: str | None = None,
152+
vault_secret: str | None = None,
153+
vault_transit_time_bucket: int | None = None,
154+
vault_transit_key_length: int | None = None,
155+
) -> EnvConfig | NoReturn:
149156
"""Tries to retrieve the required secret from environment variable or AWS parameter or the AWS secrets manager."""
150157
base_env_vars = dict(
151-
vault_server=getenv("vault_server", "server"),
152-
vault_apikey=getenv("vault_apikey", "apikey"),
153-
vault_secret=getenv("vault_secret", "secret"),
154-
vault_transit_time_bucket=getenv(
155-
"vault_transit_time_bucket", "transit_time_bucket", default="60"
158+
vault_server=vault_server or getenv("vault_server", "server"),
159+
vault_apikey=vault_apikey or getenv("vault_apikey", "apikey"),
160+
vault_secret=vault_secret or ("vault_secret", "secret"),
161+
vault_transit_time_bucket=(
162+
vault_transit_time_bucket
163+
or getenv("vault_transit_time_bucket", "transit_time_bucket")
156164
),
157-
vault_transit_key_length=getenv(
158-
"vault_transit_key_length", "transit_time_bucket", default="32"
165+
vault_transit_key_length=(
166+
vault_transit_key_length
167+
or getenv("vault_transit_key_length", "transit_time_bucket")
159168
),
160169
)
161170
if all(base_env_vars.values()):
162171
return EnvConfig(**base_env_vars)
163172
unsatisfied = [k for k, v in base_env_vars.items() if not v]
164-
if try_aws:
173+
if aws:
165174
aws_client = AWSClient()
166175
resolved_env_vars = {
167176
**base_env_vars,
@@ -170,6 +179,10 @@ def resolve_secrets(try_aws: bool) -> EnvConfig | NoReturn:
170179
for k in unsatisfied
171180
},
172181
}
182+
if not resolved_env_vars.get("vault_transit_time_bucket"):
183+
resolved_env_vars["vault_transit_time_bucket"] = 60
184+
if not resolved_env_vars.get("vault_transit_key_length"):
185+
resolved_env_vars["vault_transit_key_length"] = 32
173186
if all(resolved_env_vars.values()):
174187
return EnvConfig(**resolved_env_vars)
175188
unsatisfied = [k for k, v in resolved_env_vars.items() if not v]

‎vaultapi_client/main.py‎

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,24 @@ class VaultAPIClient:
1515
1616
"""
1717

18-
def __init__(self, aws: bool = getenv("vault_aws", default="0") in ("1", "true")):
18+
def __init__(
19+
self,
20+
aws: bool = getenv("vault_aws", default="0") in ("1", "true"),
21+
vault_server: str | None = None,
22+
vault_apikey: str | None = None,
23+
vault_secret: str | None = None,
24+
vault_transit_time_bucket: int | None = None,
25+
vault_transit_key_length: int | None = None,
26+
):
1927
"""Instantiates the VaultAPIClient object."""
20-
self.env_config = resolve_secrets(aws)
28+
self.env_config = resolve_secrets(
29+
aws=aws,
30+
vault_server=vault_server,
31+
vault_apikey=vault_apikey,
32+
vault_secret=vault_secret,
33+
vault_transit_time_bucket=vault_transit_time_bucket,
34+
vault_transit_key_length=vault_transit_key_length,
35+
)
2136
self.transit_shield = TransitShield(self.env_config)
2237
self.SESSION = Session(self.env_config)
2338

0 commit comments

Comments
 (0)