From a0ce8044992f7d7db482318f864fa73cb01e2df4 Mon Sep 17 00:00:00 2001 From: jem Date: Mon, 13 Sep 2021 09:05:08 +0200 Subject: [PATCH] introduce size dependand postgres-sizings --- project-cljs.clj | 2 +- project.clj | 2 +- src/main/cljc/dda/c4k_common/postgres.cljc | 16 +++++++++++++--- .../postgres/{config.yaml => config-16gb.yaml} | 2 +- src/main/resources/postgres/config-2gb.yaml | 11 +++++++++++ src/main/resources/postgres/config-4gb.yaml | 11 +++++++++++ src/main/resources/postgres/config-8gb.yaml | 11 +++++++++++ src/test/cljc/dda/c4k_common/postgres_test.cljc | 9 +++++++++ 8 files changed, 58 insertions(+), 6 deletions(-) rename src/main/resources/postgres/{config.yaml => config-16gb.yaml} (89%) create mode 100644 src/main/resources/postgres/config-2gb.yaml create mode 100644 src/main/resources/postgres/config-4gb.yaml create mode 100644 src/main/resources/postgres/config-8gb.yaml diff --git a/project-cljs.clj b/project-cljs.clj index 0a17342..b840852 100644 --- a/project-cljs.clj +++ b/project-cljs.clj @@ -1,4 +1,4 @@ -(defproject org.domaindrivenarchitecture/c4k-common-cljs "0.2.11-SNAPSHOT" +(defproject org.domaindrivenarchitecture/c4k-common-cljs "0.3.0-SNAPSHOT" :description "Contains predicates and tools for c4k" :url "https://domaindrivenarchitecture.org" :license {:name "Apache License, Version 2.0" diff --git a/project.clj b/project.clj index 88139a4..b15cd8d 100644 --- a/project.clj +++ b/project.clj @@ -1,4 +1,4 @@ -(defproject org.domaindrivenarchitecture/c4k-common-clj "0.2.11-SNAPSHOT" +(defproject org.domaindrivenarchitecture/c4k-common-clj "0.3.0-SNAPSHOT" :description "Contains predicates and tools for c4k" :url "https://domaindrivenarchitecture.org" :license {:name "Apache License, Version 2.0" diff --git a/src/main/cljc/dda/c4k_common/postgres.cljc b/src/main/cljc/dda/c4k_common/postgres.cljc index 8ef0a06..e2189cf 100644 --- a/src/main/cljc/dda/c4k_common/postgres.cljc +++ b/src/main/cljc/dda/c4k_common/postgres.cljc @@ -6,14 +6,22 @@ [dda.c4k-common.base64 :as b64] [dda.c4k-common.common :as cm])) +(defn postgres-size? + [input] + (contains? #{:2gb :4gb :8gb :16gb} input)) + (s/def ::postgres-db-user cm/bash-env-string?) (s/def ::postgres-db-password cm/bash-env-string?) (s/def ::postgres-data-volume-path string?) +(s/def ::postgres-size postgres-size?) #?(:cljs (defmethod yaml/load-resource :postgres [resource-name] (case resource-name - "postgres/config.yaml" (rc/inline "postgres/config.yaml") + "postgres/config-2gb.yaml" (rc/inline "postgres/config-2gb.yaml") + "postgres/config-4gb.yaml" (rc/inline "postgres/config-4gb.yaml") + "postgres/config-8gb.yaml" (rc/inline "postgres/config-8gb.yaml") + "postgres/config-16gb.yaml" (rc/inline "postgres/config-16gb.yaml") "postgres/deployment.yaml" (rc/inline "postgres/deployment.yaml") "postgres/persistent-volume.yaml" (rc/inline "postgres/persistent-volume.yaml") "postgres/pvc.yaml" (rc/inline "postgres/pvc.yaml") @@ -21,8 +29,10 @@ "postgres/service.yaml" (rc/inline "postgres/service.yaml") (throw (js/Error. "Undefined Resource!"))))) -(defn generate-config [] - (yaml/from-string (yaml/load-resource "postgres/config.yaml"))) +(defn generate-config [& args] + (let [{:keys [postgres-size] + :or {postgres-size :2gb}} args] + (yaml/from-string (yaml/load-resource (str "postgres/config-" (name postgres-size) ".yaml"))))) (defn generate-deployment [] (yaml/from-string (yaml/load-resource "postgres/deployment.yaml"))) diff --git a/src/main/resources/postgres/config.yaml b/src/main/resources/postgres/config-16gb.yaml similarity index 89% rename from src/main/resources/postgres/config.yaml rename to src/main/resources/postgres/config-16gb.yaml index e2c62d5..fc32eee 100644 --- a/src/main/resources/postgres/config.yaml +++ b/src/main/resources/postgres/config-16gb.yaml @@ -5,7 +5,7 @@ metadata: labels: app: postgres data: - postgres-db: jira postgresql.conf: | max_connections = 1000 + work_mem = 4MB shared_buffers = 512MB diff --git a/src/main/resources/postgres/config-2gb.yaml b/src/main/resources/postgres/config-2gb.yaml new file mode 100644 index 0000000..3bcba85 --- /dev/null +++ b/src/main/resources/postgres/config-2gb.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: postgres-config + labels: + app: postgres +data: + postgresql.conf: | + max_connections = 100 + work_mem = 4MB + shared_buffers = 128MB diff --git a/src/main/resources/postgres/config-4gb.yaml b/src/main/resources/postgres/config-4gb.yaml new file mode 100644 index 0000000..ec36a3f --- /dev/null +++ b/src/main/resources/postgres/config-4gb.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: postgres-config + labels: + app: postgres +data: + postgresql.conf: | + max_connections = 500 + work_mem = 2MB + shared_buffers = 256MB diff --git a/src/main/resources/postgres/config-8gb.yaml b/src/main/resources/postgres/config-8gb.yaml new file mode 100644 index 0000000..4bd9837 --- /dev/null +++ b/src/main/resources/postgres/config-8gb.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: postgres-config + labels: + app: postgres +data: + postgresql.conf: | + max_connections = 700 + work_mem = 3MB + shared_buffers = 512MB diff --git a/src/test/cljc/dda/c4k_common/postgres_test.cljc b/src/test/cljc/dda/c4k_common/postgres_test.cljc index de5f0f1..6f79342 100644 --- a/src/test/cljc/dda/c4k_common/postgres_test.cljc +++ b/src/test/cljc/dda/c4k_common/postgres_test.cljc @@ -4,6 +4,15 @@ :cljs [cljs.test :refer-macros [deftest is are testing run-tests]]) [dda.c4k-common.postgres :as cut])) +(deftest should-generate-config + (is (= {:postgresql.conf + "max_connections = 100\nwork_mem = 4MB\nshared_buffers = 128MB\n"} + (:data (cut/generate-config)))) + (is (= {:postgresql.conf + "max_connections = 700\nwork_mem = 3MB\nshared_buffers = 512MB\n"} + (:data (cut/generate-config :postgres-size :8gb)))) + ) + (deftest should-generate-persistent-volume (is (= {:kind "PersistentVolume" :apiVersion "v1"