]> git.immae.eu Git - github/fretlink/ansible-clever.git/blob - dhall/Config.dhall
Add support for scalability configuration
[github/fretlink/ansible-clever.git] / dhall / Config.dhall
1 let Addon = (./Addon.dhall).Type
2
3 let Vault = ./Vault.dhall
4
5 let FixedOrRange =
6 λ(t : Type) → < Fixed : { fixed : t } | Range : { min : t, max : t } >
7
8 let fixed = λ(t : Type) → λ(f : t) → (FixedOrRange t).Fixed { fixed = f }
9
10 let range = λ(t : Type) → λ(r : { min : t, max : t }) → (FixedOrRange t).Range r
11
12 let InstancesConfig = FixedOrRange Natural
13
14 let FlavorsConfig = FixedOrRange Text
15
16 let ScalingParameters =
17 { flavor : Optional FlavorsConfig, instances : Optional InstancesConfig }
18
19 let Config =
20 λ(Environment : Type)
21 → { clever_app : Text
22 , clever_orga : Text
23 , clever_secret : Text
24 , clever_token : Text
25 , clever_syslog_server : Optional Text
26 , clever_domain : Optional Text
27 , clever_app_tasks_file : Optional Text
28 , clever_haskell_entry_point : Optional Text
29 , clever_disable_metrics : Bool
30 , clever_addons : List Addon
31 , clever_env : Environment
32 , clever_build_flavor : Optional Text
33 , clever_scaling : Optional ScalingParameters
34 }
35
36 let mkConfig =
37 λ(vault : Vault)
38 → λ(app : Text)
39 → λ(organization : Text)
40 → { clever_app = app
41 , clever_orga = organization
42 , clever_secret = vault.secret
43 , clever_token = vault.token
44 , clever_syslog_server = None Text
45 , clever_domain = None Text
46 , clever_app_tasks_file = None Text
47 , clever_haskell_entry_point = None Text
48 , clever_disable_metrics = False
49 , clever_addons = [] : List Addon
50 , clever_env = {=}
51 , clever_build_flavor = None Text
52 , clever_scaling = None ScalingParameters
53 }
54 : Config {}
55
56 in { Type = Config
57 , mkConfig = mkConfig
58 , ScalingParameters = ScalingParameters
59 , InstancesConfig = InstancesConfig
60 , FlavorsConfig = FlavorsConfig
61 , fixed = fixed
62 , range = range
63 }