From 50a9e710f9cff8be9d85d7161bb454a46c3f5734 Mon Sep 17 00:00:00 2001 From: Hussein Ait-Lahcen Date: Mon, 19 Nov 2018 15:50:51 +0100 Subject: add dhall interface --- dhall/Config.dhall | 26 ++++++++++++++++++++++ dhall/Vault.dhall | 1 + dhall/addon/Addon.dhall | 1 + dhall/addon/Postgresql.dhall | 3 +++ dhall/addon/functions.dhall | 1 + dhall/environment/Environment.dhall | 1 + dhall/functions.dhall | 1 + dhall/mkConfig.dhall | 43 +++++++++++++++++++++++++++++++++++++ dhall/types.dhall | 9 ++++++++ scripts/dhall_check.sh | 25 +++++++++++++++++++++ 10 files changed, 111 insertions(+) create mode 100644 dhall/Config.dhall create mode 100644 dhall/Vault.dhall create mode 100644 dhall/addon/Addon.dhall create mode 100644 dhall/addon/Postgresql.dhall create mode 100644 dhall/addon/functions.dhall create mode 100644 dhall/environment/Environment.dhall create mode 100644 dhall/functions.dhall create mode 100644 dhall/mkConfig.dhall create mode 100644 dhall/types.dhall create mode 100755 scripts/dhall_check.sh diff --git a/dhall/Config.dhall b/dhall/Config.dhall new file mode 100644 index 0000000..01329a8 --- /dev/null +++ b/dhall/Config.dhall @@ -0,0 +1,26 @@ + 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_entry_point : + Text + , clever_metrics : + Bool + , clever_addons : + List Addon + , clever_env : + Environment + } diff --git a/dhall/Vault.dhall b/dhall/Vault.dhall new file mode 100644 index 0000000..ba1a309 --- /dev/null +++ b/dhall/Vault.dhall @@ -0,0 +1 @@ +{ organization : Text, secret : Text, token : Text } diff --git a/dhall/addon/Addon.dhall b/dhall/addon/Addon.dhall new file mode 100644 index 0000000..2eb781c --- /dev/null +++ b/dhall/addon/Addon.dhall @@ -0,0 +1 @@ +< Postgresql : { name : Text, env_prefix : Text } > diff --git a/dhall/addon/Postgresql.dhall b/dhall/addon/Postgresql.dhall new file mode 100644 index 0000000..9dd9744 --- /dev/null +++ b/dhall/addon/Postgresql.dhall @@ -0,0 +1,3 @@ + let addon = constructors ./Addon.dhall + +in addon.Postgresql { name = "pg", env_prefix = "POSTGRESQL_ADDON" } diff --git a/dhall/addon/functions.dhall b/dhall/addon/functions.dhall new file mode 100644 index 0000000..65979ac --- /dev/null +++ b/dhall/addon/functions.dhall @@ -0,0 +1 @@ +{ Postgresql = ./Postgresql.dhall } diff --git a/dhall/environment/Environment.dhall b/dhall/environment/Environment.dhall new file mode 100644 index 0000000..68514c9 --- /dev/null +++ b/dhall/environment/Environment.dhall @@ -0,0 +1 @@ +{ FORCE_HTTPS : Bool } diff --git a/dhall/functions.dhall b/dhall/functions.dhall new file mode 100644 index 0000000..f047c19 --- /dev/null +++ b/dhall/functions.dhall @@ -0,0 +1 @@ +{ Addon = ./addon/functions.dhall, mkConfig = ./mkConfig.dhall } diff --git a/dhall/mkConfig.dhall b/dhall/mkConfig.dhall new file mode 100644 index 0000000..a904332 --- /dev/null +++ b/dhall/mkConfig.dhall @@ -0,0 +1,43 @@ + let Config = ./Config.dhall + +in let Vault = ./Vault.dhall + +in let Addon = ./addon/Addon.dhall + +in let Environment = ./environment/Environment.dhall + +in let nonifyEmpty = + λ(opt : Optional Text) + → Optional/fold Text opt Text (λ(x : Text) → x) "None" + +in λ(vault : Vault) + → λ(app : Text) + → λ(entryPoint : Text) + → λ(syslogServer : Optional Text) + → λ(domain : Optional Text) + → λ(tasksFile : Optional Text) + → λ(addons : List Addon) + → { clever_app = + app + , clever_orga = + vault.organization + , clever_secret = + vault.secret + , clever_token = + vault.token + , clever_syslog_server = + nonifyEmpty syslogServer + , clever_domain = + nonifyEmpty domain + , clever_app_tasks_file = + nonifyEmpty tasksFile + , clever_entry_point = + entryPoint + , clever_metrics = + True + , clever_addons = + addons + , clever_env = + { FORCE_HTTPS = True } + } + : Config Environment diff --git a/dhall/types.dhall b/dhall/types.dhall new file mode 100644 index 0000000..5e6a81c --- /dev/null +++ b/dhall/types.dhall @@ -0,0 +1,9 @@ +{ Vault = + ./Vault.dhall +, Addon = + ./addon/Addon.dhall +, Environment = + ./environment/Environment.dhall +, Config = + ./Config.dhall +} diff --git a/scripts/dhall_check.sh b/scripts/dhall_check.sh new file mode 100755 index 0000000..009d570 --- /dev/null +++ b/scripts/dhall_check.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +pushd () { + command pushd "$@" > /dev/null +} + +popd () { + command popd "$@" > /dev/null +} + +go() { + local ERROR=0; + for file in $(find -type f -name "*.dhall"); do + pushd $(dirname $file); + cat $(basename $file) | dhall --explain resolve > /dev/null; + if [ "$?" -ne "0" ]; then + echo "Failed to resolve $file" + ERROR=1; + fi; + popd; + done; + exit $ERROR; +} + +go -- cgit v1.2.3 From 8b59c20ae4812fe2729d8fb6fb8b12a02a305b4f Mon Sep 17 00:00:00 2001 From: Hussein Ait-Lahcen Date: Mon, 19 Nov 2018 18:57:33 +0100 Subject: add travis ci step for typechecking dhall --- .travis.yml | 2 ++ dhall-1.18.nix | 16 ++++++++++++++++ dhall/mkConfig.dhall | 3 ++- scripts/dhall_check.sh | 1 + 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 dhall-1.18.nix diff --git a/.travis.yml b/.travis.yml index 82ddcec..ef53f71 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,7 @@ sudo: false install: - nix-env -i python2.7-ansible - nix-env -i python2.7-ansible-lint + - nix-env -if ./dhall-1.18.nix # Check ansible version - ansible --version @@ -20,6 +21,7 @@ script: # Basic role syntax check - ansible-playbook tests/test.yml -i tests/inventory --syntax-check - ansible-lint . + - scripts/dhall_check.sh notifications: slack: fretlink:pTIylIN7zkwRFuL3aHERmsbB diff --git a/dhall-1.18.nix b/dhall-1.18.nix new file mode 100644 index 0000000..d6522bd --- /dev/null +++ b/dhall-1.18.nix @@ -0,0 +1,16 @@ +{ pkgs ? import {} }: with pkgs; + +stdenv.mkDerivation rec { + name = "dhall-${version}"; + version = "1.18.0"; + phases = [ "installPhase "]; + src = fetchurl { + url = "https://github.com/dhall-lang/dhall-haskell/releases/download/${version}/dhall-${version}-x86_64-linux.tar.bz2"; + sha256 = "0jvw6ss96xifb21mzpvfjzvaffcnpj0jhpc4rd36cl2r22800qgx"; + }; + installPhase = '' + mkdir -p $out/bin + tar -xjf $src + mv bin/dhall $out/bin/ + ''; +} diff --git a/dhall/mkConfig.dhall b/dhall/mkConfig.dhall index a904332..5040f1c 100644 --- a/dhall/mkConfig.dhall +++ b/dhall/mkConfig.dhall @@ -13,6 +13,7 @@ in let nonifyEmpty = in λ(vault : Vault) → λ(app : Text) → λ(entryPoint : Text) + → λ(metrics : Bool) → λ(syslogServer : Optional Text) → λ(domain : Optional Text) → λ(tasksFile : Optional Text) @@ -34,7 +35,7 @@ in λ(vault : Vault) , clever_entry_point = entryPoint , clever_metrics = - True + metrics , clever_addons = addons , clever_env = diff --git a/scripts/dhall_check.sh b/scripts/dhall_check.sh index 009d570..a3413ec 100755 --- a/scripts/dhall_check.sh +++ b/scripts/dhall_check.sh @@ -13,6 +13,7 @@ go() { for file in $(find -type f -name "*.dhall"); do pushd $(dirname $file); cat $(basename $file) | dhall --explain resolve > /dev/null; + echo "Typechecking ${file}" if [ "$?" -ne "0" ]; then echo "Failed to resolve $file" ERROR=1; -- cgit v1.2.3 From d1f83c592b92a68f7f968eac0323ee7d7fd0ee47 Mon Sep 17 00:00:00 2001 From: Hussein Ait-Lahcen Date: Tue, 20 Nov 2018 12:01:58 +0100 Subject: update default value (readme aswell) for `clever_metrics` --- README.md | 2 +- defaults/main.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 86153af..b932c7f 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ Variables for the application - _Obsolete_: `domain`: Same as above but was replaced by `clever_domain` since v1.4 of this role. - `clever_syslog_server`: UDP Syslog server to be used as UDPSyslog drain for the application, optional. Example: `udp://198.51.100.51:12345`. - _Obsolete_: `syslog_server`: Same as above but was replaced by `clever_syslog_server` since v1.5 of this role. -- `clever_metrics`: a boolean to enable or disable metrics support. Optional, default to `false`. +- `clever_metrics`: a boolean to enable or disable metrics support. Optional, default to `true`. Variables specific to deployment, default should be fine: - `clever_cli_version`: Version of clever cli tools, default to `0.9.3`. diff --git a/defaults/main.yml b/defaults/main.yml index 1fbea48..fb0e30f 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -9,7 +9,7 @@ clever_login_file: "{{ clever_app_confdir }}/login" clever_entry_point: "" clever_env: {} -clever_metrics: false +clever_metrics: true clever_addons: [] # example -- cgit v1.2.3