From 5c670c81d58351974cda32e9c7e7dc27e96bce61 Mon Sep 17 00:00:00 2001 From: Oliver Charles Date: Thu, 20 Nov 2014 15:22:07 +0000 Subject: [PATCH] hbase should use dataDir to specify where to store data --- nixos/modules/services/databases/hbase.nix | 33 +++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/databases/hbase.nix b/nixos/modules/services/databases/hbase.nix index 1bee9895e36..ccfabc9de0b 100644 --- a/nixos/modules/services/databases/hbase.nix +++ b/nixos/modules/services/databases/hbase.nix @@ -5,6 +5,26 @@ with lib; let cfg = config.services.hbase; + configFile = pkgs.writeText "hbase-site.xml" '' + + + hbase.rootdir + file://${cfg.dataDir}/hbase + + + hbase.zookeeper.property.dataDir + ${cfg.dataDir}/zookeeper + + + ''; + + configDir = pkgs.runCommand "hbase-config-dir" {} '' + mkdir -p $out + cp ${cfg.package}/conf/* $out/ + rm $out/hbase-site.xml + ln -s ${configFile} $out/hbase-site.xml + '' ; + in { ###### interface @@ -82,11 +102,22 @@ in { HBASE_LOG_DIR = cfg.logDir; }; + preStart = + '' + mkdir -p ${cfg.dataDir}; + mkdir -p ${cfg.logDir}; + + if [ "$(id -u)" = 0 ]; then + chown ${cfg.user}:${cfg.group} ${cfg.dataDir} + chown ${cfg.user}:${cfg.group} ${cfg.logDir} + fi + ''; + serviceConfig = { PermissionsStartOnly = true; User = cfg.user; Group = cfg.group; - ExecStart = "${cfg.package}/bin/hbase master start"; + ExecStart = "${cfg.package}/bin/hbase --config ${configDir} master start"; }; };