about summary refs log tree commit diff
path: root/nixos/tests/grafana/provision-datasources/default.nix
blob: 83d5c56078383d1ac87924bd715a918d52c6a180 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
args@{ pkgs, ... }:

(import ../../make-test-python.nix ({ lib, pkgs, ... }:

let
  inherit (lib) mkMerge nameValuePair maintainers;

  baseGrafanaConf = {
    services.grafana = {
      enable = true;
      addr = "localhost";
      analytics.reporting.enable = false;
      domain = "localhost";
      security = {
        adminUser = "testadmin";
        adminPassword = "snakeoilpwd";
      };
      provision.enable = true;
    };
  };

  extraNodeConfs = {
    provisionDatasourceOld = {
      services.grafana.provision = {
        datasources = [{
          name = "Test Datasource";
          type = "testdata";
          access = "proxy";
          uid = "test_datasource";
        }];
      };
    };

    provisionDatasourceNix = {
      services.grafana.provision = {
        datasources.settings = {
          apiVersion = 1;
          datasources = [{
            name = "Test Datasource";
            type = "testdata";
            access = "proxy";
            uid = "test_datasource";
          }];
        };
      };
    };

    provisionDatasourceYaml = {
      services.grafana.provision.datasources.path = ./provision-datasources.yaml;
    };
  };

  nodes = builtins.listToAttrs (map (provisionType:
    nameValuePair provisionType (mkMerge [
    baseGrafanaConf
    (extraNodeConfs.${provisionType} or {})
  ])) [ "provisionDatasourceOld" "provisionDatasourceNix" "provisionDatasourceYaml" ]);

in {
  name = "grafana-provision-datasources";

  meta = with maintainers; {
    maintainers = [ kfears willibutz ];
  };

  inherit nodes;

  testScript = ''
    start_all()

    with subtest("Successful datasource provision with Nix (old format)"):
        provisionDatasourceOld.wait_for_unit("grafana.service")
        provisionDatasourceOld.wait_for_open_port(3000)
        provisionDatasourceOld.succeed(
            "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/datasources/uid/test_datasource | grep Test\ Datasource"
        )
        provisionDatasourceOld.shutdown()

    with subtest("Successful datasource provision with Nix (new format)"):
        provisionDatasourceNix.wait_for_unit("grafana.service")
        provisionDatasourceNix.wait_for_open_port(3000)
        provisionDatasourceNix.succeed(
            "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/datasources/uid/test_datasource | grep Test\ Datasource"
        )
        provisionDatasourceNix.shutdown()

    with subtest("Successful datasource provision with YAML"):
        provisionDatasourceYaml.wait_for_unit("grafana.service")
        provisionDatasourceYaml.wait_for_open_port(3000)
        provisionDatasourceYaml.succeed(
            "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/datasources/uid/test_datasource | grep Test\ Datasource"
        )
        provisionDatasourceYaml.shutdown()
  '';
})) args