summaryrefslogtreecommitdiffstats
path: root/3modules/tv/consul.nix
diff options
context:
space:
mode:
authortv <tv@shackspace.de>2015-07-23 00:37:21 +0200
committertv <tv@shackspace.de>2015-07-23 00:37:21 +0200
commit504b1b90e809934a01357450ccdf35c4e4afc74d (patch)
tree2b6a539ad2a9f3c4d4b2cf24034cea7e239acb51 /3modules/tv/consul.nix
parent14ac6d3bba12f07bd8aa79221b9c64469fe03046 (diff)
* tv identity: define type harder
Diffstat (limited to '3modules/tv/consul.nix')
-rw-r--r--3modules/tv/consul.nix15
1 files changed, 8 insertions, 7 deletions
diff --git a/3modules/tv/consul.nix b/3modules/tv/consul.nix
index db0cd7a9..312faa02 100644
--- a/3modules/tv/consul.nix
+++ b/3modules/tv/consul.nix
@@ -5,8 +5,7 @@
# TODO consul-bootstrap HOST that actually does is
# TODO tools to inspect state of a cluster in outage state
-with builtins;
-with lib;
+with import ../../4lib/tv { inherit lib pkgs; };
let
cfg = config.tv.consul;
@@ -24,10 +23,10 @@ let
enable = mkEnableOption "tv.consul";
dc = mkOption {
- type = types.unspecified;
+ type = types.label;
};
hosts = mkOption {
- type = with types; listOf unspecified;
+ type = with types; listOf host;
};
encrypt-file = mkOption {
type = types.str; # TODO path (but not just into store)
@@ -38,7 +37,7 @@ let
default = "/var/lib/consul";
};
self = mkOption {
- type = types.unspecified;
+ type = types.host;
};
server = mkOption {
type = types.bool;
@@ -56,9 +55,11 @@ let
log_level = "INFO";
#node_name =
server = cfg.server;
- bind_addr = cfg.self.addr; # TODO cfg.addr
enable_syslog = true;
- retry_join = map (getAttr "addr") (filter (host: host.fqdn != cfg.self.fqdn) cfg.hosts);
+ retry_join =
+ # TODO allow consul in other nets than retiolum [maybe]
+ concatMap (host: host.nets.retiolum.addrs)
+ (filter (host: host.name != cfg.self.name) cfg.hosts);
leave_on_terminate = true;
} // optionalAttrs cfg.server {
bootstrap_expect = length cfg.hosts;