Unverified Commit 1bf360af authored by Arnout Engelen's avatar Arnout Engelen
Browse files

prometheus-exporter-nextcloud: require either tokenFile or passwordFile

follow-up on 28b3156bc6774f11e203151094bade34cba11fef which broke
when tokenFile was left empty.

Making both options nullable also allows us to provide a more meaningful
error message when neither authentication method is configured.
parent 3a2786ee
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -303,6 +303,14 @@ in
        The exporter is configured to run as 'services.mysql.user', but
          'services.mysql.enable' is set to false.
      '';
    } {
      assertion = cfg.nextcloud.enable -> (
        (cfg.nextcloud.passwordFile == null) != (cfg.nextcloud.tokenFile == null)
      );
      message = ''
        Please specify either 'services.prometheus.exporters.nextcloud.passwordFile' or
          'services.prometheus.exporters.nextcloud.tokenFile'
      '';
    } {
      assertion = cfg.sql.enable -> (
        (cfg.sql.configFile == null) != (cfg.sql.configuration == null)
+9 −6
Original line number Diff line number Diff line
@@ -23,10 +23,12 @@ in
      description = lib.mdDoc ''
        Username for connecting to Nextcloud.
        Note that this account needs to have admin privileges in Nextcloud.
        Unused when using token authentication.
      '';
    };
    passwordFile = mkOption {
      type = types.path;
      type = types.nullOr types.path;
      default = null;
      example = "/path/to/password-file";
      description = lib.mdDoc ''
        File containing the password for connecting to Nextcloud.
@@ -34,9 +36,9 @@ in
      '';
    };
    tokenFile = mkOption {
      type = types.path;
      type = types.nullOr types.path;
      default = null;
      example = "/path/to/token-file";
      default = "";
      description = lib.mdDoc ''
        File containing the token for connecting to Nextcloud.
        Make sure that this file is readable by the exporter user.
@@ -58,12 +60,13 @@ in
          --addr ${cfg.listenAddress}:${toString cfg.port} \
          --timeout ${cfg.timeout} \
          --server ${cfg.url} \
          ${if cfg.tokenFile == "" then ''
          ${if cfg.passwordFile != null then ''
            --username ${cfg.username} \
            --password ${escapeShellArg "@${cfg.passwordFile}"} \
          '' else ''
            --auth-token ${escapeShellArg "@${cfg.tokenFile}"} \
         ''} ${concatStringsSep " \\\n  " cfg.extraFlags}'';
          ''} \
          ${concatStringsSep " \\\n  " cfg.extraFlags}'';
    };
  };
}