|
60 | 60 | # https://docs.djangoproject.com/en/3.2/howto/static-files/
|
61 | 61 |
|
62 | 62 | STATIC_ROOT = get_static_root(BASE_DIR)
|
| 63 | + |
| 64 | +# TODO: delete this |
| 65 | + |
| 66 | +import json |
| 67 | + |
| 68 | +import boto3 |
| 69 | + |
| 70 | + |
| 71 | +def check_for_pointer_file(S3_APP_BUCKET, S3_APP_KEY): |
| 72 | + s3 = boto3.client("s3") |
| 73 | + |
| 74 | + pointer = s3.list_objects( |
| 75 | + Bucket=S3_APP_BUCKET, Prefix=f"{S3_APP_KEY}/dbMetadata/pointer" |
| 76 | + ) |
| 77 | + |
| 78 | + if pointer.get("Contents"): |
| 79 | + resp = s3.get_object( |
| 80 | + Bucket=S3_APP_BUCKET, Key=pointer["Contents"][0]["Key"] |
| 81 | + ) |
| 82 | + return resp["Body"].read().decode("utf-8") |
| 83 | + |
| 84 | + return None |
| 85 | + |
| 86 | + |
| 87 | +def construct_db_config(S3_APP_BUCKET, S3_KEY, DB_DATA): |
| 88 | + s3 = boto3.client("s3") |
| 89 | + |
| 90 | + cfg = s3.get_object(Bucket=S3_APP_BUCKET, Key=S3_KEY) |
| 91 | + |
| 92 | + config = json.loads(cfg["Body"].read().decode("utf-8")) |
| 93 | + |
| 94 | + if config and config["DBEngine"] == "postgres": |
| 95 | + DB_DATA["default"].update( |
| 96 | + { |
| 97 | + "NAME": config["Database"], |
| 98 | + "USER": config["user"], |
| 99 | + "PASSWORD": config["password"], |
| 100 | + "HOST": config["Endpoint"], |
| 101 | + "PORT": config["Port"], |
| 102 | + } |
| 103 | + ) |
| 104 | + |
| 105 | + return DB_DATA |
| 106 | + |
| 107 | + |
| 108 | +def load_db_config(S3_APP_BUCKET, S3_APP_KEY): |
| 109 | + s3 = boto3.client("s3") |
| 110 | + |
| 111 | + default_dict = { |
| 112 | + "default": { |
| 113 | + # "ENGINE": "django.db.backends.postgresql_psycopg2", |
| 114 | + "ENGINE": "django.db.backends.postgresql", |
| 115 | + "NAME": "", |
| 116 | + "USER": "", |
| 117 | + "PASSWORD": "", |
| 118 | + "HOST": "", |
| 119 | + "PORT": "", |
| 120 | + "OPTIONS": { |
| 121 | + "connect_timeout": 300, |
| 122 | + }, |
| 123 | + "ATOMIC_REQUESTS": True, |
| 124 | + } |
| 125 | + } |
| 126 | + |
| 127 | + link = check_for_pointer_file(S3_APP_BUCKET, S3_APP_KEY) |
| 128 | + if link: |
| 129 | + return construct_db_config(S3_APP_BUCKET, link, default_dict) |
| 130 | + |
| 131 | + objs = s3.list_objects( |
| 132 | + Bucket=S3_APP_BUCKET, Prefix=f"{S3_APP_KEY}/dbMetadata/" |
| 133 | + ) |
| 134 | + for config_file in objs.get("Contents", []): |
| 135 | + return construct_db_config( |
| 136 | + S3_APP_BUCKET, config_file["Key"], default_dict |
| 137 | + ) |
| 138 | + |
| 139 | + |
| 140 | +S3_BUCKET = os.getenv("aws_s3_app_bucket") |
| 141 | +S3_PREFIX = os.getenv("aws_s3_app_folder") |
| 142 | +# AWS_REGION = os.getenv("aws_region") |
| 143 | + |
| 144 | + |
| 145 | +DATABASES = load_db_config(S3_BUCKET, S3_PREFIX) |
| 146 | + |
| 147 | +# DATABASES = { |
| 148 | +# "default": { |
| 149 | +# "ENGINE": "django.db.backends.postgresql", |
| 150 | +# "NAME": os.getenv("DB_NAME", SERVICE_NAME), |
| 151 | +# "HOST": os.getenv("DB_HOST", "localhost"), |
| 152 | +# "PORT": int(os.getenv("DB_PORT", "5432")), |
| 153 | +# # "USER": os.getenv("DB_USER", "root"), |
| 154 | +# # "PASSWORD": os.getenv("DB_PASSWORD", "password"), |
| 155 | +# "ATOMIC_REQUESTS": True, |
| 156 | +# } |
| 157 | +# } |
0 commit comments