Skip to content

Commit

Permalink
FIX | UPDATE : encapsulated the env class and structured the class an…
Browse files Browse the repository at this point in the history
…d updated the imports on the init file to import only what needed
  • Loading branch information
jaguar-ks committed Jan 2, 2025
1 parent eb40428 commit eea533d
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 53 deletions.
4 changes: 2 additions & 2 deletions srcs/api/config/envm/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
is_prod = os.getenv('PROD', 'false').lower() == 'true'

if is_prod:
from .env_prod import *
from .env_prod import env, BASE_DIR
else:
from .env_dev import *
from .env_dev import env, BASE_DIR
86 changes: 35 additions & 51 deletions srcs/api/config/envm/env_prod.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,61 +4,45 @@
import hvac

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
BASE_DIR = Path(__file__).resolve().parent.parent.parent

# env = environ.Env()

# environ.Env.read_env(BASE_DIR / ".env")

client = hvac.Client(url="http://vault:8200")

role_id = os.getenv("ROLE_ID")
secret_id = os.getenv("SECRET_ID")

# print(role_id, secret_id)

if not client.is_authenticated():
client.auth.approle.login(
role_id=role_id,
secret_id=secret_id
)

read_resp = client.secrets.kv.v1.read_secret(
path="django",
mount_point="kv",
)

db_creds = client.secrets.database.generate_credentials(name="postgres-role")

class env:
def __init__(self, key, default=None):
self.key = key
# pass

def db_user():
return str(db_creds["data"]["username"])
class ENV:
client = hvac.Client(url="http://vault:8200")

def db_password():
return str(db_creds["data"]["password"])

def __new__(cls, key, default=None):
if key not in read_resp["data"]:
return str(default)
return str(read_resp["data"][key])
role_id = os.getenv("ROLE_ID")
secret_id = os.getenv("SECRET_ID")

def __init__(self):
if not self.client.is_authenticated():
self.client.auth.approle.login(
role_id=self.role_id,
secret_id=self.secret_id
)
self.secrets = self.client.secrets.kv.v1.read_secret(
path="django",
mount_point="kv",
)
self.db_creds = self.client.secrets.database.generate_credentials(name="postgres-role")

def db_user(self):
return str(self.db_creds["data"]["username"])

def int(key, default=None):
if key not in read_resp["data"]:
def db_password(self):
return str(self.db_creds["data"]["password"])

def int(self, key, default=None):
if key not in self.secrets["data"] and default != None:
return int(default)
return int(read_resp["data"][key])

def bool(key, default=None):
if key not in read_resp["data"]:
return int(self.secrets["data"][key])
def bool(self, key, default=None):
if key not in self.secrets["data"] and default != None:
return bool(default)
return bool(read_resp["data"][key])

def env(key, default=None):
if key not in read_resp["data"]:
return bool(self.secrets["data"][key])
def __call__(self, key, default=None):
if key not in self.secrets["data"] and default != None:
return str(default)
return str(read_resp["data"][key])

return str(self.secrets["data"][key])

env = ENV()

0 comments on commit eea533d

Please sign in to comment.