]> git.immae.eu Git - github/fretlink/ansible-clever.git/blobdiff - dhall/Config.dhall
add tests for scalability settings
[github/fretlink/ansible-clever.git] / dhall / Config.dhall
index db063b78ac166aae50a9e6e1c01413fefdb2b3ee..12371f5faf97440256293b3023ddf4cffca1e67d 100644 (file)
@@ -1,26 +1,63 @@
-let Addon = ./addon/Addon.dhall
-
-in    λ(Environment : Type)
-    → { clever_app :
-          Text
-      , clever_orga :
-          Text
-      , clever_secret :
-          Text
-      , clever_token :
-          Text
-      , clever_syslog_server :
-          Text
-      , clever_domain :
-          Text
-      , clever_app_tasks_file :
-          Text
-      , clever_haskell_entry_point :
-          Text
-      , clever_metrics :
-          Bool
-      , clever_addons :
-          List Addon
-      , clever_env :
-          Environment
-      }
\ No newline at end of file
+let Addon = (./Addon.dhall).Type
+
+let Vault = ./Vault.dhall
+
+let FixedOrRange =
+      λ(t : Type) → < Fixed : { fixed : t } | Range : { min : t, max : t } >
+
+let fixed = λ(t : Type) → λ(f : t) → (FixedOrRange t).Fixed { fixed = f }
+
+let range = λ(t : Type) → λ(r : { min : t, max : t }) → (FixedOrRange t).Range r
+
+let InstancesConfig = FixedOrRange Natural
+
+let FlavorsConfig = FixedOrRange Text
+
+let ScalingParameters =
+      { flavor : Optional FlavorsConfig, instances : Optional InstancesConfig }
+
+let Config =
+        λ(Environment : Type)
+      → { clever_app : Text
+        , clever_orga : Text
+        , clever_secret : Text
+        , clever_token : Text
+        , clever_syslog_server : Optional Text
+        , clever_domain : Optional Text
+        , clever_app_tasks_file : Optional Text
+        , clever_haskell_entry_point : Optional Text
+        , clever_disable_metrics : Bool
+        , clever_addons : List Addon
+        , clever_env : Environment
+        , clever_build_flavor : Optional Text
+        , clever_scaling : Optional ScalingParameters
+        }
+
+let mkConfig =
+        λ(vault : Vault)
+      → λ(app : Text)
+      → λ(organization : Text)
+      →   { clever_app = app
+          , clever_orga = organization
+          , clever_secret = vault.secret
+          , clever_token = vault.token
+          , clever_syslog_server = None Text
+          , clever_domain = None Text
+          , clever_app_tasks_file = None Text
+          , clever_haskell_entry_point = None Text
+          , clever_disable_metrics = False
+          , clever_addons = [] : List Addon
+          , clever_env = {=}
+          , clever_build_flavor = None Text
+          , clever_scaling = None ScalingParameters
+          }
+        : Config {}
+
+in  { Type = Config
+    , mkConfig = mkConfig
+    , ScalingParameters = ScalingParameters
+    , InstancesConfig = InstancesConfig
+    , FlavorsConfig = FlavorsConfig
+    , fixed = fixed
+    , range = range
+    }