3
3
import subprocess
4
4
import sys
5
5
import yaml
6
+ import json
7
+ import pprint
8
+ from components .whatsapp_waha .main import create_whatsapp_waha
9
+ from components .postgresql_operator .main import create_postgresql_operator_crds , create_postgresql_operator
10
+ from components .postgresql_instance .main import create_postgres_instance as create_postgres_instance_base
6
11
7
12
# Set config path before imports
8
13
current_dir = os .path .dirname (os .path .abspath (__file__ ))
@@ -246,6 +251,125 @@ def generate_all_skaffolds():
246
251
]
247
252
)
248
253
254
+ # PostgreSQL Operator
255
+ postgresql_namespace_name = "postgresql-system"
256
+ postgresql_namespace = create_namespace (
257
+ slug = "postgresql" ,
258
+ namespace = postgresql_namespace_name ,
259
+ depends_on = []
260
+ )
261
+
262
+ postgresql_operator_crds = create_postgresql_operator_crds (
263
+ slug = "postgresql-crds" ,
264
+ namespace = postgresql_namespace_name ,
265
+ depends_on = [
266
+ postgresql_namespace
267
+ ]
268
+ )
269
+
270
+ postgresql_operator = create_postgresql_operator (
271
+ slug = "postgresql-operator" ,
272
+ namespace = postgresql_namespace_name ,
273
+ depends_on = [
274
+ postgresql_namespace ,
275
+ postgresql_operator_crds
276
+ ]
277
+ )
278
+
279
+
280
+ # Whatsapp WAHA
281
+ whatsapp_waha_config = config ['components' ]['whatsapp_waha' ]
282
+
283
+ # WhatsApp WAHA PostgreSQL Instance
284
+ whatsapp_db_config = whatsapp_waha_config .get ('postgres_db' , {})
285
+ whatsapp_db_name = whatsapp_db_config .get ('db_name' , 'whatsapp_db' )
286
+ whatsapp_db_superuser = whatsapp_db_config .get ('superuser' , 'postgres' )
287
+ whatsapp_db_superuser_password = whatsapp_db_config .get ('superuser_password' , 'postgres' )
288
+ whatsapp_db_username = whatsapp_db_config .get ('username' , 'whatsapp_user' )
289
+ whatsapp_db_password = whatsapp_db_config .get ('password' , 'whatsapp_password' )
290
+
291
+ whatsapp_waha_namespace_name = "whatsapp"
292
+
293
+ whatsapp_waha_namespace = create_namespace (
294
+ slug = whatsapp_waha_namespace_name ,
295
+ namespace = whatsapp_waha_namespace_name ,
296
+ depends_on = []
297
+ )
298
+
299
+ whatsapp_waha_postgres_instance = create_postgres_instance_base (
300
+ slug = "whatsapp-db" ,
301
+ namespace = whatsapp_waha_namespace_name ,
302
+ db_name = whatsapp_db_name ,
303
+ superuser = whatsapp_db_superuser ,
304
+ superuser_password = whatsapp_db_superuser_password ,
305
+ username = whatsapp_db_username ,
306
+ user_password = whatsapp_db_password ,
307
+ replicas = whatsapp_db_config .get ('replicas' , 1 ),
308
+ storage_size = whatsapp_db_config .get ('storage_size' , '5Gi' ),
309
+ wal_storage_size = whatsapp_db_config .get ('wal_storage_size' , '1Gi' ),
310
+ repo_storage_size = whatsapp_db_config .get ('repo_storage_size' , '2Gi' ),
311
+ s3_backup = whatsapp_db_config .get ('s3_backup' , None ),
312
+ s3_bootstrap = whatsapp_db_config .get ('s3_bootstrap' , None ),
313
+ service_type = whatsapp_db_config .get ('service_type' , 'LoadBalancer' ),
314
+ service_annotations = whatsapp_db_config .get ('service_annotations' , {}),
315
+ depends_on = [
316
+ whatsapp_waha_namespace , # Depend on WhatsApp namespace
317
+ postgresql_operator_crds ,
318
+ postgresql_operator
319
+ ]
320
+ )
321
+ whatsapp_waha_domain_name = whatsapp_waha_config ['domain_name' ]
322
+ whatsapp_waha_root_domain = '.' .join (whatsapp_waha_domain_name .split ('.' )[1 :])
323
+
324
+ whatsapp_waha_cert_manager_issuer = create_cert_manager_issuer (
325
+ slug = "whatsapp-waha-issuer" ,
326
+ namespace = whatsapp_waha_namespace_name ,
327
+ cloudflare_email = env_vars ['CLOUDFLARE_EMAIL' ],
328
+ cloudflare_api_token = env_vars ['CLOUDFLARE_API_TOKEN' ],
329
+ depends_on = [
330
+ whatsapp_waha_namespace
331
+ ]
332
+ )
333
+
334
+ whatsapp_waha_cert_manager_certificate = create_cert_manager_certificate (
335
+ slug = "whatsapp-waha-certificate" ,
336
+ namespace = whatsapp_waha_namespace_name ,
337
+ domain_name = whatsapp_waha_domain_name ,
338
+ issuer_secret_name = whatsapp_waha_cert_manager_issuer .issuer_secret_name ,
339
+ certificate_dns_names = [
340
+ whatsapp_waha_root_domain ,
341
+ f"*.{ whatsapp_waha_root_domain } " ,
342
+ ],
343
+ depends_on = [
344
+ whatsapp_waha_namespace ,
345
+ whatsapp_waha_cert_manager_issuer ,
346
+ ]
347
+ )
348
+
349
+ whatsapp_waha = create_whatsapp_waha (
350
+ slug = "whatsapp" ,
351
+ namespace = whatsapp_waha_namespace_name ,
352
+ image_repository = "devlikeapro/waha" ,
353
+ image_tag = "latest" ,
354
+ replicas = 1 ,
355
+ env_vars = {},
356
+ postgres_uri = whatsapp_waha_postgres_instance .normal_user_postgres_uri ,
357
+ s3_storage = whatsapp_waha_config .get ('s3_storage' , None ),
358
+ ingress_enabled = True ,
359
+ ingress_host = whatsapp_waha_domain_name ,
360
+ ingress_class_name = "nginx" ,
361
+ ingress_tls_secret = whatsapp_waha_cert_manager_certificate .certificate_secret_name ,
362
+ basic_auth_enabled = True ,
363
+ username = whatsapp_waha_config ['username' ],
364
+ password = whatsapp_waha_config ['password' ],
365
+ depends_on = [
366
+ whatsapp_waha_namespace ,
367
+ whatsapp_waha_cert_manager_certificate ,
368
+ whatsapp_waha_cert_manager_issuer ,
369
+ whatsapp_waha_postgres_instance ,
370
+ ]
371
+ )
372
+
249
373
# registry = create_registry(
250
374
# slug="registry",
251
375
# namespace="registry",
@@ -259,37 +383,23 @@ def generate_all_skaffolds():
259
383
260
384
# Collect all components
261
385
components = [
262
- # Fix some limits on the host
263
- increase_fs_watchers_limit ,
264
-
265
- # Cert-manager
266
- cert_manager_namespace ,
267
- cert_manager_operator ,
268
-
269
- # MetalLB
270
- metallb_namespace ,
271
- metallb ,
272
-
273
- # Ingress Nginx
274
- ingress_nginx_namespace ,
275
- ingress_nginx ,
276
-
277
- # Longhorn
278
- longhorn_namespace ,
279
- longhorn_cert_manager_issuer ,
280
- longhorn_cert_manager_certificate ,
281
- longhorn ,
282
-
283
- # Rancher
284
- rancher_namespace ,
285
- rancher_cert_manager_issuer ,
286
- rancher_cert_manager_certificate ,
287
- rancher ,
288
-
386
+ # PostgreSQL Operator
387
+ postgresql_namespace ,
388
+ postgresql_operator_crds ,
389
+ postgresql_operator ,
390
+
391
+ # WhatsApp WAHA
392
+ whatsapp_waha_namespace ,
393
+ whatsapp_waha_cert_manager_issuer ,
394
+ whatsapp_waha_cert_manager_certificate ,
395
+ whatsapp_waha_postgres_instance ,
396
+ whatsapp_waha ,
289
397
]
290
398
291
399
# Generate skaffold configurations
292
- generate_skaffolds (components )
400
+ generate_skaffolds (
401
+ components = components ,
402
+ )
293
403
294
404
# Generate IntelliJ run configurations if enabled
295
405
if INTELLIJ_RUN_CONFIGURATIONS_ENABLED or env_vars ['INTELLIJ_RUN_CONFIGURATIONS_ENABLED' ].lower () == 'true' :
0 commit comments