Compare commits
602 Commits
sriram/SQL
...
v9.3.x
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8d3f8151d9 | ||
|
|
3409c1b857 | ||
|
|
cb0344d2c2 | ||
|
|
a5cc3ad86b | ||
|
|
87ff2cd6d7 | ||
|
|
2204181240 | ||
|
|
326ae59541 | ||
|
|
2d45608253 | ||
|
|
23c67c4fea | ||
|
|
d691ce16b3 | ||
|
|
7422b7ff3d | ||
|
|
166888dbe1 | ||
|
|
384c667546 | ||
|
|
e53bf8114a | ||
|
|
4d5deffa00 | ||
|
|
605f3b9bd4 | ||
|
|
ce2abc0f19 | ||
|
|
e69c652ad8 | ||
|
|
3bbdf60d9c | ||
|
|
fe1c054c12 | ||
|
|
8b6a30048d | ||
|
|
5ba5d6f47a | ||
|
|
7ae3c197a6 | ||
|
|
05ca3549c2 | ||
|
|
9c90d79790 | ||
|
|
205eaee021 | ||
|
|
1dc2a0cb07 | ||
|
|
b643e94fb3 | ||
|
|
39ff572d06 | ||
|
|
14d6d1b6cc | ||
|
|
43cbb37911 | ||
|
|
cc744c4b55 | ||
|
|
a540465590 | ||
|
|
4c790da4cb | ||
|
|
934159c6f2 | ||
|
|
122d5052e5 | ||
|
|
c3ca33f672 | ||
|
|
56870b3972 | ||
|
|
92fce80b8e | ||
|
|
b9f19cfc69 | ||
|
|
47fc480721 | ||
|
|
2d991b1fc2 | ||
|
|
1e338b8422 | ||
|
|
1fbbed4e3d | ||
|
|
1470792d18 | ||
|
|
ed6ed947d1 | ||
|
|
41821ce011 | ||
|
|
9f65753770 | ||
|
|
3ffc9a8a88 | ||
|
|
deea415ca5 | ||
|
|
3381f09dc7 | ||
|
|
b10a5f670d | ||
|
|
ee1533007e | ||
|
|
476f0f8970 | ||
|
|
eb97cfc019 | ||
|
|
56e3c6111e | ||
|
|
7cc8a1a474 | ||
|
|
d0f141e7aa | ||
|
|
23012d1fe9 | ||
|
|
07d2036505 | ||
|
|
2b8654f863 | ||
|
|
abc4d13d7a | ||
|
|
f5aa7dd05c | ||
|
|
af97d291bf | ||
|
|
a1454c8db3 | ||
|
|
6ef0cd1658 | ||
|
|
5bff72709e | ||
|
|
c980ca786b | ||
|
|
eccb03e53d | ||
|
|
cd09b79c29 | ||
|
|
1cee489f87 | ||
|
|
75c113c9de | ||
|
|
3928c699e4 | ||
|
|
60f0ca7ed5 | ||
|
|
7268a44ff1 | ||
|
|
556264888c | ||
|
|
8dc76cd91f | ||
|
|
22e052a32f | ||
|
|
2cf3b3e42c | ||
|
|
3e2364564d | ||
|
|
c2a2a59dd6 | ||
|
|
2a091a280b | ||
|
|
660149d33f | ||
|
|
af5ea650f2 | ||
|
|
b8cf67bad1 | ||
|
|
dc4d16e069 | ||
|
|
108abba16f | ||
|
|
820b1a8153 | ||
|
|
2ed70f3109 | ||
|
|
2fb439358e | ||
|
|
ecd0980e45 | ||
|
|
3687e47c3f | ||
|
|
ff61f03791 | ||
|
|
95e76edf53 | ||
|
|
5fc1773df1 | ||
|
|
32e907cf05 | ||
|
|
9a62cc0e08 | ||
|
|
a9961e0070 | ||
|
|
72be2d98eb | ||
|
|
36e02f1921 | ||
|
|
90c878144a | ||
|
|
36689b05ff | ||
|
|
4c6fc11969 | ||
|
|
3b38c3f17e | ||
|
|
26a599d7f5 | ||
|
|
ce43fd4e58 | ||
|
|
c92065981c | ||
|
|
d72f58afa2 | ||
|
|
20baf7a0b5 | ||
|
|
a4a79cb0f3 | ||
|
|
0225cf177e | ||
|
|
ed67a13057 | ||
|
|
88dda5c7b3 | ||
|
|
c4228b692a | ||
|
|
782c73b694 | ||
|
|
9a87d5dea5 | ||
|
|
55bf4be2b2 | ||
|
|
3c2af5c4b0 | ||
|
|
a235642c77 | ||
|
|
13b1cfc1a8 | ||
|
|
118ac32208 | ||
|
|
8da106cfc1 | ||
|
|
65159a20c3 | ||
|
|
59526fa6f5 | ||
|
|
9efc8faf02 | ||
|
|
33b4cfee51 | ||
|
|
85eb7be953 | ||
|
|
f64a005279 | ||
|
|
e03b8d6d37 | ||
|
|
5d8043ea07 | ||
|
|
5350d735c9 | ||
|
|
b1e51ffefd | ||
|
|
29a8ed190e | ||
|
|
9598cc9f4a | ||
|
|
c28a7d25a8 | ||
|
|
3c573006dd | ||
|
|
360a357508 | ||
|
|
4cfdfe2e8b | ||
|
|
cab9822569 | ||
|
|
b0d7648338 | ||
|
|
bf400280a9 | ||
|
|
2f9ec82dd1 | ||
|
|
4d755afe5d | ||
|
|
fddb032916 | ||
|
|
4f7110ed94 | ||
|
|
bd3b48d2ef | ||
|
|
45660c94af | ||
|
|
e121ee769f | ||
|
|
3098e85662 | ||
|
|
f6eeb484fb | ||
|
|
a9873db0f9 | ||
|
|
77bb24bc9e | ||
|
|
73d0526572 | ||
|
|
db12eb4644 | ||
|
|
79f1b9266d | ||
|
|
08fef79869 | ||
|
|
6604ea1fbb | ||
|
|
fbbc5b4ff7 | ||
|
|
208c3a0c2f | ||
|
|
02cb3a0751 | ||
|
|
23007843e1 | ||
|
|
5a35850514 | ||
|
|
bf1d57d97c | ||
|
|
a807c04177 | ||
|
|
b34f9779fd | ||
|
|
fc88c0b597 | ||
|
|
e9a649bf8f | ||
|
|
4831e7c3e2 | ||
|
|
ca388baef4 | ||
|
|
e032e71b01 | ||
|
|
b7f4b61c4b | ||
|
|
1d0c19ff5c | ||
|
|
c9882623f5 | ||
|
|
1bf4a3e2b1 | ||
|
|
b0f55819a1 | ||
|
|
94cbd9dba2 | ||
|
|
87ca6d206d | ||
|
|
7e1690b5af | ||
|
|
0bf04f6095 | ||
|
|
aeea456a0e | ||
|
|
5441a02f94 | ||
|
|
64f074ca8d | ||
|
|
972a9c5957 | ||
|
|
3e2bdb3396 | ||
|
|
678847d250 | ||
|
|
d6d924b62a | ||
|
|
4098978273 | ||
|
|
7847651f0c | ||
|
|
dc6c3783f1 | ||
|
|
4d03b21958 | ||
|
|
138f2fef8d | ||
|
|
91fe6eb1b7 | ||
|
|
b98d0cf461 | ||
|
|
dc2f72da0a | ||
|
|
3ac7f32ace | ||
|
|
fa21dba89e | ||
|
|
30ef59ec6c | ||
|
|
2b971a4167 | ||
|
|
9a4c18c02a | ||
|
|
4399288f9d | ||
|
|
43f61622b3 | ||
|
|
9422a52802 | ||
|
|
5f94620d7c | ||
|
|
3a22eba17f | ||
|
|
2b00a15709 | ||
|
|
f854430ca6 | ||
|
|
2047786936 | ||
|
|
e057471d95 | ||
|
|
8c1aa4e50b | ||
|
|
4deceb0aa7 | ||
|
|
42665ac87f | ||
|
|
ac56c21aad | ||
|
|
f7892a41d1 | ||
|
|
b3edba4a37 | ||
|
|
4f4921ad01 | ||
|
|
587bbf20d3 | ||
|
|
6636a56199 | ||
|
|
d30dc44312 | ||
|
|
72999ff49a | ||
|
|
cf157c123c | ||
|
|
abe5ae6834 | ||
|
|
dda21296dd | ||
|
|
73091fa92e | ||
|
|
f6f22b95c1 | ||
|
|
9ba26bd359 | ||
|
|
bbcc5bdd93 | ||
|
|
36fa2841d6 | ||
|
|
93982e4e6a | ||
|
|
abfd8792e5 | ||
|
|
27e188c48c | ||
|
|
7ec3928392 | ||
|
|
30a521aade | ||
|
|
299618ebe6 | ||
|
|
7883f9b001 | ||
|
|
403ad6923a | ||
|
|
e663f6c35e | ||
|
|
0720a4ad4b | ||
|
|
ea85e74011 | ||
|
|
b43e6e64e1 | ||
|
|
17882d7c36 | ||
|
|
e57ab953f8 | ||
|
|
10f04e19f0 | ||
|
|
f3ee84b3c6 | ||
|
|
46d6c7ae3a | ||
|
|
8faaacd80d | ||
|
|
5860269b82 | ||
|
|
4b9583c58b | ||
|
|
d6c8b011f1 | ||
|
|
c98610dce5 | ||
|
|
516386219c | ||
|
|
9c4964279c | ||
|
|
03b1cf763d | ||
|
|
d9b5c5f4c6 | ||
|
|
10569aad42 | ||
|
|
7df263ff2e | ||
|
|
fa1b189beb | ||
|
|
e7c8704090 | ||
|
|
d3a33de503 | ||
|
|
e08bfdfcf6 | ||
|
|
a31430a3dd | ||
|
|
e1999d51cd | ||
|
|
ead3a002df | ||
|
|
4d450ab910 | ||
|
|
1c6fcb8ed4 | ||
|
|
a63895ff24 | ||
|
|
df86048b6d | ||
|
|
aaa2a821ae | ||
|
|
267d53a56a | ||
|
|
575f3bd49c | ||
|
|
31971fab4f | ||
|
|
57ad341af1 | ||
|
|
bac45b3aee | ||
|
|
7ee08a5c50 | ||
|
|
4da046bde5 | ||
|
|
f966a06342 | ||
|
|
ca772d2fbe | ||
|
|
6e8be826ba | ||
|
|
12ddd7294a | ||
|
|
58ea79a30b | ||
|
|
61ff98096d | ||
|
|
ee1556e4fa | ||
|
|
8e3111aa47 | ||
|
|
6991330eda | ||
|
|
7ea31b5173 | ||
|
|
613940a0c8 | ||
|
|
1c8a50b369 | ||
|
|
c69fb85c7e | ||
|
|
e7e110c140 | ||
|
|
f938fc9d0d | ||
|
|
0d00936ba7 | ||
|
|
5736569768 | ||
|
|
594b5cdd95 | ||
|
|
9be71e5175 | ||
|
|
9d5b13b565 | ||
|
|
47f924d915 | ||
|
|
73a881c954 | ||
|
|
77b7420f54 | ||
|
|
ecf4e45659 | ||
|
|
c9c7f0d653 | ||
|
|
56cb8a6ee8 | ||
|
|
384eaed327 | ||
|
|
ad08393729 | ||
|
|
14eb47f749 | ||
|
|
816923e94d | ||
|
|
4dc28cfec5 | ||
|
|
85c62f07c7 | ||
|
|
5c2e0c374c | ||
|
|
72904519fa | ||
|
|
91356c9af3 | ||
|
|
e50192e9fd | ||
|
|
783b7129ff | ||
|
|
5da3e81bd3 | ||
|
|
f7352810e0 | ||
|
|
5a15fec112 | ||
|
|
15f8efdaec | ||
|
|
30f8d97b48 | ||
|
|
6ba3cceb79 | ||
|
|
056ef7da7f | ||
|
|
f485d0a1df | ||
|
|
727470dee3 | ||
|
|
7b81fef14e | ||
|
|
7127d4f3b9 | ||
|
|
0b1547e326 | ||
|
|
bed1e36dcc | ||
|
|
ad705086cf | ||
|
|
5335cdf4e5 | ||
|
|
f5a52c8f0e | ||
|
|
b42544526e | ||
|
|
1a16d949d8 | ||
|
|
9077c0989c | ||
|
|
e01756ceed | ||
|
|
cda38a1ca4 | ||
|
|
fe6088e60e | ||
|
|
a8784574ef | ||
|
|
2b7f0d950c | ||
|
|
b7e4a27e96 | ||
|
|
ae78664449 | ||
|
|
4db98cbc0f | ||
|
|
46f377635e | ||
|
|
3f37ea5dc8 | ||
|
|
7e273e82c5 | ||
|
|
83691de11a | ||
|
|
2b6932a2b4 | ||
|
|
58aa232a1b | ||
|
|
225534841f | ||
|
|
7ad83a3b84 | ||
|
|
1570bdd838 | ||
|
|
1ca625f41f | ||
|
|
31d483a567 | ||
|
|
57a4796c22 | ||
|
|
0a5f051dd1 | ||
|
|
260510273b | ||
|
|
13532b62d3 | ||
|
|
24abde9816 | ||
|
|
810d7007c4 | ||
|
|
62984d2aa0 | ||
|
|
007110c599 | ||
|
|
5cf1b561cf | ||
|
|
155602e49c | ||
|
|
81249c68ac | ||
|
|
8ff6d2ae7c | ||
|
|
e12c571abf | ||
|
|
a4b7019ff0 | ||
|
|
41ce629a25 | ||
|
|
8aa9921c9f | ||
|
|
d80ffe3ef9 | ||
|
|
30abded215 | ||
|
|
db83d5f398 | ||
|
|
0404d07666 | ||
|
|
b4d343e162 | ||
|
|
c75abb084c | ||
|
|
d7146dd127 | ||
|
|
9f639403e6 | ||
|
|
1d0dd0338c | ||
|
|
55a0db984d | ||
|
|
b2a8f8123d | ||
|
|
baeaab2f11 | ||
|
|
27aacde173 | ||
|
|
727d739d14 | ||
|
|
8455617ffb | ||
|
|
654ac6cd8a | ||
|
|
6f752ababb | ||
|
|
b8882237ed | ||
|
|
8de24779ad | ||
|
|
510345aad1 | ||
|
|
e94626a6cc | ||
|
|
3403afb533 | ||
|
|
8bcbf85453 | ||
|
|
386016ccb9 | ||
|
|
17637cea7c | ||
|
|
ae071d7abc | ||
|
|
d131bcb792 | ||
|
|
0e207c2010 | ||
|
|
f05f7db37d | ||
|
|
d726a9648f | ||
|
|
139fc62eaf | ||
|
|
1780f86fc7 | ||
|
|
439b0cad43 | ||
|
|
2e4c921868 | ||
|
|
5a71779ea1 | ||
|
|
a8c188402a | ||
|
|
803670872a | ||
|
|
38963eced5 | ||
|
|
4d7d7e7830 | ||
|
|
282ffe37c9 | ||
|
|
b79aea0cbe | ||
|
|
2d876e90b9 | ||
|
|
81c35a7c32 | ||
|
|
55b87d5ed6 | ||
|
|
8c9b6efb05 | ||
|
|
661169720a | ||
|
|
714bf79b93 | ||
|
|
2458371602 | ||
|
|
782a6afd92 | ||
|
|
52027d1402 | ||
|
|
170fa40d67 | ||
|
|
b297cbfc06 | ||
|
|
21c1d14e91 | ||
|
|
b884c106e9 | ||
|
|
32023f7122 | ||
|
|
1437520da2 | ||
|
|
04aded642e | ||
|
|
7a11627606 | ||
|
|
3d60298d48 | ||
|
|
65521e7aea | ||
|
|
de53863a6b | ||
|
|
c11e54766c | ||
|
|
61a9937027 | ||
|
|
ef5286dd77 | ||
|
|
7ba0b172ce | ||
|
|
d3703273c0 | ||
|
|
2b220ad0cb | ||
|
|
2bbab19dd4 | ||
|
|
5a0a148dcb | ||
|
|
9eb271207d | ||
|
|
c8cf2c65e4 | ||
|
|
5fa57d2c1e | ||
|
|
ea2a7a4068 | ||
|
|
30ee2bedf2 | ||
|
|
4270f44664 | ||
|
|
5e01fbde03 | ||
|
|
58cdf2e48a | ||
|
|
d74552e02f | ||
|
|
8410c327a4 | ||
|
|
b12ca99511 | ||
|
|
4bdebf338c | ||
|
|
8680534e33 | ||
|
|
d34331f060 | ||
|
|
275185d9df | ||
|
|
74a22daa49 | ||
|
|
6e078879ce | ||
|
|
d53f59f0bf | ||
|
|
42cf94df03 | ||
|
|
05c94f1c5b | ||
|
|
07be773161 | ||
|
|
9f3a952fce | ||
|
|
8172672e96 | ||
|
|
f5ba14f546 | ||
|
|
083ebae58d | ||
|
|
0f6c4d1756 | ||
|
|
4f68c4ee8b | ||
|
|
6037562c9a | ||
|
|
a3dda795f9 | ||
|
|
cc45b5b699 | ||
|
|
3adad3c21a | ||
|
|
a32d25bbe3 | ||
|
|
86dec7c602 | ||
|
|
7a7bee20af | ||
|
|
94e5ee70a5 | ||
|
|
379391e06f | ||
|
|
40f6d41324 | ||
|
|
dc0e3491ed | ||
|
|
fdfed19810 | ||
|
|
b9b6cafb89 | ||
|
|
847361027f | ||
|
|
09afbd762a | ||
|
|
896353268d | ||
|
|
0e86b3afe9 | ||
|
|
923fcd4337 | ||
|
|
de582ef5ab | ||
|
|
51e6b11ecf | ||
|
|
04fb50f8cc | ||
|
|
a271e24b3d | ||
|
|
5e4a2b3294 | ||
|
|
1e47c5857c | ||
|
|
c53ae81011 | ||
|
|
bab20e613d | ||
|
|
89b365f8b1 | ||
|
|
ec552dd6b8 | ||
|
|
95b7cabe00 | ||
|
|
3b70755095 | ||
|
|
7068dddd94 | ||
|
|
38ec1ea5e3 | ||
|
|
43ea988ec2 | ||
|
|
ced2d228f7 | ||
|
|
98095a6af2 | ||
|
|
29c141d4c3 | ||
|
|
25382580fe | ||
|
|
7feaf4b32c | ||
|
|
5610aee184 | ||
|
|
e15ee039e1 | ||
|
|
c5409af19c | ||
|
|
8bd0d15170 | ||
|
|
f09a065020 | ||
|
|
6c1463e3ae | ||
|
|
65c0f4e787 | ||
|
|
c45b49cb92 | ||
|
|
11a69c499f | ||
|
|
f6dca21a46 | ||
|
|
c90230a194 | ||
|
|
fb9571b348 | ||
|
|
7fff085d21 | ||
|
|
3dac951598 | ||
|
|
79d76996aa | ||
|
|
1b3a248142 | ||
|
|
bfe04d4d1a | ||
|
|
dc1e759ce5 | ||
|
|
08d483e0bd | ||
|
|
05948043e8 | ||
|
|
3513179722 | ||
|
|
c652135724 | ||
|
|
426fab32eb | ||
|
|
0e8f0d4b4a | ||
|
|
7ab181383b | ||
|
|
e0cf9e4331 | ||
|
|
9b5269dc4f | ||
|
|
2e36890b56 | ||
|
|
d147f3d366 | ||
|
|
c0ddd089ef | ||
|
|
556bec41c9 | ||
|
|
b95b9f0c47 | ||
|
|
4e2446d3e3 | ||
|
|
2cbaab0e4c | ||
|
|
85383e9b43 | ||
|
|
d895cad92a | ||
|
|
000cfe1dfc | ||
|
|
c4756c394b | ||
|
|
f5d7e0ed92 | ||
|
|
e20a296176 | ||
|
|
14878bcf99 | ||
|
|
f1efd350e6 | ||
|
|
66ceacd98f | ||
|
|
7a543052ee | ||
|
|
7e02e2aef3 | ||
|
|
a4919a6d69 | ||
|
|
17d98d79d9 | ||
|
|
82e6fdfaf9 | ||
|
|
ff49b0de7e | ||
|
|
068a41c6a7 | ||
|
|
812c85602b | ||
|
|
2fff4175b4 | ||
|
|
6dc4223e0b | ||
|
|
946daeb01a | ||
|
|
280e796635 | ||
|
|
dc23aa9a0f | ||
|
|
eb9f63c715 | ||
|
|
4c3adeff7c | ||
|
|
a2263b9249 | ||
|
|
692bd0ac00 | ||
|
|
df10c952c5 | ||
|
|
0491f55ad6 | ||
|
|
f3ffc1a495 | ||
|
|
3a1ffd88d5 | ||
|
|
eda3fb190c | ||
|
|
129b74fe08 | ||
|
|
8ae02b4b7b | ||
|
|
0bb76df454 | ||
|
|
7e509a19f1 | ||
|
|
3de3eee655 | ||
|
|
1bcdaeb910 | ||
|
|
90a904fbd5 | ||
|
|
7899b5ae72 | ||
|
|
3c353ab1c1 | ||
|
|
e1bf7aa65e | ||
|
|
6a6e05bfa1 | ||
|
|
28b0af4476 | ||
|
|
72ac08cc7b | ||
|
|
90946b68a2 | ||
|
|
9521c90651 | ||
|
|
d6ca111109 | ||
|
|
200915fc91 | ||
|
|
3bd24136a0 | ||
|
|
47a04102ee | ||
|
|
f35ab2f79d | ||
|
|
e07f115f98 | ||
|
|
001179771e | ||
|
|
661c72d6b7 | ||
|
|
4e31338e94 | ||
|
|
d5d4685d20 | ||
|
|
d7e459fdee | ||
|
|
4db1f3b850 | ||
|
|
4fb033d525 | ||
|
|
ffa649e377 | ||
|
|
450ff445ea | ||
|
|
311b4b9b6f | ||
|
|
710124b5de | ||
|
|
61eb256882 | ||
|
|
7ec8550652 | ||
|
|
4890db3089 | ||
|
|
81b0dd7686 | ||
|
|
cb9df3bfdb | ||
|
|
a0eb08f01b |
@@ -1038,19 +1038,17 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "2"]
|
[0, 0, 0, "Unexpected any. Specify a different type.", "2"]
|
||||||
],
|
],
|
||||||
"packages/grafana-runtime/src/utils/DataSourceWithBackend.ts:5381": [
|
"packages/grafana-runtime/src/utils/DataSourceWithBackend.ts:5381": [
|
||||||
[0, 0, 0, "Do not use any type assertions.", "0"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "2"],
|
[0, 0, 0, "Do not use any type assertions.", "2"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "3"],
|
[0, 0, 0, "Do not use any type assertions.", "3"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "4"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "4"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "5"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "5"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "6"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "6"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "7"],
|
[0, 0, 0, "Do not use any type assertions.", "7"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "8"],
|
[0, 0, 0, "Do not use any type assertions.", "8"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "9"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "9"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "10"],
|
[0, 0, 0, "Do not use any type assertions.", "10"]
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "11"],
|
|
||||||
[0, 0, 0, "Do not use any type assertions.", "12"]
|
|
||||||
],
|
],
|
||||||
"packages/grafana-runtime/src/utils/plugin.ts:5381": [
|
"packages/grafana-runtime/src/utils/plugin.ts:5381": [
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
||||||
@@ -1538,7 +1536,7 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "1"]
|
[0, 0, 0, "Unexpected any. Specify a different type.", "1"]
|
||||||
],
|
],
|
||||||
"packages/grafana-ui/src/components/Table/utils.test.ts:5381": [
|
"packages/grafana-ui/src/components/Table/utils.test.tsx:5381": [
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "2"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "2"],
|
||||||
@@ -1548,19 +1546,9 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "6"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "6"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "7"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "7"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "8"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "8"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "9"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "9"]
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "10"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "11"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "12"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "13"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "14"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "15"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "16"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "17"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "18"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "19"]
|
|
||||||
],
|
],
|
||||||
"packages/grafana-ui/src/components/Table/utils.ts:5381": [
|
"packages/grafana-ui/src/components/Table/utils.tsx:5381": [
|
||||||
[0, 0, 0, "Do not use any type assertions.", "0"],
|
[0, 0, 0, "Do not use any type assertions.", "0"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "1"],
|
[0, 0, 0, "Do not use any type assertions.", "1"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "2"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "2"],
|
||||||
@@ -1671,8 +1659,7 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
||||||
],
|
],
|
||||||
"packages/grafana-ui/src/slate-plugins/braces.ts:5381": [
|
"packages/grafana-ui/src/slate-plugins/braces.ts:5381": [
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
[0, 0, 0, "Do not use any type assertions.", "0"]
|
||||||
[0, 0, 0, "Do not use any type assertions.", "1"]
|
|
||||||
],
|
],
|
||||||
"packages/grafana-ui/src/slate-plugins/slate-prism/index.ts:5381": [
|
"packages/grafana-ui/src/slate-plugins/slate-prism/index.ts:5381": [
|
||||||
[0, 0, 0, "Do not use any type assertions.", "0"],
|
[0, 0, 0, "Do not use any type assertions.", "0"],
|
||||||
@@ -3997,12 +3984,6 @@ exports[`better eslint`] = {
|
|||||||
"public/app/features/folders/state/actions.test.ts:5381": [
|
"public/app/features/folders/state/actions.test.ts:5381": [
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
||||||
],
|
],
|
||||||
"public/app/features/geo/editor/GazetteerPathEditor.tsx:5381": [
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
|
|
||||||
[0, 0, 0, "Do not use any type assertions.", "2"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "3"]
|
|
||||||
],
|
|
||||||
"public/app/features/geo/format/geohash.ts:5381": [
|
"public/app/features/geo/format/geohash.ts:5381": [
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
||||||
],
|
],
|
||||||
@@ -5395,8 +5376,7 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "2"]
|
[0, 0, 0, "Unexpected any. Specify a different type.", "2"]
|
||||||
],
|
],
|
||||||
"public/app/plugins/datasource/cloudwatch/components/QueryHeader.tsx:5381": [
|
"public/app/plugins/datasource/cloudwatch/components/QueryHeader.tsx:5381": [
|
||||||
[0, 0, 0, "Do not use any type assertions.", "0"],
|
[0, 0, 0, "Do not use any type assertions.", "0"]
|
||||||
[0, 0, 0, "Do not use any type assertions.", "1"]
|
|
||||||
],
|
],
|
||||||
"public/app/plugins/datasource/cloudwatch/datasource.ts:5381": [
|
"public/app/plugins/datasource/cloudwatch/datasource.ts:5381": [
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
||||||
@@ -6835,9 +6815,7 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "15"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "15"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "16"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "16"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "17"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "17"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "18"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "18"]
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "19"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "20"]
|
|
||||||
],
|
],
|
||||||
"public/app/plugins/datasource/tempo/traceql/autocomplete.ts:5381": [
|
"public/app/plugins/datasource/tempo/traceql/autocomplete.ts:5381": [
|
||||||
[0, 0, 0, "Do not use any type assertions.", "0"],
|
[0, 0, 0, "Do not use any type assertions.", "0"],
|
||||||
@@ -7809,9 +7787,7 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Do not use any type assertions.", "16"],
|
[0, 0, 0, "Do not use any type assertions.", "16"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "17"],
|
[0, 0, 0, "Do not use any type assertions.", "17"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "18"],
|
[0, 0, 0, "Do not use any type assertions.", "18"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "19"],
|
[0, 0, 0, "Do not use any type assertions.", "19"]
|
||||||
[0, 0, 0, "Do not use any type assertions.", "20"],
|
|
||||||
[0, 0, 0, "Do not use any type assertions.", "21"]
|
|
||||||
],
|
],
|
||||||
"public/app/plugins/panel/histogram/Histogram.tsx:5381": [
|
"public/app/plugins/panel/histogram/Histogram.tsx:5381": [
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Auto generated binary variables helper managed by https://github.com/bwplotka/bingo v0.7. DO NOT EDIT.
|
# Auto generated binary variables helper managed by https://github.com/bwplotka/bingo v0.8. DO NOT EDIT.
|
||||||
# All tools are designed to be build inside $GOBIN.
|
# All tools are designed to be build inside $GOBIN.
|
||||||
BINGO_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
|
BINGO_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
|
||||||
GOPATH ?= $(shell go env GOPATH)
|
GOPATH ?= $(shell go env GOPATH)
|
||||||
@@ -29,11 +29,11 @@ $(DRONE): $(BINGO_DIR)/drone.mod
|
|||||||
@echo "(re)installing $(GOBIN)/drone-v1.5.0"
|
@echo "(re)installing $(GOBIN)/drone-v1.5.0"
|
||||||
@cd $(BINGO_DIR) && GOWORK=off $(GO) build -mod=mod -modfile=drone.mod -o=$(GOBIN)/drone-v1.5.0 "github.com/drone/drone-cli/drone"
|
@cd $(BINGO_DIR) && GOWORK=off $(GO) build -mod=mod -modfile=drone.mod -o=$(GOBIN)/drone-v1.5.0 "github.com/drone/drone-cli/drone"
|
||||||
|
|
||||||
GOLANGCI_LINT := $(GOBIN)/golangci-lint-v1.49.0
|
GOLANGCI_LINT := $(GOBIN)/golangci-lint-v1.51.2
|
||||||
$(GOLANGCI_LINT): $(BINGO_DIR)/golangci-lint.mod
|
$(GOLANGCI_LINT): $(BINGO_DIR)/golangci-lint.mod
|
||||||
@# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies.
|
@# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies.
|
||||||
@echo "(re)installing $(GOBIN)/golangci-lint-v1.49.0"
|
@echo "(re)installing $(GOBIN)/golangci-lint-v1.51.2"
|
||||||
@cd $(BINGO_DIR) && GOWORK=off $(GO) build -mod=mod -modfile=golangci-lint.mod -o=$(GOBIN)/golangci-lint-v1.49.0 "github.com/golangci/golangci-lint/cmd/golangci-lint"
|
@cd $(BINGO_DIR) && GOWORK=off $(GO) build -mod=mod -modfile=golangci-lint.mod -o=$(GOBIN)/golangci-lint-v1.51.2 "github.com/golangci/golangci-lint/cmd/golangci-lint"
|
||||||
|
|
||||||
JB := $(GOBIN)/jb-v0.5.1
|
JB := $(GOBIN)/jb-v0.5.1
|
||||||
$(JB): $(BINGO_DIR)/jb.mod
|
$(JB): $(BINGO_DIR)/jb.mod
|
||||||
|
|||||||
@@ -2,4 +2,4 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT
|
|||||||
|
|
||||||
go 1.19
|
go 1.19
|
||||||
|
|
||||||
require github.com/golangci/golangci-lint v1.49.0 // cmd/golangci-lint
|
require github.com/golangci/golangci-lint v1.51.2 // cmd/golangci-lint
|
||||||
|
|||||||
@@ -1,5 +1,10 @@
|
|||||||
|
4d63.com/gocheckcompilerdirectives v1.2.1 h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA=
|
||||||
|
4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs=
|
||||||
4d63.com/gochecknoglobals v0.1.0 h1:zeZSRqj5yCg28tCkIV/z/lWbwvNm5qnKVS15PI8nhD0=
|
4d63.com/gochecknoglobals v0.1.0 h1:zeZSRqj5yCg28tCkIV/z/lWbwvNm5qnKVS15PI8nhD0=
|
||||||
4d63.com/gochecknoglobals v0.1.0/go.mod h1:wfdC5ZjKSPr7CybKEcgJhUOgeAQW1+7WcyK8OvUilfo=
|
4d63.com/gochecknoglobals v0.1.0/go.mod h1:wfdC5ZjKSPr7CybKEcgJhUOgeAQW1+7WcyK8OvUilfo=
|
||||||
|
4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc=
|
||||||
|
4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU=
|
||||||
|
bitbucket.org/creachadair/shell v0.0.6/go.mod h1:8Qqi/cYk7vPnsOePHroKXDJYmb5x7ENhtiFtfZq8K+M=
|
||||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
|
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
|
||||||
@@ -38,6 +43,10 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX
|
|||||||
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
|
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
|
||||||
cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
|
cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
|
||||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||||
|
github.com/Abirdcfly/dupword v0.0.9 h1:MxprGjKq3yDBICXDgEEsyGirIXfMYXkLNT/agPsE1tk=
|
||||||
|
github.com/Abirdcfly/dupword v0.0.9/go.mod h1:PzmHVLLZ27MvHSzV7eFmMXSFArWXZPZmfuuziuUrf2g=
|
||||||
|
github.com/Abirdcfly/dupword v0.0.9 h1:MxprGjKq3yDBICXDgEEsyGirIXfMYXkLNT/agPsE1tk=
|
||||||
|
github.com/Abirdcfly/dupword v0.0.9/go.mod h1:PzmHVLLZ27MvHSzV7eFmMXSFArWXZPZmfuuziuUrf2g=
|
||||||
github.com/Antonboom/errname v0.1.7 h1:mBBDKvEYwPl4WFFNwec1CZO096G6vzK9vvDQzAwkako=
|
github.com/Antonboom/errname v0.1.7 h1:mBBDKvEYwPl4WFFNwec1CZO096G6vzK9vvDQzAwkako=
|
||||||
github.com/Antonboom/errname v0.1.7/go.mod h1:g0ONh16msHIPgJSGsecu1G/dcF2hlYR/0SddnIAGavU=
|
github.com/Antonboom/errname v0.1.7/go.mod h1:g0ONh16msHIPgJSGsecu1G/dcF2hlYR/0SddnIAGavU=
|
||||||
github.com/Antonboom/nilnil v0.1.1 h1:PHhrh5ANKFWRBh7TdYmyyq2gyT2lotnvFvvFbylF81Q=
|
github.com/Antonboom/nilnil v0.1.1 h1:PHhrh5ANKFWRBh7TdYmyyq2gyT2lotnvFvvFbylF81Q=
|
||||||
@@ -45,6 +54,8 @@ github.com/Antonboom/nilnil v0.1.1/go.mod h1:L1jBqoWM7AOeTD+tSquifKSesRHs4ZdaxvZ
|
|||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0=
|
github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0=
|
||||||
github.com/BurntSushi/toml v1.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
github.com/BurntSushi/toml v1.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||||
|
github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
|
||||||
|
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||||
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM=
|
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM=
|
||||||
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs=
|
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs=
|
||||||
@@ -54,6 +65,8 @@ github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3Q
|
|||||||
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
|
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
|
||||||
github.com/OpenPeeDeeP/depguard v1.1.0 h1:pjK9nLPS1FwQYGGpPxoMYpe7qACHOhAWQMQzV71i49o=
|
github.com/OpenPeeDeeP/depguard v1.1.0 h1:pjK9nLPS1FwQYGGpPxoMYpe7qACHOhAWQMQzV71i49o=
|
||||||
github.com/OpenPeeDeeP/depguard v1.1.0/go.mod h1:JtAMzWkmFEzDPyAd+W0NHl1lvpQKTvT9jnRVsohBKpc=
|
github.com/OpenPeeDeeP/depguard v1.1.0/go.mod h1:JtAMzWkmFEzDPyAd+W0NHl1lvpQKTvT9jnRVsohBKpc=
|
||||||
|
github.com/OpenPeeDeeP/depguard v1.1.1 h1:TSUznLjvp/4IUP+OQ0t/4jF4QUyxIcVX8YnghZdunyA=
|
||||||
|
github.com/OpenPeeDeeP/depguard v1.1.1/go.mod h1:JtAMzWkmFEzDPyAd+W0NHl1lvpQKTvT9jnRVsohBKpc=
|
||||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||||
@@ -65,6 +78,8 @@ github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQ
|
|||||||
github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I=
|
github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I=
|
||||||
github.com/ashanbrown/forbidigo v1.3.0 h1:VkYIwb/xxdireGAdJNZoo24O4lmnEWkactplBlWTShc=
|
github.com/ashanbrown/forbidigo v1.3.0 h1:VkYIwb/xxdireGAdJNZoo24O4lmnEWkactplBlWTShc=
|
||||||
github.com/ashanbrown/forbidigo v1.3.0/go.mod h1:vVW7PEdqEFqapJe95xHkTfB1+XvZXBFg8t0sG2FIxmI=
|
github.com/ashanbrown/forbidigo v1.3.0/go.mod h1:vVW7PEdqEFqapJe95xHkTfB1+XvZXBFg8t0sG2FIxmI=
|
||||||
|
github.com/ashanbrown/forbidigo v1.4.0 h1:spdPbupaSqtWORq1Q4eHBoPBmHtwVyLKwaedbSLc5Sw=
|
||||||
|
github.com/ashanbrown/forbidigo v1.4.0/go.mod h1:IvgwB5Y4fzqSAj/WVXKWigoTkB0dzI2FBbpKWuh7ph8=
|
||||||
github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s=
|
github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s=
|
||||||
github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI=
|
github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI=
|
||||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||||
@@ -77,6 +92,8 @@ github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ
|
|||||||
github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k=
|
github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k=
|
||||||
github.com/bombsimon/wsl/v3 v3.3.0 h1:Mka/+kRLoQJq7g2rggtgQsjuI/K5Efd87WX96EWFxjM=
|
github.com/bombsimon/wsl/v3 v3.3.0 h1:Mka/+kRLoQJq7g2rggtgQsjuI/K5Efd87WX96EWFxjM=
|
||||||
github.com/bombsimon/wsl/v3 v3.3.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc=
|
github.com/bombsimon/wsl/v3 v3.3.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc=
|
||||||
|
github.com/bombsimon/wsl/v3 v3.4.0 h1:RkSxjT3tmlptwfgEgTgU+KYKLI35p/tviNXNXiL2aNU=
|
||||||
|
github.com/bombsimon/wsl/v3 v3.4.0/go.mod h1:KkIB+TXkqy6MvK9BDZVbZxKNYsE1/oLRJbIFtf14qqo=
|
||||||
github.com/breml/bidichk v0.2.3 h1:qe6ggxpTfA8E75hdjWPZ581sY3a2lnl0IRxLQFelECI=
|
github.com/breml/bidichk v0.2.3 h1:qe6ggxpTfA8E75hdjWPZ581sY3a2lnl0IRxLQFelECI=
|
||||||
github.com/breml/bidichk v0.2.3/go.mod h1:8u2C6DnAy0g2cEq+k/A2+tr9O1s+vHGxWn0LTc70T2A=
|
github.com/breml/bidichk v0.2.3/go.mod h1:8u2C6DnAy0g2cEq+k/A2+tr9O1s+vHGxWn0LTc70T2A=
|
||||||
github.com/breml/errchkjson v0.3.0 h1:YdDqhfqMT+I1vIxPSas44P+9Z9HzJwCeAzjB8PxP1xw=
|
github.com/breml/errchkjson v0.3.0 h1:YdDqhfqMT+I1vIxPSas44P+9Z9HzJwCeAzjB8PxP1xw=
|
||||||
@@ -91,6 +108,8 @@ github.com/charithe/durationcheck v0.0.9 h1:mPP4ucLrf/rKZiIG/a9IPXHGlh8p4CzgpyTy
|
|||||||
github.com/charithe/durationcheck v0.0.9/go.mod h1:SSbRIBVfMjCi/kEB6K65XEA83D6prSM8ap1UCpNKtgg=
|
github.com/charithe/durationcheck v0.0.9/go.mod h1:SSbRIBVfMjCi/kEB6K65XEA83D6prSM8ap1UCpNKtgg=
|
||||||
github.com/chavacava/garif v0.0.0-20220630083739-93517212f375 h1:E7LT642ysztPWE0dfz43cWOvMiF42DyTRC+eZIaO4yI=
|
github.com/chavacava/garif v0.0.0-20220630083739-93517212f375 h1:E7LT642ysztPWE0dfz43cWOvMiF42DyTRC+eZIaO4yI=
|
||||||
github.com/chavacava/garif v0.0.0-20220630083739-93517212f375/go.mod h1:4m1Rv7xfuwWPNKXlThldNuJvutYM6J95wNuuVmn55To=
|
github.com/chavacava/garif v0.0.0-20220630083739-93517212f375/go.mod h1:4m1Rv7xfuwWPNKXlThldNuJvutYM6J95wNuuVmn55To=
|
||||||
|
github.com/chavacava/garif v0.0.0-20221024190013-b3ef35877348 h1:cy5GCEZLUCshCGCRRUjxHrDUqkB4l5cuUt3ShEckQEo=
|
||||||
|
github.com/chavacava/garif v0.0.0-20221024190013-b3ef35877348/go.mod h1:f/miWtG3SSuTxKsNK3o58H1xl+XV6ZIfbC6p7lPPB8U=
|
||||||
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
||||||
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
||||||
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||||
@@ -103,8 +122,14 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3
|
|||||||
github.com/cristalhq/acmd v0.7.0/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ=
|
github.com/cristalhq/acmd v0.7.0/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ=
|
||||||
github.com/curioswitch/go-reassign v0.1.2 h1:ekM07+z+VFT560Exz4mTv0/s1yU9gem6CJc/tlYpkmI=
|
github.com/curioswitch/go-reassign v0.1.2 h1:ekM07+z+VFT560Exz4mTv0/s1yU9gem6CJc/tlYpkmI=
|
||||||
github.com/curioswitch/go-reassign v0.1.2/go.mod h1:bFJIHgtTM3hRm2sKXSPkbwNjSFyGURQXyn4IXD2qwfQ=
|
github.com/curioswitch/go-reassign v0.1.2/go.mod h1:bFJIHgtTM3hRm2sKXSPkbwNjSFyGURQXyn4IXD2qwfQ=
|
||||||
|
github.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo=
|
||||||
|
github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc=
|
||||||
github.com/daixiang0/gci v0.6.3 h1:wUAqXChk8HbwXn8AfxD9DYSCp9Bpz1L3e6Q4Roe+q9E=
|
github.com/daixiang0/gci v0.6.3 h1:wUAqXChk8HbwXn8AfxD9DYSCp9Bpz1L3e6Q4Roe+q9E=
|
||||||
github.com/daixiang0/gci v0.6.3/go.mod h1:EpVfrztufwVgQRXjnX4zuNinEpLj5OmMjtu/+MB0V0c=
|
github.com/daixiang0/gci v0.6.3/go.mod h1:EpVfrztufwVgQRXjnX4zuNinEpLj5OmMjtu/+MB0V0c=
|
||||||
|
github.com/daixiang0/gci v0.9.1 h1:jBrwBmBZTDsGsXiaCTLIe9diotp1X4X64zodFrh7l+c=
|
||||||
|
github.com/daixiang0/gci v0.9.1/go.mod h1:EpVfrztufwVgQRXjnX4zuNinEpLj5OmMjtu/+MB0V0c=
|
||||||
|
github.com/daixiang0/gci v0.9.1 h1:jBrwBmBZTDsGsXiaCTLIe9diotp1X4X64zodFrh7l+c=
|
||||||
|
github.com/daixiang0/gci v0.9.1/go.mod h1:EpVfrztufwVgQRXjnX4zuNinEpLj5OmMjtu/+MB0V0c=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
@@ -122,6 +147,8 @@ github.com/ettle/strcase v0.1.1 h1:htFueZyVeE1XNnMEfbqp5r67qAN/4r6ya1ysq8Q+Zcw=
|
|||||||
github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY=
|
github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY=
|
||||||
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
|
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
|
||||||
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
|
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
|
||||||
|
github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w=
|
||||||
|
github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg=
|
||||||
github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=
|
github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=
|
||||||
github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
|
github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
|
||||||
github.com/firefart/nonamedreturns v1.0.4 h1:abzI1p7mAEPYuR4A+VLKn4eNDOycjYo2phmY9sfv40Y=
|
github.com/firefart/nonamedreturns v1.0.4 h1:abzI1p7mAEPYuR4A+VLKn4eNDOycjYo2phmY9sfv40Y=
|
||||||
@@ -132,6 +159,10 @@ github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo=
|
|||||||
github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA=
|
github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA=
|
||||||
github.com/go-critic/go-critic v0.6.4 h1:tucuG1pvOyYgpBIrVxw0R6gwO42lNa92Aq3VaDoIs+E=
|
github.com/go-critic/go-critic v0.6.4 h1:tucuG1pvOyYgpBIrVxw0R6gwO42lNa92Aq3VaDoIs+E=
|
||||||
github.com/go-critic/go-critic v0.6.4/go.mod h1:qL5SOlk7NtY6sJPoVCTKDIgzNOxHkkkOCVDyi9wJe1U=
|
github.com/go-critic/go-critic v0.6.4/go.mod h1:qL5SOlk7NtY6sJPoVCTKDIgzNOxHkkkOCVDyi9wJe1U=
|
||||||
|
github.com/go-critic/go-critic v0.6.7 h1:1evPrElnLQ2LZtJfmNDzlieDhjnq36SLgNzisx06oPM=
|
||||||
|
github.com/go-critic/go-critic v0.6.7/go.mod h1:fYZUijFdcnxgx6wPjQA2QEjIRaNCT0gO8bhexy6/QmE=
|
||||||
|
github.com/go-critic/go-critic v0.6.7 h1:1evPrElnLQ2LZtJfmNDzlieDhjnq36SLgNzisx06oPM=
|
||||||
|
github.com/go-critic/go-critic v0.6.7/go.mod h1:fYZUijFdcnxgx6wPjQA2QEjIRaNCT0gO8bhexy6/QmE=
|
||||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
@@ -145,24 +176,43 @@ github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG
|
|||||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||||
github.com/go-toolsmith/astcast v1.0.0 h1:JojxlmI6STnFVG9yOImLeGREv8W2ocNUM+iOhR6jE7g=
|
github.com/go-toolsmith/astcast v1.0.0 h1:JojxlmI6STnFVG9yOImLeGREv8W2ocNUM+iOhR6jE7g=
|
||||||
github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4=
|
github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4=
|
||||||
|
github.com/go-toolsmith/astcast v1.1.0 h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8=
|
||||||
|
github.com/go-toolsmith/astcast v1.1.0/go.mod h1:qdcuFWeGGS2xX5bLM/c3U9lewg7+Zu4mr+xPwZIB4ZU=
|
||||||
github.com/go-toolsmith/astcopy v1.0.0/go.mod h1:vrgyG+5Bxrnz4MZWPF+pI4R8h3qKRjjyvV/DSez4WVQ=
|
github.com/go-toolsmith/astcopy v1.0.0/go.mod h1:vrgyG+5Bxrnz4MZWPF+pI4R8h3qKRjjyvV/DSez4WVQ=
|
||||||
github.com/go-toolsmith/astcopy v1.0.1 h1:l09oBhAPyV74kLJ3ZO31iBU8htZGTwr9LTjuMCyL8go=
|
github.com/go-toolsmith/astcopy v1.0.1 h1:l09oBhAPyV74kLJ3ZO31iBU8htZGTwr9LTjuMCyL8go=
|
||||||
github.com/go-toolsmith/astcopy v1.0.1/go.mod h1:4TcEdbElGc9twQEYpVo/aieIXfHhiuLh4aLAck6dO7Y=
|
github.com/go-toolsmith/astcopy v1.0.1/go.mod h1:4TcEdbElGc9twQEYpVo/aieIXfHhiuLh4aLAck6dO7Y=
|
||||||
|
github.com/go-toolsmith/astcopy v1.0.3 h1:r0bgSRlMOAgO+BdQnVAcpMSMkrQCnV6ZJmIkrJgcJj0=
|
||||||
|
github.com/go-toolsmith/astcopy v1.0.3/go.mod h1:4TcEdbElGc9twQEYpVo/aieIXfHhiuLh4aLAck6dO7Y=
|
||||||
|
github.com/go-toolsmith/astcopy v1.0.3 h1:r0bgSRlMOAgO+BdQnVAcpMSMkrQCnV6ZJmIkrJgcJj0=
|
||||||
|
github.com/go-toolsmith/astcopy v1.0.3/go.mod h1:4TcEdbElGc9twQEYpVo/aieIXfHhiuLh4aLAck6dO7Y=
|
||||||
github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY=
|
github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY=
|
||||||
github.com/go-toolsmith/astequal v1.0.1/go.mod h1:4oGA3EZXTVItV/ipGiOx7NWkY5veFfcsOJVS2YxltLw=
|
github.com/go-toolsmith/astequal v1.0.1/go.mod h1:4oGA3EZXTVItV/ipGiOx7NWkY5veFfcsOJVS2YxltLw=
|
||||||
github.com/go-toolsmith/astequal v1.0.2 h1:+XvaV8zNxua+9+Oa4AHmgmpo4RYAbwr/qjNppLfX2yM=
|
github.com/go-toolsmith/astequal v1.0.2 h1:+XvaV8zNxua+9+Oa4AHmgmpo4RYAbwr/qjNppLfX2yM=
|
||||||
github.com/go-toolsmith/astequal v1.0.2/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4=
|
github.com/go-toolsmith/astequal v1.0.2/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4=
|
||||||
|
github.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4=
|
||||||
|
github.com/go-toolsmith/astequal v1.1.0 h1:kHKm1AWqClYn15R0K1KKE4RG614D46n+nqUQ06E1dTw=
|
||||||
|
github.com/go-toolsmith/astequal v1.1.0/go.mod h1:sedf7VIdCL22LD8qIvv7Nn9MuWJruQA/ysswh64lffQ=
|
||||||
github.com/go-toolsmith/astfmt v1.0.0 h1:A0vDDXt+vsvLEdbMFJAUBI/uTbRw1ffOPnxsILnFL6k=
|
github.com/go-toolsmith/astfmt v1.0.0 h1:A0vDDXt+vsvLEdbMFJAUBI/uTbRw1ffOPnxsILnFL6k=
|
||||||
github.com/go-toolsmith/astfmt v1.0.0/go.mod h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw=
|
github.com/go-toolsmith/astfmt v1.0.0/go.mod h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw=
|
||||||
|
github.com/go-toolsmith/astfmt v1.1.0 h1:iJVPDPp6/7AaeLJEruMsBUlOYCmvg0MoCfJprsOmcco=
|
||||||
|
github.com/go-toolsmith/astfmt v1.1.0/go.mod h1:OrcLlRwu0CuiIBp/8b5PYF9ktGVZUjlNMV634mhwuQ4=
|
||||||
github.com/go-toolsmith/astp v1.0.0 h1:alXE75TXgcmupDsMK1fRAy0YUzLzqPVvBKoyWV+KPXg=
|
github.com/go-toolsmith/astp v1.0.0 h1:alXE75TXgcmupDsMK1fRAy0YUzLzqPVvBKoyWV+KPXg=
|
||||||
github.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI=
|
github.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI=
|
||||||
|
github.com/go-toolsmith/astp v1.1.0 h1:dXPuCl6u2llURjdPLLDxJeZInAeZ0/eZwFJmqZMnpQA=
|
||||||
|
github.com/go-toolsmith/astp v1.1.0/go.mod h1:0T1xFGz9hicKs8Z5MfAqSUitoUYS30pDMsRVIDHs8CA=
|
||||||
github.com/go-toolsmith/pkgload v1.0.2-0.20220101231613-e814995d17c5/go.mod h1:3NAwwmD4uY/yggRxoEjk/S00MIV3A+H7rrE3i87eYxM=
|
github.com/go-toolsmith/pkgload v1.0.2-0.20220101231613-e814995d17c5/go.mod h1:3NAwwmD4uY/yggRxoEjk/S00MIV3A+H7rrE3i87eYxM=
|
||||||
github.com/go-toolsmith/strparse v1.0.0 h1:Vcw78DnpCAKlM20kSbAyO4mPfJn/lyYA4BJUDxe2Jb4=
|
github.com/go-toolsmith/strparse v1.0.0 h1:Vcw78DnpCAKlM20kSbAyO4mPfJn/lyYA4BJUDxe2Jb4=
|
||||||
github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8=
|
github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8=
|
||||||
|
github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQiyP2Bvw=
|
||||||
|
github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ=
|
||||||
github.com/go-toolsmith/typep v1.0.2 h1:8xdsa1+FSIH/RhEkgnD1j2CJOy5mNllW1Q9tRiYwvlk=
|
github.com/go-toolsmith/typep v1.0.2 h1:8xdsa1+FSIH/RhEkgnD1j2CJOy5mNllW1Q9tRiYwvlk=
|
||||||
github.com/go-toolsmith/typep v1.0.2/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU=
|
github.com/go-toolsmith/typep v1.0.2/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU=
|
||||||
|
github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus=
|
||||||
|
github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig=
|
||||||
github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b h1:khEcpUM4yFcxg4/FHQWkvVRmgijNXRfzkIDHh23ggEo=
|
github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b h1:khEcpUM4yFcxg4/FHQWkvVRmgijNXRfzkIDHh23ggEo=
|
||||||
github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM=
|
github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM=
|
||||||
|
github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U=
|
||||||
|
github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM=
|
||||||
github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
|
github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
|
||||||
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
|
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
|
||||||
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
|
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
|
||||||
@@ -204,14 +254,22 @@ github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe h1:6RGUuS7EGotKx6
|
|||||||
github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ=
|
github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ=
|
||||||
github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a h1:iR3fYXUjHCR97qWS8ch1y9zPNsgXThGwjKPrYfqMPks=
|
github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a h1:iR3fYXUjHCR97qWS8ch1y9zPNsgXThGwjKPrYfqMPks=
|
||||||
github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU=
|
github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU=
|
||||||
|
github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 h1:amWTbTGqOZ71ruzrdA+Nx5WA3tV1N0goTspwmKCQvBY=
|
||||||
|
github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2/go.mod h1:9wOXstvyDRshQ9LggQuzBCGysxs3b6Uo/1MvYCR2NMs=
|
||||||
github.com/golangci/golangci-lint v1.49.0 h1:I8WHOavragDttlLHtSraHn/h39C+R60bEQ5NoGcHQr8=
|
github.com/golangci/golangci-lint v1.49.0 h1:I8WHOavragDttlLHtSraHn/h39C+R60bEQ5NoGcHQr8=
|
||||||
github.com/golangci/golangci-lint v1.49.0/go.mod h1:+V/7lLv449R6w9mQ3WdV0EKh7Je/jTylMeSwBZcLeWE=
|
github.com/golangci/golangci-lint v1.49.0/go.mod h1:+V/7lLv449R6w9mQ3WdV0EKh7Je/jTylMeSwBZcLeWE=
|
||||||
|
github.com/golangci/golangci-lint v1.51.2 h1:yIcsT1X9ZYHdSpeWXRT1ORC/FPGSqDHbHsu9uk4FK7M=
|
||||||
|
github.com/golangci/golangci-lint v1.51.2/go.mod h1:KH9Q7/3glwpYSknxUgUyLlAv46A8fsSKo1hH2wDvkr8=
|
||||||
|
github.com/golangci/golangci-lint v1.51.2 h1:yIcsT1X9ZYHdSpeWXRT1ORC/FPGSqDHbHsu9uk4FK7M=
|
||||||
|
github.com/golangci/golangci-lint v1.51.2/go.mod h1:KH9Q7/3glwpYSknxUgUyLlAv46A8fsSKo1hH2wDvkr8=
|
||||||
github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA=
|
github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA=
|
||||||
github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg=
|
github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg=
|
||||||
github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA=
|
github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA=
|
||||||
github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o=
|
github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o=
|
||||||
github.com/golangci/misspell v0.3.5 h1:pLzmVdl3VxTOncgzHcvLOKirdvcx/TydsClUQXTehjo=
|
github.com/golangci/misspell v0.3.5 h1:pLzmVdl3VxTOncgzHcvLOKirdvcx/TydsClUQXTehjo=
|
||||||
github.com/golangci/misspell v0.3.5/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA=
|
github.com/golangci/misspell v0.3.5/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA=
|
||||||
|
github.com/golangci/misspell v0.4.0 h1:KtVB/hTK4bbL/S6bs64rYyk8adjmh1BygbBiaAiX+a0=
|
||||||
|
github.com/golangci/misspell v0.4.0/go.mod h1:W6O/bwV6lGDxUCChm2ykw9NQdd5bYd1Xkjo88UcWyJc=
|
||||||
github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 h1:DIPQnGy2Gv2FSA4B/hh8Q7xx3B7AIDk3DAMeHclH1vQ=
|
github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 h1:DIPQnGy2Gv2FSA4B/hh8Q7xx3B7AIDk3DAMeHclH1vQ=
|
||||||
github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6/go.mod h1:0AKcRCkMoKvUvlf89F6O7H2LYdhr1zBh736mBItOdRs=
|
github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6/go.mod h1:0AKcRCkMoKvUvlf89F6O7H2LYdhr1zBh736mBItOdRs=
|
||||||
github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys=
|
github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys=
|
||||||
@@ -231,6 +289,8 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
|||||||
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
|
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
|
||||||
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
|
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||||
|
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||||
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
|
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
|
||||||
@@ -252,6 +312,10 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m
|
|||||||
github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
|
github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
|
||||||
github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 h1:PVRE9d4AQKmbelZ7emNig1+NT27DUmKZn5qXxfio54U=
|
github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 h1:PVRE9d4AQKmbelZ7emNig1+NT27DUmKZn5qXxfio54U=
|
||||||
github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0=
|
github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0=
|
||||||
|
github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 h1:9alfqbrhuD+9fLZ4iaAVwhlp5PEhmnBt7yvK2Oy5C1U=
|
||||||
|
github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0=
|
||||||
|
github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 h1:9alfqbrhuD+9fLZ4iaAVwhlp5PEhmnBt7yvK2Oy5C1U=
|
||||||
|
github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0=
|
||||||
github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE=
|
github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE=
|
||||||
github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE=
|
github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE=
|
||||||
github.com/gostaticanalysis/analysisutil v0.1.0/go.mod h1:dMhHRU9KTiDcuLGdy87/2gTR8WruwYZrKdRq9m1O6uw=
|
github.com/gostaticanalysis/analysisutil v0.1.0/go.mod h1:dMhHRU9KTiDcuLGdy87/2gTR8WruwYZrKdRq9m1O6uw=
|
||||||
@@ -283,6 +347,8 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:
|
|||||||
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||||
github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
|
github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
|
||||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||||
|
github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc=
|
||||||
|
github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||||
github.com/jgautheron/goconst v1.5.1 h1:HxVbL1MhydKs8R8n/HE5NPvzfaYmQJA3o879lE4+WcM=
|
github.com/jgautheron/goconst v1.5.1 h1:HxVbL1MhydKs8R8n/HE5NPvzfaYmQJA3o879lE4+WcM=
|
||||||
github.com/jgautheron/goconst v1.5.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4=
|
github.com/jgautheron/goconst v1.5.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4=
|
||||||
github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs=
|
github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs=
|
||||||
@@ -301,10 +367,18 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V
|
|||||||
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
|
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
|
||||||
github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY=
|
github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY=
|
||||||
github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0=
|
github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0=
|
||||||
|
github.com/junk1tm/musttag v0.4.5 h1:d+mpJ1vn6WFEVKHwkgJiIedis1u/EawKOuUTygAUtCo=
|
||||||
|
github.com/junk1tm/musttag v0.4.5/go.mod h1:XkcL/9O6RmD88JBXb+I15nYRl9W4ExhgQeCBEhfMC8U=
|
||||||
|
github.com/junk1tm/musttag v0.4.5 h1:d+mpJ1vn6WFEVKHwkgJiIedis1u/EawKOuUTygAUtCo=
|
||||||
|
github.com/junk1tm/musttag v0.4.5/go.mod h1:XkcL/9O6RmD88JBXb+I15nYRl9W4ExhgQeCBEhfMC8U=
|
||||||
github.com/kisielk/errcheck v1.6.2 h1:uGQ9xI8/pgc9iOoCe7kWQgRE6SBTrCGmTSf0LrEtY7c=
|
github.com/kisielk/errcheck v1.6.2 h1:uGQ9xI8/pgc9iOoCe7kWQgRE6SBTrCGmTSf0LrEtY7c=
|
||||||
github.com/kisielk/errcheck v1.6.2/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw=
|
github.com/kisielk/errcheck v1.6.2/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw=
|
||||||
|
github.com/kisielk/errcheck v1.6.3 h1:dEKh+GLHcWm2oN34nMvDzn1sqI0i0WxPvrgiJA5JuM8=
|
||||||
|
github.com/kisielk/errcheck v1.6.3/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw=
|
||||||
github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=
|
github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=
|
||||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||||
|
github.com/kkHAIKE/contextcheck v1.1.3 h1:l4pNvrb8JSwRd51ojtcOxOeHJzHek+MtOyXbaR0uvmw=
|
||||||
|
github.com/kkHAIKE/contextcheck v1.1.3/go.mod h1:PG/cwd6c0705/LM0KTr1acO2gORUxkSVWyLJOFW5qoo=
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||||
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
|
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
|
||||||
@@ -319,17 +393,27 @@ github.com/kunwardeep/paralleltest v1.0.6 h1:FCKYMF1OF2+RveWlABsdnmsvJrei5aoyZoa
|
|||||||
github.com/kunwardeep/paralleltest v1.0.6/go.mod h1:Y0Y0XISdZM5IKm3TREQMZ6iteqn1YuwCsJO/0kL9Zes=
|
github.com/kunwardeep/paralleltest v1.0.6/go.mod h1:Y0Y0XISdZM5IKm3TREQMZ6iteqn1YuwCsJO/0kL9Zes=
|
||||||
github.com/kyoh86/exportloopref v0.1.8 h1:5Ry/at+eFdkX9Vsdw3qU4YkvGtzuVfzT4X7S77LoN/M=
|
github.com/kyoh86/exportloopref v0.1.8 h1:5Ry/at+eFdkX9Vsdw3qU4YkvGtzuVfzT4X7S77LoN/M=
|
||||||
github.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg=
|
github.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg=
|
||||||
|
github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ=
|
||||||
|
github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA=
|
||||||
github.com/ldez/gomoddirectives v0.2.3 h1:y7MBaisZVDYmKvt9/l1mjNCiSA1BVn34U0ObUcJwlhA=
|
github.com/ldez/gomoddirectives v0.2.3 h1:y7MBaisZVDYmKvt9/l1mjNCiSA1BVn34U0ObUcJwlhA=
|
||||||
github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0=
|
github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0=
|
||||||
github.com/ldez/tagliatelle v0.3.1 h1:3BqVVlReVUZwafJUwQ+oxbx2BEX2vUG4Yu/NOfMiKiM=
|
github.com/ldez/tagliatelle v0.3.1 h1:3BqVVlReVUZwafJUwQ+oxbx2BEX2vUG4Yu/NOfMiKiM=
|
||||||
github.com/ldez/tagliatelle v0.3.1/go.mod h1:8s6WJQwEYHbKZDsp/LjArytKOG8qaMrKQQ3mFukHs88=
|
github.com/ldez/tagliatelle v0.3.1/go.mod h1:8s6WJQwEYHbKZDsp/LjArytKOG8qaMrKQQ3mFukHs88=
|
||||||
|
github.com/ldez/tagliatelle v0.4.0 h1:sylp7d9kh6AdXN2DpVGHBRb5guTVAgOxqNGhbqc4b1c=
|
||||||
|
github.com/ldez/tagliatelle v0.4.0/go.mod h1:mNtTfrHy2haaBAw+VT7IBV6VXBThS7TCreYWbBcJ87I=
|
||||||
github.com/leonklingele/grouper v1.1.0 h1:tC2y/ygPbMFSBOs3DcyaEMKnnwH7eYKzohOtRrf0SAg=
|
github.com/leonklingele/grouper v1.1.0 h1:tC2y/ygPbMFSBOs3DcyaEMKnnwH7eYKzohOtRrf0SAg=
|
||||||
github.com/leonklingele/grouper v1.1.0/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY=
|
github.com/leonklingele/grouper v1.1.0/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY=
|
||||||
|
github.com/leonklingele/grouper v1.1.1 h1:suWXRU57D4/Enn6pXR0QVqqWWrnJ9Osrz+5rjt8ivzU=
|
||||||
|
github.com/leonklingele/grouper v1.1.1/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY=
|
||||||
|
github.com/leonklingele/grouper v1.1.1 h1:suWXRU57D4/Enn6pXR0QVqqWWrnJ9Osrz+5rjt8ivzU=
|
||||||
|
github.com/leonklingele/grouper v1.1.1/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY=
|
||||||
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||||
github.com/lufeee/execinquery v1.2.1 h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCEtOM=
|
github.com/lufeee/execinquery v1.2.1 h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCEtOM=
|
||||||
github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM=
|
github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM=
|
||||||
github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
|
github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
|
||||||
github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
|
github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
|
||||||
|
github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI=
|
||||||
|
github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE=
|
||||||
github.com/maratori/testpackage v1.1.0 h1:GJY4wlzQhuBusMF1oahQCBtUV/AQ/k69IZ68vxaac2Q=
|
github.com/maratori/testpackage v1.1.0 h1:GJY4wlzQhuBusMF1oahQCBtUV/AQ/k69IZ68vxaac2Q=
|
||||||
github.com/maratori/testpackage v1.1.0/go.mod h1:PeAhzU8qkCwdGEMTEupsHJNlQu2gZopMC6RjbhmHeDc=
|
github.com/maratori/testpackage v1.1.0/go.mod h1:PeAhzU8qkCwdGEMTEupsHJNlQu2gZopMC6RjbhmHeDc=
|
||||||
github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 h1:pWxk9e//NbPwfxat7RXkts09K+dEBJWakUWwICVqYbA=
|
github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 h1:pWxk9e//NbPwfxat7RXkts09K+dEBJWakUWwICVqYbA=
|
||||||
@@ -342,6 +426,10 @@ github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Ky
|
|||||||
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
|
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
|
||||||
github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ=
|
github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ=
|
||||||
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||||
|
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
|
||||||
|
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||||
|
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
|
||||||
|
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||||
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
|
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
|
||||||
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
||||||
github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
|
github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
|
||||||
@@ -351,6 +439,10 @@ github.com/mbilski/exhaustivestruct v1.2.0 h1:wCBmUnSYufAHO6J4AVWY6ff+oxWxsVFrwg
|
|||||||
github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc=
|
github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc=
|
||||||
github.com/mgechev/revive v1.2.3 h1:NzIEEa9+WimQ6q2Ov7OcNeySS/IOcwtkQ8RAh0R5UJ4=
|
github.com/mgechev/revive v1.2.3 h1:NzIEEa9+WimQ6q2Ov7OcNeySS/IOcwtkQ8RAh0R5UJ4=
|
||||||
github.com/mgechev/revive v1.2.3/go.mod h1:iAWlQishqCuj4yhV24FTnKSXGpbAA+0SckXB8GQMX/Q=
|
github.com/mgechev/revive v1.2.3/go.mod h1:iAWlQishqCuj4yhV24FTnKSXGpbAA+0SckXB8GQMX/Q=
|
||||||
|
github.com/mgechev/revive v1.2.5 h1:UF9AR8pOAuwNmhXj2odp4mxv9Nx2qUIwVz8ZsU+Mbec=
|
||||||
|
github.com/mgechev/revive v1.2.5/go.mod h1:nFOXent79jMTISAfOAasKfy0Z2Ejq0WX7Qn/KAdYopI=
|
||||||
|
github.com/mgechev/revive v1.2.5 h1:UF9AR8pOAuwNmhXj2odp4mxv9Nx2qUIwVz8ZsU+Mbec=
|
||||||
|
github.com/mgechev/revive v1.2.5/go.mod h1:nFOXent79jMTISAfOAasKfy0Z2Ejq0WX7Qn/KAdYopI=
|
||||||
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
||||||
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||||
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
|
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
|
||||||
@@ -371,8 +463,16 @@ github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354/go.mod h1:KSVJ
|
|||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
github.com/nishanths/exhaustive v0.8.1 h1:0QKNascWv9qIHY7zRoZSxeRr6kuk5aAT3YXLTiDmjTo=
|
github.com/nishanths/exhaustive v0.8.1 h1:0QKNascWv9qIHY7zRoZSxeRr6kuk5aAT3YXLTiDmjTo=
|
||||||
github.com/nishanths/exhaustive v0.8.1/go.mod h1:qj+zJJUgJ76tR92+25+03oYUhzF4R7/2Wk7fGTfCHmg=
|
github.com/nishanths/exhaustive v0.8.1/go.mod h1:qj+zJJUgJ76tR92+25+03oYUhzF4R7/2Wk7fGTfCHmg=
|
||||||
|
github.com/nishanths/exhaustive v0.9.5 h1:TzssWan6orBiLYVqewCG8faud9qlFntJE30ACpzmGME=
|
||||||
|
github.com/nishanths/exhaustive v0.9.5/go.mod h1:IbwrGdVMizvDcIxPYGVdQn5BqWJaOwpCvg4RGb8r/TA=
|
||||||
|
github.com/nishanths/exhaustive v0.9.5 h1:TzssWan6orBiLYVqewCG8faud9qlFntJE30ACpzmGME=
|
||||||
|
github.com/nishanths/exhaustive v0.9.5/go.mod h1:IbwrGdVMizvDcIxPYGVdQn5BqWJaOwpCvg4RGb8r/TA=
|
||||||
github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk=
|
github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk=
|
||||||
github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c=
|
github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c=
|
||||||
|
github.com/nunnatsa/ginkgolinter v0.8.1 h1:/y4o/0hV+ruUHj4xXh89xlFjoaitnI4LnkpuYs02q1c=
|
||||||
|
github.com/nunnatsa/ginkgolinter v0.8.1/go.mod h1:FYYLtszIdmzCH8XMaMPyxPVXZ7VCaIm55bA+gugx+14=
|
||||||
|
github.com/nunnatsa/ginkgolinter v0.8.1 h1:/y4o/0hV+ruUHj4xXh89xlFjoaitnI4LnkpuYs02q1c=
|
||||||
|
github.com/nunnatsa/ginkgolinter v0.8.1/go.mod h1:FYYLtszIdmzCH8XMaMPyxPVXZ7VCaIm55bA+gugx+14=
|
||||||
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
|
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
|
||||||
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
|
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
|
||||||
github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw=
|
github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw=
|
||||||
@@ -384,6 +484,8 @@ github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3v
|
|||||||
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
|
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
|
||||||
github.com/pelletier/go-toml/v2 v2.0.2 h1:+jQXlF3scKIcSEKkdHzXhCTDLPFi5r1wnK6yPS+49Gw=
|
github.com/pelletier/go-toml/v2 v2.0.2 h1:+jQXlF3scKIcSEKkdHzXhCTDLPFi5r1wnK6yPS+49Gw=
|
||||||
github.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI=
|
github.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI=
|
||||||
|
github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg=
|
||||||
|
github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas=
|
||||||
github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d h1:CdDQnGF8Nq9ocOS/xlSptM1N3BbrA6/kmaep5ggwaIA=
|
github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d h1:CdDQnGF8Nq9ocOS/xlSptM1N3BbrA6/kmaep5ggwaIA=
|
||||||
github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw=
|
github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw=
|
||||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
@@ -395,6 +497,10 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
|
|||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/polyfloyd/go-errorlint v1.0.2 h1:kp1yvHflYhTmw5m3MmBy8SCyQkKPjwDthVuMH0ug6Yk=
|
github.com/polyfloyd/go-errorlint v1.0.2 h1:kp1yvHflYhTmw5m3MmBy8SCyQkKPjwDthVuMH0ug6Yk=
|
||||||
github.com/polyfloyd/go-errorlint v1.0.2/go.mod h1:APVvOesVSAnne5SClsPxPdfvZTVDojXh1/G3qb5wjGI=
|
github.com/polyfloyd/go-errorlint v1.0.2/go.mod h1:APVvOesVSAnne5SClsPxPdfvZTVDojXh1/G3qb5wjGI=
|
||||||
|
github.com/polyfloyd/go-errorlint v1.1.0 h1:VKoEFg5yxSgJ2yFPVhxW7oGz+f8/OVcuMeNvcPIi6Eg=
|
||||||
|
github.com/polyfloyd/go-errorlint v1.1.0/go.mod h1:Uss7Bc/izYG0leCMRx3WVlrpqWedSZk7V/FUQW6VJ6U=
|
||||||
|
github.com/polyfloyd/go-errorlint v1.1.0 h1:VKoEFg5yxSgJ2yFPVhxW7oGz+f8/OVcuMeNvcPIi6Eg=
|
||||||
|
github.com/polyfloyd/go-errorlint v1.1.0/go.mod h1:Uss7Bc/izYG0leCMRx3WVlrpqWedSZk7V/FUQW6VJ6U=
|
||||||
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
|
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
|
||||||
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
|
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
|
||||||
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
|
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
|
||||||
@@ -420,12 +526,20 @@ github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1
|
|||||||
github.com/quasilyte/go-ruleguard v0.3.1-0.20210203134552-1b5a410e1cc8/go.mod h1:KsAh3x0e7Fkpgs+Q9pNLS5XpFSvYCEVl5gP9Pp1xp30=
|
github.com/quasilyte/go-ruleguard v0.3.1-0.20210203134552-1b5a410e1cc8/go.mod h1:KsAh3x0e7Fkpgs+Q9pNLS5XpFSvYCEVl5gP9Pp1xp30=
|
||||||
github.com/quasilyte/go-ruleguard v0.3.17 h1:cDdoaSbQg11LXPDQqiCK54QmQXsEQQCTIgdcpeULGSI=
|
github.com/quasilyte/go-ruleguard v0.3.17 h1:cDdoaSbQg11LXPDQqiCK54QmQXsEQQCTIgdcpeULGSI=
|
||||||
github.com/quasilyte/go-ruleguard v0.3.17/go.mod h1:sST5PvaR7yb/Az5ksX8oc88usJ4EGjmJv7cK7y3jyig=
|
github.com/quasilyte/go-ruleguard v0.3.17/go.mod h1:sST5PvaR7yb/Az5ksX8oc88usJ4EGjmJv7cK7y3jyig=
|
||||||
|
github.com/quasilyte/go-ruleguard v0.3.19 h1:tfMnabXle/HzOb5Xe9CUZYWXKfkS1KwRmZyPmD9nVcc=
|
||||||
|
github.com/quasilyte/go-ruleguard v0.3.19/go.mod h1:lHSn69Scl48I7Gt9cX3VrbsZYvYiBYszZOZW4A+oTEw=
|
||||||
|
github.com/quasilyte/go-ruleguard v0.3.19 h1:tfMnabXle/HzOb5Xe9CUZYWXKfkS1KwRmZyPmD9nVcc=
|
||||||
|
github.com/quasilyte/go-ruleguard v0.3.19/go.mod h1:lHSn69Scl48I7Gt9cX3VrbsZYvYiBYszZOZW4A+oTEw=
|
||||||
github.com/quasilyte/go-ruleguard/dsl v0.3.0/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU=
|
github.com/quasilyte/go-ruleguard/dsl v0.3.0/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU=
|
||||||
github.com/quasilyte/go-ruleguard/dsl v0.3.21/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU=
|
github.com/quasilyte/go-ruleguard/dsl v0.3.21/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU=
|
||||||
github.com/quasilyte/go-ruleguard/rules v0.0.0-20201231183845-9e62ed36efe1/go.mod h1:7JTjp89EGyU1d6XfBiXihJNG37wB2VRkd125Q1u7Plc=
|
github.com/quasilyte/go-ruleguard/rules v0.0.0-20201231183845-9e62ed36efe1/go.mod h1:7JTjp89EGyU1d6XfBiXihJNG37wB2VRkd125Q1u7Plc=
|
||||||
github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50=
|
github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50=
|
||||||
github.com/quasilyte/gogrep v0.0.0-20220120141003-628d8b3623b5 h1:PDWGei+Rf2bBiuZIbZmM20J2ftEy9IeUCHA8HbQqed8=
|
github.com/quasilyte/gogrep v0.0.0-20220120141003-628d8b3623b5 h1:PDWGei+Rf2bBiuZIbZmM20J2ftEy9IeUCHA8HbQqed8=
|
||||||
github.com/quasilyte/gogrep v0.0.0-20220120141003-628d8b3623b5/go.mod h1:wSEyW6O61xRV6zb6My3HxrQ5/8ke7NE2OayqCHa3xRM=
|
github.com/quasilyte/gogrep v0.0.0-20220120141003-628d8b3623b5/go.mod h1:wSEyW6O61xRV6zb6My3HxrQ5/8ke7NE2OayqCHa3xRM=
|
||||||
|
github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo=
|
||||||
|
github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng=
|
||||||
|
github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo=
|
||||||
|
github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng=
|
||||||
github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 h1:L8QM9bvf68pVdQ3bCFZMDmnt9yqcMBro1pC7F+IPYMY=
|
github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 h1:L8QM9bvf68pVdQ3bCFZMDmnt9yqcMBro1pC7F+IPYMY=
|
||||||
github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0=
|
github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0=
|
||||||
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs=
|
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs=
|
||||||
@@ -434,16 +548,32 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR
|
|||||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
github.com/ryancurrah/gomodguard v1.2.4 h1:CpMSDKan0LtNGGhPrvupAoLeObRFjND8/tU1rEOtBp4=
|
github.com/ryancurrah/gomodguard v1.2.4 h1:CpMSDKan0LtNGGhPrvupAoLeObRFjND8/tU1rEOtBp4=
|
||||||
github.com/ryancurrah/gomodguard v1.2.4/go.mod h1:+Kem4VjWwvFpUJRJSwa16s1tBJe+vbv02+naTow2f6M=
|
github.com/ryancurrah/gomodguard v1.2.4/go.mod h1:+Kem4VjWwvFpUJRJSwa16s1tBJe+vbv02+naTow2f6M=
|
||||||
|
github.com/ryancurrah/gomodguard v1.3.0 h1:q15RT/pd6UggBXVBuLps8BXRvl5GPBcwVA7BJHMLuTw=
|
||||||
|
github.com/ryancurrah/gomodguard v1.3.0/go.mod h1:ggBxb3luypPEzqVtq33ee7YSN35V28XeGnid8dnni50=
|
||||||
github.com/ryanrolds/sqlclosecheck v0.3.0 h1:AZx+Bixh8zdUBxUA1NxbxVAS78vTPq4rCb8OUZI9xFw=
|
github.com/ryanrolds/sqlclosecheck v0.3.0 h1:AZx+Bixh8zdUBxUA1NxbxVAS78vTPq4rCb8OUZI9xFw=
|
||||||
github.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA=
|
github.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA=
|
||||||
|
github.com/ryanrolds/sqlclosecheck v0.4.0 h1:i8SX60Rppc1wRuyQjMciLqIzV3xnoHB7/tXbr6RGYNI=
|
||||||
|
github.com/ryanrolds/sqlclosecheck v0.4.0/go.mod h1:TBRRjzL31JONc9i4XMinicuo+s+E8yKZ5FN8X3G6CKQ=
|
||||||
|
github.com/ryanrolds/sqlclosecheck v0.4.0 h1:i8SX60Rppc1wRuyQjMciLqIzV3xnoHB7/tXbr6RGYNI=
|
||||||
|
github.com/ryanrolds/sqlclosecheck v0.4.0/go.mod h1:TBRRjzL31JONc9i4XMinicuo+s+E8yKZ5FN8X3G6CKQ=
|
||||||
github.com/sanposhiho/wastedassign/v2 v2.0.6 h1:+6/hQIHKNJAUixEj6EmOngGIisyeI+T3335lYTyxRoA=
|
github.com/sanposhiho/wastedassign/v2 v2.0.6 h1:+6/hQIHKNJAUixEj6EmOngGIisyeI+T3335lYTyxRoA=
|
||||||
github.com/sanposhiho/wastedassign/v2 v2.0.6/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI=
|
github.com/sanposhiho/wastedassign/v2 v2.0.6/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI=
|
||||||
|
github.com/sanposhiho/wastedassign/v2 v2.0.7 h1:J+6nrY4VW+gC9xFzUc+XjPD3g3wF3je/NsJFwFK7Uxc=
|
||||||
|
github.com/sanposhiho/wastedassign/v2 v2.0.7/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI=
|
||||||
github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw=
|
github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw=
|
||||||
github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ=
|
github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ=
|
||||||
github.com/sashamelentyev/usestdlibvars v1.13.0 h1:uObNudVEEHf6JbOJy5bgKJloA1bWjxR9fwgNFpPzKnI=
|
github.com/sashamelentyev/usestdlibvars v1.13.0 h1:uObNudVEEHf6JbOJy5bgKJloA1bWjxR9fwgNFpPzKnI=
|
||||||
github.com/sashamelentyev/usestdlibvars v1.13.0/go.mod h1:D2Wb7niIYmTB+gB8z7kh8tyP5ccof1dQ+SFk+WW5NtY=
|
github.com/sashamelentyev/usestdlibvars v1.13.0/go.mod h1:D2Wb7niIYmTB+gB8z7kh8tyP5ccof1dQ+SFk+WW5NtY=
|
||||||
|
github.com/sashamelentyev/usestdlibvars v1.23.0 h1:01h+/2Kd+NblNItNeux0veSL5cBF1jbEOPrEhDzGYq0=
|
||||||
|
github.com/sashamelentyev/usestdlibvars v1.23.0/go.mod h1:YPwr/Y1LATzHI93CqoPUN/2BzGQ/6N/cl/KwgR0B/aU=
|
||||||
|
github.com/sashamelentyev/usestdlibvars v1.23.0 h1:01h+/2Kd+NblNItNeux0veSL5cBF1jbEOPrEhDzGYq0=
|
||||||
|
github.com/sashamelentyev/usestdlibvars v1.23.0/go.mod h1:YPwr/Y1LATzHI93CqoPUN/2BzGQ/6N/cl/KwgR0B/aU=
|
||||||
github.com/securego/gosec/v2 v2.13.1 h1:7mU32qn2dyC81MH9L2kefnQyRMUarfDER3iQyMHcjYM=
|
github.com/securego/gosec/v2 v2.13.1 h1:7mU32qn2dyC81MH9L2kefnQyRMUarfDER3iQyMHcjYM=
|
||||||
github.com/securego/gosec/v2 v2.13.1/go.mod h1:EO1sImBMBWFjOTFzMWfTRrZW6M15gm60ljzrmy/wtHo=
|
github.com/securego/gosec/v2 v2.13.1/go.mod h1:EO1sImBMBWFjOTFzMWfTRrZW6M15gm60ljzrmy/wtHo=
|
||||||
|
github.com/securego/gosec/v2 v2.15.0 h1:v4Ym7FF58/jlykYmmhZ7mTm7FQvN/setNm++0fgIAtw=
|
||||||
|
github.com/securego/gosec/v2 v2.15.0/go.mod h1:VOjTrZOkUtSDt2QLSJmQBMWnvwiQPEjg0l+5juIqGk8=
|
||||||
|
github.com/securego/gosec/v2 v2.15.0 h1:v4Ym7FF58/jlykYmmhZ7mTm7FQvN/setNm++0fgIAtw=
|
||||||
|
github.com/securego/gosec/v2 v2.15.0/go.mod h1:VOjTrZOkUtSDt2QLSJmQBMWnvwiQPEjg0l+5juIqGk8=
|
||||||
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU=
|
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU=
|
||||||
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs=
|
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs=
|
||||||
github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk=
|
github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk=
|
||||||
@@ -459,16 +589,30 @@ github.com/sivchari/nosnakecase v1.7.0 h1:7QkpWIRMe8x25gckkFd2A5Pi6Ymo0qgr4JrhGt
|
|||||||
github.com/sivchari/nosnakecase v1.7.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY=
|
github.com/sivchari/nosnakecase v1.7.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY=
|
||||||
github.com/sivchari/tenv v1.7.0 h1:d4laZMBK6jpe5PWepxlV9S+LC0yXqvYHiq8E6ceoVVE=
|
github.com/sivchari/tenv v1.7.0 h1:d4laZMBK6jpe5PWepxlV9S+LC0yXqvYHiq8E6ceoVVE=
|
||||||
github.com/sivchari/tenv v1.7.0/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg=
|
github.com/sivchari/tenv v1.7.0/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg=
|
||||||
|
github.com/sivchari/tenv v1.7.1 h1:PSpuD4bu6fSmtWMxSGWcvqUUgIn7k3yOJhOIzVWn8Ak=
|
||||||
|
github.com/sivchari/tenv v1.7.1/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg=
|
||||||
|
github.com/sivchari/tenv v1.7.1 h1:PSpuD4bu6fSmtWMxSGWcvqUUgIn7k3yOJhOIzVWn8Ak=
|
||||||
|
github.com/sivchari/tenv v1.7.1/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg=
|
||||||
github.com/sonatard/noctx v0.0.1 h1:VC1Qhl6Oxx9vvWo3UDgrGXYCeKCe3Wbw7qAWL6FrmTY=
|
github.com/sonatard/noctx v0.0.1 h1:VC1Qhl6Oxx9vvWo3UDgrGXYCeKCe3Wbw7qAWL6FrmTY=
|
||||||
github.com/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI=
|
github.com/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI=
|
||||||
github.com/sourcegraph/go-diff v0.6.1 h1:hmA1LzxW0n1c3Q4YbrFgg4P99GSnebYa3x8gr0HZqLQ=
|
github.com/sourcegraph/go-diff v0.6.1 h1:hmA1LzxW0n1c3Q4YbrFgg4P99GSnebYa3x8gr0HZqLQ=
|
||||||
github.com/sourcegraph/go-diff v0.6.1/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs=
|
github.com/sourcegraph/go-diff v0.6.1/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs=
|
||||||
|
github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0=
|
||||||
|
github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs=
|
||||||
|
github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0=
|
||||||
|
github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs=
|
||||||
github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo=
|
github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo=
|
||||||
github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo=
|
github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo=
|
||||||
github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
|
github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
|
||||||
github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
|
github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
|
||||||
github.com/spf13/cobra v1.5.0 h1:X+jTBEBqF0bHN+9cSMgmfuvv2VHJ9ezmFNf9Y/XstYU=
|
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
|
||||||
github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM=
|
github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
|
||||||
|
github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4=
|
||||||
|
github.com/spf13/cobra v1.6.0 h1:42a0n6jwCot1pUmomAp4T7DeMD+20LFv4Q54pxLf2LI=
|
||||||
|
github.com/spf13/cobra v1.6.0/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY=
|
||||||
|
github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA=
|
||||||
|
github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY=
|
||||||
|
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
|
||||||
github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
|
github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
|
||||||
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
|
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
|
||||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||||
@@ -483,6 +627,10 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
|
|||||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4=
|
github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4=
|
||||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||||
|
github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
|
||||||
|
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||||
|
github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
|
||||||
|
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||||
github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
@@ -493,10 +641,16 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
|
|||||||
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
|
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
|
||||||
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
|
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
|
||||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||||
|
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
|
||||||
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
|
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
|
||||||
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
github.com/subosito/gotenv v1.4.0 h1:yAzM1+SmVcz5R4tXGsNMu1jUl2aOJXoiWUCEwwnGrvs=
|
github.com/subosito/gotenv v1.4.0 h1:yAzM1+SmVcz5R4tXGsNMu1jUl2aOJXoiWUCEwwnGrvs=
|
||||||
github.com/subosito/gotenv v1.4.0/go.mod h1:mZd6rFysKEcUhUHXJk0C/08wAgyDBFuwEYL7vWWGaGo=
|
github.com/subosito/gotenv v1.4.0/go.mod h1:mZd6rFysKEcUhUHXJk0C/08wAgyDBFuwEYL7vWWGaGo=
|
||||||
github.com/sylvia7788/contextcheck v1.0.6 h1:o2EZgVPyMKE/Mtoqym61DInKEjwEbsmyoxg3VrmjNO4=
|
github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs=
|
||||||
github.com/sylvia7788/contextcheck v1.0.6/go.mod h1:9XDxwvxyuKD+8N+a7Gs7bfWLityh5t70g/GjdEt2N2M=
|
github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0=
|
||||||
|
github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c h1:+aPplBwWcHBo6q9xrfWdMrT9o4kltkmmvpemgIjep/8=
|
||||||
|
github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c/go.mod h1:SbErYREK7xXdsRiigaQiQkI9McGRzYMvlKYaP3Nimdk=
|
||||||
github.com/tdakkota/asciicheck v0.1.1 h1:PKzG7JUTUmVspQTDqtkX9eSiLGossXTybutHwTXuO0A=
|
github.com/tdakkota/asciicheck v0.1.1 h1:PKzG7JUTUmVspQTDqtkX9eSiLGossXTybutHwTXuO0A=
|
||||||
github.com/tdakkota/asciicheck v0.1.1/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM=
|
github.com/tdakkota/asciicheck v0.1.1/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM=
|
||||||
github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0=
|
github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0=
|
||||||
@@ -505,12 +659,22 @@ github.com/tetafro/godot v1.4.11 h1:BVoBIqAf/2QdbFmSwAWnaIqDivZdOV0ZRwEm6jivLKw=
|
|||||||
github.com/tetafro/godot v1.4.11/go.mod h1:LR3CJpxDVGlYOWn3ZZg1PgNZdTUvzsZWu8xaEohUpn8=
|
github.com/tetafro/godot v1.4.11/go.mod h1:LR3CJpxDVGlYOWn3ZZg1PgNZdTUvzsZWu8xaEohUpn8=
|
||||||
github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144 h1:kl4KhGNsJIbDHS9/4U9yQo1UcPQM0kOMJHn29EoH/Ro=
|
github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144 h1:kl4KhGNsJIbDHS9/4U9yQo1UcPQM0kOMJHn29EoH/Ro=
|
||||||
github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk=
|
github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk=
|
||||||
|
github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e h1:MV6KaVu/hzByHP0UvJ4HcMGE/8a6A4Rggc/0wx2AvJo=
|
||||||
|
github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ=
|
||||||
|
github.com/timonwong/loggercheck v0.9.3 h1:ecACo9fNiHxX4/Bc02rW2+kaJIAMAes7qJ7JKxt0EZI=
|
||||||
|
github.com/timonwong/loggercheck v0.9.3/go.mod h1:wUqnk9yAOIKtGA39l1KLE9Iz0QiTocu/YZoOf+OzFdw=
|
||||||
github.com/timonwong/logrlint v0.1.0 h1:phZCcypL/vtx6cGxObJgWZ5wexZF5SXFPLOM+ru0e/M=
|
github.com/timonwong/logrlint v0.1.0 h1:phZCcypL/vtx6cGxObJgWZ5wexZF5SXFPLOM+ru0e/M=
|
||||||
github.com/timonwong/logrlint v0.1.0/go.mod h1:Zleg4Gw+kRxNej+Ra7o+tEaW5k1qthTaYKU7rSD39LU=
|
github.com/timonwong/logrlint v0.1.0/go.mod h1:Zleg4Gw+kRxNej+Ra7o+tEaW5k1qthTaYKU7rSD39LU=
|
||||||
github.com/tomarrell/wrapcheck/v2 v2.6.2 h1:3dI6YNcrJTQ/CJQ6M/DUkc0gnqYSIk6o0rChn9E/D0M=
|
github.com/tomarrell/wrapcheck/v2 v2.6.2 h1:3dI6YNcrJTQ/CJQ6M/DUkc0gnqYSIk6o0rChn9E/D0M=
|
||||||
github.com/tomarrell/wrapcheck/v2 v2.6.2/go.mod h1:ao7l5p0aOlUNJKI0qVwB4Yjlqutd0IvAB9Rdwyilxvg=
|
github.com/tomarrell/wrapcheck/v2 v2.6.2/go.mod h1:ao7l5p0aOlUNJKI0qVwB4Yjlqutd0IvAB9Rdwyilxvg=
|
||||||
|
github.com/tomarrell/wrapcheck/v2 v2.8.0 h1:qDzbir0xmoE+aNxGCPrn+rUSxAX+nG6vREgbbXAR81I=
|
||||||
|
github.com/tomarrell/wrapcheck/v2 v2.8.0/go.mod h1:ao7l5p0aOlUNJKI0qVwB4Yjlqutd0IvAB9Rdwyilxvg=
|
||||||
|
github.com/tomarrell/wrapcheck/v2 v2.8.0 h1:qDzbir0xmoE+aNxGCPrn+rUSxAX+nG6vREgbbXAR81I=
|
||||||
|
github.com/tomarrell/wrapcheck/v2 v2.8.0/go.mod h1:ao7l5p0aOlUNJKI0qVwB4Yjlqutd0IvAB9Rdwyilxvg=
|
||||||
github.com/tommy-muehle/go-mnd/v2 v2.5.0 h1:iAj0a8e6+dXSL7Liq0aXPox36FiN1dBbjA6lt9fl65s=
|
github.com/tommy-muehle/go-mnd/v2 v2.5.0 h1:iAj0a8e6+dXSL7Liq0aXPox36FiN1dBbjA6lt9fl65s=
|
||||||
github.com/tommy-muehle/go-mnd/v2 v2.5.0/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw=
|
github.com/tommy-muehle/go-mnd/v2 v2.5.0/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw=
|
||||||
|
github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw=
|
||||||
|
github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw=
|
||||||
github.com/ultraware/funlen v0.0.3 h1:5ylVWm8wsNwH5aWo9438pwvsK0QiqVuUrt9bn7S/iLA=
|
github.com/ultraware/funlen v0.0.3 h1:5ylVWm8wsNwH5aWo9438pwvsK0QiqVuUrt9bn7S/iLA=
|
||||||
github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA=
|
github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA=
|
||||||
github.com/ultraware/whitespace v0.0.5 h1:hh+/cpIcopyMYbZNVov9iSxvJU3OYQg78Sfaqzi/CzI=
|
github.com/ultraware/whitespace v0.0.5 h1:hh+/cpIcopyMYbZNVov9iSxvJU3OYQg78Sfaqzi/CzI=
|
||||||
@@ -551,6 +715,7 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh
|
|||||||
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
||||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
|
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||||
@@ -566,6 +731,10 @@ golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2F
|
|||||||
golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
|
golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
|
||||||
golang.org/x/exp/typeparams v0.0.0-20220613132600-b0d781184e0d h1:+W8Qf4iJtMGKkyAygcKohjxTk4JPsL9DpzApJ22m5Ic=
|
golang.org/x/exp/typeparams v0.0.0-20220613132600-b0d781184e0d h1:+W8Qf4iJtMGKkyAygcKohjxTk4JPsL9DpzApJ22m5Ic=
|
||||||
golang.org/x/exp/typeparams v0.0.0-20220613132600-b0d781184e0d/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
|
golang.org/x/exp/typeparams v0.0.0-20220613132600-b0d781184e0d/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
|
||||||
|
golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9 h1:6WHiuFL9FNjg8RljAaT7FNUuKDbvMqS1i5cr2OE2sLQ=
|
||||||
|
golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
|
||||||
|
golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9 h1:6WHiuFL9FNjg8RljAaT7FNUuKDbvMqS1i5cr2OE2sLQ=
|
||||||
|
golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
|
||||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
@@ -594,6 +763,10 @@ golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
|
|||||||
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
|
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
|
||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s=
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s=
|
||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||||
|
golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI=
|
||||||
|
golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||||
|
golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=
|
||||||
|
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
@@ -631,6 +804,10 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b
|
|||||||
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
|
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
|
||||||
|
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
|
||||||
|
golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
|
||||||
|
golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
@@ -654,6 +831,11 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ
|
|||||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw=
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw=
|
||||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde h1:ejfdSekXMDxDLbRrJMwUk6KnSLZ2McaUCVcIKM+N6jc=
|
||||||
|
golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
|
||||||
|
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
@@ -711,8 +893,23 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab h1:2QkjZIsXupsJbJIdSjjUOgWK3aEtzyuh2mPt3l/CkeU=
|
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab h1:2QkjZIsXupsJbJIdSjjUOgWK3aEtzyuh2mPt3l/CkeU=
|
||||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
|
||||||
|
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
|
||||||
|
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
|
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
|
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
|
||||||
|
golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
|
||||||
|
golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
|
||||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
@@ -722,6 +919,13 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
|||||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
|
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
|
||||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
|
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
|
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
|
golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k=
|
||||||
|
golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
|
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
|
golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k=
|
||||||
|
golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
@@ -805,6 +1009,12 @@ golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E
|
|||||||
golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4=
|
golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4=
|
||||||
golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU=
|
golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU=
|
||||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||||
|
golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
|
||||||
|
golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k=
|
||||||
|
golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ=
|
||||||
|
golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k=
|
||||||
|
golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
|
||||||
|
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
@@ -909,6 +1119,8 @@ gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8
|
|||||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||||
gopkg.in/ini.v1 v1.66.6 h1:LATuAqN/shcYAOkv3wl2L4rkaKqkcgTBQjOyYDvcPKI=
|
gopkg.in/ini.v1 v1.66.6 h1:LATuAqN/shcYAOkv3wl2L4rkaKqkcgTBQjOyYDvcPKI=
|
||||||
gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||||
|
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
|
||||||
|
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
@@ -930,14 +1142,18 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9
|
|||||||
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||||
honnef.co/go/tools v0.3.3 h1:oDx7VAwstgpYpb3wv0oxiZlxY+foCpRAwY7Vk6XpAgA=
|
honnef.co/go/tools v0.3.3 h1:oDx7VAwstgpYpb3wv0oxiZlxY+foCpRAwY7Vk6XpAgA=
|
||||||
honnef.co/go/tools v0.3.3/go.mod h1:jzwdWgg7Jdq75wlfblQxO4neNaFFSvgc1tD5Wv8U0Yw=
|
honnef.co/go/tools v0.3.3/go.mod h1:jzwdWgg7Jdq75wlfblQxO4neNaFFSvgc1tD5Wv8U0Yw=
|
||||||
mvdan.cc/gofumpt v0.3.1 h1:avhhrOmv0IuvQVK7fvwV91oFSGAk5/6Po8GXTzICeu8=
|
honnef.co/go/tools v0.4.2 h1:6qXr+R5w+ktL5UkwEbPp+fEvfyoMPche6GkOpGHZcLc=
|
||||||
mvdan.cc/gofumpt v0.3.1/go.mod h1:w3ymliuxvzVx8DAutBnVyDqYb1Niy/yCJt/lk821YCE=
|
honnef.co/go/tools v0.4.2/go.mod h1:36ZgoUOrqOk1GxwHhyryEkq8FQWkUO2xGuSMhUCcdvA=
|
||||||
|
mvdan.cc/gofumpt v0.4.0 h1:JVf4NN1mIpHogBj7ABpgOyZc65/UUOkKQFkoURsz4MM=
|
||||||
|
mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ=
|
||||||
mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I=
|
mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I=
|
||||||
mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc=
|
mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc=
|
||||||
mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo=
|
mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo=
|
||||||
mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4=
|
mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4=
|
||||||
mvdan.cc/unparam v0.0.0-20220706161116-678bad134442 h1:seuXWbRB1qPrS3NQnHmFKLJLtskWyueeIzmLXghMGgk=
|
mvdan.cc/unparam v0.0.0-20220706161116-678bad134442 h1:seuXWbRB1qPrS3NQnHmFKLJLtskWyueeIzmLXghMGgk=
|
||||||
mvdan.cc/unparam v0.0.0-20220706161116-678bad134442/go.mod h1:F/Cxw/6mVrNKqrR2YjFf5CaW0Bw4RL8RfbEf4GRggJk=
|
mvdan.cc/unparam v0.0.0-20220706161116-678bad134442/go.mod h1:F/Cxw/6mVrNKqrR2YjFf5CaW0Bw4RL8RfbEf4GRggJk=
|
||||||
|
mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d h1:3rvTIIM22r9pvXk+q3swxUQAQOxksVMGK7sml4nG57w=
|
||||||
|
mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d/go.mod h1:IeHQjmn6TOD+e4Z3RFiZMMsLVL+A96Nvptar8Fj71is=
|
||||||
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
||||||
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
||||||
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Auto generated binary variables helper managed by https://github.com/bwplotka/bingo v0.7. DO NOT EDIT.
|
# Auto generated binary variables helper managed by https://github.com/bwplotka/bingo v0.8. DO NOT EDIT.
|
||||||
# All tools are designed to be build inside $GOBIN.
|
# All tools are designed to be build inside $GOBIN.
|
||||||
# Those variables will work only until 'bingo get' was invoked, or if tools were installed via Makefile's Variables.mk.
|
# Those variables will work only until 'bingo get' was invoked, or if tools were installed via Makefile's Variables.mk.
|
||||||
GOBIN=${GOBIN:=$(go env GOBIN)}
|
GOBIN=${GOBIN:=$(go env GOBIN)}
|
||||||
@@ -12,7 +12,7 @@ BRA="${GOBIN}/bra-v0.0.0-20200517080246-1e3013ecaff8"
|
|||||||
|
|
||||||
DRONE="${GOBIN}/drone-v1.5.0"
|
DRONE="${GOBIN}/drone-v1.5.0"
|
||||||
|
|
||||||
GOLANGCI_LINT="${GOBIN}/golangci-lint-v1.49.0"
|
GOLANGCI_LINT="${GOBIN}/golangci-lint-v1.51.2"
|
||||||
|
|
||||||
JB="${GOBIN}/jb-v0.5.1"
|
JB="${GOBIN}/jb-v0.5.1"
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,8 @@
|
|||||||
init_cmds = [
|
init_cmds = [
|
||||||
["make", "gen-go"],
|
["make", "gen-go"],
|
||||||
["make", "gen-jsonnet"],
|
["make", "gen-jsonnet"],
|
||||||
["GO_BUILD_DEV=1", "make", "build-cli"],
|
["GO_BUILD_DEV=1", "make", "build-go"],
|
||||||
["GO_BUILD_DEV=1", "make", "build-server"],
|
["./bin/grafana", "server", "-packaging=dev", "cfg:app_mode=development"]
|
||||||
["./bin/grafana-server", "-packaging=dev", "cfg:app_mode=development"]
|
|
||||||
]
|
]
|
||||||
watch_all = true
|
watch_all = true
|
||||||
follow_symlinks = true
|
follow_symlinks = true
|
||||||
@@ -20,6 +19,6 @@ build_delay = 1500
|
|||||||
cmds = [
|
cmds = [
|
||||||
["make", "gen-go"],
|
["make", "gen-go"],
|
||||||
["make", "gen-jsonnet"],
|
["make", "gen-jsonnet"],
|
||||||
["GO_BUILD_DEV=1", "make", "build-server"],
|
["GO_BUILD_DEV=1", "make", "build-go"],
|
||||||
["./bin/grafana-server", "-packaging=dev", "cfg:app_mode=development"]
|
["./bin/grafana", "server", "-packaging=dev", "cfg:app_mode=development"]
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
.dockerignore
|
.dockerignore
|
||||||
.git
|
.git
|
||||||
.gitignore
|
.gitignore
|
||||||
.github
|
|
||||||
.vscode
|
.vscode
|
||||||
bin
|
bin
|
||||||
data*
|
data*
|
||||||
|
|||||||
67
.drone.star
67
.drone.star
@@ -3,20 +3,57 @@
|
|||||||
# 2. Login to drone and export the env variables (token and server) shown here: https://drone.grafana.net/account
|
# 2. Login to drone and export the env variables (token and server) shown here: https://drone.grafana.net/account
|
||||||
# 3. Run `make drone`
|
# 3. Run `make drone`
|
||||||
# More information about this process here: https://github.com/grafana/deployment_tools/blob/master/docs/infrastructure/drone/signing.md
|
# More information about this process here: https://github.com/grafana/deployment_tools/blob/master/docs/infrastructure/drone/signing.md
|
||||||
|
"""
|
||||||
|
This module returns a Drone configuration including pipelines and secrets.
|
||||||
|
"""
|
||||||
|
|
||||||
load('scripts/drone/events/pr.star', 'pr_pipelines')
|
load("scripts/drone/events/pr.star", "pr_pipelines")
|
||||||
load('scripts/drone/events/main.star', 'main_pipelines')
|
load("scripts/drone/events/main.star", "main_pipelines")
|
||||||
load('scripts/drone/pipelines/docs.star', 'docs_pipelines')
|
load(
|
||||||
load('scripts/drone/events/release.star', 'release_pipelines', 'publish_artifacts_pipelines', 'publish_npm_pipelines', 'publish_packages_pipeline', 'artifacts_page_pipeline')
|
"scripts/drone/events/release.star",
|
||||||
load('scripts/drone/pipelines/publish_images.star', 'publish_image_pipelines_public', 'publish_image_pipelines_security')
|
"integration_test_pipelines",
|
||||||
load('scripts/drone/version.star', 'version_branch_pipelines')
|
"publish_artifacts_pipelines",
|
||||||
load('scripts/drone/events/cron.star', 'cronjobs')
|
"publish_npm_pipelines",
|
||||||
load('scripts/drone/vault.star', 'secrets')
|
"publish_packages_pipeline",
|
||||||
|
)
|
||||||
|
load(
|
||||||
|
"scripts/drone/rgm.star",
|
||||||
|
"rgm",
|
||||||
|
)
|
||||||
|
load(
|
||||||
|
"scripts/drone/pipelines/publish_images.star",
|
||||||
|
"publish_image_pipelines_public",
|
||||||
|
)
|
||||||
|
load(
|
||||||
|
"scripts/drone/pipelines/ci_images.star",
|
||||||
|
"publish_ci_build_container_image_pipeline",
|
||||||
|
"publish_ci_windows_test_image_pipeline",
|
||||||
|
)
|
||||||
|
load(
|
||||||
|
"scripts/drone/pipelines/windows.star",
|
||||||
|
"windows_test_backend",
|
||||||
|
)
|
||||||
|
load("scripts/drone/version.star", "version_branch_pipelines")
|
||||||
|
load("scripts/drone/events/cron.star", "cronjobs")
|
||||||
|
load("scripts/drone/vault.star", "secrets")
|
||||||
|
|
||||||
def main(ctx):
|
def main(_ctx):
|
||||||
edition = 'oss'
|
return (
|
||||||
return pr_pipelines(edition=edition) + main_pipelines(edition=edition) + release_pipelines() + \
|
pr_pipelines() +
|
||||||
publish_image_pipelines_public() + publish_image_pipelines_security() + \
|
main_pipelines() +
|
||||||
publish_artifacts_pipelines('security') + publish_artifacts_pipelines('public') + \
|
publish_image_pipelines_public() +
|
||||||
publish_npm_pipelines('public') + publish_packages_pipeline() + artifacts_page_pipeline() + \
|
publish_artifacts_pipelines("public") +
|
||||||
version_branch_pipelines() + cronjobs(edition=edition) + secrets()
|
publish_npm_pipelines() +
|
||||||
|
publish_packages_pipeline() +
|
||||||
|
rgm() +
|
||||||
|
[windows_test_backend({
|
||||||
|
"event": ["promote"],
|
||||||
|
"target": ["test-windows"],
|
||||||
|
}, "oss", "testing")] +
|
||||||
|
version_branch_pipelines() +
|
||||||
|
integration_test_pipelines() +
|
||||||
|
publish_ci_windows_test_image_pipeline() +
|
||||||
|
publish_ci_build_container_image_pipeline() +
|
||||||
|
cronjobs() +
|
||||||
|
secrets()
|
||||||
|
)
|
||||||
|
|||||||
4036
.drone.yml
4036
.drone.yml
File diff suppressed because it is too large
Load Diff
@@ -87,7 +87,11 @@
|
|||||||
"ignoreNonDOM": true
|
"ignoreNonDOM": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"jsx-a11y/no-static-element-interactions": "off"
|
"jsx-a11y/no-static-element-interactions": "off",
|
||||||
|
"jsx-a11y/label-has-associated-control": [ "error", {
|
||||||
|
"controlComponents": ["NumberInput"],
|
||||||
|
"depth": 2
|
||||||
|
}]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
13
.github/CODEOWNERS
vendored
13
.github/CODEOWNERS
vendored
@@ -50,10 +50,15 @@ go.sum @grafana/backend-platform
|
|||||||
/devenv/docker/loadtests-ts @grafana/grafana-edge-squad
|
/devenv/docker/loadtests-ts @grafana/grafana-edge-squad
|
||||||
|
|
||||||
# Continuous Integration
|
# Continuous Integration
|
||||||
.drone.yml @grafana/grafana-release-eng
|
.drone.yml @grafana/grafana-delivery
|
||||||
.drone.star @grafana/grafana-release-eng
|
.drone.star @grafana/grafana-delivery
|
||||||
/scripts/drone/ @grafana/grafana-release-eng
|
/scripts/drone/ @grafana/grafana-delivery
|
||||||
/pkg/build/ @grafana/grafana-release-eng
|
/pkg/build/ @grafana/grafana-delivery
|
||||||
|
/.dockerignore @grafana/grafana-delivery
|
||||||
|
/Dockerfile @grafana/grafana-delivery
|
||||||
|
/Makefile @grafana/grafana-delivery
|
||||||
|
/scripts/build/ @grafana/grafana-delivery
|
||||||
|
/scripts/list-release-artifacts.sh @grafana/grafana-delivery
|
||||||
|
|
||||||
# Cloud Datasources backend code
|
# Cloud Datasources backend code
|
||||||
/pkg/tsdb/cloudwatch @grafana/aws-plugins
|
/pkg/tsdb/cloudwatch @grafana/aws-plugins
|
||||||
|
|||||||
2
.github/pr-checks.json
vendored
2
.github/pr-checks.json
vendored
@@ -46,4 +46,4 @@
|
|||||||
},
|
},
|
||||||
"targetUrl": "https://github.com/grafana/grafana/blob/main/contribute/merge-pull-request.md#include-in-changelog-and-release-notes"
|
"targetUrl": "https://github.com/grafana/grafana/blob/main/contribute/merge-pull-request.md#include-in-changelog-and-release-notes"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
3
.github/pr-commands.json
vendored
3
.github/pr-commands.json
vendored
@@ -66,8 +66,7 @@
|
|||||||
"scripts/build/**/*",
|
"scripts/build/**/*",
|
||||||
"scripts/*.sh",
|
"scripts/*.sh",
|
||||||
"Makefile",
|
"Makefile",
|
||||||
"Dockerfile",
|
"Dockerfile"
|
||||||
"Dockerfile.ubuntu"
|
|
||||||
],
|
],
|
||||||
"action": "updateLabel",
|
"action": "updateLabel",
|
||||||
"addLabel": "type/build-packaging"
|
"addLabel": "type/build-packaging"
|
||||||
|
|||||||
22
.github/workflows/auto-milestone.yml
vendored
Normal file
22
.github/workflows/auto-milestone.yml
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
name: Auto-milestone
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- closed
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
main:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: "Generate token"
|
||||||
|
id: generate_token
|
||||||
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
|
with:
|
||||||
|
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
||||||
|
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
|
|
||||||
|
- name: Run auto-milestone
|
||||||
|
uses: grafana/grafana-github-actions-go/auto-milestone@main
|
||||||
|
with:
|
||||||
|
pr: ${{ github.event.pull_request.number }}
|
||||||
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
8
.github/workflows/backport.yml
vendored
8
.github/workflows/backport.yml
vendored
@@ -17,10 +17,16 @@ jobs:
|
|||||||
ref: main
|
ref: main
|
||||||
- name: Install Actions
|
- name: Install Actions
|
||||||
run: npm install --production --prefix ./actions
|
run: npm install --production --prefix ./actions
|
||||||
|
- name: "Generate token"
|
||||||
|
id: generate_token
|
||||||
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
|
with:
|
||||||
|
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
||||||
|
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
- name: Run backport
|
- name: Run backport
|
||||||
uses: ./actions/backport
|
uses: ./actions/backport
|
||||||
with:
|
with:
|
||||||
metricsWriteAPIKey: ${{secrets.GRAFANA_MISC_STATS_API_KEY}}
|
metricsWriteAPIKey: ${{secrets.GRAFANA_MISC_STATS_API_KEY}}
|
||||||
token: ${{secrets.GH_BOT_ACCESS_TOKEN}}
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
labelsToAdd: "backport,no-changelog"
|
labelsToAdd: "backport,no-changelog"
|
||||||
title: "[{{base}}] {{originalTitle}}"
|
title: "[{{base}}] {{originalTitle}}"
|
||||||
|
|||||||
18
.github/workflows/bump-version.yml
vendored
18
.github/workflows/bump-version.yml
vendored
@@ -6,18 +6,18 @@ on:
|
|||||||
description: 'Needs to match, exactly, the name of a milestone. The version to be released please respect: major.minor.patch or major.minor.patch-beta<number> format. example: 7.4.3 or 7.4.3-beta1'
|
description: 'Needs to match, exactly, the name of a milestone. The version to be released please respect: major.minor.patch or major.minor.patch-beta<number> format. example: 7.4.3 or 7.4.3-beta1'
|
||||||
required: true
|
required: true
|
||||||
env:
|
env:
|
||||||
YARN_ENABLE_IMMUTABLE_INSTALLS: false
|
YARN_ENABLE_IMMUTABLE_INSTALLS: false
|
||||||
jobs:
|
jobs:
|
||||||
main:
|
main:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
# This is a basic workflow to help you get started with Actions
|
# This is a basic workflow to help you get started with Actions
|
||||||
- uses: actions-ecosystem/action-regex-match@v2.0.2
|
- uses: actions-ecosystem/action-regex-match@v2.0.2
|
||||||
if: ${{ github.event.inputs.version != '' }}
|
if: ${{ github.event.inputs.version != '' }}
|
||||||
id: regex-match
|
id: regex-match
|
||||||
with:
|
with:
|
||||||
text: ${{ github.event.inputs.version }}
|
text: ${{ github.event.inputs.version }}
|
||||||
regex: '^(\d+.\d+).\d+(?:-beta.\d+)?$'
|
regex: '^(\d+.\d+).\d+(?:-beta\d+)?$'
|
||||||
- uses: actions-ecosystem/action-regex-match@v2.0.2
|
- uses: actions-ecosystem/action-regex-match@v2.0.2
|
||||||
if: ${{ inputs.version_call != '' }}
|
if: ${{ inputs.version_call != '' }}
|
||||||
id: regex-match-version-call
|
id: regex-match-version-call
|
||||||
@@ -29,7 +29,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
echo "The input version format is not correct, please respect:\
|
echo "The input version format is not correct, please respect:\
|
||||||
major.minor.patch or major.minor.patch-beta.number format. \
|
major.minor.patch or major.minor.patch-beta.number format. \
|
||||||
example: 7.4.3 or 7.4.3-beta.1"
|
example: 7.4.3 or 7.4.3-beta1"
|
||||||
exit 1
|
exit 1
|
||||||
- name: Validate input version call
|
- name: Validate input version call
|
||||||
if: ${{ inputs.version_call != '' && steps.regex-match-version-call.outputs.match == '' }}
|
if: ${{ inputs.version_call != '' && steps.regex-match-version-call.outputs.match == '' }}
|
||||||
@@ -68,8 +68,14 @@ jobs:
|
|||||||
node-version: '16'
|
node-version: '16'
|
||||||
- name: Install Actions
|
- name: Install Actions
|
||||||
run: npm install --production --prefix ./actions
|
run: npm install --production --prefix ./actions
|
||||||
- name: Run bump version (manually invoked)
|
- name: "Generate token"
|
||||||
|
id: generate_token
|
||||||
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
|
with:
|
||||||
|
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
||||||
|
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
|
- name: Run bump version (manually invoked)
|
||||||
uses: ./actions/bump-version
|
uses: ./actions/bump-version
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
metricsWriteAPIKey: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
|
metricsWriteAPIKey: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
|
||||||
|
|||||||
14
.github/workflows/close-milestone.yml
vendored
14
.github/workflows/close-milestone.yml
vendored
@@ -11,9 +11,7 @@ on:
|
|||||||
description: Needs to match, exactly, the name of a milestone
|
description: Needs to match, exactly, the name of a milestone
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
secrets:
|
|
||||||
token:
|
|
||||||
required: true
|
|
||||||
jobs:
|
jobs:
|
||||||
main:
|
main:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -26,14 +24,20 @@ jobs:
|
|||||||
ref: main
|
ref: main
|
||||||
- name: Install Actions
|
- name: Install Actions
|
||||||
run: npm install --production --prefix ./actions
|
run: npm install --production --prefix ./actions
|
||||||
|
- name: "Generate token"
|
||||||
|
id: generate_token
|
||||||
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
|
with:
|
||||||
|
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
||||||
|
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
- name: Close milestone (manually invoked)
|
- name: Close milestone (manually invoked)
|
||||||
if: ${{ github.event.inputs.version != '' }}
|
if: ${{ github.event.inputs.version != '' }}
|
||||||
uses: ./actions/close-milestone
|
uses: ./actions/close-milestone
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
- name: Close milestone (workflow invoked)
|
- name: Close milestone (workflow invoked)
|
||||||
if: ${{ inputs.version_call != '' }}
|
if: ${{ inputs.version_call != '' }}
|
||||||
uses: ./actions/close-milestone
|
uses: ./actions/close-milestone
|
||||||
with:
|
with:
|
||||||
version_call: ${{ inputs.version_call }}
|
version_call: ${{ inputs.version_call }}
|
||||||
token: ${{ secrets.token }}
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- "packages/**"
|
- "packages/**"
|
||||||
|
branches:
|
||||||
|
- 'main'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
detect:
|
detect:
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- 'packages/**'
|
- 'packages/**'
|
||||||
|
branches:
|
||||||
|
- 'main'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
buildPR:
|
buildPR:
|
||||||
|
|||||||
4
.github/workflows/doc-validator.yml
vendored
4
.github/workflows/doc-validator.yml
vendored
@@ -7,10 +7,10 @@ jobs:
|
|||||||
doc-validator:
|
doc-validator:
|
||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
container:
|
container:
|
||||||
image: "grafana/doc-validator:latest"
|
image: "grafana/doc-validator:v1.9.0"
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout code"
|
- name: "Checkout code"
|
||||||
uses: "actions/checkout@v3"
|
uses: "actions/checkout@v3"
|
||||||
- name: "Run doc-validator tool"
|
- name: "Run doc-validator tool"
|
||||||
# Ensure that the CI always passes until all errors are resolved.
|
# Ensure that the CI always passes until all errors are resolved.
|
||||||
run: "doc-validator ./docs/sources || true"
|
run: "doc-validator --skip-image-validation ./docs/sources /docs/grafana/latest || true"
|
||||||
|
|||||||
12
.github/workflows/github-release.yml
vendored
12
.github/workflows/github-release.yml
vendored
@@ -3,7 +3,7 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
inputs:
|
inputs:
|
||||||
version:
|
version:
|
||||||
required: true
|
required: true
|
||||||
description: Needs to match, exactly, the name of a milestone (NO v prefix)
|
description: Needs to match, exactly, the name of a milestone (NO v prefix)
|
||||||
jobs:
|
jobs:
|
||||||
main:
|
main:
|
||||||
@@ -14,11 +14,17 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
repository: "grafana/grafana-github-actions"
|
repository: "grafana/grafana-github-actions"
|
||||||
path: ./actions
|
path: ./actions
|
||||||
ref: main
|
ref: main
|
||||||
- name: Install Actions
|
- name: Install Actions
|
||||||
run: npm install --production --prefix ./actions
|
run: npm install --production --prefix ./actions
|
||||||
|
- name: "Generate token"
|
||||||
|
id: generate_token
|
||||||
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
|
with:
|
||||||
|
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
||||||
|
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
- name: Run github release action
|
- name: Run github release action
|
||||||
uses: ./actions/github-release
|
uses: ./actions/github-release
|
||||||
with:
|
with:
|
||||||
token: ${{secrets.GH_BOT_ACCESS_TOKEN}}
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
metricsWriteAPIKey: ${{secrets.GRAFANA_MISC_STATS_API_KEY}}
|
metricsWriteAPIKey: ${{secrets.GRAFANA_MISC_STATS_API_KEY}}
|
||||||
|
|||||||
8
.github/workflows/milestone.yml
vendored
8
.github/workflows/milestone.yml
vendored
@@ -10,12 +10,10 @@ jobs:
|
|||||||
uses: grafana/grafana/.github/workflows/remove-milestone.yml@main
|
uses: grafana/grafana/.github/workflows/remove-milestone.yml@main
|
||||||
with:
|
with:
|
||||||
version_call: ${{ github.event.inputs.version_input }}
|
version_call: ${{ github.event.inputs.version_input }}
|
||||||
secrets:
|
secrets: inherit
|
||||||
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
|
|
||||||
call-close-milestone:
|
call-close-milestone:
|
||||||
uses: grafana/grafana/.github/workflows/close-milestone.yml@main
|
uses: grafana/grafana/.github/workflows/close-milestone.yml@main
|
||||||
with:
|
with:
|
||||||
version_call: ${{ github.event.inputs.version_input }}
|
version_call: ${{ github.event.inputs.version_input }}
|
||||||
secrets:
|
secrets: inherit
|
||||||
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
|
needs: call-remove-milestone
|
||||||
needs: call-remove-milestone
|
|
||||||
|
|||||||
24
.github/workflows/pr-patch-check.yml
vendored
Normal file
24
.github/workflows/pr-patch-check.yml
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# Owned by grafana-delivery-squad
|
||||||
|
# Intended to be dropped into the base repo Ex: grafana/grafana
|
||||||
|
name: Check for patch conflicts
|
||||||
|
run-name: check-patch-conflicts-${{ github.base_ref }}-${{ github.head_ref }}
|
||||||
|
on:
|
||||||
|
pull_request_target:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
branches:
|
||||||
|
- "main"
|
||||||
|
- "v*.*.*"
|
||||||
|
- "release-*"
|
||||||
|
|
||||||
|
# Since this is run on a pull request, we want to apply the patches intended for the
|
||||||
|
# target branch onto the source branch, to verify compatibility before merging.
|
||||||
|
jobs:
|
||||||
|
trigger_downstream_patch_check:
|
||||||
|
uses: grafana/security-patch-actions/.github/workflows/test-patches.yml@main
|
||||||
|
with:
|
||||||
|
src_repo: "${{ github.repository }}"
|
||||||
|
src_ref: "${{ github.head_ref }}" # this is the source branch name, Ex: "feature/newthing"
|
||||||
|
patch_repo: "${{ github.repository }}-security-patches"
|
||||||
|
patch_ref: "${{ github.base_ref }}" # this is the target branch name, Ex: "main"
|
||||||
|
secrets: inherit
|
||||||
38
.github/workflows/publish-technical-documentation-next.yml
vendored
Normal file
38
.github/workflows/publish-technical-documentation-next.yml
vendored
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
name: "publish-technical-documentation-next"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "main"
|
||||||
|
paths:
|
||||||
|
- "docs/sources/**"
|
||||||
|
workflow_dispatch:
|
||||||
|
jobs:
|
||||||
|
sync:
|
||||||
|
if: "github.repository == 'grafana/grafana'"
|
||||||
|
runs-on: "ubuntu-latest"
|
||||||
|
steps:
|
||||||
|
- name: "Checkout Grafana repo"
|
||||||
|
uses: "actions/checkout@v3"
|
||||||
|
|
||||||
|
- name: "Clone website-sync Action"
|
||||||
|
# WEBSITE_SYNC_TOKEN is a fine-grained GitHub Personal Access Token that expires.
|
||||||
|
# It must be regenerated in the grafanabot GitHub account and requires a Grafana organization
|
||||||
|
# GitHub administrator to update the organization secret.
|
||||||
|
# The IT helpdesk can update the organization secret.
|
||||||
|
run: "git clone --single-branch --no-tags --depth 1 -b master https://grafanabot:${{ secrets.WEBSITE_SYNC_TOKEN }}@github.com/grafana/website-sync ./.github/actions/website-sync"
|
||||||
|
|
||||||
|
- name: "Publish to website repository (next)"
|
||||||
|
uses: "./.github/actions/website-sync"
|
||||||
|
id: "publish-next"
|
||||||
|
with:
|
||||||
|
repository: "grafana/website"
|
||||||
|
branch: "master"
|
||||||
|
host: "github.com"
|
||||||
|
# PUBLISH_TO_WEBSITE_TOKEN is a fine-grained GitHub Personal Access Token that expires.
|
||||||
|
# It must be regenerated in the grafanabot GitHub account and requires a Grafana organization
|
||||||
|
# GitHub administrator to update the organization secret.
|
||||||
|
# The IT helpdesk can update the organization secret.
|
||||||
|
github_pat: "grafanabot:${{ secrets.PUBLISH_TO_WEBSITE_TOKEN }}"
|
||||||
|
source_folder: "docs/sources"
|
||||||
|
target_folder: "content/docs/grafana/next"
|
||||||
68
.github/workflows/publish-technical-documentation-release.yml
vendored
Normal file
68
.github/workflows/publish-technical-documentation-release.yml
vendored
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
name: "publish-technical-documentation-release"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- v[0-9]+.[0-9]+.x
|
||||||
|
tags:
|
||||||
|
- v[0-9]+.[0-9]+.[0-9]+
|
||||||
|
paths:
|
||||||
|
- "docs/sources/**"
|
||||||
|
workflow_dispatch:
|
||||||
|
jobs:
|
||||||
|
sync:
|
||||||
|
if: "github.repository == 'grafana/grafana'"
|
||||||
|
runs-on: "ubuntu-latest"
|
||||||
|
steps:
|
||||||
|
- name: "Checkout Grafana repo"
|
||||||
|
uses: "actions/checkout@v3"
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: "Checkout Actions library"
|
||||||
|
uses: "actions/checkout@v3"
|
||||||
|
with:
|
||||||
|
repository: "grafana/grafana-github-actions"
|
||||||
|
path: "./actions"
|
||||||
|
|
||||||
|
- name: "Install Actions from library"
|
||||||
|
run: "npm install --production --prefix ./actions"
|
||||||
|
|
||||||
|
- name: "Determine if there is a matching release tag"
|
||||||
|
id: "has-matching-release-tag"
|
||||||
|
uses: "./actions/has-matching-release-tag"
|
||||||
|
with:
|
||||||
|
ref_name: "${{ github.ref_name }}"
|
||||||
|
release_tag_regexp: "^v(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"
|
||||||
|
release_branch_regexp: "^v(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.x$"
|
||||||
|
|
||||||
|
- name: "Determine technical documentation version"
|
||||||
|
if: "steps.has-matching-release-tag.outputs.bool == 'true'"
|
||||||
|
uses: "./actions/docs-target"
|
||||||
|
id: "target"
|
||||||
|
with:
|
||||||
|
ref_name: "${{ github.ref_name }}"
|
||||||
|
|
||||||
|
- name: "Clone website-sync Action"
|
||||||
|
if: "steps.has-matching-release-tag.outputs.bool == 'true'"
|
||||||
|
# WEBSITE_SYNC_TOKEN is a fine-grained GitHub Personal Access Token that expires.
|
||||||
|
# It must be regenerated in the grafanabot GitHub account and requires a Grafana organization
|
||||||
|
# GitHub administrator to update the organization secret.
|
||||||
|
# The IT helpdesk can update the organization secret.
|
||||||
|
run: "git clone --single-branch --no-tags --depth 1 -b master https://grafanabot:${{ secrets.WEBSITE_SYNC_TOKEN }}@github.com/grafana/website-sync ./.github/actions/website-sync"
|
||||||
|
|
||||||
|
- name: "Publish to website repository (release)"
|
||||||
|
if: "steps.has-matching-release-tag.outputs.bool == 'true'"
|
||||||
|
uses: "./.github/actions/website-sync"
|
||||||
|
id: "publish-release"
|
||||||
|
with:
|
||||||
|
repository: "grafana/website"
|
||||||
|
branch: "master"
|
||||||
|
host: "github.com"
|
||||||
|
# PUBLISH_TO_WEBSITE_TOKEN is a fine-grained GitHub Personal Access Token that expires.
|
||||||
|
# It must be regenerated in the grafanabot GitHub account and requires a Grafana organization
|
||||||
|
# GitHub administrator to update the organization secret.
|
||||||
|
# The IT helpdesk can update the organization secret.
|
||||||
|
github_pat: "grafanabot:${{ secrets.PUBLISH_TO_WEBSITE_TOKEN }}"
|
||||||
|
source_folder: "docs/sources"
|
||||||
|
target_folder: "content/docs/grafana/${{ steps.target.outputs.target }}"
|
||||||
47
.github/workflows/publish.yml
vendored
47
.github/workflows/publish.yml
vendored
@@ -1,47 +0,0 @@
|
|||||||
name: publish_docs
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
paths:
|
|
||||||
- 'docs/sources/**'
|
|
||||||
- 'packages/grafana-*/**'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- run: git clone --single-branch --no-tags --depth 1 -b master https://grafanabot:${{ secrets.GH_BOT_ACCESS_TOKEN }}@github.com/grafana/website-sync ./.github/actions/website-sync
|
|
||||||
- name: setup node
|
|
||||||
uses: actions/setup-node@v3.5.1
|
|
||||||
with:
|
|
||||||
node-version: '16'
|
|
||||||
- name: Get yarn cache directory path
|
|
||||||
id: yarn-cache-dir-path
|
|
||||||
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
|
|
||||||
- uses: actions/cache@v3.0.11
|
|
||||||
with:
|
|
||||||
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
|
|
||||||
key: yarn-${{ hashFiles('**/yarn.lock') }}
|
|
||||||
restore-keys: |
|
|
||||||
yarn-
|
|
||||||
- run: yarn install --immutable
|
|
||||||
- name: publish-to-git
|
|
||||||
uses: ./.github/actions/website-sync
|
|
||||||
id: publish
|
|
||||||
with:
|
|
||||||
repository: grafana/website
|
|
||||||
branch: master
|
|
||||||
host: github.com
|
|
||||||
github_pat: '${{ secrets.GH_BOT_ACCESS_TOKEN }}'
|
|
||||||
source_folder: docs/sources
|
|
||||||
target_folder: content/docs/grafana/next
|
|
||||||
allow_no_changes: 'true'
|
|
||||||
- shell: bash
|
|
||||||
run: |
|
|
||||||
test -n "${{ steps.publish.outputs.commit_hash }}"
|
|
||||||
test -n "${{ steps.publish.outputs.working_directory }}"
|
|
||||||
14
.github/workflows/remove-milestone.yml
vendored
14
.github/workflows/remove-milestone.yml
vendored
@@ -11,9 +11,7 @@ on:
|
|||||||
description: Needs to match, exactly, the name of a milestone
|
description: Needs to match, exactly, the name of a milestone
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
secrets:
|
|
||||||
token:
|
|
||||||
required: true
|
|
||||||
jobs:
|
jobs:
|
||||||
main:
|
main:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -26,14 +24,20 @@ jobs:
|
|||||||
ref: main
|
ref: main
|
||||||
- name: Install Actions
|
- name: Install Actions
|
||||||
run: npm install --production --prefix ./actions
|
run: npm install --production --prefix ./actions
|
||||||
|
- name: "Generate token"
|
||||||
|
id: generate_token
|
||||||
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
|
with:
|
||||||
|
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
||||||
|
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
- name: Remove milestone from open issues (manually invoked)
|
- name: Remove milestone from open issues (manually invoked)
|
||||||
if: ${{ github.event.inputs.version != '' }}
|
if: ${{ github.event.inputs.version != '' }}
|
||||||
uses: ./actions/remove-milestone
|
uses: ./actions/remove-milestone
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
- name: Remove milestone from open issues (workflow invoked)
|
- name: Remove milestone from open issues (workflow invoked)
|
||||||
if: ${{ inputs.version_call != '' }}
|
if: ${{ inputs.version_call != '' }}
|
||||||
uses: ./actions/remove-milestone
|
uses: ./actions/remove-milestone
|
||||||
with:
|
with:
|
||||||
version_call: ${{ inputs.version_call }}
|
version_call: ${{ inputs.version_call }}
|
||||||
token: ${{ secrets.token }}
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
|
|||||||
25
.github/workflows/sync-mirror.yml
vendored
Normal file
25
.github/workflows/sync-mirror.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Owned by grafana-delivery-squad
|
||||||
|
# Intended to be dropped into the base repo, Ex: grafana/grafana
|
||||||
|
name: Sync to mirror
|
||||||
|
run-name: sync-to-mirror-${{ github.ref_name }}
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "main"
|
||||||
|
- "v*.*.*"
|
||||||
|
- "release-*"
|
||||||
|
|
||||||
|
# This is run after the pull request has been merged, so we'll run against the target branch
|
||||||
|
jobs:
|
||||||
|
trigger_downstream_patch_mirror:
|
||||||
|
concurrency: patch-mirror-${{ github.ref_name }}
|
||||||
|
uses: grafana/security-patch-actions/.github/workflows/mirror-branch-and-apply-patches.yml@main
|
||||||
|
if: github.repository == 'grafana/grafana'
|
||||||
|
with:
|
||||||
|
ref: "${{ github.ref_name }}" # this is the target branch name, Ex: "main"
|
||||||
|
src_repo: "${{ github.repository }}"
|
||||||
|
dest_repo: "${{ github.repository }}-security-mirror"
|
||||||
|
patch_repo: "${{ github.repository }}-security-patches"
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
12
.github/workflows/update-changelog.yml
vendored
12
.github/workflows/update-changelog.yml
vendored
@@ -9,6 +9,14 @@ jobs:
|
|||||||
main:
|
main:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
- name: "Generate token"
|
||||||
|
id: generate_token
|
||||||
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
|
with:
|
||||||
|
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
||||||
|
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
|
- name: Run update changelog (manually invoked)
|
||||||
|
uses: grafana/grafana-github-actions-go/update-changelog@main
|
||||||
- name: Checkout Actions
|
- name: Checkout Actions
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
@@ -17,8 +25,8 @@ jobs:
|
|||||||
ref: main
|
ref: main
|
||||||
- name: Install Actions
|
- name: Install Actions
|
||||||
run: npm install --production --prefix ./actions
|
run: npm install --production --prefix ./actions
|
||||||
- name: Run update changelog (manually invoked)
|
- name: Run update changelog (manually invoked)
|
||||||
uses: ./actions/update-changelog
|
uses: ./actions/update-changelog
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
metricsWriteAPIKey: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
|
metricsWriteAPIKey: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
|
||||||
|
|||||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -79,6 +79,8 @@ public/css/*.min.css
|
|||||||
/devenv/docker-compose.override.yaml
|
/devenv/docker-compose.override.yaml
|
||||||
/devenv/.env
|
/devenv/.env
|
||||||
/devenv/docker/blocks/tempo/tempo-data/
|
/devenv/docker/blocks/tempo/tempo-data/
|
||||||
|
/devenv/docker/ha-test-unified-alerting/logs/webhook/dumps/
|
||||||
|
/devenv/docker/ha-test-unified-alerting/logs/webhook/webhook-listener.log
|
||||||
|
|
||||||
conf/custom.ini
|
conf/custom.ini
|
||||||
/conf/provisioning/**/custom.yaml
|
/conf/provisioning/**/custom.yaml
|
||||||
@@ -181,3 +183,6 @@ public/locales/*/grafana_old.json
|
|||||||
deployment_tools_config.json
|
deployment_tools_config.json
|
||||||
|
|
||||||
.betterer.cache
|
.betterer.cache
|
||||||
|
|
||||||
|
# Temporary file for backporting PRs
|
||||||
|
.pr-body.txt
|
||||||
|
|||||||
@@ -56,7 +56,6 @@ enable = [
|
|||||||
"typecheck",
|
"typecheck",
|
||||||
"asciicheck",
|
"asciicheck",
|
||||||
"errorlint",
|
"errorlint",
|
||||||
"sqlclosecheck",
|
|
||||||
"revive",
|
"revive",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
385
CHANGELOG.md
385
CHANGELOG.md
@@ -1,3 +1,388 @@
|
|||||||
|
<!-- 9.3.16 START -->
|
||||||
|
|
||||||
|
# 9.3.16 (2023-06-22)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **Auth:** Fixed CVE-2023-3128. [#70578](https://github.com/grafana/grafana/issues/70578), [@zerok](https://github.com/zerok)
|
||||||
|
|
||||||
|
<!-- 9.3.16 END -->
|
||||||
|
<!-- 9.3.15 START -->
|
||||||
|
|
||||||
|
# 9.3.15 (2023-06-06)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **Alerting:** Require alert.notifications:write permissions to test receivers and templates
|
||||||
|
- **Auth:** Remove the session cookie only if it's invalid or revoked. [#68796](https://github.com/grafana/grafana/issues/68796), [@mgyongyosi](https://github.com/mgyongyosi)
|
||||||
|
|
||||||
|
<!-- 9.3.15 END -->
|
||||||
|
<!-- 9.3.14 START -->
|
||||||
|
|
||||||
|
# 9.3.14 (2023-05-08)
|
||||||
|
|
||||||
|
### Features and enhancements
|
||||||
|
|
||||||
|
- **Chore:** Upgrade Go to 1.20.4. [#67762](https://github.com/grafana/grafana/issues/67762), [@papagian](https://github.com/papagian)
|
||||||
|
|
||||||
|
<!-- 9.3.14 END -->
|
||||||
|
<!-- 9.3.11 START -->
|
||||||
|
|
||||||
|
# 9.3.11 (2023-03-22)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **Alerting:** Update scheduler to receive rule updates only from database. [#64662](https://github.com/grafana/grafana/pull/64662), [@yuri-tceretian](https://github.com/yuri-tceretian)
|
||||||
|
- **Chore:** Update Grafana to use Alertmanager v0.25.1-0.20230308154952-78fedf89728b. [#64784](https://github.com/grafana/grafana/pull/64784), [@yuri-tceretian](https://github.com/yuri-tceretian)
|
||||||
|
|
||||||
|
<!-- 9.3.11 END -->
|
||||||
|
|
||||||
|
<!-- 9.3.8 START -->
|
||||||
|
|
||||||
|
# 9.3.8 (2023-02-28)
|
||||||
|
|
||||||
|
<!-- 9.3.8 END -->
|
||||||
|
|
||||||
|
<!-- 9.3.7 START -->
|
||||||
|
|
||||||
|
# 9.3.7 (2023-02-28)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **Alerting:** Validate that tags are 100 characters or less. [#62335](https://github.com/grafana/grafana/pull/62335), [@grobinson-grafana](https://github.com/grobinson-grafana)
|
||||||
|
- **Expressions:** Fixes the issue showing expressions editor. [#62510](https://github.com/grafana/grafana/pull/62510), [@itsmylife](https://github.com/itsmylife)
|
||||||
|
- **Logs:** Fix stats not being updated when log results change. [#62317](https://github.com/grafana/grafana/pull/62317), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Plugins:** Fix circular reference in customOptions leading to MarshalJSON errors. [#62328](https://github.com/grafana/grafana/pull/62328), [@yoziru](https://github.com/yoziru)
|
||||||
|
- **Time Series Panel:** Fix legend text selection in Firefox. [#60809](https://github.com/grafana/grafana/pull/60809), [@codeincarnate](https://github.com/codeincarnate)
|
||||||
|
|
||||||
|
<!-- 9.3.7 END -->
|
||||||
|
<!-- 9.3.6 START -->
|
||||||
|
|
||||||
|
# 9.3.6 (2023-01-26)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **QueryEditorRow:** Fixes issue loading query editor when data source variable selected. [#61927](https://github.com/grafana/grafana/pull/61927), [@torkelo](https://github.com/torkelo)
|
||||||
|
|
||||||
|
<!-- 9.3.6 END -->
|
||||||
|
<!-- 9.3.4 START -->
|
||||||
|
|
||||||
|
# 9.3.4 (2023-01-25)
|
||||||
|
|
||||||
|
### Features and enhancements
|
||||||
|
|
||||||
|
- **Prometheus:** Add default editor configuration. [#61510](https://github.com/grafana/grafana/pull/61510), [@itsmylife](https://github.com/itsmylife)
|
||||||
|
- **TextPanel:** Refactor to functional component (#60885). [#61937](https://github.com/grafana/grafana/pull/61937), [@ryantxu](https://github.com/ryantxu)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **Alerting:** Fix webhook to use correct key for decrypting token. [#61717](https://github.com/grafana/grafana/pull/61717), [@yuri-tceretian](https://github.com/yuri-tceretian)
|
||||||
|
- **Alerting:** Set error annotation on EvaluationError regardless of underlying error type. [#61506](https://github.com/grafana/grafana/pull/61506), [@alexweav](https://github.com/alexweav)
|
||||||
|
- **Datasources:** Fix Proxy by UID Failing for UIDs with a Hyphen. [#61723](https://github.com/grafana/grafana/pull/61723), [@csmarchbanks](https://github.com/csmarchbanks)
|
||||||
|
- **Elasticsearch:** Fix creating of span link with no tags. [#61753](https://github.com/grafana/grafana/pull/61753), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Elasticsearch:** Fix failing requests when using SigV4. [#61923](https://github.com/grafana/grafana/pull/61923), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Elasticsearch:** Fix toggle-settings are not shown correctly. [#61751](https://github.com/grafana/grafana/pull/61751), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Explore:** Be sure time range key bindings are mounted after clear. [#61892](https://github.com/grafana/grafana/pull/61892), [@gelicia](https://github.com/gelicia)
|
||||||
|
- **Explore:** Unsync time ranges when a pane is closed. [#61369](https://github.com/grafana/grafana/pull/61369), [@Elfo404](https://github.com/Elfo404)
|
||||||
|
- **Logs:** Lines with long words do not break properly. [#61707](https://github.com/grafana/grafana/pull/61707), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Loki:** Fix misaligned derived fields settings. [#61475](https://github.com/grafana/grafana/pull/61475), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Query Builder:** Fix max width of input component to prevent overflows. [#61798](https://github.com/grafana/grafana/pull/61798), [@matyax](https://github.com/matyax)
|
||||||
|
- **Search:** Auto focus input elements. [#61443](https://github.com/grafana/grafana/pull/61443), [@ryantxu](https://github.com/ryantxu)
|
||||||
|
- **Search:** Fix empty folder message showing when by starred dashboards. [#61610](https://github.com/grafana/grafana/pull/61610), [@eledobleefe](https://github.com/eledobleefe)
|
||||||
|
- **Table Panel:** Fix image of image cell overflowing table cell and cells ignoring text alignment setting when a data link is added. [#59392](https://github.com/grafana/grafana/pull/59392), [@oscarkilhed](https://github.com/oscarkilhed)
|
||||||
|
|
||||||
|
<!-- 9.3.4 END -->
|
||||||
|
<!-- 9.3.2 START -->
|
||||||
|
|
||||||
|
# 9.3.2 (unreleased)
|
||||||
|
|
||||||
|
### Features and enhancements
|
||||||
|
|
||||||
|
- **Graphite:** Process multiple queries to Graphite plugin. [#59608](https://github.com/grafana/grafana/pull/59608), [@mmandrus](https://github.com/mmandrus)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **API:** Fix delete user failure due to quota not enabled. [#59875](https://github.com/grafana/grafana/pull/59875), [@papagian](https://github.com/papagian)
|
||||||
|
- **Accessibility:** Improved keyboard accessibility in BarGauge. [#59382](https://github.com/grafana/grafana/pull/59382), [@lpskdl](https://github.com/lpskdl)
|
||||||
|
- **Accessibility:** Improved keyboard accessibility in BigValue. [#59830](https://github.com/grafana/grafana/pull/59830), [@lpskdl](https://github.com/lpskdl)
|
||||||
|
- **Alerting:** Use the QuotaTargetSrv instead of the QuotaTarget in quota check. [#60026](https://github.com/grafana/grafana/pull/60026), [@joeblubaugh](https://github.com/joeblubaugh)
|
||||||
|
- **AzureMonitor:** Automate location retrieval. [#59602](https://github.com/grafana/grafana/pull/59602), [@aangelisc](https://github.com/aangelisc)
|
||||||
|
- **AzureMonitor:** Fix bad request when setting dimensions. [#59700](https://github.com/grafana/grafana/pull/59700), [@andresmgot](https://github.com/andresmgot)
|
||||||
|
- **BarChart:** Fix value mappings. [#60066](https://github.com/grafana/grafana/pull/60066), [@leeoniya](https://github.com/leeoniya)
|
||||||
|
- **Build:** Streamline and sync dockerfiles. [#58101](https://github.com/grafana/grafana/pull/58101), [@DanCech](https://github.com/DanCech)
|
||||||
|
- **Build:** Unified dockerfile for all builds. [#59173](https://github.com/grafana/grafana/pull/59173), [@DanCech](https://github.com/DanCech)
|
||||||
|
- **CloudWatch:** Fix - make sure dimensions are propagated to alert query editor. [#58281](https://github.com/grafana/grafana/pull/58281), [@conorevans](https://github.com/conorevans)
|
||||||
|
- **Cloudwatch:** Fix deeplink with default region (#60260). [#60274](https://github.com/grafana/grafana/pull/60274), [@iwysiu](https://github.com/iwysiu)
|
||||||
|
- **Command Palette:** Fix not being able to type if triggered whilst another modal is open. [#59728](https://github.com/grafana/grafana/pull/59728), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Command Palette:** Maintain page state when changing theme. [#59787](https://github.com/grafana/grafana/pull/59787), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Dashboards:** Fix 'Make Editable' button not working in Dashboard Settings. [#60306](https://github.com/grafana/grafana/pull/60306), [@joshhunt](https://github.com/joshhunt)
|
||||||
|
- **Dashboards:** Show error when data source is missing. [#60099](https://github.com/grafana/grafana/pull/60099), [@joshhunt](https://github.com/joshhunt)
|
||||||
|
- **Datasource:** Fix - apply default query also to queries in new panels. [#59625](https://github.com/grafana/grafana/pull/59625), [@sunker](https://github.com/sunker)
|
||||||
|
- **Dropdown:** Menu now closes correctly when selecting options on touch devices. [#60181](https://github.com/grafana/grafana/pull/60181), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Influx:** Query segment menus now position correctly near the bottom of the screen. [#60087](https://github.com/grafana/grafana/pull/60087), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Login:** Fix failure to login a new user via an external provider if quota are enabled. [#60015](https://github.com/grafana/grafana/pull/60015), [@papagian](https://github.com/papagian)
|
||||||
|
- **Loki/Prometheus:** Fix wrong queries executed in split view. [#60172](https://github.com/grafana/grafana/pull/60172), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Loki:** Fix wrongly escaped label values when using LabelFilter. [#59812](https://github.com/grafana/grafana/pull/59812), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Navigation:** Prevent app crash when importing a dashboard with a uid of `home`. [#59874](https://github.com/grafana/grafana/pull/59874), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Panel Edit:** Fix data links edit icons being off screen when provided title is too long. [#59829](https://github.com/grafana/grafana/pull/59829), [@dprokop](https://github.com/dprokop)
|
||||||
|
- **Prometheus:** Fix exemplar fill color to match series color in time series. [#59908](https://github.com/grafana/grafana/pull/59908), [@gtk-grafana](https://github.com/gtk-grafana)
|
||||||
|
- **Prometheus:** Fix exemplars not respecting corresponding series display status. [#59743](https://github.com/grafana/grafana/pull/59743), [@gtk-grafana](https://github.com/gtk-grafana)
|
||||||
|
- **StateTimeline:** Fix negative infinity legend/tooltip from thresholds. [#60279](https://github.com/grafana/grafana/pull/60279), [@leeoniya](https://github.com/leeoniya)
|
||||||
|
- **Table:** Fixes row border style not showing and colored rows blending together. [#59660](https://github.com/grafana/grafana/pull/59660), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **Tempo:** Fix TraceQL autocomplete issues (#60058). [#60125](https://github.com/grafana/grafana/pull/60125), [@CrypticSignal](https://github.com/CrypticSignal)
|
||||||
|
- **TimePicker:** Prevent TimePicker overflowing viewport on small screens. [#59808](https://github.com/grafana/grafana/pull/59808), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **TimeRangePicker:** Fix recently ranges only not showing all recent ranges. [#59836](https://github.com/grafana/grafana/pull/59836), [@joshhunt](https://github.com/joshhunt)
|
||||||
|
- **TimeZonePicker:** Scroll menu correctly when using keyboard controls. [#60008](https://github.com/grafana/grafana/pull/60008), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
|
||||||
|
<!-- 9.3.2 END -->
|
||||||
|
<!-- 9.3.1 START -->
|
||||||
|
|
||||||
|
# 9.3.1 (2022-11-30)
|
||||||
|
|
||||||
|
### Features and enhancements
|
||||||
|
|
||||||
|
- **Connections:** Update "Your connections/Data sources" page. [#58589](https://github.com/grafana/grafana/pull/58589), [@mikkancso](https://github.com/mikkancso)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **Accessibility:** Increase badge constrast to be WCAG AA compliant. [#59531](https://github.com/grafana/grafana/pull/59531), [@eledobleefe](https://github.com/eledobleefe)
|
||||||
|
|
||||||
|
<!-- 9.3.1 END -->
|
||||||
|
<!-- 9.3.0 START -->
|
||||||
|
|
||||||
|
# 9.3.0 (2022-11-30)
|
||||||
|
|
||||||
|
### Features and enhancements
|
||||||
|
|
||||||
|
- **Alerting:** Enable interpolation for notification policies in file provisioning. [#58956](https://github.com/grafana/grafana/pull/58956), [@JohnnyQQQQ](https://github.com/JohnnyQQQQ)
|
||||||
|
- **Azure Monitor Logs:** Avoid warning when the response is empty. [#59211](https://github.com/grafana/grafana/pull/59211), [@andresmgot](https://github.com/andresmgot)
|
||||||
|
- **Azure Monitor:** Add support to customized routes. [#54829](https://github.com/grafana/grafana/pull/54829), [@ms-hujia](https://github.com/ms-hujia)
|
||||||
|
- **Canvas:** Add icon value mapping. [#59013](https://github.com/grafana/grafana/pull/59013), [@nmarrs](https://github.com/nmarrs)
|
||||||
|
- **CloudWatch:** Cross-account querying support. [#59362](https://github.com/grafana/grafana/pull/59362), [@sunker](https://github.com/sunker)
|
||||||
|
- **Docs:** Update `merge-pull-request.md` regarding backport policies. [#59239](https://github.com/grafana/grafana/pull/59239), [@dsotirakis](https://github.com/dsotirakis)
|
||||||
|
- **GaugePanel:** Setting the neutral-point of a gauge. [#53989](https://github.com/grafana/grafana/pull/53989), [@sfranzis](https://github.com/sfranzis)
|
||||||
|
- **Geomap:** Improve location editor. [#58017](https://github.com/grafana/grafana/pull/58017), [@drew08t](https://github.com/drew08t)
|
||||||
|
- **Internationalization:** Enable internationalization by default. [#59204](https://github.com/grafana/grafana/pull/59204), [@joshhunt](https://github.com/joshhunt)
|
||||||
|
- **Logs:** Add `Download logs` button to log log-browser. [#55163](https://github.com/grafana/grafana/pull/55163), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Loki:** Add `gzip` compression to resource calls. [#59059](https://github.com/grafana/grafana/pull/59059), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Loki:** Add improvements to loki label browser. [#59387](https://github.com/grafana/grafana/pull/59387), [@gwdawson](https://github.com/gwdawson)
|
||||||
|
- **Loki:** Make label browser accessible in query builder. [#58525](https://github.com/grafana/grafana/pull/58525), [@gwdawson](https://github.com/gwdawson)
|
||||||
|
- **Loki:** Remove raw query toggle. [#59125](https://github.com/grafana/grafana/pull/59125), [@gwdawson](https://github.com/gwdawson)
|
||||||
|
- **Middleware:** Add CSP Report Only support. [#58074](https://github.com/grafana/grafana/pull/58074), [@jcalisto](https://github.com/jcalisto)
|
||||||
|
- **Navigation:** Prevent viewer role accessing dashboard creation, import and folder creation. [#58842](https://github.com/grafana/grafana/pull/58842), [@lpskdl](https://github.com/lpskdl)
|
||||||
|
- **OAuth:** Refactor OAuth parameters handling to support obtaining refresh tokens for Google OAuth. [#58782](https://github.com/grafana/grafana/pull/58782), [@mgyongyosi](https://github.com/mgyongyosi)
|
||||||
|
- **Oauth:** Display friendly error message when role_attribute_strict=true and no valid role found. [#57818](https://github.com/grafana/grafana/pull/57818), [@kalleep](https://github.com/kalleep)
|
||||||
|
- **Preferences:** Add confirmation modal when saving org preferences. [#59119](https://github.com/grafana/grafana/pull/59119), [@JoaoSilvaGrafana](https://github.com/JoaoSilvaGrafana)
|
||||||
|
- **PublicDashboards:** Orphaned public dashboard deletion script added. [#57917](https://github.com/grafana/grafana/pull/57917), [@juanicabanas](https://github.com/juanicabanas)
|
||||||
|
- **Query Editor:** Hide overflow for long query names. [#58840](https://github.com/grafana/grafana/pull/58840), [@zuchka](https://github.com/zuchka)
|
||||||
|
- **Reports:** Configurable timezone. (Enterprise)
|
||||||
|
- **Solo Panel:** Configurable timezone. [#59153](https://github.com/grafana/grafana/pull/59153), [@spinillos](https://github.com/spinillos)
|
||||||
|
- **TablePanel:** Add support for Count calculation per column or per entire dataset. [#58134](https://github.com/grafana/grafana/pull/58134), [@mdvictor](https://github.com/mdvictor)
|
||||||
|
- **Tempo:** Send the correct start time when making a TraceQL query. [#59128](https://github.com/grafana/grafana/pull/59128), [@CrypticSignal](https://github.com/CrypticSignal)
|
||||||
|
- **Various Panels:** Remove beta label from Bar Chart, Candlestick, Histogram, State Timeline, & Status History Panels. [#58557](https://github.com/grafana/grafana/pull/58557), [@codeincarnate](https://github.com/codeincarnate)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **Access Control:** Clear user's permission cache after resource creation. [#59307](https://github.com/grafana/grafana/pull/59307), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Access Control:** Clear user's permission cache after resource creation. [#59101](https://github.com/grafana/grafana/pull/59101), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
|
||||||
|
- **Accessibility:** Improve keyboard accessibility in `AnnoListPanel`. [#58971](https://github.com/grafana/grafana/pull/58971), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Accessibility:** Improve keyboard accessibility in `Collapse`. [#59022](https://github.com/grafana/grafana/pull/59022), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Accessibility:** Improve keyboard accessibility in `GettingStarted` panel. [#58966](https://github.com/grafana/grafana/pull/58966), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Accessibility:** Improve keyboard accessibility of `FilterPill`. [#58976](https://github.com/grafana/grafana/pull/58976), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Admin:** Fix broken links to image assets in email templates. [#58729](https://github.com/grafana/grafana/pull/58729), [@zuchka](https://github.com/zuchka)
|
||||||
|
- **Azure Monitor:** Fix namespace selection for storageaccounts. [#56449](https://github.com/grafana/grafana/pull/56449), [@andresmgot](https://github.com/andresmgot)
|
||||||
|
- **Calcs:** Fix difference percent in legend. [#59243](https://github.com/grafana/grafana/pull/59243), [@zoltanbedi](https://github.com/zoltanbedi)
|
||||||
|
- **DataLinks:** Improve Data-Links AutoComplete Logic. [#58934](https://github.com/grafana/grafana/pull/58934), [@zuchka](https://github.com/zuchka)
|
||||||
|
- **Explore:** Fix a11y issue with logs navigation buttons. [#58944](https://github.com/grafana/grafana/pull/58944), [@Elfo404](https://github.com/Elfo404)
|
||||||
|
- **Heatmap:** Fix blurry text & rendering. [#59260](https://github.com/grafana/grafana/pull/59260), [@leeoniya](https://github.com/leeoniya)
|
||||||
|
- **Heatmap:** Fix tooltip y range of top and bottom buckets in calculated heatmaps. [#59172](https://github.com/grafana/grafana/pull/59172), [@leeoniya](https://github.com/leeoniya)
|
||||||
|
- **Logs:** Fix misalignment of LogRows. [#59279](https://github.com/grafana/grafana/pull/59279), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Navigation:** Stop clearing search state when opening a result in a new tab. [#58880](https://github.com/grafana/grafana/pull/58880), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **OptionsUI:** SliderValueEditor does not get auto focused on slider change. [#59209](https://github.com/grafana/grafana/pull/59209), [@eledobleefe](https://github.com/eledobleefe)
|
||||||
|
- **PanelEdit:** Fixes bug with not remembering panel options pane collapse/expand state. [#59265](https://github.com/grafana/grafana/pull/59265), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **Query Caching:** Skip 207 status codes. (Enterprise)
|
||||||
|
- **Quota:** Fix failure in store due to missing scope parameters. [#58874](https://github.com/grafana/grafana/pull/58874), [@papagian](https://github.com/papagian)
|
||||||
|
- **Quota:** Fix failure when checking session limits. [#58865](https://github.com/grafana/grafana/pull/58865), [@papagian](https://github.com/papagian)
|
||||||
|
- **Reports:** Fix time preview. (Enterprise)
|
||||||
|
- **StateTimeline:** Prevent label text from overflowing state rects. [#59169](https://github.com/grafana/grafana/pull/59169), [@leeoniya](https://github.com/leeoniya)
|
||||||
|
- **Tempo:** Fix search table duration unit. [#58642](https://github.com/grafana/grafana/pull/58642), [@joey-grafana](https://github.com/joey-grafana)
|
||||||
|
- **TraceView:** Fix broken rendering when scrolling in Dashboard panel in Firefox. [#56642](https://github.com/grafana/grafana/pull/56642), [@zdg-github](https://github.com/zdg-github)
|
||||||
|
|
||||||
|
### Plugin development fixes & changes
|
||||||
|
|
||||||
|
- **GrafanaUI:** Add disabled option for menu items. [#58980](https://github.com/grafana/grafana/pull/58980), [@going-confetti](https://github.com/going-confetti)
|
||||||
|
|
||||||
|
<!-- 9.3.0 END -->
|
||||||
|
<!-- 9.3.0-beta1 START -->
|
||||||
|
|
||||||
|
# 9.3.0-beta1 (2022-11-15)
|
||||||
|
|
||||||
|
### Features and enhancements
|
||||||
|
|
||||||
|
- **Alerting:** Add Alertmanager choice warning. [#55311](https://github.com/grafana/grafana/pull/55311), [@konrad147](https://github.com/konrad147)
|
||||||
|
- **Alerting:** Add support for linking external images securely - Azure Blob (#1). [#56598](https://github.com/grafana/grafana/pull/56598), [@petr-stupka](https://github.com/petr-stupka)
|
||||||
|
- **Alerting:** Add threshold expression. [#55102](https://github.com/grafana/grafana/pull/55102), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Alerting:** Add traceability headers for alert queries. [#57127](https://github.com/grafana/grafana/pull/57127), [@alexweav](https://github.com/alexweav)
|
||||||
|
- **Alerting:** Allow none provenance alert rule creation from provisioning API. [#58410](https://github.com/grafana/grafana/pull/58410), [@alexmobo](https://github.com/alexmobo)
|
||||||
|
- **Alerting:** Cache result of dashboard ID lookups. [#56587](https://github.com/grafana/grafana/pull/56587), [@alexweav](https://github.com/alexweav)
|
||||||
|
- **Alerting:** Expressions pipeline redesign. [#54601](https://github.com/grafana/grafana/pull/54601), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Alerting:** Fall back to "range" query type for unified alerting when "both" is specified. [#57288](https://github.com/grafana/grafana/pull/57288), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Alerting:** Implement the Webex notifier. [#58480](https://github.com/grafana/grafana/pull/58480), [@gotjosh](https://github.com/gotjosh)
|
||||||
|
- **Alerting:** Improve group modal with validation on evaluation interval. [#57830](https://github.com/grafana/grafana/pull/57830), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
|
||||||
|
- **Alerting:** Persist annotations from multidimensional rules in batches. [#56575](https://github.com/grafana/grafana/pull/56575), [@alexweav](https://github.com/alexweav)
|
||||||
|
- **Alerting:** Query time logging. [#57585](https://github.com/grafana/grafana/pull/57585), [@konrad147](https://github.com/konrad147)
|
||||||
|
- **Alerting:** Remove the alert manager selection from the data source configuration. [#57369](https://github.com/grafana/grafana/pull/57369), [@VikaCep](https://github.com/VikaCep)
|
||||||
|
- **Alerting:** Remove the alert manager selection from the data source configuration. [#56460](https://github.com/grafana/grafana/pull/56460), [@gitstart](https://github.com/gitstart)
|
||||||
|
- **Alerting:** Support values in notification templates. [#56457](https://github.com/grafana/grafana/pull/56457), [@grobinson-grafana](https://github.com/grobinson-grafana)
|
||||||
|
- **Alerting:** Templated URLs for webhook type contact points. [#57296](https://github.com/grafana/grafana/pull/57296), [@santihernandezc](https://github.com/santihernandezc)
|
||||||
|
- **Annotations:** Disable "Add annotation" button when annotations are disabled. [#57481](https://github.com/grafana/grafana/pull/57481), [@ryantxu](https://github.com/ryantxu)
|
||||||
|
- **Auth:** Add validation and ingestion of conflict file. [#53014](https://github.com/grafana/grafana/pull/53014), [@eleijonmarck](https://github.com/eleijonmarck)
|
||||||
|
- **Auth:** Make built-in login configurable. [#46978](https://github.com/grafana/grafana/pull/46978), [@TsotosA](https://github.com/TsotosA)
|
||||||
|
- **Auth:** Refresh OAuth access_token automatically using the refresh_token. [#56076](https://github.com/grafana/grafana/pull/56076), [@mgyongyosi](https://github.com/mgyongyosi)
|
||||||
|
- **Auth:** Validate Azure ID token version on login is not v1. [#58088](https://github.com/grafana/grafana/pull/58088), [@Jguer](https://github.com/Jguer)
|
||||||
|
- **BackendSrv:** Make it possible to pass `options` to `.get|post|patch...` methods. [#51316](https://github.com/grafana/grafana/pull/51316), [@leventebalogh](https://github.com/leventebalogh)
|
||||||
|
- **Canvas:** Add tabs to inline editor. [#57778](https://github.com/grafana/grafana/pull/57778), [@adela-almasan](https://github.com/adela-almasan)
|
||||||
|
- **Canvas:** Extend root context menu. [#58097](https://github.com/grafana/grafana/pull/58097), [@adela-almasan](https://github.com/adela-almasan)
|
||||||
|
- **Chore:** Switch Grafana to using faro libraries. [#58186](https://github.com/grafana/grafana/pull/58186), [@tolzhabayev](https://github.com/tolzhabayev)
|
||||||
|
- **Chore:** Use strings.ReplaceAll and preallocate containers. [#58483](https://github.com/grafana/grafana/pull/58483), [@sashamelentyev](https://github.com/sashamelentyev)
|
||||||
|
- **CloudWatch:** Cache resource request responses in the browser. [#57082](https://github.com/grafana/grafana/pull/57082), [@sunker](https://github.com/sunker)
|
||||||
|
- **Config:** Change jwt config value to be "expect_claims". [#58284](https://github.com/grafana/grafana/pull/58284), [@conorevans](https://github.com/conorevans)
|
||||||
|
- **Configuration:** Update ssl_mode documentation in sample.ini to match default.ini. [#55138](https://github.com/grafana/grafana/pull/55138), [@alecxvs](https://github.com/alecxvs)
|
||||||
|
- **Correlations:** Add query editor and target field to settings page. [#55567](https://github.com/grafana/grafana/pull/55567), [@Elfo404](https://github.com/Elfo404)
|
||||||
|
- **Dashboard:** Record the number of cached queries for usage insights. [#56050](https://github.com/grafana/grafana/pull/56050), [@juanicabanas](https://github.com/juanicabanas)
|
||||||
|
- **Dashboard:** Record the number of cached queries for usage insights. (Enterprise)
|
||||||
|
- **Datasources:** Support mixed datasources in a single query. [#56832](https://github.com/grafana/grafana/pull/56832), [@mmandrus](https://github.com/mmandrus)
|
||||||
|
- **Docs:** Add documentation for Custom Branding on Public Dashboards. [#58090](https://github.com/grafana/grafana/pull/58090), [@leandro-deveikis](https://github.com/leandro-deveikis)
|
||||||
|
- **Docs:** Add missing documentation for enterprise features. [#56753](https://github.com/grafana/grafana/pull/56753), [@mmandrus](https://github.com/mmandrus)
|
||||||
|
- **Docs:** Clarify that audit logs are generated only for API requests. [#57521](https://github.com/grafana/grafana/pull/57521), [@spinillos](https://github.com/spinillos)
|
||||||
|
- **Echo:** Add config option to prevent duplicate page views for GA4. [#57619](https://github.com/grafana/grafana/pull/57619), [@tolzhabayev](https://github.com/tolzhabayev)
|
||||||
|
- **Elasticsearch:** Add trace to logs functionality. [#58063](https://github.com/grafana/grafana/pull/58063), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Elasticsearch:** Reuse http client in the backend. [#55172](https://github.com/grafana/grafana/pull/55172), [@gabor](https://github.com/gabor)
|
||||||
|
- **Explore:** Add tracesToMetrics span time shift options (#54710). [#55335](https://github.com/grafana/grafana/pull/55335), [@hanjm](https://github.com/hanjm)
|
||||||
|
- **Explore:** Logs volume histogram: always start Y axis from zero. [#56200](https://github.com/grafana/grafana/pull/56200), [@gabor](https://github.com/gabor)
|
||||||
|
- **Explore:** Remove explore2Dashboard feature toggle. [#58329](https://github.com/grafana/grafana/pull/58329), [@Elfo404](https://github.com/Elfo404)
|
||||||
|
- **Explore:** Support fields interpolation in logs panel. [#58426](https://github.com/grafana/grafana/pull/58426), [@ifrost](https://github.com/ifrost)
|
||||||
|
- **Frontend Routing:** Always render standalone plugin pages using the `<AppRootPage>`. [#57771](https://github.com/grafana/grafana/pull/57771), [@leventebalogh](https://github.com/leventebalogh)
|
||||||
|
- **GRPC Server:** Add gRPC server service. [#47849](https://github.com/grafana/grafana/pull/47849), [@FZambia](https://github.com/FZambia)
|
||||||
|
- **Geomap:** Add photo layer. [#57307](https://github.com/grafana/grafana/pull/57307), [@drew08t](https://github.com/drew08t)
|
||||||
|
- **Geomap:** Upgrade to openlayers 7.x. [#57317](https://github.com/grafana/grafana/pull/57317), [@ryantxu](https://github.com/ryantxu)
|
||||||
|
- **GrafanaData:** Deprecate logs functions. [#56077](https://github.com/grafana/grafana/pull/56077), [@gabor](https://github.com/gabor)
|
||||||
|
- **GrafanaData:** Deprecate the LogsParser type. [#56242](https://github.com/grafana/grafana/pull/56242), [@gabor](https://github.com/gabor)
|
||||||
|
- **Kindsys:** Introduce Kind framework. [#56492](https://github.com/grafana/grafana/pull/56492), [@sdboyer](https://github.com/sdboyer)
|
||||||
|
- **LDAP:** Add `skip_org_role_sync` configuration option. [#56792](https://github.com/grafana/grafana/pull/56792), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **LDAP:** Add `skip_org_role_sync` configuration option. [#56679](https://github.com/grafana/grafana/pull/56679), [@gamab](https://github.com/gamab)
|
||||||
|
- **LDAPSync:** Improve performance of sync and make it case insensitive. (Enterprise)
|
||||||
|
- **LibraryPanels:** Load library panels in the frontend rather than the backend. [#50560](https://github.com/grafana/grafana/pull/50560), [@ryantxu](https://github.com/ryantxu)
|
||||||
|
- **LogContext:** Add header and close button to modal. [#56283](https://github.com/grafana/grafana/pull/56283), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **LogContext:** Improve text describing the loglines. [#55475](https://github.com/grafana/grafana/pull/55475), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Logs:** Allow collapsing the logs volume histogram. [#52808](https://github.com/grafana/grafana/pull/52808), [@gabor](https://github.com/gabor)
|
||||||
|
- **Logs:** Center `show context` modal on click. [#55989](https://github.com/grafana/grafana/pull/55989), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Logs:** Center `show context` modal on click. [#55405](https://github.com/grafana/grafana/pull/55405), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Logs:** Show LogRowMenu also for long logs and wrap-lines turned off. [#56030](https://github.com/grafana/grafana/pull/56030), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **LogsContext:** Added button to load 10 more log lines. [#55923](https://github.com/grafana/grafana/pull/55923), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Loki:** Add case insensitive line contains operation. [#58177](https://github.com/grafana/grafana/pull/58177), [@gwdawson](https://github.com/gwdawson)
|
||||||
|
- **Loki:** Monaco Query Editor enabled by default. [#58080](https://github.com/grafana/grafana/pull/58080), [@matyax](https://github.com/matyax)
|
||||||
|
- **Loki:** Redesign and improve query patterns. [#55097](https://github.com/grafana/grafana/pull/55097), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Loki:** Rename log browser to label browser. [#58416](https://github.com/grafana/grafana/pull/58416), [@gwdawson](https://github.com/gwdawson)
|
||||||
|
- **Loki:** Show invalid fields in label filter. [#55751](https://github.com/grafana/grafana/pull/55751), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **MSSQL:** Add connection timeout setting in configuration page. [#58631](https://github.com/grafana/grafana/pull/58631), [@mdvictor](https://github.com/mdvictor)
|
||||||
|
- **Navigation:** Add `pluginId` to standalone plugin page NavLinks. [#57769](https://github.com/grafana/grafana/pull/57769), [@leventebalogh](https://github.com/leventebalogh)
|
||||||
|
- **Navigation:** Expose new props to extend `Page`/`PluginPage`. [#58465](https://github.com/grafana/grafana/pull/58465), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Navtree:** Make it possible to configure standalone plugin pages. [#56393](https://github.com/grafana/grafana/pull/56393), [@leventebalogh](https://github.com/leventebalogh)
|
||||||
|
- **Node Graph:** Always show context menu. [#56876](https://github.com/grafana/grafana/pull/56876), [@joey-grafana](https://github.com/joey-grafana)
|
||||||
|
- **Number formatting:** Strip trailing zeros after decimal point when decimals=auto. [#57373](https://github.com/grafana/grafana/pull/57373), [@leeoniya](https://github.com/leeoniya)
|
||||||
|
- **OAuth:** Feature toggle for access token expiration check and docs. [#58179](https://github.com/grafana/grafana/pull/58179), [@mgyongyosi](https://github.com/mgyongyosi)
|
||||||
|
- **Opentsdb:** Allow template variables for filter keys. [#57226](https://github.com/grafana/grafana/pull/57226), [@bohandley](https://github.com/bohandley)
|
||||||
|
- **PanelEdit:** Allow test id to be passed to panel editors. [#55417](https://github.com/grafana/grafana/pull/55417), [@mckn](https://github.com/mckn)
|
||||||
|
- **Plugins:** Add hook to make it easier to track interactions in plugins. [#56126](https://github.com/grafana/grafana/pull/56126), [@mckn](https://github.com/mckn)
|
||||||
|
- **Plugins:** Introduce new Flame graph panel. [#56376](https://github.com/grafana/grafana/pull/56376), [@joey-grafana](https://github.com/joey-grafana)
|
||||||
|
- **Plugins:** Make "README" the default markdown request param. [#58264](https://github.com/grafana/grafana/pull/58264), [@wbrowne](https://github.com/wbrowne)
|
||||||
|
- **PostgreSQL:** Migrate to React. [#52831](https://github.com/grafana/grafana/pull/52831), [@zoltanbedi](https://github.com/zoltanbedi)
|
||||||
|
- **Preferences:** Create indices. [#48356](https://github.com/grafana/grafana/pull/48356), [@sakjur](https://github.com/sakjur)
|
||||||
|
- **Profiling:** Add Phlare and Parca datasources. [#57809](https://github.com/grafana/grafana/pull/57809), [@aocenas](https://github.com/aocenas)
|
||||||
|
- **Prometheus:** Handle errors and warnings in buffered client. [#58504](https://github.com/grafana/grafana/pull/58504), [@itsmylife](https://github.com/itsmylife)
|
||||||
|
- **Prometheus:** Make Prometheus streaming parser as default client. [#58365](https://github.com/grafana/grafana/pull/58365), [@itsmylife](https://github.com/itsmylife)
|
||||||
|
- **Public Dashboards:** Add audit table. [#54508](https://github.com/grafana/grafana/pull/54508), [@jalevin](https://github.com/jalevin)
|
||||||
|
- **PublicDashboards:** Add PubDash support to Angular panel plugins. [#57293](https://github.com/grafana/grafana/pull/57293), [@mmandrus](https://github.com/mmandrus)
|
||||||
|
- **PublicDashboards:** Add annotations support. [#56413](https://github.com/grafana/grafana/pull/56413), [@owensmallwood](https://github.com/owensmallwood)
|
||||||
|
- **PublicDashboards:** Add custom branding for Public Dashboard. (Enterprise)
|
||||||
|
- **PublicDashboards:** Add delete public dashboard button in public dashboard modal. [#58095](https://github.com/grafana/grafana/pull/58095), [@juanicabanas](https://github.com/juanicabanas)
|
||||||
|
- **PublicDashboards:** Cached queries column added in public dashboard insight query. (Enterprise)
|
||||||
|
- **PublicDashboards:** Can toggle annotations in modal. [#57312](https://github.com/grafana/grafana/pull/57312), [@owensmallwood](https://github.com/owensmallwood)
|
||||||
|
- **PublicDashboards:** Delete public dashboard in public dashboard table. [#57766](https://github.com/grafana/grafana/pull/57766), [@juanicabanas](https://github.com/juanicabanas)
|
||||||
|
- **PublicDashboards:** Delete public dashboard when dashboard is deleted. [#57291](https://github.com/grafana/grafana/pull/57291), [@juanicabanas](https://github.com/juanicabanas)
|
||||||
|
- **PublicDashboards:** Extract config of Public Dashboard. [#57788](https://github.com/grafana/grafana/pull/57788), [@leandro-deveikis](https://github.com/leandro-deveikis)
|
||||||
|
- **PublicDashboards:** Hide top navigation bar. [#56873](https://github.com/grafana/grafana/pull/56873), [@evictorero](https://github.com/evictorero)
|
||||||
|
- **PublicDashboards:** Make mixed datasource calls concurrently. [#56421](https://github.com/grafana/grafana/pull/56421), [@juanicabanas](https://github.com/juanicabanas)
|
||||||
|
- **PublicDashboards:** Orphaned public dashboard item list modified. [#58014](https://github.com/grafana/grafana/pull/58014), [@juanicabanas](https://github.com/juanicabanas)
|
||||||
|
- **PublicDashboards:** Rename PubdashFooter frontend component. [#58137](https://github.com/grafana/grafana/pull/58137), [@leandro-deveikis](https://github.com/leandro-deveikis)
|
||||||
|
- **PublicDashboards:** Update docs with supported datasources. [#57629](https://github.com/grafana/grafana/pull/57629), [@owensmallwood](https://github.com/owensmallwood)
|
||||||
|
- **PublicDashboards:** Validate access token. [#57298](https://github.com/grafana/grafana/pull/57298), [@leandro-deveikis](https://github.com/leandro-deveikis)
|
||||||
|
- **PublicDashboards:** Validate access token not to be duplicated and add retries. [#56755](https://github.com/grafana/grafana/pull/56755), [@juanicabanas](https://github.com/juanicabanas)
|
||||||
|
- **RBAC:** Improve performance of dashboard filter query. [#56813](https://github.com/grafana/grafana/pull/56813), [@kalleep](https://github.com/kalleep)
|
||||||
|
- **Rendering:** Add configuration options for `renderKey` lifetime. [#57339](https://github.com/grafana/grafana/pull/57339), [@Willena](https://github.com/Willena)
|
||||||
|
- **Reports:** Dynamic scale factor per report. (Enterprise)
|
||||||
|
- **SAML:** Set cookie option SameSite=none and Secure=true. (Enterprise)
|
||||||
|
- **SQLStore:** Optionally retry queries if sqlite returns database is locked. [#56096](https://github.com/grafana/grafana/pull/56096), [@papagian](https://github.com/papagian)
|
||||||
|
- **Server:** Make unix socket permission configurable. [#52944](https://github.com/grafana/grafana/pull/52944), [@unknowndevQwQ](https://github.com/unknowndevQwQ)
|
||||||
|
- **Tempo:** Add start time and end time parameters while querying traces. [#48068](https://github.com/grafana/grafana/pull/48068), [@bikashmishra100](https://github.com/bikashmishra100)
|
||||||
|
- **TimeSeries:** Render null-bounded points at data edges. [#57798](https://github.com/grafana/grafana/pull/57798), [@leeoniya](https://github.com/leeoniya)
|
||||||
|
- **Tracing:** Allow trace to logs for OpenSearch. [#58161](https://github.com/grafana/grafana/pull/58161), [@gabor](https://github.com/gabor)
|
||||||
|
- **Transformers:** PartitionByValues. [#56767](https://github.com/grafana/grafana/pull/56767), [@leeoniya](https://github.com/leeoniya)
|
||||||
|
- **UsageStats:** Add traces when sending usage stats. [#55474](https://github.com/grafana/grafana/pull/55474), [@sakjur](https://github.com/sakjur)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **Alerting:** Fix mathexp.NoData in ConditionsCmd. [#56812](https://github.com/grafana/grafana/pull/56812), [@grobinson-grafana](https://github.com/grobinson-grafana)
|
||||||
|
- **BarChart:** Fix coloring from thresholds and value mappings. [#58285](https://github.com/grafana/grafana/pull/58285), [@leeoniya](https://github.com/leeoniya)
|
||||||
|
- **BarChart:** Fix stacked hover. [#57711](https://github.com/grafana/grafana/pull/57711), [@leeoniya](https://github.com/leeoniya)
|
||||||
|
- **Explore:** Fix shared crosshair for logs, logsvolume and graph panels. [#57892](https://github.com/grafana/grafana/pull/57892), [@Elfo404](https://github.com/Elfo404)
|
||||||
|
- **Flame Graph:** Exact search. [#56769](https://github.com/grafana/grafana/pull/56769), [@joey-grafana](https://github.com/joey-grafana)
|
||||||
|
- **Flame Graph:** Fix for dashboard scrolling. [#56555](https://github.com/grafana/grafana/pull/56555), [@joey-grafana](https://github.com/joey-grafana)
|
||||||
|
- **LogContext:** Fix scroll behavior in context modal. [#56070](https://github.com/grafana/grafana/pull/56070), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Loki:** Fix showing of history of querying in query editor. [#57344](https://github.com/grafana/grafana/pull/57344), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **OAuth:** Fix misleading warn log related to oauth and increase logged content. [#57336](https://github.com/grafana/grafana/pull/57336), [@Jguer](https://github.com/Jguer)
|
||||||
|
- **Plugins:** Plugin details page visual alignment issues. [#57729](https://github.com/grafana/grafana/issues/57729)
|
||||||
|
- **PublicDashboards:** Fix GET public dashboard that doesn't match. [#57571](https://github.com/grafana/grafana/pull/57571), [@juanicabanas](https://github.com/juanicabanas)
|
||||||
|
- **PublicDashboards:** Fix annotations error for public dashboards. [#57455](https://github.com/grafana/grafana/pull/57455), [@leandro-deveikis](https://github.com/leandro-deveikis)
|
||||||
|
- **PublicDashboards:** Fix granularity discrepancy between public and original dashboard. [#57129](https://github.com/grafana/grafana/pull/57129), [@guicaulada](https://github.com/guicaulada)
|
||||||
|
- **PublicDashboards:** Fix granularity issue caused by query caching. (Enterprise)
|
||||||
|
- **PublicDashboards:** Fix hidden queries execution. (Enterprise)
|
||||||
|
- **RBAC:** Add primary key to seed_assignment table. [#56540](https://github.com/grafana/grafana/pull/56540), [@kalleep](https://github.com/kalleep)
|
||||||
|
- **Tempo:** Fix search removing service name from query. [#58630](https://github.com/grafana/grafana/pull/58630), [@joey-grafana](https://github.com/joey-grafana)
|
||||||
|
- **TimeRangeInput:** Fix clear button type. [#56545](https://github.com/grafana/grafana/pull/56545), [@Clarity-89](https://github.com/Clarity-89)
|
||||||
|
|
||||||
|
### Breaking changes
|
||||||
|
|
||||||
|
Removes the unused close-milestone command from `@grafana/toolkit`. Issue [#57062](https://github.com/grafana/grafana/issues/57062)
|
||||||
|
|
||||||
|
@grafana/toolkit `cherrypick` command was removed. Issue [#56114](https://github.com/grafana/grafana/issues/56114)
|
||||||
|
|
||||||
|
`EmotionPerfTest` is no longer exported from the `@grafana/ui` bundle. Issue [#56100](https://github.com/grafana/grafana/issues/56100)
|
||||||
|
|
||||||
|
Removing the unused `changelog` command in `@grafana/toolkit`. Issue [#56073](https://github.com/grafana/grafana/issues/56073)
|
||||||
|
|
||||||
|
### Deprecations
|
||||||
|
|
||||||
|
The interface type `LogsParser` in `grafana-data` is deprecated. Issue [#56242](https://github.com/grafana/grafana/issues/56242)
|
||||||
|
|
||||||
|
The following functions and classes related to logs are deprecated in the `grafana-ui` package: `getLogLevel`, `getLogLevelFromKey`, `addLogLevelToSeries`, `LogsParsers`, `calculateFieldStats`, `calculateLogsLabelStats`, `calculateStats`, `getParser`, `sortInAscendingOrder`, `sortInDescendingOrder`, `sortLogsResult`, `sortLogRows`, `checkLogsError`, `escapeUnescapedString`. Issue [#56077](https://github.com/grafana/grafana/issues/56077)
|
||||||
|
|
||||||
|
### Plugin development fixes & changes
|
||||||
|
|
||||||
|
- **Toolkit:** Deprecate `plugin:update-circleci` command. [#57743](https://github.com/grafana/grafana/pull/57743), [@academo](https://github.com/academo)
|
||||||
|
- **Toolkit:** Deprecate `plugin:github-publish` command. [#57726](https://github.com/grafana/grafana/pull/57726), [@academo](https://github.com/academo)
|
||||||
|
- **Toolkit:** Deprecate `plugin:bundle-managed` command and move its functionality to a bash script. [#57719](https://github.com/grafana/grafana/pull/57719), [@academo](https://github.com/academo)
|
||||||
|
- **Toolkit:** Deprecate and replace toolkit:build with plain yarn scripts. [#57620](https://github.com/grafana/grafana/pull/57620), [@academo](https://github.com/academo)
|
||||||
|
- **Toolkit:** Deprecate node-version-check command. [#57591](https://github.com/grafana/grafana/pull/57591), [@academo](https://github.com/academo)
|
||||||
|
- **Toolkit:** Deprecate searchTestData command. [#57589](https://github.com/grafana/grafana/pull/57589), [@academo](https://github.com/academo)
|
||||||
|
- **Toolkit:** Remove unused close-milestone command. [#57062](https://github.com/grafana/grafana/pull/57062), [@academo](https://github.com/academo)
|
||||||
|
- **Toolkit:** Remove unused legacy cherrypick command. [#56114](https://github.com/grafana/grafana/pull/56114), [@academo](https://github.com/academo)
|
||||||
|
- **Grafana UI:** Clean up bundle. [#56100](https://github.com/grafana/grafana/pull/56100), [@jackw](https://github.com/jackw)
|
||||||
|
- **Toolkit:** Deprecate `component:create` command. [#56086](https://github.com/grafana/grafana/pull/56086), [@academo](https://github.com/academo)
|
||||||
|
- **Toolkit:** Remove changelog command. [#56073](https://github.com/grafana/grafana/pull/56073), [@gitstart](https://github.com/gitstart)
|
||||||
|
|
||||||
|
<!-- 9.3.0-beta1 END -->
|
||||||
<!-- 9.2.4 START -->
|
<!-- 9.2.4 START -->
|
||||||
|
|
||||||
# 9.2.4 (2022-11-07)
|
# 9.2.4 (2022-11-07)
|
||||||
|
|||||||
167
Dockerfile
167
Dockerfile
@@ -1,94 +1,169 @@
|
|||||||
FROM node:16-alpine3.15 as js-builder
|
# syntax=docker/dockerfile:1
|
||||||
|
|
||||||
|
ARG BASE_IMAGE=alpine:3.17
|
||||||
|
ARG JS_IMAGE=node:16-alpine3.17
|
||||||
|
ARG GO_IMAGE=golang:1.20.4-alpine3.17
|
||||||
|
|
||||||
|
ARG GO_SRC=go-builder
|
||||||
|
ARG JS_SRC=js-builder
|
||||||
|
|
||||||
|
FROM ${JS_IMAGE} as js-builder
|
||||||
|
|
||||||
ENV NODE_OPTIONS=--max_old_space_size=8000
|
ENV NODE_OPTIONS=--max_old_space_size=8000
|
||||||
|
|
||||||
WORKDIR /grafana
|
WORKDIR /tmp/grafana
|
||||||
|
|
||||||
COPY package.json yarn.lock .yarnrc.yml ./
|
COPY package.json yarn.lock .yarnrc.yml ./
|
||||||
COPY .yarn .yarn
|
COPY .yarn .yarn
|
||||||
COPY packages packages
|
COPY packages packages
|
||||||
COPY plugins-bundled plugins-bundled
|
COPY plugins-bundled plugins-bundled
|
||||||
|
|
||||||
|
RUN apk add --update python3 make g++\
|
||||||
|
&& rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
RUN yarn install
|
RUN yarn install
|
||||||
|
|
||||||
COPY tsconfig.json .eslintrc .editorconfig .browserslistrc .prettierrc.js babel.config.json .linguirc ./
|
COPY tsconfig.json .eslintrc .editorconfig .browserslistrc .prettierrc.js babel.config.json .linguirc ./
|
||||||
COPY public public
|
COPY public public
|
||||||
COPY tools tools
|
|
||||||
COPY scripts scripts
|
COPY scripts scripts
|
||||||
COPY emails emails
|
COPY emails emails
|
||||||
|
|
||||||
ENV NODE_ENV production
|
ENV NODE_ENV production
|
||||||
RUN yarn build
|
RUN yarn build
|
||||||
|
|
||||||
FROM golang:1.19.3-alpine3.15 as go-builder
|
FROM ${GO_IMAGE} as go-builder
|
||||||
|
|
||||||
RUN apk add --no-cache gcc g++ make
|
# Install build dependencies
|
||||||
|
RUN if grep -i -q alpine /etc/issue; then \
|
||||||
|
apk add --no-cache gcc g++ make binutils-gold; \
|
||||||
|
fi
|
||||||
|
|
||||||
WORKDIR /grafana
|
WORKDIR /tmp/grafana
|
||||||
|
|
||||||
COPY go.mod go.sum embed.go Makefile build.go package.json ./
|
COPY go.* ./
|
||||||
|
COPY .bingo .bingo
|
||||||
|
|
||||||
|
RUN go mod download && \
|
||||||
|
go install github.com/bwplotka/bingo@latest && \
|
||||||
|
bingo get
|
||||||
|
|
||||||
|
COPY embed.go Makefile build.go package.json ./
|
||||||
|
COPY cue.mod cue.mod
|
||||||
|
COPY kinds kinds
|
||||||
|
COPY local local
|
||||||
COPY packages/grafana-schema packages/grafana-schema
|
COPY packages/grafana-schema packages/grafana-schema
|
||||||
COPY public/app/plugins public/app/plugins
|
COPY public/app/plugins public/app/plugins
|
||||||
COPY public/api-spec.json public/api-spec.json
|
COPY public/api-spec.json public/api-spec.json
|
||||||
COPY pkg pkg
|
COPY pkg pkg
|
||||||
COPY scripts scripts
|
COPY scripts scripts
|
||||||
COPY cue.mod cue.mod
|
COPY conf conf
|
||||||
COPY .bingo .bingo
|
COPY .github .github
|
||||||
|
COPY LICENSE ./
|
||||||
|
|
||||||
RUN go mod verify
|
|
||||||
RUN make build-go
|
RUN make build-go
|
||||||
|
|
||||||
# Final stage
|
FROM ${BASE_IMAGE} as tgz-builder
|
||||||
FROM alpine:3.15.6
|
|
||||||
|
|
||||||
LABEL maintainer="Grafana team <hello@grafana.com>"
|
WORKDIR /tmp/grafana
|
||||||
|
|
||||||
|
ARG GRAFANA_TGZ="grafana-latest.linux-x64-musl.tar.gz"
|
||||||
|
|
||||||
|
COPY ${GRAFANA_TGZ} /tmp/grafana.tar.gz
|
||||||
|
|
||||||
|
# add -v to make tar print every file it extracts
|
||||||
|
RUN tar x -z -f /tmp/grafana.tar.gz --strip-components=1
|
||||||
|
|
||||||
|
# helpers for COPY --from
|
||||||
|
FROM ${GO_SRC} as go-src
|
||||||
|
FROM ${JS_SRC} as js-src
|
||||||
|
|
||||||
|
# Final stage
|
||||||
|
FROM ${BASE_IMAGE}
|
||||||
|
|
||||||
|
LABEL maintainer="Grafana Labs <hello@grafana.com>"
|
||||||
|
|
||||||
ARG GF_UID="472"
|
ARG GF_UID="472"
|
||||||
ARG GF_GID="0"
|
ARG GF_GID="0"
|
||||||
|
|
||||||
ENV PATH="/usr/share/grafana/bin:$PATH" \
|
ENV PATH="/usr/share/grafana/bin:$PATH" \
|
||||||
GF_PATHS_CONFIG="/etc/grafana/grafana.ini" \
|
GF_PATHS_CONFIG="/etc/grafana/grafana.ini" \
|
||||||
GF_PATHS_DATA="/var/lib/grafana" \
|
GF_PATHS_DATA="/var/lib/grafana" \
|
||||||
GF_PATHS_HOME="/usr/share/grafana" \
|
GF_PATHS_HOME="/usr/share/grafana" \
|
||||||
GF_PATHS_LOGS="/var/log/grafana" \
|
GF_PATHS_LOGS="/var/log/grafana" \
|
||||||
GF_PATHS_PLUGINS="/var/lib/grafana/plugins" \
|
GF_PATHS_PLUGINS="/var/lib/grafana/plugins" \
|
||||||
GF_PATHS_PROVISIONING="/etc/grafana/provisioning"
|
GF_PATHS_PROVISIONING="/etc/grafana/provisioning"
|
||||||
|
|
||||||
WORKDIR $GF_PATHS_HOME
|
WORKDIR $GF_PATHS_HOME
|
||||||
|
|
||||||
RUN apk add --no-cache ca-certificates bash tzdata musl-utils
|
# Install dependencies
|
||||||
RUN apk info -vv | sort
|
RUN if grep -i -q alpine /etc/issue; then \
|
||||||
|
apk add --no-cache ca-certificates bash tzdata musl-utils && \
|
||||||
|
apk info -vv | sort; \
|
||||||
|
elif grep -i -q ubuntu /etc/issue; then \
|
||||||
|
DEBIAN_FRONTEND=noninteractive && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y ca-certificates curl tzdata musl && \
|
||||||
|
apt-get autoremove -y && \
|
||||||
|
rm -rf /var/lib/apt/lists/*; \
|
||||||
|
else \
|
||||||
|
echo 'ERROR: Unsupported base image' && /bin/false; \
|
||||||
|
fi
|
||||||
|
|
||||||
COPY conf ./conf
|
# glibc support for alpine x86_64 only
|
||||||
|
RUN if grep -i -q alpine /etc/issue && [ `arch` = "x86_64" ]; then \
|
||||||
|
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
|
||||||
|
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-2.35-r0.apk \
|
||||||
|
-O /tmp/glibc-2.35-r0.apk && \
|
||||||
|
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-bin-2.35-r0.apk \
|
||||||
|
-O /tmp/glibc-bin-2.35-r0.apk && \
|
||||||
|
apk add --force-overwrite --no-cache /tmp/glibc-2.35-r0.apk /tmp/glibc-bin-2.35-r0.apk && \
|
||||||
|
rm -f /lib64/ld-linux-x86-64.so.2 && \
|
||||||
|
ln -s /usr/glibc-compat/lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2 && \
|
||||||
|
rm -f /tmp/glibc-2.35-r0.apk && \
|
||||||
|
rm -f /tmp/glibc-bin-2.35-r0.apk && \
|
||||||
|
rm -f /lib/ld-linux-x86-64.so.2 && \
|
||||||
|
rm -f /etc/ld.so.cache; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
COPY --from=go-src /tmp/grafana/conf ./conf
|
||||||
|
|
||||||
RUN if [ ! $(getent group "$GF_GID") ]; then \
|
RUN if [ ! $(getent group "$GF_GID") ]; then \
|
||||||
addgroup -S -g $GF_GID grafana; \
|
if grep -i -q alpine /etc/issue; then \
|
||||||
fi
|
addgroup -S -g $GF_GID grafana; \
|
||||||
|
else \
|
||||||
|
addgroup --system --gid $GF_GID grafana; \
|
||||||
|
fi; \
|
||||||
|
fi && \
|
||||||
|
GF_GID_NAME=$(getent group $GF_GID | cut -d':' -f1) && \
|
||||||
|
mkdir -p "$GF_PATHS_HOME/.aws" && \
|
||||||
|
if grep -i -q alpine /etc/issue; then \
|
||||||
|
adduser -S -u $GF_UID -G "$GF_GID_NAME" grafana; \
|
||||||
|
else \
|
||||||
|
adduser --system --uid $GF_UID --ingroup "$GF_GID_NAME" grafana; \
|
||||||
|
fi && \
|
||||||
|
mkdir -p "$GF_PATHS_PROVISIONING/datasources" \
|
||||||
|
"$GF_PATHS_PROVISIONING/dashboards" \
|
||||||
|
"$GF_PATHS_PROVISIONING/notifiers" \
|
||||||
|
"$GF_PATHS_PROVISIONING/plugins" \
|
||||||
|
"$GF_PATHS_PROVISIONING/access-control" \
|
||||||
|
"$GF_PATHS_PROVISIONING/alerting" \
|
||||||
|
"$GF_PATHS_LOGS" \
|
||||||
|
"$GF_PATHS_PLUGINS" \
|
||||||
|
"$GF_PATHS_DATA" && \
|
||||||
|
cp conf/sample.ini "$GF_PATHS_CONFIG" && \
|
||||||
|
cp conf/ldap.toml /etc/grafana/ldap.toml && \
|
||||||
|
chown -R "grafana:$GF_GID_NAME" "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING" && \
|
||||||
|
chmod -R 777 "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING"
|
||||||
|
|
||||||
RUN export GF_GID_NAME=$(getent group $GF_GID | cut -d':' -f1) && \
|
COPY --from=go-src /tmp/grafana/bin/grafana* /tmp/grafana/bin/*/grafana* ./bin/
|
||||||
mkdir -p "$GF_PATHS_HOME/.aws" && \
|
COPY --from=js-src /tmp/grafana/public ./public
|
||||||
adduser -S -u $GF_UID -G "$GF_GID_NAME" grafana && \
|
COPY --from=go-src /tmp/grafana/LICENSE ./
|
||||||
mkdir -p "$GF_PATHS_PROVISIONING/datasources" \
|
|
||||||
"$GF_PATHS_PROVISIONING/dashboards" \
|
|
||||||
"$GF_PATHS_PROVISIONING/notifiers" \
|
|
||||||
"$GF_PATHS_PROVISIONING/plugins" \
|
|
||||||
"$GF_PATHS_PROVISIONING/access-control" \
|
|
||||||
"$GF_PATHS_PROVISIONING/alerting" \
|
|
||||||
"$GF_PATHS_LOGS" \
|
|
||||||
"$GF_PATHS_PLUGINS" \
|
|
||||||
"$GF_PATHS_DATA" && \
|
|
||||||
cp "$GF_PATHS_HOME/conf/sample.ini" "$GF_PATHS_CONFIG" && \
|
|
||||||
cp "$GF_PATHS_HOME/conf/ldap.toml" /etc/grafana/ldap.toml && \
|
|
||||||
chown -R "grafana:$GF_GID_NAME" "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING" && \
|
|
||||||
chmod -R 777 "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING"
|
|
||||||
|
|
||||||
COPY --from=go-builder /grafana/bin/*/grafana-server /grafana/bin/*/grafana-cli ./bin/
|
|
||||||
COPY --from=js-builder /grafana/public ./public
|
|
||||||
COPY --from=js-builder /grafana/tools ./tools
|
|
||||||
|
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|
||||||
COPY ./packaging/docker/run.sh /run.sh
|
ARG RUN_SH=./packaging/docker/run.sh
|
||||||
|
|
||||||
USER grafana
|
COPY ${RUN_SH} /run.sh
|
||||||
|
|
||||||
|
USER "$GF_UID"
|
||||||
ENTRYPOINT [ "/run.sh" ]
|
ENTRYPOINT [ "/run.sh" ]
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ COPY emails emails
|
|||||||
ENV NODE_ENV production
|
ENV NODE_ENV production
|
||||||
RUN yarn build
|
RUN yarn build
|
||||||
|
|
||||||
FROM golang:1.19.3 AS go-builder
|
FROM golang:1.19.4 AS go-builder
|
||||||
|
|
||||||
WORKDIR /src/grafana
|
WORKDIR /src/grafana
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ RUN mkdir -p "$GF_PATHS_HOME/.aws" && \
|
|||||||
chown -R grafana:grafana "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING" && \
|
chown -R grafana:grafana "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING" && \
|
||||||
chmod -R 777 "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING"
|
chmod -R 777 "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING"
|
||||||
|
|
||||||
COPY --from=go-builder /src/grafana/bin/*/grafana-server /src/grafana/bin/*/grafana-cli bin/
|
COPY --from=go-builder /src/grafana/bin/*/grafana-server /src/grafana/bin/*/grafana-cli /grafana/bin/*/grafana bin/
|
||||||
COPY --from=js-builder /usr/src/app/public public
|
COPY --from=js-builder /usr/src/app/public public
|
||||||
COPY --from=js-builder /usr/src/app/tools tools
|
COPY --from=js-builder /usr/src/app/tools tools
|
||||||
|
|
||||||
|
|||||||
17
Makefile
17
Makefile
@@ -7,7 +7,7 @@ WIRE_TAGS = "oss"
|
|||||||
-include local/Makefile
|
-include local/Makefile
|
||||||
include .bingo/Variables.mk
|
include .bingo/Variables.mk
|
||||||
|
|
||||||
.PHONY: all deps-go deps-js deps build-go build-server build-cli build-js build build-docker-full build-docker-full-ubuntu lint-go golangci-lint test-go test-js gen-ts test run run-frontend clean devenv devenv-down protobuf drone help gen-go gen-cue
|
.PHONY: all deps-go deps-js deps build-go build-backend build-server build-cli build-js build build-docker-full build-docker-full-ubuntu lint-go golangci-lint test-go test-js gen-ts test run run-frontend clean devenv devenv-down protobuf drone help gen-go gen-cue
|
||||||
|
|
||||||
GO = go
|
GO = go
|
||||||
GO_FILES ?= ./pkg/...
|
GO_FILES ?= ./pkg/...
|
||||||
@@ -82,6 +82,10 @@ build-go: $(MERGED_SPEC_TARGET) gen-go ## Build all Go binaries.
|
|||||||
@echo "build go files"
|
@echo "build go files"
|
||||||
$(GO) run build.go $(GO_BUILD_FLAGS) build
|
$(GO) run build.go $(GO_BUILD_FLAGS) build
|
||||||
|
|
||||||
|
build-backend: ## Build Grafana backend.
|
||||||
|
@echo "build backend"
|
||||||
|
$(GO) run build.go $(GO_BUILD_FLAGS) build-backend
|
||||||
|
|
||||||
build-server: ## Build Grafana server.
|
build-server: ## Build Grafana server.
|
||||||
@echo "build server"
|
@echo "build server"
|
||||||
$(GO) run build.go $(GO_BUILD_FLAGS) build-server
|
$(GO) run build.go $(GO_BUILD_FLAGS) build-server
|
||||||
@@ -154,12 +158,17 @@ shellcheck: $(SH_FILES) ## Run checks for shell scripts.
|
|||||||
|
|
||||||
build-docker-full: ## Build Docker image for development.
|
build-docker-full: ## Build Docker image for development.
|
||||||
@echo "build docker container"
|
@echo "build docker container"
|
||||||
docker build --tag grafana/grafana:dev .
|
DOCKER_BUILDKIT=1 \
|
||||||
|
docker build \
|
||||||
|
--tag grafana/grafana:dev .
|
||||||
|
|
||||||
build-docker-full-ubuntu: ## Build Docker image based on Ubuntu for development.
|
build-docker-full-ubuntu: ## Build Docker image based on Ubuntu for development.
|
||||||
@echo "build docker container"
|
@echo "build docker container"
|
||||||
docker build --tag grafana/grafana:dev-ubuntu -f ./Dockerfile.ubuntu .
|
DOCKER_BUILDKIT=1 \
|
||||||
|
docker build \
|
||||||
|
--build-arg BASE_IMAGE=ubuntu:20.04 \
|
||||||
|
--build-arg GO_IMAGE=golang:1.20.4 \
|
||||||
|
--tag grafana/grafana:dev-ubuntu .
|
||||||
|
|
||||||
##@ Services
|
##@ Services
|
||||||
|
|
||||||
|
|||||||
@@ -470,6 +470,9 @@ sigv4_verbose_logging = false
|
|||||||
# Set to true to enable Azure authentication option for HTTP-based datasources
|
# Set to true to enable Azure authentication option for HTTP-based datasources
|
||||||
azure_auth_enabled = false
|
azure_auth_enabled = false
|
||||||
|
|
||||||
|
# Use email lookup in addition to the unique ID provided by the IdP
|
||||||
|
oauth_allow_insecure_email_lookup = false
|
||||||
|
|
||||||
#################################### Anonymous Auth ######################
|
#################################### Anonymous Auth ######################
|
||||||
[auth.anonymous]
|
[auth.anonymous]
|
||||||
# enable anonymous access
|
# enable anonymous access
|
||||||
@@ -907,7 +910,8 @@ max_attempts = 3
|
|||||||
min_interval = 10s
|
min_interval = 10s
|
||||||
|
|
||||||
[unified_alerting.screenshots]
|
[unified_alerting.screenshots]
|
||||||
# Enable screenshots in notifications. This option requires the Grafana Image Renderer plugin.
|
# Enable screenshots in notifications. You must have either installed the Grafana image rendering
|
||||||
|
# plugin, or set up Grafana to use a remote rendering service.
|
||||||
# For more information on configuration options, refer to [rendering].
|
# For more information on configuration options, refer to [rendering].
|
||||||
capture = false
|
capture = false
|
||||||
|
|
||||||
@@ -1256,6 +1260,8 @@ license_path =
|
|||||||
# enable = feature1,feature2
|
# enable = feature1,feature2
|
||||||
enable =
|
enable =
|
||||||
|
|
||||||
|
internationalization = true
|
||||||
|
|
||||||
# feature1 = true
|
# feature1 = true
|
||||||
# feature2 = false
|
# feature2 = false
|
||||||
|
|
||||||
@@ -1341,3 +1347,14 @@ index_update_interval = 10s
|
|||||||
# Move a specific app plugin page (referenced by its `path` field) to a specific navigation section
|
# Move a specific app plugin page (referenced by its `path` field) to a specific navigation section
|
||||||
# Format: <Page URL> = <Section ID> <Sort Weight>
|
# Format: <Page URL> = <Section ID> <Sort Weight>
|
||||||
[navigation.app_standalone_pages]
|
[navigation.app_standalone_pages]
|
||||||
|
|
||||||
|
|
||||||
|
#################################### Secure Socks5 Datasource Proxy #####################################
|
||||||
|
[secure_socks_datasource_proxy]
|
||||||
|
enabled = false
|
||||||
|
root_ca_cert =
|
||||||
|
client_key =
|
||||||
|
client_cert =
|
||||||
|
server_name =
|
||||||
|
# The address of the socks5 proxy datasources should connect to
|
||||||
|
proxy_address =
|
||||||
@@ -23,7 +23,7 @@ apiVersion: 1
|
|||||||
# # evaluation - should be obtained via the API
|
# # evaluation - should be obtained via the API
|
||||||
# data:
|
# data:
|
||||||
# - refId: A
|
# - refId: A
|
||||||
# datasourceUid: "-100"
|
# datasourceUid: "__expr__"
|
||||||
# model:
|
# model:
|
||||||
# conditions:
|
# conditions:
|
||||||
# - evaluator:
|
# - evaluator:
|
||||||
@@ -40,7 +40,7 @@ apiVersion: 1
|
|||||||
# type: query
|
# type: query
|
||||||
# datasource:
|
# datasource:
|
||||||
# type: __expr__
|
# type: __expr__
|
||||||
# uid: "-100"
|
# uid: "__expr__"
|
||||||
# expression: 1==0
|
# expression: 1==0
|
||||||
# intervalMs: 1000
|
# intervalMs: 1000
|
||||||
# maxDataPoints: 43200
|
# maxDataPoints: 43200
|
||||||
|
|||||||
@@ -388,7 +388,7 @@
|
|||||||
# Set this value to automatically add new users to the provided organization (if auto_assign_org above is set to true)
|
# Set this value to automatically add new users to the provided organization (if auto_assign_org above is set to true)
|
||||||
;auto_assign_org_id = 1
|
;auto_assign_org_id = 1
|
||||||
|
|
||||||
# Default role new users will be automatically assigned (if disabled above is set to true)
|
# Default role new users will be automatically assigned (if auto_assign_org above is set to true)
|
||||||
;auto_assign_org_role = Viewer
|
;auto_assign_org_role = Viewer
|
||||||
|
|
||||||
# Require email validation before sign up completes
|
# Require email validation before sign up completes
|
||||||
@@ -471,6 +471,9 @@
|
|||||||
# Set to true to enable Azure authentication option for HTTP-based datasources.
|
# Set to true to enable Azure authentication option for HTTP-based datasources.
|
||||||
;azure_auth_enabled = false
|
;azure_auth_enabled = false
|
||||||
|
|
||||||
|
# Use email lookup in addition to the unique ID provided by the IdP
|
||||||
|
;oauth_allow_insecure_email_lookup = false
|
||||||
|
|
||||||
#################################### Anonymous Auth ######################
|
#################################### Anonymous Auth ######################
|
||||||
[auth.anonymous]
|
[auth.anonymous]
|
||||||
# enable anonymous access
|
# enable anonymous access
|
||||||
@@ -1269,3 +1272,13 @@
|
|||||||
[navigation.app_standalone_pages]
|
[navigation.app_standalone_pages]
|
||||||
# The following will move the page with the path "/a/my-app-id/starred-content" from `my-app-id` to the `starred` section
|
# The following will move the page with the path "/a/my-app-id/starred-content" from `my-app-id` to the `starred` section
|
||||||
# /a/my-app-id/starred-content = starred
|
# /a/my-app-id/starred-content = starred
|
||||||
|
|
||||||
|
#################################### Secure Socks5 Datasource Proxy #####################################
|
||||||
|
[secure_socks_datasource_proxy]
|
||||||
|
; enabled = false
|
||||||
|
; root_ca_cert =
|
||||||
|
; client_key =
|
||||||
|
; client_cert =
|
||||||
|
; server_name =
|
||||||
|
# The address of the socks5 proxy datasources should connect to
|
||||||
|
; proxy_address =
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ We recommend using [Homebrew](https://brew.sh/) for installing any missing depen
|
|||||||
```
|
```
|
||||||
brew install git
|
brew install git
|
||||||
brew install go
|
brew install go
|
||||||
brew install node@16
|
brew install node@18
|
||||||
npm install -g yarn
|
npm install -g yarn
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ The following checklist/summary should give you a quick overview of what to ask/
|
|||||||
- Reviewed and approved?
|
- Reviewed and approved?
|
||||||
- All checks passed?
|
- All checks passed?
|
||||||
- Proper pull request title?
|
- Proper pull request title?
|
||||||
- Milestone assigned?
|
|
||||||
- Add to changelog/release notes?
|
- Add to changelog/release notes?
|
||||||
- Needs backporting?
|
- Needs backporting?
|
||||||
|
|
||||||
@@ -40,10 +39,18 @@ See [formatting guidelines](create-pull-request.md#formatting-guidelines) for mo
|
|||||||
|
|
||||||
### Assign a milestone
|
### Assign a milestone
|
||||||
|
|
||||||
A milestone **should** be added to every pull request. Several things in the Grafana release process requires at least pull requests to be in a milestone, for example [generating changelog/release notes](#include-in-changelog-and-release-notes).
|
Several things in the Grafana release process requires at least pull requests to be in a milestone, for example [generating changelog/release notes](#include-in-changelog-and-release-notes).
|
||||||
|
|
||||||
This makes it easier to track what changes go into a certain release. Without this information, release managers have to go through git commits which is not an efficient process.
|
This makes it easier to track what changes go into a certain release. Without this information, release managers have to go through git commits which is not an efficient process.
|
||||||
|
|
||||||
|
That being said, _you don't have to assign a milestone manually_ to a pull request.
|
||||||
|
Instead, when it is merged & closed then a bot will look for the most appropriate miletone and assign it to the pull request.
|
||||||
|
|
||||||
|
That milestone should always reflect the branch that the pull request is merged into.
|
||||||
|
For every major and minor release there is a milestone ending with `.x` (e.g. `10.0.x` for the 10.0.x releases).
|
||||||
|
Pull requests targetting `main` should use the `.x` milestone of the next minor (or major) version (you can find that version number inside the `package.json` file).
|
||||||
|
Backport pull requestss should use the version of the target branch (e.g. `9.4.x` for the `v9.4.x` branch).
|
||||||
|
|
||||||
### Include in changelog and release notes?
|
### Include in changelog and release notes?
|
||||||
|
|
||||||
At Grafana we generate the [changelog](https://github.com/grafana/grafana/blob/main/CHANGELOG.md) and [release notes](https://grafana.com/docs/grafana/latest/release-notes/) based on merged pull requests. Including changes in the changelog/release notes is very important to provide a somewhat complete picture of what changes a Grafana release actually includes.
|
At Grafana we generate the [changelog](https://github.com/grafana/grafana/blob/main/CHANGELOG.md) and [release notes](https://grafana.com/docs/grafana/latest/release-notes/) based on merged pull requests. Including changes in the changelog/release notes is very important to provide a somewhat complete picture of what changes a Grafana release actually includes.
|
||||||
@@ -78,15 +85,15 @@ The changelog/release notes are divided into sections and here's a description o
|
|||||||
|
|
||||||
**Features and enhancements:**
|
**Features and enhancements:**
|
||||||
|
|
||||||
Milestone assigned and labeled with `add to changelog` and any of the other section rules don't apply.
|
Labeled with `add to changelog` and any of the other section rules don't apply.
|
||||||
|
|
||||||
**Bug fixes:**
|
**Bug fixes:**
|
||||||
|
|
||||||
Milestone assigned and labeled with `add to changelog` and either labeled with `type/bug` or the pull request title contains `fix` or `fixes`.
|
Labeled with `add to changelog` and either labeled with `type/bug` or the pull request title contains `fix` or `fixes`.
|
||||||
|
|
||||||
**Plugin development fixes & changes:**
|
**Plugin development fixes & changes:**
|
||||||
|
|
||||||
Milestone assigned and labeled with `area/grafana/toolkit`, `area/grafana/ui` or `area/grafana/runtime`.
|
Labeled with `area/grafana/toolkit`, `area/grafana/ui` or `area/grafana/runtime`.
|
||||||
|
|
||||||
**Deprecations:**
|
**Deprecations:**
|
||||||
|
|
||||||
@@ -135,6 +142,14 @@ Some examples when backport is not required:
|
|||||||
|
|
||||||
- The change is supposed to be released in the next major/minor release, e.g. v8.0.0, but the release branch, e.g. v8.0.x, has not yet been created.
|
- The change is supposed to be released in the next major/minor release, e.g. v8.0.0, but the release branch, e.g. v8.0.x, has not yet been created.
|
||||||
|
|
||||||
|
#### Required labels
|
||||||
|
|
||||||
|
To ensure that we don't backport pull requests that don't need to be backported, i.e. implement new features, and only backport pull requests that address bugs, have a product approval, or refer to docs changes, backport labels need to be followed by either:
|
||||||
|
|
||||||
|
- `type/bug` label: Pull requests which address bugs,
|
||||||
|
- `product-approved` label: Urgent fixes which need product approval, in order to get merged,
|
||||||
|
- `type/docs` label: Docs changes`.
|
||||||
|
|
||||||
> **Note:** You can still backport a pull request after it's been merged.
|
> **Note:** You can still backport a pull request after it's been merged.
|
||||||
|
|
||||||
## Doing the actual merge
|
## Doing the actual merge
|
||||||
|
|||||||
@@ -24,7 +24,6 @@
|
|||||||
"editable": true,
|
"editable": true,
|
||||||
"fiscalYearStartMonth": 0,
|
"fiscalYearStartMonth": 0,
|
||||||
"graphTooltip": 0,
|
"graphTooltip": 0,
|
||||||
"id": 61,
|
|
||||||
"links": [
|
"links": [
|
||||||
{
|
{
|
||||||
"asDropdown": true,
|
"asDropdown": true,
|
||||||
@@ -49,6 +48,8 @@
|
|||||||
"mode": "palette-classic"
|
"mode": "palette-classic"
|
||||||
},
|
},
|
||||||
"custom": {
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
"axisLabel": "",
|
"axisLabel": "",
|
||||||
"axisPlacement": "auto",
|
"axisPlacement": "auto",
|
||||||
"barAlignment": 0,
|
"barAlignment": 0,
|
||||||
@@ -105,7 +106,8 @@
|
|||||||
"legend": {
|
"legend": {
|
||||||
"calcs": [],
|
"calcs": [],
|
||||||
"displayMode": "list",
|
"displayMode": "list",
|
||||||
"placement": "bottom"
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"mode": "single",
|
"mode": "single",
|
||||||
@@ -157,6 +159,8 @@
|
|||||||
"mode": "palette-classic"
|
"mode": "palette-classic"
|
||||||
},
|
},
|
||||||
"custom": {
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
"axisLabel": "",
|
"axisLabel": "",
|
||||||
"axisPlacement": "auto",
|
"axisPlacement": "auto",
|
||||||
"barAlignment": 0,
|
"barAlignment": 0,
|
||||||
@@ -214,7 +218,8 @@
|
|||||||
"legend": {
|
"legend": {
|
||||||
"calcs": [],
|
"calcs": [],
|
||||||
"displayMode": "list",
|
"displayMode": "list",
|
||||||
"placement": "bottom"
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"mode": "single",
|
"mode": "single",
|
||||||
@@ -274,6 +279,8 @@
|
|||||||
"mode": "palette-classic"
|
"mode": "palette-classic"
|
||||||
},
|
},
|
||||||
"custom": {
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
"axisLabel": "",
|
"axisLabel": "",
|
||||||
"axisPlacement": "auto",
|
"axisPlacement": "auto",
|
||||||
"barAlignment": 0,
|
"barAlignment": 0,
|
||||||
@@ -331,7 +338,8 @@
|
|||||||
"legend": {
|
"legend": {
|
||||||
"calcs": [],
|
"calcs": [],
|
||||||
"displayMode": "list",
|
"displayMode": "list",
|
||||||
"placement": "bottom"
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"mode": "single",
|
"mode": "single",
|
||||||
@@ -410,6 +418,8 @@
|
|||||||
"mode": "palette-classic"
|
"mode": "palette-classic"
|
||||||
},
|
},
|
||||||
"custom": {
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
"axisLabel": "",
|
"axisLabel": "",
|
||||||
"axisPlacement": "auto",
|
"axisPlacement": "auto",
|
||||||
"barAlignment": 0,
|
"barAlignment": 0,
|
||||||
@@ -466,7 +476,8 @@
|
|||||||
"legend": {
|
"legend": {
|
||||||
"calcs": [],
|
"calcs": [],
|
||||||
"displayMode": "list",
|
"displayMode": "list",
|
||||||
"placement": "bottom"
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"mode": "single",
|
"mode": "single",
|
||||||
@@ -518,6 +529,8 @@
|
|||||||
"mode": "palette-classic"
|
"mode": "palette-classic"
|
||||||
},
|
},
|
||||||
"custom": {
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
"axisLabel": "",
|
"axisLabel": "",
|
||||||
"axisPlacement": "auto",
|
"axisPlacement": "auto",
|
||||||
"barAlignment": 0,
|
"barAlignment": 0,
|
||||||
@@ -575,7 +588,8 @@
|
|||||||
"legend": {
|
"legend": {
|
||||||
"calcs": [],
|
"calcs": [],
|
||||||
"displayMode": "list",
|
"displayMode": "list",
|
||||||
"placement": "bottom"
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"mode": "single",
|
"mode": "single",
|
||||||
@@ -635,6 +649,8 @@
|
|||||||
"mode": "palette-classic"
|
"mode": "palette-classic"
|
||||||
},
|
},
|
||||||
"custom": {
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
"axisLabel": "",
|
"axisLabel": "",
|
||||||
"axisPlacement": "auto",
|
"axisPlacement": "auto",
|
||||||
"barAlignment": 0,
|
"barAlignment": 0,
|
||||||
@@ -692,7 +708,8 @@
|
|||||||
"legend": {
|
"legend": {
|
||||||
"calcs": [],
|
"calcs": [],
|
||||||
"displayMode": "list",
|
"displayMode": "list",
|
||||||
"placement": "bottom"
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"mode": "single",
|
"mode": "single",
|
||||||
@@ -771,6 +788,8 @@
|
|||||||
"mode": "palette-classic"
|
"mode": "palette-classic"
|
||||||
},
|
},
|
||||||
"custom": {
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
"axisLabel": "",
|
"axisLabel": "",
|
||||||
"axisPlacement": "auto",
|
"axisPlacement": "auto",
|
||||||
"barAlignment": 0,
|
"barAlignment": 0,
|
||||||
@@ -859,7 +878,8 @@
|
|||||||
"calcs": [],
|
"calcs": [],
|
||||||
"displayMode": "list",
|
"displayMode": "list",
|
||||||
"isVisible": true,
|
"isVisible": true,
|
||||||
"placement": "bottom"
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"mode": "single",
|
"mode": "single",
|
||||||
@@ -914,6 +934,8 @@
|
|||||||
"mode": "palette-classic"
|
"mode": "palette-classic"
|
||||||
},
|
},
|
||||||
"custom": {
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
"axisLabel": "",
|
"axisLabel": "",
|
||||||
"axisPlacement": "auto",
|
"axisPlacement": "auto",
|
||||||
"barAlignment": 0,
|
"barAlignment": 0,
|
||||||
@@ -1002,7 +1024,8 @@
|
|||||||
"calcs": [],
|
"calcs": [],
|
||||||
"displayMode": "list",
|
"displayMode": "list",
|
||||||
"isVisible": true,
|
"isVisible": true,
|
||||||
"placement": "bottom"
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"mode": "single",
|
"mode": "single",
|
||||||
@@ -1058,6 +1081,8 @@
|
|||||||
"mode": "palette-classic"
|
"mode": "palette-classic"
|
||||||
},
|
},
|
||||||
"custom": {
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
"axisLabel": "",
|
"axisLabel": "",
|
||||||
"axisPlacement": "auto",
|
"axisPlacement": "auto",
|
||||||
"barAlignment": 0,
|
"barAlignment": 0,
|
||||||
@@ -1113,7 +1138,8 @@
|
|||||||
"legend": {
|
"legend": {
|
||||||
"calcs": [],
|
"calcs": [],
|
||||||
"displayMode": "list",
|
"displayMode": "list",
|
||||||
"placement": "bottom"
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"mode": "single",
|
"mode": "single",
|
||||||
@@ -1163,6 +1189,8 @@
|
|||||||
"mode": "palette-classic"
|
"mode": "palette-classic"
|
||||||
},
|
},
|
||||||
"custom": {
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
"axisLabel": "",
|
"axisLabel": "",
|
||||||
"axisPlacement": "auto",
|
"axisPlacement": "auto",
|
||||||
"barAlignment": 0,
|
"barAlignment": 0,
|
||||||
@@ -1220,7 +1248,8 @@
|
|||||||
"legend": {
|
"legend": {
|
||||||
"calcs": [],
|
"calcs": [],
|
||||||
"displayMode": "list",
|
"displayMode": "list",
|
||||||
"placement": "bottom"
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"mode": "single",
|
"mode": "single",
|
||||||
@@ -1248,6 +1277,8 @@
|
|||||||
"mode": "palette-classic"
|
"mode": "palette-classic"
|
||||||
},
|
},
|
||||||
"custom": {
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
"axisLabel": "",
|
"axisLabel": "",
|
||||||
"axisPlacement": "auto",
|
"axisPlacement": "auto",
|
||||||
"barAlignment": 0,
|
"barAlignment": 0,
|
||||||
@@ -1305,7 +1336,8 @@
|
|||||||
"legend": {
|
"legend": {
|
||||||
"calcs": [],
|
"calcs": [],
|
||||||
"displayMode": "list",
|
"displayMode": "list",
|
||||||
"placement": "bottom"
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"mode": "single",
|
"mode": "single",
|
||||||
@@ -1325,9 +1357,549 @@
|
|||||||
],
|
],
|
||||||
"title": "Always show points between gaps",
|
"title": "Always show points between gaps",
|
||||||
"type": "timeseries"
|
"type": "timeseries"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "PD8C576611E62080A"
|
||||||
|
},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "palette-classic"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
|
"axisLabel": "",
|
||||||
|
"axisPlacement": "auto",
|
||||||
|
"barAlignment": 0,
|
||||||
|
"drawStyle": "line",
|
||||||
|
"fillOpacity": 0,
|
||||||
|
"gradientMode": "none",
|
||||||
|
"hideFrom": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": false,
|
||||||
|
"viz": false
|
||||||
|
},
|
||||||
|
"lineInterpolation": "linear",
|
||||||
|
"lineWidth": 1,
|
||||||
|
"pointSize": 5,
|
||||||
|
"scaleDistribution": {
|
||||||
|
"type": "linear"
|
||||||
|
},
|
||||||
|
"showPoints": "auto",
|
||||||
|
"spanNulls": false,
|
||||||
|
"stacking": {
|
||||||
|
"group": "A",
|
||||||
|
"mode": "none"
|
||||||
|
},
|
||||||
|
"thresholdsStyle": {
|
||||||
|
"mode": "off"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "red",
|
||||||
|
"value": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 11,
|
||||||
|
"w": 24,
|
||||||
|
"x": 0,
|
||||||
|
"y": 30
|
||||||
|
},
|
||||||
|
"id": 18,
|
||||||
|
"maxDataPoints": 150,
|
||||||
|
"options": {
|
||||||
|
"legend": {
|
||||||
|
"calcs": [],
|
||||||
|
"displayMode": "list",
|
||||||
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"mode": "single",
|
||||||
|
"sort": "none"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "PD8C576611E62080A"
|
||||||
|
},
|
||||||
|
"refId": "A",
|
||||||
|
"scenarioId": "csv_metric_values",
|
||||||
|
"stringInput": "100,52,82,50,93,117,97,139,172,152,177,213,237,248,249,275,272,295,339,317,274,272,225,240,214,179,170,161,117,99,79,100,107,147,195,153,144,143,117,76,88,43,65,114,155,170,187,236,214,245,255,260,262,264,268,287,297,310,332,339,303,316,317,330,323,352,383,367,334,306,289,311,269,319,313,350,374,346,391,348,386,352,328,303,298,305,346,323,313,296,274,252,301,337,357,360,383,384,339,332,346,394,428,463,461,476,478,491,522,487,536,547,593,595,614,632,588,594,584,566,529,541,586,621,618,635,682,684,693,648,658,659,628,618,662,638,652,665,673,651,653,675,685,709,749,721,707,750,712,724,734,753,716,694,732,741,694,702,732,746,748,700,707,690,668,659,646,677,688,701,670,625,628,611,587,570,589,621,598,604"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Low density (wide)",
|
||||||
|
"type": "timeseries"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "PD8C576611E62080A"
|
||||||
|
},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "palette-classic"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
|
"axisLabel": "",
|
||||||
|
"axisPlacement": "auto",
|
||||||
|
"barAlignment": 0,
|
||||||
|
"drawStyle": "line",
|
||||||
|
"fillOpacity": 0,
|
||||||
|
"gradientMode": "none",
|
||||||
|
"hideFrom": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": false,
|
||||||
|
"viz": false
|
||||||
|
},
|
||||||
|
"lineInterpolation": "linear",
|
||||||
|
"lineWidth": 1,
|
||||||
|
"pointSize": 5,
|
||||||
|
"scaleDistribution": {
|
||||||
|
"type": "linear"
|
||||||
|
},
|
||||||
|
"showPoints": "auto",
|
||||||
|
"spanNulls": false,
|
||||||
|
"stacking": {
|
||||||
|
"group": "A",
|
||||||
|
"mode": "none"
|
||||||
|
},
|
||||||
|
"thresholdsStyle": {
|
||||||
|
"mode": "off"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "red",
|
||||||
|
"value": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 10,
|
||||||
|
"w": 12,
|
||||||
|
"x": 0,
|
||||||
|
"y": 41
|
||||||
|
},
|
||||||
|
"id": 20,
|
||||||
|
"maxDataPoints": 150,
|
||||||
|
"options": {
|
||||||
|
"legend": {
|
||||||
|
"calcs": [],
|
||||||
|
"displayMode": "list",
|
||||||
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"mode": "single",
|
||||||
|
"sort": "none"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "PD8C576611E62080A"
|
||||||
|
},
|
||||||
|
"refId": "A",
|
||||||
|
"scenarioId": "csv_metric_values",
|
||||||
|
"stringInput": "100,52,82,50,93,117,97,139,172,152,177,213,237,248,249,275,272,295,339,317,274,272,225,240,214,179,170,161,117,99,79,100,107,147,195,153,144,143,117,76,88,43,65,114,155,170,187,236,214,245,255,260,262,264,268,287,297,310,332,339,303,316,317,330,323,352,383,367,334,306,289,311,269,319,313,350,374,346,391,348,386,352,328,303,298,305,346,323,313,296,274,252,301,337,357,360,383,384,339,332,346,394,428,463,461,476,478,491,522,487,536,547,593,595,614,632,588,594,584,566,529,541,586,621,618,635,682,684,693,648,658,659,628,618,662,638,652,665,673,651,653,675,685,709,749,721,707,750,712,724,734,753,716,694,732,741,694,702,732,746,748,700,707,690,668,659,646,677,688,701,670,625,628,611,587,570,589,621,598,604"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Higher density (narrow)",
|
||||||
|
"type": "timeseries"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "PD8C576611E62080A"
|
||||||
|
},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "palette-classic"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
|
"axisLabel": "",
|
||||||
|
"axisPlacement": "auto",
|
||||||
|
"barAlignment": 0,
|
||||||
|
"drawStyle": "line",
|
||||||
|
"fillOpacity": 0,
|
||||||
|
"gradientMode": "none",
|
||||||
|
"hideFrom": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": false,
|
||||||
|
"viz": false
|
||||||
|
},
|
||||||
|
"lineInterpolation": "linear",
|
||||||
|
"lineWidth": 1,
|
||||||
|
"pointSize": 5,
|
||||||
|
"scaleDistribution": {
|
||||||
|
"type": "linear"
|
||||||
|
},
|
||||||
|
"showPoints": "auto",
|
||||||
|
"spanNulls": false,
|
||||||
|
"stacking": {
|
||||||
|
"group": "A",
|
||||||
|
"mode": "none"
|
||||||
|
},
|
||||||
|
"thresholdsStyle": {
|
||||||
|
"mode": "off"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "red",
|
||||||
|
"value": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 10,
|
||||||
|
"w": 12,
|
||||||
|
"x": 12,
|
||||||
|
"y": 41
|
||||||
|
},
|
||||||
|
"id": 22,
|
||||||
|
"maxDataPoints": 150,
|
||||||
|
"options": {
|
||||||
|
"legend": {
|
||||||
|
"calcs": [],
|
||||||
|
"displayMode": "list",
|
||||||
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"mode": "single",
|
||||||
|
"sort": "none"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "PD8C576611E62080A"
|
||||||
|
},
|
||||||
|
"refId": "A",
|
||||||
|
"scenarioId": "csv_metric_values",
|
||||||
|
"stringInput": "100,52,82,50,93,117,97,139,172,152,177,213,237,248,249,275,272,295,339,317,274,272,225,240,214,179,170,161,117,99,79,100,107,147,195,153,144,143,117,76,88,43,65,114,155,170,187,236,214,245,255,260,262,264,268,287,297,310,332,339,303,316,317,330,323,352,383,367,334,306,289,311,269,,,350,,,391,348,386,352,328,303,298,,346,,313,,274,252,301,337,357,360,383,384,339,332,346,394,428,463,461,476,478,491,522,487,536,547,593,595,614,632,588,594,584,566,529,541,586,621,618,635,682,684,693,648,658,659,628,618,,,652,665,673,,,675,,,749,721,707,750,712,724,734,753,716,694,732,741,694,702,732,746,748,700,707,690,668,659,646,677,688,701,670,625,628,611,587,570,589,621,598,604"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Higher density (with gap-point-gap)",
|
||||||
|
"type": "timeseries"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "PD8C576611E62080A"
|
||||||
|
},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "palette-classic"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
|
"axisLabel": "",
|
||||||
|
"axisPlacement": "auto",
|
||||||
|
"barAlignment": 0,
|
||||||
|
"drawStyle": "line",
|
||||||
|
"fillOpacity": 0,
|
||||||
|
"gradientMode": "none",
|
||||||
|
"hideFrom": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": false,
|
||||||
|
"viz": false
|
||||||
|
},
|
||||||
|
"lineInterpolation": "linear",
|
||||||
|
"lineWidth": 1,
|
||||||
|
"pointSize": 5,
|
||||||
|
"scaleDistribution": {
|
||||||
|
"type": "linear"
|
||||||
|
},
|
||||||
|
"showPoints": "auto",
|
||||||
|
"spanNulls": false,
|
||||||
|
"stacking": {
|
||||||
|
"group": "A",
|
||||||
|
"mode": "none"
|
||||||
|
},
|
||||||
|
"thresholdsStyle": {
|
||||||
|
"mode": "off"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "red",
|
||||||
|
"value": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 10,
|
||||||
|
"w": 8,
|
||||||
|
"x": 0,
|
||||||
|
"y": 51
|
||||||
|
},
|
||||||
|
"id": 24,
|
||||||
|
"maxDataPoints": 150,
|
||||||
|
"options": {
|
||||||
|
"legend": {
|
||||||
|
"calcs": [],
|
||||||
|
"displayMode": "list",
|
||||||
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"mode": "single",
|
||||||
|
"sort": "none"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "PD8C576611E62080A"
|
||||||
|
},
|
||||||
|
"refId": "A",
|
||||||
|
"scenarioId": "csv_metric_values",
|
||||||
|
"stringInput": ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Higher density (mostly nulls)",
|
||||||
|
"type": "timeseries"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "PD8C576611E62080A"
|
||||||
|
},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "palette-classic"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
|
"axisLabel": "",
|
||||||
|
"axisPlacement": "auto",
|
||||||
|
"barAlignment": 0,
|
||||||
|
"drawStyle": "line",
|
||||||
|
"fillOpacity": 0,
|
||||||
|
"gradientMode": "none",
|
||||||
|
"hideFrom": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": false,
|
||||||
|
"viz": false
|
||||||
|
},
|
||||||
|
"lineInterpolation": "linear",
|
||||||
|
"lineWidth": 1,
|
||||||
|
"pointSize": 5,
|
||||||
|
"scaleDistribution": {
|
||||||
|
"type": "linear"
|
||||||
|
},
|
||||||
|
"showPoints": "auto",
|
||||||
|
"spanNulls": false,
|
||||||
|
"stacking": {
|
||||||
|
"group": "A",
|
||||||
|
"mode": "none"
|
||||||
|
},
|
||||||
|
"thresholdsStyle": {
|
||||||
|
"mode": "off"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "red",
|
||||||
|
"value": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 10,
|
||||||
|
"w": 8,
|
||||||
|
"x": 8,
|
||||||
|
"y": 51
|
||||||
|
},
|
||||||
|
"id": 26,
|
||||||
|
"maxDataPoints": 150,
|
||||||
|
"options": {
|
||||||
|
"legend": {
|
||||||
|
"calcs": [],
|
||||||
|
"displayMode": "list",
|
||||||
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"mode": "single",
|
||||||
|
"sort": "none"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "PD8C576611E62080A"
|
||||||
|
},
|
||||||
|
"refId": "A",
|
||||||
|
"scenarioId": "csv_metric_values",
|
||||||
|
"stringInput": ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Higher density (mostly nulls, one point)",
|
||||||
|
"type": "timeseries"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "PD8C576611E62080A"
|
||||||
|
},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "palette-classic"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
|
"axisLabel": "",
|
||||||
|
"axisPlacement": "auto",
|
||||||
|
"barAlignment": 0,
|
||||||
|
"drawStyle": "line",
|
||||||
|
"fillOpacity": 0,
|
||||||
|
"gradientMode": "none",
|
||||||
|
"hideFrom": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": false,
|
||||||
|
"viz": false
|
||||||
|
},
|
||||||
|
"lineInterpolation": "linear",
|
||||||
|
"lineWidth": 1,
|
||||||
|
"pointSize": 5,
|
||||||
|
"scaleDistribution": {
|
||||||
|
"type": "linear"
|
||||||
|
},
|
||||||
|
"showPoints": "auto",
|
||||||
|
"spanNulls": false,
|
||||||
|
"stacking": {
|
||||||
|
"group": "A",
|
||||||
|
"mode": "none"
|
||||||
|
},
|
||||||
|
"thresholdsStyle": {
|
||||||
|
"mode": "off"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "red",
|
||||||
|
"value": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 10,
|
||||||
|
"w": 8,
|
||||||
|
"x": 16,
|
||||||
|
"y": 51
|
||||||
|
},
|
||||||
|
"id": 28,
|
||||||
|
"maxDataPoints": 150,
|
||||||
|
"options": {
|
||||||
|
"legend": {
|
||||||
|
"calcs": [],
|
||||||
|
"displayMode": "list",
|
||||||
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"mode": "single",
|
||||||
|
"sort": "none"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "PD8C576611E62080A"
|
||||||
|
},
|
||||||
|
"refId": "A",
|
||||||
|
"scenarioId": "csv_metric_values",
|
||||||
|
"stringInput": "8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Higher density (mostly nulls, no leading/trailing)",
|
||||||
|
"type": "timeseries"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"schemaVersion": 36,
|
"schemaVersion": 37,
|
||||||
"style": "dark",
|
"style": "dark",
|
||||||
"tags": [
|
"tags": [
|
||||||
"gdev",
|
"gdev",
|
||||||
|
|||||||
12
devenv/docker/ha-test-unified-alerting/Dockerfile
Normal file
12
devenv/docker/ha-test-unified-alerting/Dockerfile
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
FROM golang:1.19
|
||||||
|
|
||||||
|
ADD webhook-listener.go /go/src/webhook/webhook-listener.go
|
||||||
|
|
||||||
|
WORKDIR /go/src/webhook
|
||||||
|
|
||||||
|
RUN mkdir /tmp/logs
|
||||||
|
RUN go build -o /bin webhook-listener.go
|
||||||
|
|
||||||
|
ENV PORT 8080
|
||||||
|
|
||||||
|
ENTRYPOINT [ "/bin/webhook-listener" ]
|
||||||
@@ -32,7 +32,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- VIRTUAL_HOST=prometheus.loc
|
- VIRTUAL_HOST=prometheus.loc
|
||||||
ports:
|
ports:
|
||||||
- 909
|
- 9090
|
||||||
nginx-proxy:
|
nginx-proxy:
|
||||||
image: jwilder/nginx-proxy
|
image: jwilder/nginx-proxy
|
||||||
ports:
|
ports:
|
||||||
@@ -43,48 +43,53 @@ services:
|
|||||||
db:
|
db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
grafana1:
|
grafana1:
|
||||||
image: grafana/grafana:dev
|
extends:
|
||||||
volumes:
|
file: ./grafana-service.yml
|
||||||
- ./grafana/provisioning/:/etc/grafana/provisioning/
|
service: grafana
|
||||||
environment:
|
|
||||||
- VIRTUAL_HOST=grafana.loc
|
|
||||||
- GF_FEATURE_TOGGLES_ENABLE=ngalert
|
|
||||||
- GF_UNIFIED_ALERTING_HA_PEERS=ha-test-unified-alerting_grafana2_1:9094,ha-test-unified-alerting_grafana1_1:9094
|
|
||||||
- GF_SERVER_ROOT_URL=http://grafana.loc
|
|
||||||
- GF_DATABASE_NAME=grafana
|
|
||||||
- GF_DATABASE_USER=grafana
|
|
||||||
- GF_DATABASE_PASSWORD=password
|
|
||||||
- GF_DATABASE_TYPE=mysql
|
|
||||||
- GF_DATABASE_HOST=db:3306
|
|
||||||
- GF_DATABASE_MAX_OPEN_CONN=300
|
|
||||||
- GF_SESSION_PROVIDER=mysql
|
|
||||||
- GF_SESSION_PROVIDER_CONFIG=grafana:password@tcp(db:3306)/grafana?allowNativePasswords=true
|
|
||||||
ports:
|
ports:
|
||||||
- 3010:3000
|
- 3010:3000
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
|
||||||
grafana2:
|
grafana2:
|
||||||
image: grafana/grafana:dev
|
extends:
|
||||||
volumes:
|
file: ./grafana-service.yml
|
||||||
- ./grafana/provisioning/:/etc/grafana/provisioning/
|
service: grafana
|
||||||
environment:
|
|
||||||
- VIRTUAL_HOST=grafana.loc
|
|
||||||
- GF_FEATURE_TOGGLES_ENABLE=ngalert
|
|
||||||
- GF_UNIFIED_ALERTING_HA_PEERS=ha-test-unified-alerting_grafana2_1:9094,ha-test-unified-alerting_grafana1_1:9094
|
|
||||||
- GF_SERVER_ROOT_URL=http://grafana.loc
|
|
||||||
- GF_DATABASE_NAME=grafana
|
|
||||||
- GF_DATABASE_USER=grafana
|
|
||||||
- GF_DATABASE_PASSWORD=password
|
|
||||||
- GF_DATABASE_TYPE=mysql
|
|
||||||
- GF_DATABASE_HOST=db:3306
|
|
||||||
- GF_DATABASE_MAX_OPEN_CONN=300
|
|
||||||
- GF_SESSION_PROVIDER=mysql
|
|
||||||
- GF_SESSION_PROVIDER_CONFIG=grafana:password@tcp(db:3306)/grafana?allowNativePasswords=true
|
|
||||||
ports:
|
ports:
|
||||||
- 3020:3000
|
- 3020:3000
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
grafana1:
|
||||||
|
condition: service_healthy
|
||||||
|
grafana3:
|
||||||
|
extends:
|
||||||
|
file: ./grafana-service.yml
|
||||||
|
service: grafana
|
||||||
|
ports:
|
||||||
|
- 3030:3000
|
||||||
|
depends_on:
|
||||||
|
db:
|
||||||
|
condition: service_healthy
|
||||||
|
grafana2:
|
||||||
|
condition: service_healthy
|
||||||
|
grafana4:
|
||||||
|
extends:
|
||||||
|
file: ./grafana-service.yml
|
||||||
|
service: grafana
|
||||||
|
ports:
|
||||||
|
- 3040:3000
|
||||||
|
depends_on:
|
||||||
|
db:
|
||||||
|
condition: service_healthy
|
||||||
|
grafana3:
|
||||||
|
condition: service_healthy
|
||||||
|
webhook:
|
||||||
|
image: webhook-receiver
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
ports:
|
||||||
|
- "18081:8080"
|
||||||
|
volumes:
|
||||||
|
- "./logs/webhook:/tmp/logs:rw"
|
||||||
|
|||||||
23
devenv/docker/ha-test-unified-alerting/grafana-service.yml
Normal file
23
devenv/docker/ha-test-unified-alerting/grafana-service.yml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
services:
|
||||||
|
grafana:
|
||||||
|
image: grafana/grafana-dev:3a22eba17f23b18faa27436ab2f9c3ea977b550b
|
||||||
|
volumes:
|
||||||
|
- ./grafana/provisioning/:/etc/grafana/provisioning/
|
||||||
|
environment:
|
||||||
|
- VIRTUAL_HOST=grafana.loc
|
||||||
|
- GF_FEATURE_TOGGLES_ENABLE=ngalert
|
||||||
|
- GF_UNIFIED_ALERTING_HA_PEERS=ha-test-unified-alerting-grafana2-1:9094,ha-test-unified-alerting-grafana1-1:9094,ha-test-unified-alerting-grafana3-1:9094,ha-test-unified-alerting-grafana4-1:9094
|
||||||
|
- GF_SERVER_ROOT_URL=http://grafana.loc
|
||||||
|
- GF_DATABASE_NAME=grafana
|
||||||
|
- GF_DATABASE_USER=grafana
|
||||||
|
- GF_DATABASE_PASSWORD=password
|
||||||
|
- GF_DATABASE_TYPE=mysql
|
||||||
|
- GF_DATABASE_HOST=db:3306
|
||||||
|
- GF_DATABASE_MAX_OPEN_CONN=300
|
||||||
|
- GF_SESSION_PROVIDER=mysql
|
||||||
|
- GF_SESSION_PROVIDER_CONFIG=grafana:password@tcp(db:3306)/grafana?allowNativePasswords=true
|
||||||
|
healthcheck:
|
||||||
|
test: timeout 10s bash -c ':> /dev/tcp/127.0.0.1/3000' || exit 1
|
||||||
|
interval: 5s
|
||||||
|
timeout: 15s
|
||||||
|
retries: 3
|
||||||
181
devenv/docker/ha-test-unified-alerting/webhook-listener.go
Normal file
181
devenv/docker/ha-test-unified-alerting/webhook-listener.go
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"path"
|
||||||
|
"path/filepath"
|
||||||
|
"sync"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
fingerprints = make(Fingerprints)
|
||||||
|
mu sync.Mutex
|
||||||
|
waitSeconds int
|
||||||
|
logFile bool
|
||||||
|
logFileName = filepath.Join(os.TempDir(), "/logs/webhook-listener.log")
|
||||||
|
dumpDir = filepath.Join(os.TempDir(), "/logs/dumps")
|
||||||
|
)
|
||||||
|
|
||||||
|
type Alert struct {
|
||||||
|
Fingerprint string `json:"fingerprint"`
|
||||||
|
StartsAt time.Time `json:"startsAt"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Data struct {
|
||||||
|
Receiver string `json:"receiver"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
Alerts []Alert `json:"alerts"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fingerprints keeps track of the number of alerts received
|
||||||
|
// by fingerprint and StartsAt time.
|
||||||
|
type Fingerprints map[string]map[time.Time]tracker
|
||||||
|
|
||||||
|
type tracker struct {
|
||||||
|
Updates int `json:"updates"`
|
||||||
|
Statuses []string `json:"statuses"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateFingerprints(v Data) {
|
||||||
|
mu.Lock()
|
||||||
|
defer mu.Unlock()
|
||||||
|
for _, alert := range v.Alerts {
|
||||||
|
m, ok := fingerprints[alert.Fingerprint]
|
||||||
|
if !ok {
|
||||||
|
m = make(map[time.Time]tracker)
|
||||||
|
}
|
||||||
|
|
||||||
|
t, ok := m[alert.StartsAt]
|
||||||
|
if !ok {
|
||||||
|
t = tracker{
|
||||||
|
Updates: 0,
|
||||||
|
Statuses: []string{},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Updates += 1
|
||||||
|
t.Statuses = append(t.Statuses, alert.Status)
|
||||||
|
|
||||||
|
m[alert.StartsAt] = t
|
||||||
|
fingerprints[alert.Fingerprint] = m
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseFlags() {
|
||||||
|
flag.BoolVar(&logFile, "log-file", true, "Whether to log to file")
|
||||||
|
flag.IntVar(&waitSeconds, "wait-seconds", 0, "The number of seconds to wait before sending an HTTP response")
|
||||||
|
flag.Parse()
|
||||||
|
}
|
||||||
|
|
||||||
|
func saveDump(data []byte) {
|
||||||
|
if !logFile {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(data) == 0 {
|
||||||
|
fmt.Println("empty dump - not saving")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ts := time.Now().UnixNano()
|
||||||
|
name := path.Join(dumpDir, fmt.Sprintf("%d.json", ts))
|
||||||
|
for i := 1; i <= 1000; i++ {
|
||||||
|
if _, err := os.Stat(name); os.IsNotExist(err) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
name = path.Join(dumpDir, fmt.Sprintf("%d_%04d.json", ts, i))
|
||||||
|
}
|
||||||
|
log.Printf("saving dump to %s", name)
|
||||||
|
err := os.WriteFile(name, data, os.ModePerm)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("cannot save to file %s: %s\n", name, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
parseFlags()
|
||||||
|
|
||||||
|
_, err := os.Stat(dumpDir)
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
err = os.MkdirAll(dumpDir, os.ModePerm)
|
||||||
|
if err != nil {
|
||||||
|
log.Panicf("can't create directory '%s'", dumpDir)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if logFile {
|
||||||
|
//create your file with desired read/write permissions
|
||||||
|
f, err := os.OpenFile(logFileName, os.O_WRONLY|os.O_CREATE|os.O_APPEND, os.ModePerm)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
log.SetOutput(f)
|
||||||
|
}
|
||||||
|
|
||||||
|
waitDuration := time.Duration(waitSeconds) * time.Second
|
||||||
|
http.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
|
||||||
|
|
||||||
|
writer.WriteHeader(http.StatusOK)
|
||||||
|
writer.Write([]byte(landingPage))
|
||||||
|
})
|
||||||
|
|
||||||
|
http.HandleFunc("/listen", func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
log.Printf("got submission from: %s\n", r.RemoteAddr)
|
||||||
|
b, err := ioutil.ReadAll(r.Body)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
saveDump(b)
|
||||||
|
v := Data{}
|
||||||
|
if err := json.Unmarshal(b, &v); err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Printf("receiver: %s, status: %s\n", v.Receiver, v.Status)
|
||||||
|
updateFingerprints(v)
|
||||||
|
<-time.After(waitDuration)
|
||||||
|
})
|
||||||
|
http.HandleFunc("/fingerprints", func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
b, err := func() ([]byte, error) {
|
||||||
|
mu.Lock()
|
||||||
|
defer mu.Unlock()
|
||||||
|
return json.Marshal(fingerprints)
|
||||||
|
}()
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
w.Header().Add("Content-Type", "application/json")
|
||||||
|
w.Write(b)
|
||||||
|
})
|
||||||
|
log.Println("Listening")
|
||||||
|
log.Printf("Wait Duration %v\n", waitDuration)
|
||||||
|
http.ListenAndServe("0.0.0.0:8080", nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
const landingPage = `
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Webhook listener</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Webhook Listener<h1>
|
||||||
|
|
||||||
|
<p> For setup, please point your webhook configuration to the "/listen" endpoint. </p>
|
||||||
|
<p> For debugging, please use the "/fingerprints" endpoint. </p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
`
|
||||||
@@ -1,27 +1,8 @@
|
|||||||
.PHONY: pull docs docs-quick docs-no-pull docs-test docs-local-static
|
.ONESHELL:
|
||||||
|
.DELETE_ON_ERROR:
|
||||||
|
export SHELL := bash
|
||||||
|
export SHELLOPTS := pipefail:errexit
|
||||||
|
MAKEFLAGS += --warn-undefined-variables
|
||||||
|
MAKEFLAGS += --no-builtin-rule
|
||||||
|
|
||||||
IMAGE = grafana/grafana-docs-dev:latest
|
include docs.mk
|
||||||
CONTENT_PATH = /hugo/content/docs/grafana/next
|
|
||||||
LOCAL_STATIC_PATH = ../../website/static
|
|
||||||
PORT = 3002:3002
|
|
||||||
|
|
||||||
pull:
|
|
||||||
docker pull $(IMAGE)
|
|
||||||
|
|
||||||
docs: pull
|
|
||||||
docker run -v $(shell pwd)/sources:$(CONTENT_PATH):Z -p $(PORT) --rm -it $(IMAGE) /bin/bash -c "make server"
|
|
||||||
|
|
||||||
docs-quick: pull
|
|
||||||
docker run -v $(shell pwd)/sources:$(CONTENT_PATH):Z -p $(PORT) --rm -it $(IMAGE) /bin/bash -c "make server-quick"
|
|
||||||
|
|
||||||
docs-no-pull:
|
|
||||||
docker run -v $(shell pwd)/sources:$(CONTENT_PATH):Z -p $(PORT) --rm -it $(IMAGE) /bin/bash -c "make server"
|
|
||||||
|
|
||||||
docs-test: pull
|
|
||||||
docker run -v $(shell pwd)/sources:$(CONTENT_PATH):Z --rm -it $(IMAGE) /bin/bash -c 'make prod'
|
|
||||||
|
|
||||||
# expects that you have grafana/website checked out in same path as the grafana repo.
|
|
||||||
docs-local-static: pull
|
|
||||||
if [ ! -d "$(LOCAL_STATIC_PATH)" ]; then echo "local path (website project) $(LOCAL_STATIC_PATH) not found"]; exit 1; fi
|
|
||||||
docker run -v $(shell pwd)/sources:$(CONTENT_PATH):Z \
|
|
||||||
-v $(shell pwd)/$(LOCAL_STATIC_PATH):/hugo/static:Z -p $(PORT) --rm -it $(IMAGE)
|
|
||||||
|
|||||||
@@ -1,16 +1,21 @@
|
|||||||
# Building the docs locally
|
# Building the docs locally
|
||||||
|
|
||||||
When you contribute to documentation, it is a good practice to build the docs on your local machine to make sure your changes appear as you expect. This README explains the process for doing that.
|
When you contribute to documentation, it's a good practice to build the docs on your local machine to make sure your changes appear as you expect. This README explains the process for doing that.
|
||||||
|
|
||||||
|
To build a local version, you need to run a process in a Docker container.
|
||||||
|
Grafana periodically updates the Docker image, [`docs-base`](https://hub.docker.com/r/grafana/docs-base), to update the styling of the Docs.
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
Docker >= 2.1.0.3
|
- Docker >= 2.1.0.3
|
||||||
Yarn >= 1.22.4
|
- Yarn >= 1.22.4
|
||||||
|
|
||||||
## Build the doc site
|
## Build the doc site
|
||||||
|
|
||||||
|
First, make sure the Docker daemon is running on your machine. Then, follow these steps:
|
||||||
|
|
||||||
1. On the command line, first change to the docs folder: `cd docs`.
|
1. On the command line, first change to the docs folder: `cd docs`.
|
||||||
1. Run `make docs`. This launches a preview of the website with the current grafana docs at `http://localhost:3002/docs/grafana/next/` which will refresh automatically when changes are made to content in the `sources` directory.
|
1. Run `make docs`. This launches a preview of the website with the current grafana docs at `http://localhost:3002/docs/grafana/latest/` which will refresh automatically when changes are made to content in the `sources` directory.
|
||||||
|
|
||||||
If you have the grafana/website repo checked out in the same directory as the grafana repo, then you can run `make docs-local-static` to use local assets (such as images).
|
If you have the grafana/website repo checked out in the same directory as the grafana repo, then you can run `make docs-local-static` to use local assets (such as images).
|
||||||
|
|
||||||
@@ -52,7 +57,7 @@ To specify different menu text from the page title, use the front matter paramet
|
|||||||
|
|
||||||
### Add images
|
### Add images
|
||||||
|
|
||||||
Images are currently hosted in the grafana/website repo.
|
Please see our help documentation on [Image, diagram, and screenshot guidelines](https://grafana.com/docs/writers-toolkit/writing-guide/image-guidelines/) for comprehensive information.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
117
docs/docs.mk
Normal file
117
docs/docs.mk
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
# The source of this file is https://raw.githubusercontent.com/grafana/writers-toolkit/main/docs/docs.mk.
|
||||||
|
# 4.0.0 (2023-06-06)
|
||||||
|
include variables.mk
|
||||||
|
-include variables.mk.local
|
||||||
|
|
||||||
|
.ONESHELL:
|
||||||
|
.DELETE_ON_ERROR:
|
||||||
|
export SHELL := bash
|
||||||
|
export SHELLOPTS := pipefail:errexit
|
||||||
|
MAKEFLAGS += --warn-undefined-variables
|
||||||
|
MAKEFLAGS += --no-builtin-rule
|
||||||
|
|
||||||
|
.DEFAULT_GOAL: help
|
||||||
|
|
||||||
|
# Adapted from https://www.thapaliya.com/en/writings/well-documented-makefiles/
|
||||||
|
.PHONY: help
|
||||||
|
help: ## Display this help.
|
||||||
|
help:
|
||||||
|
@awk 'BEGIN { \
|
||||||
|
FS = ": ##"; \
|
||||||
|
printf "Usage:\n make <target>\n\nTargets:\n" \
|
||||||
|
} \
|
||||||
|
/^[a-zA-Z0-9_\.\-\/%]+: ##/ { printf " %-15s %s\n", $$1, $$2 }' \
|
||||||
|
$(MAKEFILE_LIST)
|
||||||
|
|
||||||
|
GIT_ROOT := $(shell git rev-parse --show-toplevel)
|
||||||
|
|
||||||
|
PODMAN := $(shell if command -v podman >/dev/null 2>&1; then echo podman; else echo docker; fi)
|
||||||
|
|
||||||
|
ifeq ($(PROJECTS),)
|
||||||
|
$(error "PROJECTS variable must be defined in variables.mk")
|
||||||
|
endif
|
||||||
|
|
||||||
|
# First project is considered the primary one used for doc-validator.
|
||||||
|
PRIMARY_PROJECT := $(subst /,-,$(firstword $(subst :, ,$(firstword $(PROJECTS)))))
|
||||||
|
|
||||||
|
# Name for the container.
|
||||||
|
ifeq ($(origin DOCS_CONTAINER), undefined)
|
||||||
|
export DOCS_CONTAINER := $(PRIMARY_PROJECT)-docs
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Host port to publish container port to.
|
||||||
|
ifeq ($(origin DOCS_HOST_PORT), undefined)
|
||||||
|
export DOCS_HOST_PORT := 3002
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Container image used to perform Hugo build.
|
||||||
|
ifeq ($(origin DOCS_IMAGE), undefined)
|
||||||
|
export DOCS_IMAGE := grafana/docs-base:latest
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Container image used for doc-validator linting.
|
||||||
|
ifeq ($(origin DOC_VALIDATOR_IMAGE), undefined)
|
||||||
|
export DOC_VALIDATOR_IMAGE := grafana/doc-validator:latest
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Container image used for vale linting.
|
||||||
|
ifeq ($(origin VALE_IMAGE), undefined)
|
||||||
|
export VALE_IMAGE := grafana/vale:latest
|
||||||
|
endif
|
||||||
|
|
||||||
|
# PATH-like list of directories within which to find projects.
|
||||||
|
# If all projects are checked out into the same directory, ~/repos/ for example, then the default should work.
|
||||||
|
ifeq ($(origin REPOS_PATH), undefined)
|
||||||
|
export REPOS_PATH := $(realpath $(GIT_ROOT)/..)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# How to treat Hugo relref errors.
|
||||||
|
ifeq ($(origin HUGO_REFLINKSERRORLEVEL), undefined)
|
||||||
|
export HUGO_REFLINKSERRORLEVEL := WARNING
|
||||||
|
endif
|
||||||
|
|
||||||
|
.PHONY: docs-rm
|
||||||
|
docs-rm: ## Remove the docs container.
|
||||||
|
$(PODMAN) rm -f $(DOCS_CONTAINER)
|
||||||
|
|
||||||
|
.PHONY: docs-pull
|
||||||
|
docs-pull: ## Pull documentation base image.
|
||||||
|
$(PODMAN) pull -q $(DOCS_IMAGE)
|
||||||
|
|
||||||
|
make-docs: ## Fetch the latest make-docs script.
|
||||||
|
make-docs:
|
||||||
|
if [[ ! -f "$(PWD)/make-docs" ]]; then
|
||||||
|
echo 'WARN: No make-docs script found in the working directory. Run `make update` to download it.' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
.PHONY: docs
|
||||||
|
docs: ## Serve documentation locally, which includes pulling the latest `DOCS_IMAGE` (default: `grafana/docs-base:latest`) container image. See also `docs-no-pull`.
|
||||||
|
docs: docs-pull make-docs
|
||||||
|
$(PWD)/make-docs $(PROJECTS)
|
||||||
|
|
||||||
|
.PHONY: docs-no-pull
|
||||||
|
docs-no-pull: ## Serve documentation locally without pulling the `DOCS_IMAGE` (default: `grafana/docs-base:latest`) container image.
|
||||||
|
docs-no-pull: make-docs
|
||||||
|
$(PWD)/make-docs $(PROJECTS)
|
||||||
|
|
||||||
|
.PHONY: docs-debug
|
||||||
|
docs-debug: ## Run Hugo web server with debugging enabled. TODO: support all SERVER_FLAGS defined in website Makefile.
|
||||||
|
docs-debug: make-docs
|
||||||
|
WEBSITE_EXEC='hugo server --bind 0.0.0.0 --port 3002 --debug' $(PWD)/make-docs $(PROJECTS)
|
||||||
|
|
||||||
|
.PHONY: doc-validator
|
||||||
|
doc-validator: ## Run doc-validator on the entire docs folder.
|
||||||
|
doc-validator: make-docs
|
||||||
|
DOCS_IMAGE=$(DOC_VALIDATOR_IMAGE) $(PWD)/make-docs $(PROJECTS)
|
||||||
|
|
||||||
|
.PHONY: vale
|
||||||
|
vale: ## Run vale on the entire docs folder.
|
||||||
|
vale: make-docs
|
||||||
|
DOCS_IMAGE=$(VALE_IMAGE) $(PWD)/make-docs $(PROJECTS)
|
||||||
|
|
||||||
|
.PHONY: update
|
||||||
|
update: ## Fetch the latest version of this Makefile and the `make-docs` script from Writers' Toolkit.
|
||||||
|
curl -s -LO https://raw.githubusercontent.com/grafana/writers-toolkit/main/docs/docs.mk
|
||||||
|
curl -s -LO https://raw.githubusercontent.com/grafana/writers-toolkit/main/docs/make-docs
|
||||||
|
chmod +x make-docs
|
||||||
515
docs/make-docs
Executable file
515
docs/make-docs
Executable file
@@ -0,0 +1,515 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# The source of this file is https://raw.githubusercontent.com/grafana/writers-toolkit/main/docs/make-docs.
|
||||||
|
# 4.1.0 (2023-06-16)
|
||||||
|
|
||||||
|
set -ef
|
||||||
|
|
||||||
|
readonly DOCS_CONTAINER="${DOCS_CONTAINER:-make-docs}"
|
||||||
|
readonly DOCS_HOST_PORT="${DOCS_HOST_PORT:-3002}"
|
||||||
|
readonly DOCS_IMAGE="${DOCS_IMAGE:-grafana/docs-base:latest}"
|
||||||
|
|
||||||
|
readonly DOC_VALIDATOR_INCLUDE="${DOC_VALIDATOR_INCLUDE:-.+\.md$}"
|
||||||
|
readonly DOC_VALIDATOR_SKIP_CHECKS="${DOC_VALIDATOR_SKIP_CHECKS:-^image-}"
|
||||||
|
|
||||||
|
readonly HUGO_REFLINKSERRORLEVEL="${HUGO_REFLINKSERRORLEVEL:-WARNING}"
|
||||||
|
readonly VALE_MINALERTLEVEL="${VALE_MINALERTLEVEL:-error}"
|
||||||
|
readonly WEBSITE_EXEC="${WEBSITE_EXEC:-make server-docs}"
|
||||||
|
# If set, the docs-base image will run a prebuild script that sets up Hugo mounts.
|
||||||
|
readonly WEBSITE_MOUNTS="${WEBSITE_MOUNTS:-}"
|
||||||
|
|
||||||
|
PODMAN="$(if command -v podman >/dev/null 2>&1; then echo podman; else echo docker; fi)"
|
||||||
|
|
||||||
|
if ! command -v curl >/dev/null 2>&1; then
|
||||||
|
if ! command -v wget >/dev/null 2>&1; then
|
||||||
|
errr 'either `curl` or `wget` must be installed for this script to work.'
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v "${PODMAN}" >/dev/null 2>&1; then
|
||||||
|
errr 'either `podman` or `docker` must be installed for this script to work.'
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
about() {
|
||||||
|
cat <<EOF
|
||||||
|
Test documentation locally with multiple source repositories.
|
||||||
|
|
||||||
|
The REPOS_PATH environment variable is a colon (:) separated list of paths in which to look for project repositories.
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<EOF
|
||||||
|
Usage:
|
||||||
|
REPOS_PATH=<PATH[:<PATH>...]> $0 [<PROJECT>[:<VERSION>[:<REPO>[:<DIR>]]]...]
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
REPOS_PATH=~/ext/grafana/ $0 writers-toolkit tempo:latest helm-charts/mimir-distributed:latest:mimir:docs/sources/mimir-distributed
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ $# -lt 1 ]; then
|
||||||
|
cat <<EOF >&2
|
||||||
|
ERRR: arguments required but not supplied.
|
||||||
|
|
||||||
|
$(about)
|
||||||
|
|
||||||
|
$(usage)
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
readonly REPOS_PATH="${REPOS_PATH:-$(realpath "$(git rev-parse --show-toplevel)/..")}"
|
||||||
|
|
||||||
|
if [ -z "${REPOS_PATH}" ]; then
|
||||||
|
cat <<EOF >&2
|
||||||
|
ERRR: REPOS_PATH environment variable is required but has not been provided.
|
||||||
|
|
||||||
|
$(usage)
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
SOURCES_as_code='as-code-docs'
|
||||||
|
SOURCES_enterprise_metrics='backend-enterprise'
|
||||||
|
SOURCES_enterprise_metrics_='backend-enterprise'
|
||||||
|
SOURCES_grafana_cloud='website'
|
||||||
|
SOURCES_grafana_cloud_k6='k6-docs'
|
||||||
|
SOURCES_grafana_cloud_data_configuration_integrations='cloud-onboarding'
|
||||||
|
SOURCES_grafana_cloud_frontend_observability_faro_web_sdk='faro-web-sdk'
|
||||||
|
SOURCES_grafana_cloud_machine_learning='machine-learning'
|
||||||
|
SOURCES_helm_charts_mimir_distributed='mimir'
|
||||||
|
SOURCES_helm_charts_tempo_distributed='tempo'
|
||||||
|
SOURCES_opentelemetry='opentelemetry-docs'
|
||||||
|
|
||||||
|
VERSIONS_as_code='UNVERSIONED'
|
||||||
|
VERSIONS_grafana_cloud='UNVERSIONED'
|
||||||
|
VERSIONS_grafana_cloud_k6='UNVERSIONED'
|
||||||
|
VERSIONS_grafana_cloud_data_configuration_integrations='UNVERSIONED'
|
||||||
|
VERSIONS_grafana_cloud_frontend_observability_faro_web_sdk='UNVERSIONED'
|
||||||
|
VERSIONS_grafana_cloud_machine_learning='UNVERSIONED'
|
||||||
|
VERSIONS_opentelemetry='UNVERSIONED'
|
||||||
|
VERSIONS_technical_documentation='UNVERSIONED'
|
||||||
|
VERSIONS_website='UNVERSIONED'
|
||||||
|
VERSIONS_writers_toolkit='UNVERSIONED'
|
||||||
|
|
||||||
|
PATHS_grafana_cloud='content/docs/grafana-cloud'
|
||||||
|
PATHS_helm_charts_mimir_distributed='docs/sources/helm-charts/mimir-distributed'
|
||||||
|
PATHS_helm_charts_tempo_distributed='docs/sources/helm-charts/tempo-distributed'
|
||||||
|
PATHS_mimir='docs/sources/mimir'
|
||||||
|
PATHS_tempo='docs/sources/tempo'
|
||||||
|
PATHS_website='content/docs'
|
||||||
|
|
||||||
|
# identifier STR
|
||||||
|
# Replace characters that are not valid in an identifier with underscores.
|
||||||
|
identifier() {
|
||||||
|
echo "$1" | tr -C '[:alnum:]_\n' '_'
|
||||||
|
}
|
||||||
|
|
||||||
|
# aget ARRAY KEY
|
||||||
|
# Get the value of KEY from associative array ARRAY.
|
||||||
|
# Characters that are not valid in an identifier are replaced with underscores.
|
||||||
|
aget() {
|
||||||
|
eval echo '$'"$(identifier "$1")_$(identifier "$2")"
|
||||||
|
}
|
||||||
|
|
||||||
|
# new_proj populates a new project structure.
|
||||||
|
new_proj() {
|
||||||
|
_project="$1"
|
||||||
|
_version="$2"
|
||||||
|
_repo="$3"
|
||||||
|
_path="$4"
|
||||||
|
|
||||||
|
# If version is not set, use the script mapping of project to default versions if it exists.
|
||||||
|
# Fallback to 'latest'.
|
||||||
|
if [ -z "${_version}" ]; then
|
||||||
|
if [ -z "$(aget VERSIONS "${_project}")" ]; then
|
||||||
|
_version=latest
|
||||||
|
else
|
||||||
|
_version="$(aget VERSIONS "${_project}")"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If repo is not set, use the script mapping of project to repo name if it exists.
|
||||||
|
# Fallback to using the project name.
|
||||||
|
if [ -z "${_repo}" ]; then
|
||||||
|
if [ -z "$(aget SOURCES "${_project}")" ]; then
|
||||||
|
_repo="${_project}"
|
||||||
|
else
|
||||||
|
_repo="$(aget SOURCES "${_project}")"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If path is not set, use the script mapping of project to docs sources path if it exists.
|
||||||
|
# Fallback to using 'docs/sources'.
|
||||||
|
if [ -z "${_path}" ]; then
|
||||||
|
if [ -z "$(aget PATHS "${_project}")" ]; then
|
||||||
|
_path="docs/sources"
|
||||||
|
else
|
||||||
|
_path="$(aget PATHS "${_project}")"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "${_project}:${_version}:${_repo}:${_path}"
|
||||||
|
unset _project _version _repo _path
|
||||||
|
}
|
||||||
|
|
||||||
|
# proj_url returns the webserver URL for a project.
|
||||||
|
# It expects a complete project structure as input.
|
||||||
|
proj_url() {
|
||||||
|
IFS=: read -r _project _version _ _ <<POSIX_HERESTRING
|
||||||
|
$1
|
||||||
|
POSIX_HERESTRING
|
||||||
|
|
||||||
|
if [ "${_project}" = 'website' ]; then
|
||||||
|
echo "http://localhost:${DOCS_HOST_PORT}/docs/"
|
||||||
|
|
||||||
|
unset _project _version
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${_version}" ] || [ "${_version}" = 'UNVERSIONED' ]; then
|
||||||
|
echo "http://localhost:${DOCS_HOST_PORT}/docs/${_project}/"
|
||||||
|
else
|
||||||
|
echo "http://localhost:${DOCS_HOST_PORT}/docs/${_project}/${_version}/"
|
||||||
|
fi
|
||||||
|
|
||||||
|
unset _project _version
|
||||||
|
}
|
||||||
|
|
||||||
|
# proj_ver returns the version for a project.
|
||||||
|
# It expects a complete project structure as input.
|
||||||
|
proj_ver() {
|
||||||
|
IFS=: read -r _ _ver _ _ <<POSIX_HERESTRING
|
||||||
|
$1
|
||||||
|
POSIX_HERESTRING
|
||||||
|
|
||||||
|
echo "${_ver}"
|
||||||
|
unset _ver
|
||||||
|
}
|
||||||
|
|
||||||
|
# proj_dst returns the container path to content source for a project.
|
||||||
|
# It expects a complete project structure as input.
|
||||||
|
proj_dst() {
|
||||||
|
IFS=: read -r _project _version _ _ <<POSIX_HERESTRING
|
||||||
|
$1
|
||||||
|
POSIX_HERESTRING
|
||||||
|
|
||||||
|
if [ "${_project}" = 'website' ]; then
|
||||||
|
echo '/hugo/content/docs'
|
||||||
|
|
||||||
|
unset _project _version
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${_version}" ] || [ "${_version}" = 'UNVERSIONED' ]; then
|
||||||
|
echo "/hugo/content/docs/${_project}"
|
||||||
|
else
|
||||||
|
echo "/hugo/content/docs/${_project}/${_version}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
unset _project _version
|
||||||
|
}
|
||||||
|
|
||||||
|
# repo_path returns the host path to the project repository.
|
||||||
|
# It looks for the provided repository name in each of the paths specified in the REPOS_PATH environment variable.
|
||||||
|
repo_path() {
|
||||||
|
_repo="$1"
|
||||||
|
IFS=:
|
||||||
|
for lookup in ${REPOS_PATH}; do
|
||||||
|
if [ -d "${lookup}/${_repo}" ]; then
|
||||||
|
echo "${lookup}/${_repo}"
|
||||||
|
unset _path _repo
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
unset IFS
|
||||||
|
|
||||||
|
errr "could not find project '${_repo}' in any of the paths in REPOS_PATH '${REPOS_PATH}'."
|
||||||
|
note "you must have a checkout of the project '${_repo}' at '${REPOS_PATH##:*}/${_repo}'."
|
||||||
|
note "if you have cloned the repository into a directory with a different name, consider changing it to ${_repo}."
|
||||||
|
|
||||||
|
unset _repo
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# proj_src returns the host path to content source for a project.
|
||||||
|
# It expects a complete project structure as input.
|
||||||
|
# It looks for the provided repository name in each of the paths specified in the REPOS_PATH environment variable.
|
||||||
|
proj_src() {
|
||||||
|
IFS=: read -r _ _ _repo _path <<POSIX_HERESTRING
|
||||||
|
$1
|
||||||
|
POSIX_HERESTRING
|
||||||
|
|
||||||
|
_repo="$(repo_path "${_repo}")"
|
||||||
|
echo "${_repo}/${_path}"
|
||||||
|
|
||||||
|
unset _path _repo
|
||||||
|
}
|
||||||
|
|
||||||
|
# proj_canonical returns the canonical absolute path partial URI for a project.
|
||||||
|
# It expects a complete project structure as input.
|
||||||
|
proj_canonical() {
|
||||||
|
IFS=: read -r _project _version _ _ <<POSIX_HERESTRING
|
||||||
|
$1
|
||||||
|
POSIX_HERESTRING
|
||||||
|
|
||||||
|
if [ "${_project}" = 'website' ]; then
|
||||||
|
echo '/docs'
|
||||||
|
|
||||||
|
unset _project _version
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${_version}" ] || [ "${_version}" = 'UNVERSIONED' ]; then
|
||||||
|
echo "/docs/${_project}"
|
||||||
|
else
|
||||||
|
echo "/docs/${_project}/${_version}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
unset _project _version
|
||||||
|
}
|
||||||
|
|
||||||
|
proj_to_url_src_dst_ver() {
|
||||||
|
_url="$(proj_url "$1")"
|
||||||
|
_src="$(proj_src "$1")"
|
||||||
|
_dst="$(proj_dst "$1")"
|
||||||
|
_ver="$(proj_ver "$1")"
|
||||||
|
|
||||||
|
echo "${_url}^${_src}^${_dst}^${_ver}"
|
||||||
|
unset _url _src _dst _ver
|
||||||
|
}
|
||||||
|
|
||||||
|
url_src_dst_vers() {
|
||||||
|
for arg in "$@"; do
|
||||||
|
IFS=: read -r _project _version _repo _path <<POSIX_HERESTRING
|
||||||
|
$arg
|
||||||
|
POSIX_HERESTRING
|
||||||
|
|
||||||
|
case "${_project}" in
|
||||||
|
# Workaround for arbitrary mounts where the version field is expected to be the local directory
|
||||||
|
# and the repo field is expected to be the container directory.
|
||||||
|
arbitrary)
|
||||||
|
echo "${_project}^${_version}^${_repo}^" # TODO
|
||||||
|
;;
|
||||||
|
logs)
|
||||||
|
proj_to_url_src_dst_ver "$(new_proj loki "${_version}")"
|
||||||
|
proj_to_url_src_dst_ver "$(new_proj enterprise-logs "${_version}")"
|
||||||
|
;;
|
||||||
|
metrics)
|
||||||
|
proj_to_url_src_dst_ver "$(new_proj mimir "${_version}")"
|
||||||
|
proj_to_url_src_dst_ver "$(new_proj helm-charts/mimir-distributed "${_version}")"
|
||||||
|
proj_to_url_src_dst_ver "$(new_proj enterprise-metrics "${_version}")"
|
||||||
|
;;
|
||||||
|
traces)
|
||||||
|
proj_to_url_src_dst_ver "$(new_proj tempo "${_version}")"
|
||||||
|
proj_to_url_src_dst_ver "$(new_proj enterprise-traces "${_version}")"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
proj_to_url_src_dst_ver "$(new_proj "${_project}" "${_version}" "${_repo}" "${_path}")"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
unset _project _version _repo _path
|
||||||
|
}
|
||||||
|
|
||||||
|
await_build() {
|
||||||
|
url="$1"
|
||||||
|
req="$(if command -v curl >/dev/null 2>&1; then echo 'curl -s -o /dev/null'; else echo 'wget -q'; fi)"
|
||||||
|
|
||||||
|
sleep 2
|
||||||
|
|
||||||
|
if ${req} "${url}"; then
|
||||||
|
echo
|
||||||
|
echo "View documentation locally:"
|
||||||
|
for x in ${url_src_dst_vers}; do
|
||||||
|
IFS='^' read -r url _ _ <<POSIX_HERESTRING
|
||||||
|
$x
|
||||||
|
POSIX_HERESTRING
|
||||||
|
|
||||||
|
if [ -n "${url}" ]; then
|
||||||
|
if [ "${_url}" != "arbitrary" ]; then
|
||||||
|
echo " ${url}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo
|
||||||
|
echo 'Press Ctrl+C to stop the server'
|
||||||
|
else
|
||||||
|
echo
|
||||||
|
errr 'The build was interrupted or a build error occurred, check the previous logs for possible causes.'
|
||||||
|
fi
|
||||||
|
|
||||||
|
unset url req
|
||||||
|
}
|
||||||
|
|
||||||
|
debg() {
|
||||||
|
if [ -n "${DEBUG}" ]; then
|
||||||
|
echo "DEBG: $1" >&2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
errr() {
|
||||||
|
echo "ERRR: $1" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
note() {
|
||||||
|
echo "NOTE: $1" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
url_src_dst_vers="$(url_src_dst_vers "$@")"
|
||||||
|
|
||||||
|
volumes=""
|
||||||
|
redirects=""
|
||||||
|
|
||||||
|
for arg in "$@"; do
|
||||||
|
IFS=: read -r _project _ _repo _ <<POSIX_HERESTRING
|
||||||
|
${arg}
|
||||||
|
POSIX_HERESTRING
|
||||||
|
if [ "${_project}" = website ]; then
|
||||||
|
_repo="$(repo_path website)"
|
||||||
|
volumes="--volume=${_repo}/config:/hugo/config"
|
||||||
|
volumes="${volumes} --volume=${_repo}/layouts/partials:/hugo/layouts/partials"
|
||||||
|
volumes="${volumes} --volume=${_repo}/layouts/shortcodes:/hugo/layouts/shortcodes"
|
||||||
|
fi
|
||||||
|
unset _project _repo
|
||||||
|
done
|
||||||
|
|
||||||
|
for x in ${url_src_dst_vers}; do
|
||||||
|
IFS='^' read -r _url _src _dst _ver <<POSIX_HERESTRING
|
||||||
|
$x
|
||||||
|
POSIX_HERESTRING
|
||||||
|
|
||||||
|
if [ "${_url}" != "arbitrary" ]; then
|
||||||
|
if [ ! -f "${_src}/_index.md" ]; then
|
||||||
|
errr "Index file '${_src}/_index.md' does not exist."
|
||||||
|
note "Is '${_src}' the correct source directory?"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
debg "DEBG: Mounting '${_src}' at container path '${_dst}'"
|
||||||
|
|
||||||
|
if [ -z "${volumes}" ]; then
|
||||||
|
volumes="--volume=${_src}:${_dst}"
|
||||||
|
else
|
||||||
|
volumes="${volumes} --volume=${_src}:${_dst}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "${_ver}" ] && [ "${_ver}" != 'UNVERSIONED' ]; then
|
||||||
|
if [ -z "${redirects}" ]; then
|
||||||
|
redirects="${_dst}^${_ver}"
|
||||||
|
else
|
||||||
|
redirects="${redirects} ${_dst}^${_ver}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
unset _url _src _dst _ver
|
||||||
|
done
|
||||||
|
|
||||||
|
IFS=':' read -r image _ <<POSIX_HERESTRING
|
||||||
|
${DOCS_IMAGE}
|
||||||
|
POSIX_HERESTRING
|
||||||
|
|
||||||
|
case "${image}" in
|
||||||
|
'grafana/doc-validator')
|
||||||
|
proj="$(new_proj "$1")"
|
||||||
|
echo
|
||||||
|
"${PODMAN}" run \
|
||||||
|
--init \
|
||||||
|
--interactive \
|
||||||
|
--name "${DOCS_CONTAINER}" \
|
||||||
|
--platform linux/amd64 \
|
||||||
|
--rm \
|
||||||
|
--tty \
|
||||||
|
${volumes} \
|
||||||
|
"${DOCS_IMAGE}" \
|
||||||
|
"--include=${DOC_VALIDATOR_INCLUDE}" \
|
||||||
|
"--skip-checks=${DOC_VALIDATOR_SKIP_CHECKS}" \
|
||||||
|
/hugo/content/docs \
|
||||||
|
"$(proj_canonical "${proj}")" | sed "s#$(proj_dst "${proj}")#sources#"
|
||||||
|
;;
|
||||||
|
'grafana/vale')
|
||||||
|
proj="$(new_proj "$1")"
|
||||||
|
echo
|
||||||
|
"${PODMAN}" run \
|
||||||
|
--init \
|
||||||
|
--interactive \
|
||||||
|
--name "${DOCS_CONTAINER}" \
|
||||||
|
--platform linux/amd64 \
|
||||||
|
--rm \
|
||||||
|
--tty \
|
||||||
|
${volumes} \
|
||||||
|
"${DOCS_IMAGE}" \
|
||||||
|
"--minAlertLevel=${VALE_MINALERTLEVEL}" \
|
||||||
|
--config=/etc/vale/.vale.ini \
|
||||||
|
--output=line \
|
||||||
|
/hugo/content/docs | sed "s#$(proj_dst "${proj}")#sources#"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
tempfile="$(mktemp -t make-docs.XXX)"
|
||||||
|
cat <<EOF >"${tempfile}"
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
for redirect in ${redirects}; do
|
||||||
|
IFS='^' read -r path ver <<<"\${redirect}"
|
||||||
|
echo -e "---\\nredirectURL: \"\${path/\/hugo\/content/}\"\\ntype: redirect\\nversioned: true\\n---\\n" > "\${path/\${ver}/_index.md}"
|
||||||
|
done
|
||||||
|
|
||||||
|
for x in "${url_src_dst_vers}"; do
|
||||||
|
IFS='^' read -r _ _ dst _ <<<"\${x}"
|
||||||
|
|
||||||
|
while [[ -n "\${dst}" ]]; do
|
||||||
|
touch "\${dst}/_index.md"
|
||||||
|
dst="\${dst%/*}"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ -n "${WEBSITE_MOUNTS}" ]]; then
|
||||||
|
unset WEBSITE_SKIP_MOUNTS
|
||||||
|
fi
|
||||||
|
|
||||||
|
${WEBSITE_EXEC}
|
||||||
|
EOF
|
||||||
|
chmod +x "${tempfile}"
|
||||||
|
volumes="${volumes} --volume=$(realpath "${tempfile}"):/entrypoint"
|
||||||
|
readonly volumes
|
||||||
|
|
||||||
|
IFS='' read -r cmd <<EOF
|
||||||
|
${PODMAN} run \
|
||||||
|
--env=HUGO_REFLINKSERRORLEVEL=${HUGO_REFLINKSERRORLEVEL} \
|
||||||
|
--init \
|
||||||
|
--interactive \
|
||||||
|
--name=${DOCS_CONTAINER} \
|
||||||
|
--platform=linux/amd64 \
|
||||||
|
--publish=${DOCS_HOST_PORT}:3002 \
|
||||||
|
--publish=3003:3003 \
|
||||||
|
--rm \
|
||||||
|
--tty \
|
||||||
|
${volumes} \
|
||||||
|
${DOCS_IMAGE} \
|
||||||
|
/entrypoint
|
||||||
|
EOF
|
||||||
|
await_build http://localhost:3002 &
|
||||||
|
|
||||||
|
if [ -n "${DEBUG}" ]; then
|
||||||
|
${cmd}
|
||||||
|
else
|
||||||
|
${cmd} 2>&1| sed \
|
||||||
|
-e '/Web Server is available at http:\/\/localhost:3003\/ (bind address 0.0.0.0)/ d' \
|
||||||
|
-e '/^hugo server/ d' \
|
||||||
|
-e '/fatal: not a git repository (or any parent up to mount point \/)/ d' \
|
||||||
|
-e '/Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)./ d' \
|
||||||
|
-e "/Makefile:[0-9]*: warning: overriding recipe for target 'docs'/ d" \
|
||||||
|
-e "/docs.mk:[0-9]*: warning: ignoring old recipe for target 'docs'/ d" \
|
||||||
|
-e '/\/usr\/bin\/make -j 2 proxy hserver-docs HUGO_PORT=3003/ d' \
|
||||||
|
-e '/website-proxy/ d' \
|
||||||
|
-e '/rm -rf dist*/ d' \
|
||||||
|
-e '/Press Ctrl+C to stop/ d' \
|
||||||
|
-e '/make/ d' || echo
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@@ -1,9 +1,8 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/
|
|
||||||
- /docs/grafana/latest/guides/reference/admin/
|
|
||||||
- /docs/grafana/v1.1/
|
- /docs/grafana/v1.1/
|
||||||
- /docs/grafana/v3.1/
|
- /docs/grafana/v3.1/
|
||||||
|
- guides/reference/admin/
|
||||||
description: Guides, Installation and Feature Documentation
|
description: Guides, Installation and Feature Documentation
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
@@ -41,7 +40,7 @@ title: Grafana documentation
|
|||||||
</div>
|
</div>
|
||||||
<h5>Grafana Cloud</h5>
|
<h5>Grafana Cloud</h5>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://grafana.com/grafana/download" class="nav-cards__item nav-cards__item--install">
|
<a href="https://grafana.com/grafana/nightly?edition=oss" class="nav-cards__item nav-cards__item--install">
|
||||||
<div class="nav-cards__icon fa fa-moon-o">
|
<div class="nav-cards__icon fa fa-moon-o">
|
||||||
</div>
|
</div>
|
||||||
<h5>Nightly builds</h5>
|
<h5>Nightly builds</h5>
|
||||||
@@ -71,8 +70,8 @@ title: Grafana documentation
|
|||||||
<h4>Provisioning</h4>
|
<h4>Provisioning</h4>
|
||||||
<p>Learn how to automate your Grafana configuration.</p>
|
<p>Learn how to automate your Grafana configuration.</p>
|
||||||
</a>
|
</a>
|
||||||
<a href="{{< relref "whatsnew/whats-new-in-v9-2/" >}}" class="nav-cards__item nav-cards__item--guide">
|
<a href="{{< relref "whatsnew/whats-new-in-v9-3/" >}}" class="nav-cards__item nav-cards__item--guide">
|
||||||
<h4>What's new in v9.2</h4>
|
<h4>What's new in v9.3</h4>
|
||||||
<p>Explore the features and enhancements in the latest release.</p>
|
<p>Explore the features and enhancements in the latest release.</p>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
|
||||||
- /docs/grafana/latest/administration/
|
|
||||||
description: Administration
|
description: Administration
|
||||||
title: Administration
|
title: Administration
|
||||||
weight: 40
|
weight: 40
|
||||||
@@ -11,3 +9,5 @@ weight: 40
|
|||||||
This section includes information for Grafana administrators, team administrators, and users performing administrative tasks:
|
This section includes information for Grafana administrators, team administrators, and users performing administrative tasks:
|
||||||
|
|
||||||
{{< section >}}
|
{{< section >}}
|
||||||
|
|
||||||
|
For information about authorization and authentication for your Grafana Cloud Stack and Grafana Cloud Portal, refer to [Grafana Cloud Access Policies](/docs/grafana-cloud/authentication-and-permissions/access-policies/).
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/administration/api-keys/about-api-keys/
|
- about-api-keys/
|
||||||
- /docs/grafana/latest/administration/api-keys/
|
- create-api-key/
|
||||||
- /docs/grafana/latest/administration/api-keys/create-api-key/
|
|
||||||
description: This section contains information about API keys in Grafana
|
description: This section contains information about API keys in Grafana
|
||||||
keywords:
|
keywords:
|
||||||
- API keys
|
- API keys
|
||||||
@@ -48,7 +47,7 @@ This topic shows you how to create an API key using the Grafana UI. You can also
|
|||||||
## Migrate API Keys to Grafana service accounts
|
## Migrate API Keys to Grafana service accounts
|
||||||
|
|
||||||
You can migrate one or all API keys to [Grafana service accounts]({{< relref "../service-accounts/" >}}). When you migrate an API key to a service account, a service account will be created with a service account token.
|
You can migrate one or all API keys to [Grafana service accounts]({{< relref "../service-accounts/" >}}). When you migrate an API key to a service account, a service account will be created with a service account token.
|
||||||
The API key will continue to work, and you can find it in the [Grafana service account tokens]({{< relref "../service-accounts/#service-account-benefits/#service-account-tokens" >}}) details.
|
The API key will continue to work, and you can find it in the [Grafana service account tokens]({{< relref "../service-accounts/#service-account-tokens" >}}) details.
|
||||||
For more information about benefits of service accounts, refer to [Grafana service account benefits]({{< relref "../service-accounts/#service-account-benefits" >}}).
|
For more information about benefits of service accounts, refer to [Grafana service account benefits]({{< relref "../service-accounts/#service-account-benefits" >}}).
|
||||||
|
|
||||||
You can choose to migrate a single API key or all API keys. Note that when you migrate all API keys, you can't create new API keys anymore and will have to use service accounts instead.
|
You can choose to migrate a single API key or all API keys. Note that when you migrate all API keys, you can't create new API keys anymore and will have to use service accounts instead.
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/datasources/add-a-data-source/
|
- ../datasources/add-a-data-source/
|
||||||
- /docs/grafana/latest/datasources/datasource_permissions/
|
- ../datasources/datasource_permissions/
|
||||||
- /docs/grafana/latest/features/datasources/add-a-data-source/
|
- ../enterprise/datasource_permissions/
|
||||||
- /docs/grafana/latest/enterprise/datasource_permissions/
|
- ../enterprise/query-caching/
|
||||||
- /docs/grafana/latest/permissions/datasource_permissions/
|
- ../features/datasources/add-a-data-source/
|
||||||
- /docs/grafana/latest/administration/data-source-management/
|
- ../permissions/datasource_permissions/
|
||||||
- /docs/grafana/latest/enterprise/query-caching/
|
|
||||||
title: Data source management
|
|
||||||
description: Data source management information for Grafana administrators
|
description: Data source management information for Grafana administrators
|
||||||
|
title: Data source management
|
||||||
weight: 100
|
weight: 100
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -27,9 +26,6 @@ Before you can create your first dashboard, you need to add your data source.
|
|||||||
**To add a data source:**
|
**To add a data source:**
|
||||||
|
|
||||||
1. Select the cog icon on the side menu to show the configuration options.
|
1. Select the cog icon on the side menu to show the configuration options.
|
||||||
|
|
||||||
{{< figure src="/static/img/docs/v75/sidemenu-datasource-7-5.png" max-width="150px" class="docs-image--no-shadow">}}
|
|
||||||
|
|
||||||
1. Select **Data sources**.
|
1. Select **Data sources**.
|
||||||
|
|
||||||
This opens the data sources page, which displays a list of previously configured data sources for the Grafana instance.
|
This opens the data sources page, which displays a list of previously configured data sources for the Grafana instance.
|
||||||
@@ -44,9 +40,7 @@ Before you can create your first dashboard, you need to add your data source.
|
|||||||
|
|
||||||
1. Move the cursor over the data source you want to add.
|
1. Move the cursor over the data source you want to add.
|
||||||
|
|
||||||
{{< figure src="/static/img/docs/v75/select-data-source-7-5.png" max-width="700px" class="docs-image--no-shadow">}}
|
1. Click **Select**.
|
||||||
|
|
||||||
1. Select **Select**.
|
|
||||||
|
|
||||||
This opens the data source configuration page.
|
This opens the data source configuration page.
|
||||||
|
|
||||||
@@ -63,8 +57,6 @@ Each data source's configuration includes a permissions page where you can enabl
|
|||||||
|
|
||||||
### Enable data source permissions
|
### Enable data source permissions
|
||||||
|
|
||||||
{{< figure src="/static/img/docs/enterprise/datasource_permissions_enable_still.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" animated-gif="/static/img/docs/enterprise/datasource_permissions_enable.gif" >}}
|
|
||||||
|
|
||||||
By default, data sources in an organization can be queried by any user in that organization. For example, a user with the `Viewer` role can issue any possible query to a data source, not just
|
By default, data sources in an organization can be queried by any user in that organization. For example, a user with the `Viewer` role can issue any possible query to a data source, not just
|
||||||
queries that exist on dashboards they have access to.
|
queries that exist on dashboards they have access to.
|
||||||
|
|
||||||
@@ -82,8 +74,6 @@ When permissions are enabled for a data source in an organization, the user who
|
|||||||
|
|
||||||
### Allow users and teams to query a data source
|
### Allow users and teams to query a data source
|
||||||
|
|
||||||
{{< figure src="/static/img/docs/enterprise/datasource_permissions_add_still.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" animated-gif="/static/img/docs/enterprise/datasource_permissions_add.gif" >}}
|
|
||||||
|
|
||||||
After you have enabled permissions for a data source you can assign query permissions to users and teams which will allow access to query the data source.
|
After you have enabled permissions for a data source you can assign query permissions to users and teams which will allow access to query the data source.
|
||||||
|
|
||||||
**Assign query permission to users and teams:**
|
**Assign query permission to users and teams:**
|
||||||
@@ -98,8 +88,6 @@ After you have enabled permissions for a data source you can assign query permis
|
|||||||
|
|
||||||
### Disable data source permissions
|
### Disable data source permissions
|
||||||
|
|
||||||
{{< figure src="/static/img/docs/enterprise/datasource_permissions_disable_still.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" animated-gif="/static/img/docs/enterprise/datasource_permissions_disable.gif" >}}
|
|
||||||
|
|
||||||
If you have enabled permissions for a data source and want to return data source permissions to the default, then you can disable permissions with a click of a button.
|
If you have enabled permissions for a data source and want to return data source permissions to the default, then you can disable permissions with a click of a button.
|
||||||
|
|
||||||
Note that _all_ existing permissions created for the data source will be deleted.
|
Note that _all_ existing permissions created for the data source will be deleted.
|
||||||
@@ -138,7 +126,7 @@ You can make a panel retrieve fresh data more frequently by increasing the **Max
|
|||||||
|
|
||||||
### Data sources that work with query caching
|
### Data sources that work with query caching
|
||||||
|
|
||||||
Query caching works for all [Enterprise data sources](https://grafana.com/grafana/plugins/?type=datasource&enterprise=1) as well as the following [built-in data sources]({{< relref "../../datasources/" >}}):
|
Query caching works for all [Enterprise data sources](/grafana/plugins/?type=datasource&enterprise=1) as well as the following [built-in data sources]({{< relref "../../datasources/" >}}):
|
||||||
|
|
||||||
- CloudWatch Metrics
|
- CloudWatch Metrics
|
||||||
- Google Cloud Monitoring
|
- Google Cloud Monitoring
|
||||||
@@ -206,7 +194,7 @@ To view available data source plugins, go to the [plugin catalog](/grafana/plugi
|
|||||||
For details about the plugin catalog, refer to [Plugin management]({{< relref "../../administration/plugin-management/" >}}).
|
For details about the plugin catalog, refer to [Plugin management]({{< relref "../../administration/plugin-management/" >}}).
|
||||||
|
|
||||||
You can further filter the plugin catalog's results for data sources provided by the Grafana community, Grafana Labs, and partners.
|
You can further filter the plugin catalog's results for data sources provided by the Grafana community, Grafana Labs, and partners.
|
||||||
If you use [Grafana Enterprise]{{< relref "../../enterprise/" >}}, you can also filter by Enterprise-supported plugins.
|
If you use [Grafana Enterprise]({{< relref "../../introduction/grafana-enterprise/" >}}), you can also filter by Enterprise-supported plugins.
|
||||||
|
|
||||||
For more documentation on a specific data source plugin's features, including its query language and editor, refer to its plugin catalog page.
|
For more documentation on a specific data source plugin's features, including its query language and editor, refer to its plugin catalog page.
|
||||||
|
|
||||||
|
|||||||
@@ -1,20 +1,19 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/enterprise/license/
|
- ../enterprise/activate-license/
|
||||||
- /docs/grafana/latest/enterprise/activate-license/
|
- ../enterprise/license-expiration/
|
||||||
- /docs/grafana/latest/enterprise/license/activate-license/
|
- ../enterprise/license-restrictions/
|
||||||
- /docs/grafana/latest/enterprise/license-expiration/
|
- ../enterprise/license/
|
||||||
- /docs/grafana/latest/enterprise/license/license-expiration/
|
- ../enterprise/license/activate-license/
|
||||||
- /docs/grafana/latest/enterprise/license-restrictions/
|
- ../enterprise/license/license-expiration/
|
||||||
- /docs/grafana/latest/enterprise/license/license-restrictions/
|
- ../enterprise/license/license-restrictions/
|
||||||
- /docs/grafana/latest/administration/enterprise-licensing/
|
- license-restrictions/
|
||||||
- /docs/grafana/latest/administration/enterprise-licensing/license-restrictions/
|
|
||||||
description: Activate and manage a Grafana Enterprise license
|
description: Activate and manage a Grafana Enterprise license
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
- licensing
|
- licensing
|
||||||
- enterprise
|
- enterprise
|
||||||
title: Enterprise licensing
|
title: Grafana Enterprise license
|
||||||
weight: 500
|
weight: 500
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -22,7 +21,7 @@ weight: 500
|
|||||||
|
|
||||||
When you become a Grafana Enterprise customer, you gain access to Grafana's premium observability features, including enterprise data source plugins, reporting, and role-based access control. In order to use these [enhanced features of Grafana Enterprise]({{< relref "../../introduction/grafana-enterprise" >}}), you must purchase and activate a Grafana Enterprise license.
|
When you become a Grafana Enterprise customer, you gain access to Grafana's premium observability features, including enterprise data source plugins, reporting, and role-based access control. In order to use these [enhanced features of Grafana Enterprise]({{< relref "../../introduction/grafana-enterprise" >}}), you must purchase and activate a Grafana Enterprise license.
|
||||||
|
|
||||||
To purchase a license directly from Grafana Labs, [Contact a Grafana Labs representative](https://grafana.com/contact?about=grafana-enterprise). To activate an Enterprise license purchased from Grafana Labs, refer to [Activate an Enterprise license]({{< ref "#activate-an-enterprise-license" >}}).
|
To purchase a license directly from Grafana Labs, [Contact a Grafana Labs representative](/contact?about=grafana-enterprise). To activate an Enterprise license purchased from Grafana Labs, refer to [Activate an Enterprise license]({{< relref "#activate-an-enterprise-license" >}}).
|
||||||
|
|
||||||
You can also purchase a Grafana Enterprise license through the AWS Marketplace. To learn more about activating a license purchased through AWS, refer to [Activate a Grafana Enterprise license purchased through AWS Marketplace]({{< relref "./activate-aws-marketplace-license/" >}}).
|
You can also purchase a Grafana Enterprise license through the AWS Marketplace. To learn more about activating a license purchased through AWS, refer to [Activate a Grafana Enterprise license purchased through AWS Marketplace]({{< relref "./activate-aws-marketplace-license/" >}}).
|
||||||
|
|
||||||
@@ -36,7 +35,7 @@ Follow these steps to activate your Grafana Enterprise license:
|
|||||||
|
|
||||||
To download your Grafana Enterprise license:
|
To download your Grafana Enterprise license:
|
||||||
|
|
||||||
1. Sign in to your [Grafana Cloud](https://grafana.com) account.
|
1. Sign in to your [Grafana Cloud](/) account.
|
||||||
1. Go to **My Account** and select an organization from the drop-down menu at the top left of the page. On the Overview page for each organization, you can see a section for Grafana Enterprise licenses. Click **Details** next to a license.
|
1. Go to **My Account** and select an organization from the drop-down menu at the top left of the page. On the Overview page for each organization, you can see a section for Grafana Enterprise licenses. Click **Details** next to a license.
|
||||||
1. At the bottom of the license details page, select **Download token** to download the `license.jwt` file that contains your license.
|
1. At the bottom of the license details page, select **Download token** to download the `license.jwt` file that contains your license.
|
||||||
|
|
||||||
@@ -81,9 +80,9 @@ environment variable.
|
|||||||
|
|
||||||
### Step 3. Ensure that the license file's root URL matches the root_url configuration option
|
### Step 3. Ensure that the license file's root URL matches the root_url configuration option
|
||||||
|
|
||||||
Update the [`root_url`]({{< relref "../../setup-grafana/configure-grafana/#root-url" >}}) in your configuration. It should be the URL that users type in their browsers to access the frontend, not the node hostname(s).
|
Update the [`root_url`]({{< relref "../../setup-grafana/configure-grafana/#root_url" >}}) in your configuration. It should be the URL that users type in their browsers to access the frontend, not the node hostname(s).
|
||||||
|
|
||||||
This is important, because as part of the validation checks at startup, Grafana compares the license URL to the [`root_url`]({{< relref "../../setup-grafana/configure-grafana/#root-url" >}}) in your configuration.
|
This is important, because as part of the validation checks at startup, Grafana compares the license URL to the [`root_url`]({{< relref "../../setup-grafana/configure-grafana/#root_url" >}}) in your configuration.
|
||||||
|
|
||||||
In your configuration file:
|
In your configuration file:
|
||||||
|
|
||||||
@@ -100,7 +99,7 @@ GF_SERVER_ROOT_URL=https://grafana.example.com/
|
|||||||
|
|
||||||
### Step 4. Restart Grafana
|
### Step 4. Restart Grafana
|
||||||
|
|
||||||
To finalize the installation of Grafana Enterprise, restart Grafana to enable all Grafana Enterprise features. Refer to [restart Grafana]({{< relref "../../setup-grafana/restart-grafana/" >}}) for more information.
|
To finalize the installation of Grafana Enterprise, restart Grafana to enable all Grafana Enterprise features. Refer to [restart Grafana]({{< relref "../../setup-grafana/start-restart-grafana/" >}}) for more information.
|
||||||
|
|
||||||
## License expiration
|
## License expiration
|
||||||
|
|
||||||
@@ -119,10 +118,10 @@ If your license has expired, most of Grafana keeps working as normal. Some enter
|
|||||||
|
|
||||||
The configuration file's location may also be overridden by the `GF_ENTERPRISE_LICENSE_PATH` environment variable.
|
The configuration file's location may also be overridden by the `GF_ENTERPRISE_LICENSE_PATH` environment variable.
|
||||||
|
|
||||||
2. Log in to your [Grafana Cloud Account](https://grafana.com/login) and make sure you're in the correct organization in the dropdown at the top of the page.
|
2. Log in to your [Grafana Cloud Account](/login) and make sure you're in the correct organization in the dropdown at the top of the page.
|
||||||
3. Under the **Grafana Enterprise** section in the menu bar to the left, choose licenses and download the currently valid license with which you want to run Grafana. If you cannot see a valid license on Grafana.com, please contact your account manager at Grafana Labs to renew your subscription.
|
3. Under the **Grafana Enterprise** section in the menu bar to the left, choose licenses and download the currently valid license with which you want to run Grafana. If you cannot see a valid license on Grafana.com, please contact your account manager at Grafana Labs to renew your subscription.
|
||||||
4. Replace the current `license.jwt`-file with the one you've just downloaded.
|
4. Replace the current `license.jwt`-file with the one you've just downloaded.
|
||||||
5. [Restart Grafana]({{< relref "../../setup-grafana/restart-grafana/" >}}).
|
5. [Restart Grafana]({{< relref "../../setup-grafana/start-restart-grafana/" >}}).
|
||||||
|
|
||||||
### If your license expires
|
### If your license expires
|
||||||
|
|
||||||
@@ -222,7 +221,7 @@ Your license is controlled by the following rules:
|
|||||||
|
|
||||||
**License expiration date:** The license includes an expiration date, which is the date when a license becomes inactive.
|
**License expiration date:** The license includes an expiration date, which is the date when a license becomes inactive.
|
||||||
|
|
||||||
As the license expiration date approaches, you will see a banner in Grafana that encourages you to renew. To learn about how to renew your license and what happens in Grafana when a license expires, refer to [License expiration]({{< ref "#license-expiration" >}}).
|
As the license expiration date approaches, you will see a banner in Grafana that encourages you to renew. To learn about how to renew your license and what happens in Grafana when a license expires, refer to [License expiration]({{< relref "#license-expiration" >}}).
|
||||||
|
|
||||||
**Grafana License URL:** Your license does not work with an instance of Grafana with a different root URL.
|
**Grafana License URL:** Your license does not work with an instance of Grafana with a different root URL.
|
||||||
|
|
||||||
@@ -242,6 +241,6 @@ Usage billing involves a contractual agreement between you and Grafana Labs, and
|
|||||||
|
|
||||||
### Request a change to your license
|
### Request a change to your license
|
||||||
|
|
||||||
To increase the number of licensed users within Grafana, extend a license, or change your licensed URL, contact [Grafana support](https://grafana.com/profile/org#support) or your Grafana Labs account team. They will update your license, which you can activate from within Grafana.
|
To increase the number of licensed users within Grafana, extend a license, or change your licensed URL, contact [Grafana support](/profile/org#support) or your Grafana Labs account team. They will update your license, which you can activate from within Grafana.
|
||||||
|
|
||||||
For instructions about how to activate your license after it is updated, refer to [Activate an Enterprise license]({{< ref "#activate-an-enterprise-license" >}}).
|
For instructions about how to activate your license after it is updated, refer to [Activate an Enterprise license]({{< relref "#activate-an-enterprise-license" >}}).
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/enterprise/license/activate-aws-marketplace-license/
|
- ../../enterprise/activate-aws-marketplace-license/about-ge-license-through-aws/
|
||||||
- /docs/grafana/latest/enterprise/activate-aws-marketplace-license/about-ge-license-through-aws/
|
- ../../enterprise/license/activate-aws-marketplace-license/
|
||||||
- /docs/grafana/latest/enterprise/license/activate-aws-marketplace-license/about-ge-license-through-aws/
|
- ../../enterprise/license/activate-aws-marketplace-license/about-ge-license-through-aws/
|
||||||
- /docs/grafana/latest/administration/enterprise-licensing/activate-aws-marketplace-license/
|
description: Activate your Grafana Enterprise license purchased in AWS Marketplace
|
||||||
description: Activate your Grafana Enterprise license purchased in AWS Marketplace to take advantage of Grafana Enterprise observability features
|
to take advantage of Grafana Enterprise observability features
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
- aws
|
- aws
|
||||||
- marketplace
|
- marketplace
|
||||||
- enterprise
|
- enterprise
|
||||||
- license
|
- license
|
||||||
title: Enterprise licenses through AWS Marketplace
|
title: Activate a Grafana Enterprise license purchased through AWS Marketplace
|
||||||
weight: 400
|
weight: 400
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ You can deploy Grafana Enterprise in the following ways:
|
|||||||
|
|
||||||
In each case, you must activate the Grafana Enterprise license purchased in AWS Marketplace to take advantage of Grafana Enterprise observability features. Grafana Enterprise licenses purchased through AWS Marketplace are subject to the same [restrictions]({{< relref "../#license-restrictions" >}}) as Grafana Enterprise licensed purchased directly from Grafana Labs.
|
In each case, you must activate the Grafana Enterprise license purchased in AWS Marketplace to take advantage of Grafana Enterprise observability features. Grafana Enterprise licenses purchased through AWS Marketplace are subject to the same [restrictions]({{< relref "../#license-restrictions" >}}) as Grafana Enterprise licensed purchased directly from Grafana Labs.
|
||||||
|
|
||||||
> To purchase a license directly from Grafana Labs or learn more about other Grafana offerings, [Contact a Grafana Labs representative](https://grafana.com/contact?about=grafana-enterprise).
|
> To purchase a license directly from Grafana Labs or learn more about other Grafana offerings, [Contact a Grafana Labs representative](/contact?about=grafana-enterprise).
|
||||||
|
|
||||||
## Before you begin
|
## Before you begin
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/enterprise/activate-aws-marketplace-license/activate-license-on-ecs/
|
- ../../../enterprise/activate-aws-marketplace-license/activate-license-on-ecs/
|
||||||
- /docs/grafana/latest/enterprise/license/activate-aws-marketplace-license/activate-license-on-ecs/
|
- ../../../enterprise/license/activate-aws-marketplace-license/activate-license-on-ecs/
|
||||||
- /docs/grafana/latest/administration/enterprise-licensing/activate-aws-marketplace-license/activate-license-on-ecs/
|
|
||||||
description: Activate a Grafana Enterprise license from AWS Marketplace on ECS
|
description: Activate a Grafana Enterprise license from AWS Marketplace on ECS
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/enterprise/activate-aws-marketplace-license/activate-license-on-eks/
|
- ../../../enterprise/activate-aws-marketplace-license/activate-license-on-eks/
|
||||||
- /docs/grafana/latest/enterprise/license/activate-aws-marketplace-license/activate-license-on-eks/
|
- ../../../enterprise/license/activate-aws-marketplace-license/activate-license-on-eks/
|
||||||
- /docs/grafana/latest/administration/enterprise-licensing/activate-aws-marketplace-license/activate-license-on-eks/
|
|
||||||
description: Activate a Grafana Enterprise license from AWS Marketplace on EKS
|
description: Activate a Grafana Enterprise license from AWS Marketplace on EKS
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
@@ -122,6 +121,6 @@ To restart Grafana on a Kubernetes cluster,
|
|||||||
|
|
||||||
1. After you update the service, navigate to your Grafana instance, sign in with Grafana Admin credentials, and navigate to the Statistics and Licensing page to validate that your license is active.
|
1. After you update the service, navigate to your Grafana instance, sign in with Grafana Admin credentials, and navigate to the Statistics and Licensing page to validate that your license is active.
|
||||||
|
|
||||||
For more information about restarting Grafana, refer to [Restart Grafana]({{< relref "../../../../setup-grafana/restart-grafana/" >}}).
|
For more information about restarting Grafana, refer to [Restart Grafana]({{< relref "../../../../setup-grafana/start-restart-grafana/" >}}).
|
||||||
|
|
||||||
> If you experience issues when you update the EKS cluster, refer to [Amazon EKS troubleshooting](https://docs.aws.amazon.com/eks/latest/userguide/troubleshooting.html).
|
> If you experience issues when you update the EKS cluster, refer to [Amazon EKS troubleshooting](https://docs.aws.amazon.com/eks/latest/userguide/troubleshooting.html).
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/enterprise/activate-aws-marketplace-license/activate-license-on-instance-outside-aws/
|
- ../../../enterprise/activate-aws-marketplace-license/activate-license-on-instance-outside-aws/
|
||||||
- /docs/grafana/latest/enterprise/license/activate-aws-marketplace-license/activate-license-on-instance-outside-aws/
|
- ../../../enterprise/license/activate-aws-marketplace-license/activate-license-on-instance-outside-aws/
|
||||||
- /docs/grafana/latest/administration/enterprise-licensing/activate-aws-marketplace-license/activate-license-on-instance-outside-aws/
|
|
||||||
description: Activate a Grafana Enterprise license from AWS on an instance deployed
|
description: Activate a Grafana Enterprise license from AWS on an instance deployed
|
||||||
outside of AWS
|
outside of AWS
|
||||||
keywords:
|
keywords:
|
||||||
@@ -128,4 +127,4 @@ Choose one of the following options to update the [license_validation_type]({{<
|
|||||||
|
|
||||||
To activate Grafana Enterprise features, start (or restart) Grafana.
|
To activate Grafana Enterprise features, start (or restart) Grafana.
|
||||||
|
|
||||||
For information about restarting Grafana, refer to [Restart Grafana]({{< relref "../../../../setup-grafana/restart-grafana/" >}}).
|
For information about restarting Grafana, refer to [Restart Grafana]({{< relref "../../../../setup-grafana/start-restart-grafana/" >}}).
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/enterprise/activate-aws-marketplace-license/manage-license-in-aws-marketplace/
|
- ../../../enterprise/activate-aws-marketplace-license/manage-license-in-aws-marketplace/
|
||||||
- /docs/grafana/latest/enterprise/license/activate-aws-marketplace-license/manage-license-in-aws-marketplace/
|
- ../../../enterprise/license/activate-aws-marketplace-license/manage-license-in-aws-marketplace/
|
||||||
- /docs/grafana/latest/administration/enterprise-licensing/activate-aws-marketplace-license/manage-license-in-aws-marketplace/
|
|
||||||
description: Manage your Grafana Enterprise license in AWS Marketplace
|
description: Manage your Grafana Enterprise license in AWS Marketplace
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
@@ -39,4 +38,4 @@ You can use AWS Marketplace to make the following modifications to your Grafana
|
|||||||
|
|
||||||
This action retrieves updated license information from AWS.
|
This action retrieves updated license information from AWS.
|
||||||
|
|
||||||
> To learn more about licensing and active users, refer to [Understanding Grafana Enterprise licensing]({{< relref "../#license-restrictions" >}}).
|
> To learn more about licensing and active users, refer to [Activate a Grafana Enterprise license purchased through AWS Marketplace]({{< relref "../" >}}).
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/enterprise/activate-aws-marketplace-license/transfer-ge-license/
|
- ../../../enterprise/activate-aws-marketplace-license/transfer-ge-license/
|
||||||
- /docs/grafana/latest/enterprise/license/activate-aws-marketplace-license/transfer-ge-license/
|
- ../../../enterprise/license/activate-aws-marketplace-license/transfer-ge-license/
|
||||||
- /docs/grafana/latest/administration/enterprise-licensing/activate-aws-marketplace-license/transfer-ge-license/
|
|
||||||
description: Transfer your AWS Marketplace Grafana Enterprise license
|
description: Transfer your AWS Marketplace Grafana Enterprise license
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/administration/manage-organizations/
|
- ../manage-users/server-admin/
|
||||||
- /docs/grafana/latest/manage-users/server-admin/
|
- ../manage-users/server-admin/server-admin-manage-orgs/
|
||||||
- /docs/grafana/latest/manage-users/server-admin/server-admin-manage-orgs/
|
- manage-organizations/
|
||||||
- /docs/grafana/latest/administration/organization-management/
|
|
||||||
description: Describes how to use organizations to isolate dashboard to users and
|
description: Describes how to use organizations to isolate dashboard to users and
|
||||||
teams.
|
teams.
|
||||||
keywords:
|
keywords:
|
||||||
@@ -60,8 +59,6 @@ Complete this task when you want to view a list of existing organizations.
|
|||||||
|
|
||||||
A list of organizations appears.
|
A list of organizations appears.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Create an organization
|
## Create an organization
|
||||||
|
|
||||||
Create an organization when you want to isolate dashboards and other resources from each other.
|
Create an organization when you want to isolate dashboards and other resources from each other.
|
||||||
@@ -117,5 +114,3 @@ Edit an organization when you want to change its name.
|
|||||||
1. Hover your cursor over the **Server Admin** (shield) icon until a menu appears, and click **Orgs**.
|
1. Hover your cursor over the **Server Admin** (shield) icon until a menu appears, and click **Orgs**.
|
||||||
1. Click the organization you want to edit.
|
1. Click the organization you want to edit.
|
||||||
1. Update the organization name and click **Update**.
|
1. Update the organization name and click **Update**.
|
||||||
|
|
||||||

|
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/administration/preferences/
|
- change-home-dashboard/
|
||||||
- /docs/grafana/latest/administration/preferences/change-grafana-name/
|
- preferences/
|
||||||
- /docs/grafana/latest/administration/preferences/change-grafana-theme/
|
- preferences/change-grafana-name/
|
||||||
- /docs/grafana/latest/administration/preferences/change-grafana-timezone/
|
- preferences/change-grafana-theme/
|
||||||
- /docs/grafana/latest/administration/change-home-dashboard/
|
- preferences/change-grafana-timezone/
|
||||||
- /docs/grafana/latest/administration/preferences/change-home-dashboard/
|
- preferences/change-home-dashboard/
|
||||||
- /docs/grafana/latest/administration/organization-preferences/
|
|
||||||
title: Organization preferences
|
title: Organization preferences
|
||||||
weight: 500
|
weight: 500
|
||||||
---
|
---
|
||||||
@@ -101,7 +100,7 @@ Here is an example of the light theme.
|
|||||||
|
|
||||||
### Change server UI theme
|
### Change server UI theme
|
||||||
|
|
||||||
Grafana server administrators can change the Grafana UI theme for all users on the server by setting the [default_theme]({{< relref "../../setup-grafana/configure-grafana/#default-theme" >}}) option in the Grafana configuration file.
|
As a Grafana server administrator, you can change the default Grafana UI theme for all users who are on the server by setting the [default_theme]({{< relref "../../setup-grafana/configure-grafana/#default_theme" >}}) option in the Grafana configuration file.
|
||||||
|
|
||||||
To see what the current settings are, refer to [View server settings]({{< relref "../stats-and-license#view-server-settings" >}}).
|
To see what the current settings are, refer to [View server settings]({{< relref "../stats-and-license#view-server-settings" >}}).
|
||||||
|
|
||||||
@@ -111,17 +110,18 @@ Organization administrators can change the UI theme for all users in an organiza
|
|||||||
|
|
||||||
1. Hover your cursor over the **Configuration** (gear) icon.
|
1. Hover your cursor over the **Configuration** (gear) icon.
|
||||||
1. Click **Preferences**.
|
1. Click **Preferences**.
|
||||||
1. In the Preferences section, select the **UI theme**.
|
1. In the **Preferences** section, select the **UI theme**.
|
||||||
1. Click **Save**.
|
1. Click **Save**.
|
||||||
|
|
||||||
### Change team UI theme
|
### Change team UI theme
|
||||||
|
|
||||||
Organization and team administrators can change the UI theme for all users in a team.
|
Organization and team administrators can change the UI theme for all users on a team.
|
||||||
|
|
||||||
1. Hover your cursor over the **Configuration** (gear) icon in the side menu.
|
1. Hover your cursor over the **Configuration** (gear) icon in the side menu.
|
||||||
1. Click **Teams**. Grafana displays the team list.
|
1. Click **Teams**. Grafana displays the team list.
|
||||||
1. Click on the team that you want to change the UI theme for and then navigate to the **Settings** tab.
|
1. Click the team for which you want to change the UI theme.
|
||||||
1. In the Preferences section, select the **UI theme**.
|
1. Click **Settings**.
|
||||||
|
1. In the **Preferences** section, select the **UI theme**.
|
||||||
1. Click **Save**.
|
1. Click **Save**.
|
||||||
|
|
||||||
### Change your personal UI theme
|
### Change your personal UI theme
|
||||||
@@ -129,7 +129,7 @@ Organization and team administrators can change the UI theme for all users in a
|
|||||||
You can change the UI theme for your user account. This setting overrides UI theme settings at higher levels.
|
You can change the UI theme for your user account. This setting overrides UI theme settings at higher levels.
|
||||||
|
|
||||||
1. On the left menu, hover your cursor over your avatar and then click **Preferences**.
|
1. On the left menu, hover your cursor over your avatar and then click **Preferences**.
|
||||||
1. In the Preferences section, select the **UI theme**.
|
1. In the **Preferences** section, select the **UI theme**.
|
||||||
1. Click **Save**.
|
1. Click **Save**.
|
||||||
|
|
||||||
## Change the Grafana default timezone
|
## Change the Grafana default timezone
|
||||||
@@ -140,7 +140,7 @@ Some tasks require certain permissions. For more information about roles, refer
|
|||||||
|
|
||||||
### Set server timezone
|
### Set server timezone
|
||||||
|
|
||||||
Grafana server administrators can choose a default timezone for all users on the server by setting the [default_timezone]({{< relref "../../setup-grafana/configure-grafana/#default-timezone" >}}) option in the Grafana configuration file.
|
Grafana server administrators can choose a default timezone for all users on the server by setting the [default_timezone]({{< relref "../../setup-grafana/configure-grafana/#default_timezone" >}}) option in the Grafana configuration file.
|
||||||
|
|
||||||
### Set organization timezone
|
### Set organization timezone
|
||||||
|
|
||||||
@@ -148,17 +148,18 @@ Organization administrators can choose a default timezone for their organization
|
|||||||
|
|
||||||
1. Hover your cursor over the **Configuration** (gear) icon.
|
1. Hover your cursor over the **Configuration** (gear) icon.
|
||||||
1. Click **Preferences**.
|
1. Click **Preferences**.
|
||||||
1. Click to select an option in the **Timezone** list. **Default** is either the browser local timezone or the timezone selected at a higher level. Refer to [Time range controls]({{< relref "../../dashboards/manage-dashboards/#configure-dashboard-time-range-controls" >}}) for more information about Grafana time settings.
|
1. Click to select an option in the **Timezone** list. **Default** is either the browser local timezone or the timezone selected at a higher level.
|
||||||
1. Click **Save**.
|
1. Click **Save**.
|
||||||
|
|
||||||
### Set team timezone
|
### Set team timezone
|
||||||
|
|
||||||
Organization administrators and team administrators can choose a default timezone for all users in a team.
|
Organization administrators and team administrators can choose a default timezone for all users on a team.
|
||||||
|
|
||||||
1. Hover your cursor over the **Configuration** (gear) icon in the side menu.
|
1. Hover your cursor over the **Configuration** (gear) icon in the side menu.
|
||||||
1. Click **Teams**. Grafana displays the team list.
|
1. Click **Teams**. Grafana displays the team list.
|
||||||
1. Click on the team you that you want to change the timezone for and then navigate to the **Settings** tab.
|
1. Click the team for which you want to change the timezone.
|
||||||
1. Click to select an option in the **Timezone** list. **Default** is either the browser local timezone or the timezone selected at a higher level. Refer to [[Time range controls]({{< relref "../../dashboards/manage-dashboards/#configure-dashboard-time-range-controls" >}}) for more information about Grafana time settings.
|
1. Click **Settings**
|
||||||
|
1. Click to select an option in the **Timezone** list. **Default** is either the browser local timezone or the timezone selected at a higher level.
|
||||||
1. Click **Save**.
|
1. Click **Save**.
|
||||||
|
|
||||||
### Set your personal timezone
|
### Set your personal timezone
|
||||||
@@ -166,7 +167,7 @@ Organization administrators and team administrators can choose a default timezon
|
|||||||
You can change the timezone for your user account. This setting overrides timezone settings at higher levels.
|
You can change the timezone for your user account. This setting overrides timezone settings at higher levels.
|
||||||
|
|
||||||
1. On the left menu, hover your cursor over your avatar and then click **Preferences**.
|
1. On the left menu, hover your cursor over your avatar and then click **Preferences**.
|
||||||
1. Click to select an option in the **Timezone** list. **Default** is either the browser local timezone or the timezone selected at a higher level. Refer to [Time range controls]({{< relref "../../dashboards/manage-dashboards/#configure-dashboard-time-range-controls" >}}) for more information about Grafana time settings.
|
1. Click to select an option in the **Timezone** list. **Default** is either the browser local timezone or the timezone selected at a higher level.
|
||||||
1. Click **Save**.
|
1. Click **Save**.
|
||||||
|
|
||||||
## Change the default home dashboard
|
## Change the default home dashboard
|
||||||
@@ -207,7 +208,7 @@ default_home_dashboard_path = data/main-dashboard.json
|
|||||||
|
|
||||||
### Set the home dashboard for your organization
|
### Set the home dashboard for your organization
|
||||||
|
|
||||||
Organization administrators can choose a home dashboard for their organization.
|
Organization administrators can choose a default home dashboard for their organization.
|
||||||
|
|
||||||
1. Navigate to the dashboard you want to set as the home dashboard.
|
1. Navigate to the dashboard you want to set as the home dashboard.
|
||||||
1. Click the star next to the dashboard title to mark the dashboard as a favorite if it is not already.
|
1. Click the star next to the dashboard title to mark the dashboard as a favorite if it is not already.
|
||||||
@@ -218,13 +219,14 @@ Organization administrators can choose a home dashboard for their organization.
|
|||||||
|
|
||||||
### Set home dashboard for your team
|
### Set home dashboard for your team
|
||||||
|
|
||||||
Organization administrators and Team Admins can choose a home dashboard for a team.
|
Organization administrators and Team Admins can set a default home dashboard for all users on a team.
|
||||||
|
|
||||||
1. Navigate to the dashboard you want to set as the home dashboard.
|
1. Navigate to the dashboard you want to set as the home dashboard.
|
||||||
1. Click the star next to the dashboard title to mark the dashboard as a favorite if it is not already.
|
1. Click the star next to the dashboard title to mark the dashboard as a favorite if it is not already.
|
||||||
1. Hover your cursor over the **Configuration** (gear) icon in the side menu.
|
1. Hover your cursor over the **Configuration** (gear) icon in the side menu.
|
||||||
1. Click **Teams**. Grafana displays the team list.
|
1. Click **Teams**. Grafana displays the team list.
|
||||||
1. Click on the team that you want to change the home dashboard for and then navigate to the **Settings** tab.
|
1. Click the team for which you want to change the home dashboard.
|
||||||
|
1. Click **Settings**.
|
||||||
1. In the **Home Dashboard** field, select the dashboard that you want to use for your home dashboard. Options include all starred dashboards.
|
1. In the **Home Dashboard** field, select the dashboard that you want to use for your home dashboard. Options include all starred dashboards.
|
||||||
1. Click **Save**.
|
1. Click **Save**.
|
||||||
|
|
||||||
@@ -237,3 +239,37 @@ You can choose your own personal home dashboard. This setting overrides all home
|
|||||||
1. On the left menu, hover your cursor over your avatar and then click **Preferences**.
|
1. On the left menu, hover your cursor over your avatar and then click **Preferences**.
|
||||||
1. In the **Home Dashboard** field, select the dashboard that you want to use for your home dashboard. Options include all starred dashboards.
|
1. In the **Home Dashboard** field, select the dashboard that you want to use for your home dashboard. Options include all starred dashboards.
|
||||||
1. Click **Save**.
|
1. Click **Save**.
|
||||||
|
|
||||||
|
## Change Grafana language
|
||||||
|
|
||||||
|
### Change server language
|
||||||
|
|
||||||
|
Grafana server administrators can change the default Grafana UI language for all users on the server by setting the [default_language]({{< relref "../../setup-grafana/configure-grafana/#default_language" >}}) option in the Grafana configuration file.
|
||||||
|
|
||||||
|
### Change organization language
|
||||||
|
|
||||||
|
Organization administrators can change the language for all users in an organization.
|
||||||
|
|
||||||
|
1. Hover your cursor over the **Configuration** (gear) icon.
|
||||||
|
1. Click **Preferences**.
|
||||||
|
1. In the **Preferences** section, select the **Language**.
|
||||||
|
1. Click **Save**.
|
||||||
|
|
||||||
|
### Change team language
|
||||||
|
|
||||||
|
Organization and team administrators can set a default language for all users on a team.
|
||||||
|
|
||||||
|
1. Hover your cursor over the **Configuration** (gear) icon in the side menu.
|
||||||
|
1. Click **Teams**. Grafana displays the team list.
|
||||||
|
1. Click the team for which you want to change the language.
|
||||||
|
1. Click **Settings**
|
||||||
|
1. In the **Preferences** section, select the **Language**.
|
||||||
|
1. Click **Save**.
|
||||||
|
|
||||||
|
### Change your personal language
|
||||||
|
|
||||||
|
You can change the language for your user account. This setting overrides language settings at higher levels.
|
||||||
|
|
||||||
|
1. On the left menu, hover your cursor over your avatar and then click **Preferences**.
|
||||||
|
1. In the **Preferences** section, select the **language**.
|
||||||
|
1. Click **Save**.
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/plugins/
|
- ../plugins/
|
||||||
- /docs/grafana/latest/plugins/catalog/
|
- ../plugins/catalog/
|
||||||
- /docs/grafana/latest/plugins/installation/
|
- ../plugins/installation/
|
||||||
- /docs/grafana/latest/plugins/plugin-signature-verification/
|
- ../plugins/plugin-signature-verification/
|
||||||
- /docs/grafana/latest/plugins/plugin-signatures/
|
- ../plugins/plugin-signatures/
|
||||||
- /docs/grafana/latest/administration/plugin-management/
|
|
||||||
title: Plugin management
|
title: Plugin management
|
||||||
weight: 600
|
weight: 600
|
||||||
---
|
---
|
||||||
@@ -14,13 +13,13 @@ weight: 600
|
|||||||
|
|
||||||
Besides the wide range of visualizations and data sources that are available immediately after you install Grafana, you can extend your Grafana experience with _plugins_.
|
Besides the wide range of visualizations and data sources that are available immediately after you install Grafana, you can extend your Grafana experience with _plugins_.
|
||||||
|
|
||||||
You can [install]({{< ref "#install-a-plugin" >}}) one of the plugins built by the Grafana community, or [build one yourself]({{< relref "../../developers/plugins/" >}}).
|
You can [install]({{< relref "#install-a-plugin" >}}) one of the plugins built by the Grafana community, or [build one yourself](https://grafana.com/developers/plugin-tools).
|
||||||
|
|
||||||
Grafana supports three types of plugins: [panels](https://grafana.com/grafana/plugins?type=panel), [data sources](https://grafana.com/grafana/plugins?type=datasource), and [apps](https://grafana.com/grafana/plugins?type=app).
|
Grafana supports three types of plugins: [panels](/grafana/plugins?type=panel), [data sources](/plugins?type=datasource), and [apps](/grafana/plugins?type=app).
|
||||||
|
|
||||||
## Panel plugins
|
## Panel plugins
|
||||||
|
|
||||||
Add new visualizations to your dashboard with panel plugins, such as the [Worldmap Panel](https://grafana.com/grafana/plugins/grafana-worldmap-panel), [Clock](https://grafana.com/grafana/plugins/grafana-clock-panel), and [Pie Chart](https://grafana.com/grafana/plugins/grafana-piechart-panel).
|
Add new visualizations to your dashboard with panel plugins, such as the [Worldmap Panel](/grafana/plugins/grafana-worldmap-panel), [Clock](/grafana/plugins/grafana-clock-panel), and [Pie Chart](/grafana/plugins/grafana-piechart-panel).
|
||||||
|
|
||||||
Use panel plugins when you want to:
|
Use panel plugins when you want to:
|
||||||
|
|
||||||
@@ -30,7 +29,7 @@ Use panel plugins when you want to:
|
|||||||
|
|
||||||
## Data source plugins
|
## Data source plugins
|
||||||
|
|
||||||
Data source plugins add support for new databases, such as [Google BigQuery](https://grafana.com/grafana/plugins/doitintl-bigquery-datasource).
|
Data source plugins add support for new databases, such as [Google BigQuery](/grafana/plugins/doitintl-bigquery-datasource).
|
||||||
|
|
||||||
Data source plugins communicate with external sources of data and return the data in a format that Grafana understands. By adding a data source plugin, you can immediately use the data in any of your existing dashboards.
|
Data source plugins communicate with external sources of data and return the data in a format that Grafana understands. By adding a data source plugin, you can immediately use the data in any of your existing dashboards.
|
||||||
|
|
||||||
@@ -38,7 +37,7 @@ Use data source plugins when you want to import data from external systems.
|
|||||||
|
|
||||||
## App plugins
|
## App plugins
|
||||||
|
|
||||||
Applications, or _app plugins_, bundle data sources and panels to provide a cohesive experience, such as the [Zabbix](https://grafana.com/grafana/plugins/alexanderzobnin-zabbix-app) app.
|
Applications, or _app plugins_, bundle data sources and panels to provide a cohesive experience, such as the [Zabbix](/grafana/plugins/alexanderzobnin-zabbix-app) app.
|
||||||
|
|
||||||
Apps can also add custom pages for things like control panels.
|
Apps can also add custom pages for things like control panels.
|
||||||
|
|
||||||
@@ -88,8 +87,6 @@ To browse for available plugins:
|
|||||||
1. Click the **All** filter to browse all available plugins.
|
1. Click the **All** filter to browse all available plugins.
|
||||||
1. Click the **Data sources**, **Panels**, or **Applications** buttons to filter by plugin type.
|
1. Click the **Data sources**, **Panels**, or **Applications** buttons to filter by plugin type.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### Install a plugin
|
### Install a plugin
|
||||||
|
|
||||||
To install a plugin:
|
To install a plugin:
|
||||||
@@ -101,8 +98,6 @@ To install a plugin:
|
|||||||
|
|
||||||
When the update is complete, you see a confirmation message that the installation was successful.
|
When the update is complete, you see a confirmation message that the installation was successful.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### Update a plugin
|
### Update a plugin
|
||||||
|
|
||||||
To update a plugin:
|
To update a plugin:
|
||||||
@@ -113,8 +108,6 @@ To update a plugin:
|
|||||||
|
|
||||||
When the update is complete, you see a confirmation message that the update was successful.
|
When the update is complete, you see a confirmation message that the update was successful.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### Uninstall a plugin
|
### Uninstall a plugin
|
||||||
|
|
||||||
To uninstall a plugin:
|
To uninstall a plugin:
|
||||||
@@ -125,13 +118,11 @@ To uninstall a plugin:
|
|||||||
|
|
||||||
When the update is complete, you see a confirmation message that the uninstall was successful.
|
When the update is complete, you see a confirmation message that the uninstall was successful.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Install Grafana plugins
|
## Install Grafana plugins
|
||||||
|
|
||||||
Grafana supports data source, panel, and app plugins. Having panels as plugins makes it easy to create and add any kind of panel, to show your data, or improve your favorite dashboards. Apps enable the bundling of data sources, panels, dashboards, and Grafana pages into a cohesive experience.
|
Grafana supports data source, panel, and app plugins. Having panels as plugins makes it easy to create and add any kind of panel, to show your data, or improve your favorite dashboards. Apps enable the bundling of data sources, panels, dashboards, and Grafana pages into a cohesive experience.
|
||||||
|
|
||||||
1. In a web browser, navigate to the official [Grafana Plugins page](https://grafana.com/plugins) and find a plugin that you want to install.
|
1. In a web browser, navigate to the official [Grafana Plugins page](/plugins) and find a plugin that you want to install.
|
||||||
1. Click the plugin, and then click the **Installation** tab.
|
1. Click the plugin, and then click the **Installation** tab.
|
||||||
|
|
||||||
### Install plugin on Grafana Cloud
|
### Install plugin on Grafana Cloud
|
||||||
@@ -148,7 +139,7 @@ Follow the instructions on the Install tab. You can either install the plugin wi
|
|||||||
|
|
||||||
For more information about Grafana CLI plugin commands, refer to [Plugin commands]({{< relref "../../cli/#plugins-commands" >}}).
|
For more information about Grafana CLI plugin commands, refer to [Plugin commands]({{< relref "../../cli/#plugins-commands" >}}).
|
||||||
|
|
||||||
As of Grafana v8.0, a plugin catalog app was introduced in order to make managing plugins easier. For more information, refer to [Plugin catalog]({{< ref "#plugin-catalog" >}}).
|
As of Grafana v8.0, a plugin catalog app was introduced in order to make managing plugins easier. For more information, refer to [Plugin catalog]({{< relref "#plugin-catalog" >}}).
|
||||||
|
|
||||||
#### Install a packaged plugin
|
#### Install a packaged plugin
|
||||||
|
|
||||||
@@ -172,7 +163,7 @@ Grafana also writes an error message to the server log:
|
|||||||
WARN[05-26|12:00:00] Some plugin scanning errors were found errors="plugin '<plugin id>' is unsigned, plugin '<plugin id>' has an invalid signature"
|
WARN[05-26|12:00:00] Some plugin scanning errors were found errors="plugin '<plugin id>' is unsigned, plugin '<plugin id>' has an invalid signature"
|
||||||
```
|
```
|
||||||
|
|
||||||
If you are a plugin developer and want to know how to sign your plugin, refer to [Sign a plugin]({{< relref "../../developers/plugins/sign-a-plugin/" >}}).
|
If you are a plugin developer and want to know how to sign your plugin, refer to [Sign a plugin](https://grafana.com/developers/plugin-tools/publish-a-plugin/sign-a-plugin).
|
||||||
|
|
||||||
| Signature status | Description |
|
| Signature status | Description |
|
||||||
| ------------------ | ------------------------------------------------------------------------------- |
|
| ------------------ | ------------------------------------------------------------------------------- |
|
||||||
@@ -208,4 +199,4 @@ WARN[06-01|16:45:59] Running an unsigned plugin pluginID=<plugin id>
|
|||||||
|
|
||||||
## Learn more
|
## Learn more
|
||||||
|
|
||||||
- Browse the available [Plugins](https://grafana.com/grafana/plugins)
|
- Browse the available [Plugins](/grafana/plugins)
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/administration/provisioning/
|
- ../installation/provisioning/
|
||||||
- /docs/grafana/latest/installation/provisioning/
|
|
||||||
description: Describes provisioning settings for Grafana using configuration files.
|
description: Describes provisioning settings for Grafana using configuration files.
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
@@ -58,7 +57,7 @@ Currently we do not provide any scripts/manifests for configuring Grafana. Rathe
|
|||||||
| --------- | -------------------------------------------------------------------------------------------------------------- |
|
| --------- | -------------------------------------------------------------------------------------------------------------- |
|
||||||
| Puppet | [https://forge.puppet.com/puppet/grafana](https://forge.puppet.com/puppet/grafana) |
|
| Puppet | [https://forge.puppet.com/puppet/grafana](https://forge.puppet.com/puppet/grafana) |
|
||||||
| Ansible | [https://github.com/cloudalchemy/ansible-grafana](https://github.com/cloudalchemy/ansible-grafana) |
|
| Ansible | [https://github.com/cloudalchemy/ansible-grafana](https://github.com/cloudalchemy/ansible-grafana) |
|
||||||
| Chef | [https://github.com/JonathanTron/chef-grafana](https://github.com/JonathanTron/chef-grafana) |
|
| Chef | [https://github.com/sous-chefs/chef-grafana](https://github.com/sous-chefs/chef-grafana) |
|
||||||
| Saltstack | [https://github.com/salt-formulas/salt-formula-grafana](https://github.com/salt-formulas/salt-formula-grafana) |
|
| Saltstack | [https://github.com/salt-formulas/salt-formula-grafana](https://github.com/salt-formulas/salt-formula-grafana) |
|
||||||
| Jsonnet | [https://github.com/grafana/grafonnet-lib/](https://github.com/grafana/grafonnet-lib/) |
|
| Jsonnet | [https://github.com/grafana/grafonnet-lib/](https://github.com/grafana/grafonnet-lib/) |
|
||||||
|
|
||||||
@@ -392,11 +391,11 @@ providers:
|
|||||||
|
|
||||||
## Alerting
|
## Alerting
|
||||||
|
|
||||||
For information on provisioning Grafana Alerting, refer to [Provision Grafana Alerting resources](https://grafana.com/docs/grafana/latest/alerting/set-up/provision-alerting-resources/).
|
For information on provisioning Grafana Alerting, refer to [Provision Grafana Alerting resources]({{< relref "../../alerting/set-up/provision-alerting-resources/" >}}).
|
||||||
|
|
||||||
## Alert Notification Channels
|
## Alert Notification Channels
|
||||||
|
|
||||||
> **Note:** Alert Notification Channels are part of legacy alerting, which is deprecated and will be removed in Grafana 10. Use the Provision contact points section in [Create and manage alerting resources using file provisioning](https://grafana.com/docs/grafana/latest/alerting/set-up/provision-alerting-resources/file-provisioning/).
|
> **Note:** Alert Notification Channels are part of legacy alerting, which is deprecated and will be removed in Grafana 10. Use the Provision contact points section in [Create and manage alerting resources using file provisioning]({{< relref "../../alerting/set-up/provision-alerting-resources/file-provisioning" >}}).
|
||||||
|
|
||||||
Alert Notification Channels can be provisioned by adding one or more YAML config files in the [`provisioning/notifiers`](/administration/configuration/#provisioning) directory.
|
Alert Notification Channels can be provisioned by adding one or more YAML config files in the [`provisioning/notifiers`](/administration/configuration/#provisioning) directory.
|
||||||
|
|
||||||
@@ -643,6 +642,7 @@ The following sections detail the supported settings and secure settings for eac
|
|||||||
|
|
||||||
## Grafana Enterprise
|
## Grafana Enterprise
|
||||||
|
|
||||||
Grafana Enterprise supports provisioning for the following resources:
|
Grafana Enterprise supports:
|
||||||
|
|
||||||
- [Role-based access control provisioning]({{< relref "../roles-and-permissions/access-control/rbac-provisioning/" >}})
|
- [Provisioning role-based access control with Grafana]({{< relref "../roles-and-permissions/access-control/rbac-grafana-provisioning/" >}})
|
||||||
|
- [Provisioning role-based access control with Terraform]({{< relref "../roles-and-permissions/access-control/rbac-terraform-provisioning/" >}})
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/enterprise/recorded-queries/
|
- ../enterprise/recorded-queries/
|
||||||
- /docs/grafana/latest/administration/recorded-queries/
|
|
||||||
description: Grafana Enterprise recorded queries
|
description: Grafana Enterprise recorded queries
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
@@ -24,11 +23,11 @@ For our plugins that do not return time series, it might be useful to plot histo
|
|||||||
|
|
||||||
> **Note:** An administrator must configure a Prometheus data source and associate it with a [Remote write target](#remote-write-target) before recorded queries can be used.
|
> **Note:** An administrator must configure a Prometheus data source and associate it with a [Remote write target](#remote-write-target) before recorded queries can be used.
|
||||||
|
|
||||||
Recorded queries only work with backend data source plugins. Refer to [Backend data source plugin](https://grafana.com/tutorials/build-a-data-source-backend-plugin/) for more information about backend data source plugins. You can recorded three types of queries:
|
Recorded queries only work with backend data source plugins. Refer to [Backend data source plugin](/tutorials/build-a-data-source-backend-plugin/) for more information about backend data source plugins. You can recorded three types of queries:
|
||||||
|
|
||||||
- single row and column - A query that returns a single row and column.
|
- single row and column - A query that returns a single row and column.
|
||||||
- row count - A query that returns meaningful rows to be counted.
|
- row count - A query that returns meaningful rows to be counted.
|
||||||
- expression - Any expression. To learn more about creating and using expressions, see [Expressions](https://grafana.com/docs/grafana/latest/panels/expressions/).
|
- expression - Any expression. To learn more about creating and using expressions, see [Write expression queries]({{< relref "../../panels-visualizations/query-transform-data/expression-queries" >}}).
|
||||||
|
|
||||||
After a recorded query is created or enabled, it immediately creates a snapshot and continues to create snapshots at the set interval. The recorded query stops taking snapshots when it is disabled, deleted, or when Grafana is not running. Data points are gathered in the backend by running the recorded query and forwarding each result to a remote-write enabled Prometheus instance.
|
After a recorded query is created or enabled, it immediately creates a snapshot and continues to create snapshots at the set interval. The recorded query stops taking snapshots when it is disabled, deleted, or when Grafana is not running. Data points are gathered in the backend by running the recorded query and forwarding each result to a remote-write enabled Prometheus instance.
|
||||||
|
|
||||||
@@ -40,7 +39,7 @@ To use a recorded query, create one and add it to a dashboard. After that, it ca
|
|||||||
|
|
||||||
1. Find/create a query you want to record on a dashboard in an edit panel. The query must only return one row and column. If it returns more, you can still record the number of results returned using the “count” option.
|
1. Find/create a query you want to record on a dashboard in an edit panel. The query must only return one row and column. If it returns more, you can still record the number of results returned using the “count” option.
|
||||||
- The query's data source must be a backend data source.
|
- The query's data source must be a backend data source.
|
||||||
- Expressions can be used to aggregate data from a time series query. Refer to [Expressions](https://grafana.com/docs/grafana/latest/panels/expressions/) to learn more about creating and using expressions.
|
- Expressions can be used to aggregate data from a time series query. Refer to [Write expression queries]({{< relref "../../panels-visualizations/query-transform-data/expression-queries" >}}) to learn more about creating and using expressions.
|
||||||
1. Click the record query button located in the top right of the query editor.
|
1. Click the record query button located in the top right of the query editor.
|
||||||
1. Enter recorded query information. All fields are required unless otherwise indicated.
|
1. Enter recorded query information. All fields are required unless otherwise indicated.
|
||||||
- Name - Name of the recorded query.
|
- Name - Name of the recorded query.
|
||||||
@@ -60,7 +59,7 @@ You can add existing recorded queries to panels in a dashboard. For each recorde
|
|||||||
1. If you want to filter recorded queries by data source, select a data source from the filter by data source drop down menu.
|
1. If you want to filter recorded queries by data source, select a data source from the filter by data source drop down menu.
|
||||||
1. Click the `Add` button on your recorded query to add it to the panel.
|
1. Click the `Add` button on your recorded query to add it to the panel.
|
||||||
|
|
||||||
After adding your recorded query to the panel, the panel data source will become `-- Mixed --`. Your recorded query is represented by a `Prometheus` query with a name label matching your recorded query name. Refer to [Prometheus](https://grafana.com/docs/grafana/latest/datasources/prometheus/) to learn more about the `Prometheus` data source.
|
After adding your recorded query to the panel, the panel data source will become `-- Mixed --`. Your recorded query is represented by a `Prometheus` query with a name label matching your recorded query name. Refer to [Prometheus]({{< relref "../../datasources/prometheus/" >}}) to learn more about the `Prometheus` data source.
|
||||||
|
|
||||||
If after adding a recorded query, a query with a `-- Mixed --` data source instead of `Prometheus` data source appears, this could mean that a Prometheus remote write target was not set up for recorded queries. Refer to [Remote write target](#remote-write-target) to set up a remote write point.
|
If after adding a recorded query, a query with a `-- Mixed --` data source instead of `Prometheus` data source appears, this could mean that a Prometheus remote write target was not set up for recorded queries. Refer to [Remote write target](#remote-write-target) to set up a remote write point.
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/about-users-and-permissions/
|
- ../manage-users/
|
||||||
- /docs/grafana/latest/manage-users/
|
- ../permissions/
|
||||||
- /docs/grafana/latest/permissions/
|
- ../permissions/organization_roles/
|
||||||
- /docs/grafana/latest/permissions/organization_roles/
|
- ../permissions/overview/
|
||||||
- /docs/grafana/latest/permissions/overview/
|
- manage-users-and-permissions/about-users-and-permissions/
|
||||||
- /docs/grafana/latest/administration/roles-and-permissions/
|
|
||||||
description: Information about Grafana user, team, and organization roles and permissions
|
description: Information about Grafana user, team, and organization roles and permissions
|
||||||
title: Roles and permissions
|
title: Roles and permissions
|
||||||
weight: 300
|
weight: 300
|
||||||
@@ -27,7 +26,7 @@ You can assign a user one of three types of permissions:
|
|||||||
|
|
||||||
A Grafana server administrator manages server-wide settings and access to resources such as organizations, users, and licenses. Grafana includes a default server administrator that you can use to manage all of Grafana, or you can divide that responsibility among other server administrators that you create.
|
A Grafana server administrator manages server-wide settings and access to resources such as organizations, users, and licenses. Grafana includes a default server administrator that you can use to manage all of Grafana, or you can divide that responsibility among other server administrators that you create.
|
||||||
|
|
||||||
> **Note:** The server administrator role does not mean that the user is also a Grafana [organization administrator]({{< ref "#organization-roles" >}}).
|
> **Note:** The server administrator role does not mean that the user is also a Grafana [organization administrator]({{< relref "#organization-roles" >}}).
|
||||||
|
|
||||||
A server administrator can perform the following tasks:
|
A server administrator can perform the following tasks:
|
||||||
|
|
||||||
@@ -124,7 +123,7 @@ For more information about assigning administrator permissions to editors, refer
|
|||||||
If you have access to the Grafana server, you can modify the default viewer role so that viewers can:
|
If you have access to the Grafana server, you can modify the default viewer role so that viewers can:
|
||||||
|
|
||||||
- Edit and preview dashboards, but cannot save their changes or create new dashboards.
|
- Edit and preview dashboards, but cannot save their changes or create new dashboards.
|
||||||
- Access and use [Explore]({{< ref "/explore" >}}).
|
- Access and use [Explore]({{< relref "../../explore" >}}).
|
||||||
|
|
||||||
Extending the viewer role is useful for public Grafana installations where you want anonymous users to be able to edit panels and queries, but not be able to save or create new dashboards.
|
Extending the viewer role is useful for public Grafana installations where you want anonymous users to be able to edit panels and queries, but not be able to save or create new dashboards.
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/enterprise/access-control/
|
- ../../enterprise/access-control/
|
||||||
- /docs/grafana/latest/enterprise/access-control/
|
- ../../enterprise/access-control/about-rbac/
|
||||||
- /docs/grafana/latest/enterprise/access-control/about-rbac/
|
- ../../enterprise/access-control/roles/
|
||||||
- /docs/grafana/latest/enterprise/access-control/roles/
|
|
||||||
- /docs/grafana/latest/administration/roles-and-permissions/access-control/
|
|
||||||
description: Role-based access control (RBAC) provides a standardized way of granting,
|
description: Role-based access control (RBAC) provides a standardized way of granting,
|
||||||
changing, and revoking access so that users can view and modify Grafana resources,
|
changing, and revoking access so that users can view and modify Grafana resources,
|
||||||
such as users and reports.
|
such as users and reports.
|
||||||
@@ -15,7 +13,7 @@ weight: 120
|
|||||||
|
|
||||||
# Role-based access control (RBAC)
|
# Role-based access control (RBAC)
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced]({{< ref "/docs/grafana-cloud" >}}).
|
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
||||||
|
|
||||||
RBAC provides a standardized way of granting, changing, and revoking access when it comes to viewing and modifying Grafana resources, such as dashboards, reports, and administrative settings.
|
RBAC provides a standardized way of granting, changing, and revoking access when it comes to viewing and modifying Grafana resources, such as dashboards, reports, and administrative settings.
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/enterprise/access-control/assign-rbac-roles/
|
- ../../../enterprise/access-control/assign-rbac-roles/
|
||||||
- /docs/grafana/latest/enterprise/access-control/manage-role-assignments/manage-built-in-role-assignments/
|
- ../../../enterprise/access-control/manage-role-assignments/manage-built-in-role-assignments/
|
||||||
- /docs/grafana/latest/enterprise/access-control/manage-role-assignments/manage-user-role-assignments/
|
- ../../../enterprise/access-control/manage-role-assignments/manage-user-role-assignments/
|
||||||
- /docs/grafana/latest/administration/roles-and-permissions/access-control/assign-rbac-roles/
|
|
||||||
description: Learn how to assign RBAC roles to users and teams in Grafana.
|
description: Learn how to assign RBAC roles to users and teams in Grafana.
|
||||||
menuTitle: Assign RBAC roles
|
menuTitle: Assign RBAC roles
|
||||||
title: Assign Grafana RBAC roles
|
title: Assign Grafana RBAC roles
|
||||||
@@ -12,7 +11,7 @@ weight: 40
|
|||||||
|
|
||||||
# Assign RBAC roles
|
# Assign RBAC roles
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced]({{< ref "/docs/grafana-cloud" >}}).
|
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
||||||
|
|
||||||
In this topic you'll learn how to use the role picker, provisioning, and the HTTP API to assign fixed and custom roles to users and teams.
|
In this topic you'll learn how to use the role picker, provisioning, and the HTTP API to assign fixed and custom roles to users and teams.
|
||||||
|
|
||||||
@@ -53,8 +52,6 @@ In both cases, the assignment applies only to the user, team or service account
|
|||||||
4. In the **Role** column, select the fixed role that you want to assign to the user, team or service account.
|
4. In the **Role** column, select the fixed role that you want to assign to the user, team or service account.
|
||||||
5. Click **Update**.
|
5. Click **Update**.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
**To assign a fixed role as a server administrator:**
|
**To assign a fixed role as a server administrator:**
|
||||||
|
|
||||||
1. Sign in to Grafana, hover your cursor over **Server Admin** (the shield icon) in the left navigation menu, and click **Users**.
|
1. Sign in to Grafana, hover your cursor over **Server Admin** (the shield icon) in the left navigation menu, and click **Users**.
|
||||||
@@ -62,15 +59,13 @@ In both cases, the assignment applies only to the user, team or service account
|
|||||||
1. In the **Organizations** section, select a role within an organization that you want to assign to the user.
|
1. In the **Organizations** section, select a role within an organization that you want to assign to the user.
|
||||||
1. Click **Update**.
|
1. Click **Update**.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Assign fixed or custom roles to a team using provisioning
|
## Assign fixed or custom roles to a team using provisioning
|
||||||
|
|
||||||
Instead of using the Grafana role picker, you can use file-based provisioning to assign fixed roles to teams. If you have a large number of teams, provisioning can provide an easier approach to assigning and managing role assignments.
|
Instead of using the Grafana role picker, you can use file-based provisioning to assign fixed roles to teams. If you have a large number of teams, provisioning can provide an easier approach to assigning and managing role assignments.
|
||||||
|
|
||||||
**Before you begin:**
|
**Before you begin:**
|
||||||
|
|
||||||
- Refer to [Role provisioning]({{< relref "./rbac-provisioning/#rbac-provisioning" >}})
|
- Refer to [Role provisioning]({{< relref "./rbac-grafana-provisioning/" >}})
|
||||||
- Ensure that the team to which you are adding the fixed role exists. For more information about creating teams, refer to [Manage teams]({{< relref "../../../team-management/" >}})
|
- Ensure that the team to which you are adding the fixed role exists. For more information about creating teams, refer to [Manage teams]({{< relref "../../../team-management/" >}})
|
||||||
|
|
||||||
**To assign a role to a team:**
|
**To assign a role to a team:**
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/enterprise/access-control/configure-rbac/
|
- ../../../enterprise/access-control/configure-rbac/
|
||||||
- /docs/grafana/latest/administration/roles-and-permissions/access-control/configure-rbac/
|
|
||||||
description: Learn how to configure RBAC.
|
description: Learn how to configure RBAC.
|
||||||
menuTitle: Configure RBAC
|
menuTitle: Configure RBAC
|
||||||
title: Configure RBAC in Grafana
|
title: Configure RBAC in Grafana
|
||||||
@@ -10,13 +9,14 @@ weight: 30
|
|||||||
|
|
||||||
# Configure RBAC in Grafana
|
# Configure RBAC in Grafana
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced]({{< ref "/docs/grafana-cloud" >}}).
|
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
||||||
|
|
||||||
The table below describes all RBAC configuration options. Like any other Grafana configuration, you can apply these options as [environment variables]({{< relref "../../../../setup-grafana/configure-grafana/#configure-with-environment-variables" >}}).
|
The table below describes all RBAC configuration options. Like any other Grafana configuration, you can apply these options as [environment variables]({{< relref "../../../../setup-grafana/configure-grafana/#configure-with-environment-variables" >}}).
|
||||||
|
|
||||||
| Setting | Required | Description | Default |
|
| Setting | Required | Description | Default |
|
||||||
| ------------------ | -------- | ---------------------------------------------------------------------------- | ------- |
|
| ------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
|
||||||
| `permission_cache` | No | Enable to use in memory cache for loading and evaluating users' permissions. | `true` |
|
| `permission_cache` | No | Enable to use in memory cache for loading and evaluating users' permissions. | `true` |
|
||||||
|
| `permission_validation_enabled` | No | Grafana enforces validation for permissions when a user creates or updates a role. The system checks the internal list of scopes and actions for each permission to determine they are valid. By default, if a scope or action is not recognized, Grafana logs a warning message. When set to `true`, Grafana returns an error. | `false` |
|
||||||
|
|
||||||
## Example RBAC configuration
|
## Example RBAC configuration
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/enterprise/access-control/custom-role-actions-scopes/
|
- ../../../enterprise/access-control/custom-role-actions-scopes/
|
||||||
- /docs/grafana/latest/enterprise/access-control/permissions/
|
- ../../../enterprise/access-control/permissions/
|
||||||
- /docs/grafana/latest/administration/roles-and-permissions/access-control/custom-role-actions-scopes/
|
|
||||||
description: Learn about Grafana RBAC permissions, actions, and scopes.
|
description: Learn about Grafana RBAC permissions, actions, and scopes.
|
||||||
menuTitle: RBAC permissions, actions, and scopes
|
menuTitle: RBAC permissions, actions, and scopes
|
||||||
title: Grafana RBAC permissions, actions, and scopes
|
title: Grafana RBAC permissions, actions, and scopes
|
||||||
@@ -11,7 +10,9 @@ weight: 80
|
|||||||
|
|
||||||
# RBAC permissions, actions, and scopes
|
# RBAC permissions, actions, and scopes
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced]({{< ref "/docs/grafana-cloud" >}}).
|
{{% admonition type="note" %}}
|
||||||
|
Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
A permission is comprised of an action and a scope. When creating a custom role, consider the actions the user can perform and the resource(s) on which they can perform those actions.
|
A permission is comprised of an action and a scope. When creating a custom role, consider the actions the user can perform and the resource(s) on which they can perform those actions.
|
||||||
|
|
||||||
@@ -24,126 +25,166 @@ To learn more about the Grafana resources to which you can apply RBAC, refer to
|
|||||||
|
|
||||||
The following list contains role-based access control actions.
|
The following list contains role-based access control actions.
|
||||||
|
|
||||||
| Action | Applicable scope | Description |
|
| Action | Applicable scope | Description |
|
||||||
| ------------------------------------ | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| ------------------------------------ | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `alert.instances.external:read` | `datasources:*`<br>`datasources:uid:*` | Read alerts and silences in data sources that support alerting. |
|
| `alert.instances.external:read` | `datasources:*`<br>`datasources:uid:*` | Read alerts and silences in data sources that support alerting. |
|
||||||
| `alert.instances.external:write` | `datasources:*`<br>`datasources:uid:*` | Manage alerts and silences in data sources that support alerting. |
|
| `alert.instances.external:write` | `datasources:*`<br>`datasources:uid:*` | Manage alerts and silences in data sources that support alerting. |
|
||||||
| `alert.instances:create` | n/a | Create silences in the current organization. |
|
| `alert.instances:create` | n/a | Create silences in the current organization. |
|
||||||
| `alert.instances:read` | n/a | Read alerts and silences in the current organization. |
|
| `alert.instances:read` | n/a | Read alerts and silences in the current organization. |
|
||||||
| `alert.instances:write` | n/a | Update and expire silences in the current organization. |
|
| `alert.instances:write` | n/a | Update and expire silences in the current organization. |
|
||||||
| `alert.notifications.external:read` | `datasources:*`<br>`datasources:uid:*` | Read templates, contact points, notification policies, and mute timings in data sources that support alerting. |
|
| `alert.notifications.external:read` | `datasources:*`<br>`datasources:uid:*` | Read templates, contact points, notification policies, and mute timings in data sources that support alerting. |
|
||||||
| `alert.notifications.external:write` | `datasources:*`<br>`datasources:uid:*` | Manage templates, contact points, notification policies, and mute timings in data sources that support alerting. |
|
| `alert.notifications.external:write` | `datasources:*`<br>`datasources:uid:*` | Manage templates, contact points, notification policies, and mute timings in data sources that support alerting. |
|
||||||
| `alert.notifications:write` | n/a | Manage templates, contact points, notification policies, and mute timings in the current organization. |
|
| `alert.notifications:write` | n/a | Manage templates, contact points, notification policies, and mute timings in the current organization. |
|
||||||
| `alert.notifications:read` | n/a | Read all templates, contact points, notification policies, and mute timings in the current organization. |
|
| `alert.notifications:read` | n/a | Read all templates, contact points, notification policies, and mute timings in the current organization. |
|
||||||
| `alert.rules.external:read` | `datasources:*`<br>`datasources:uid:*` | Read alert rules in data sources that support alerting (Prometheus, Mimir, and Loki) |
|
| `alert.rules.external:read` | `datasources:*`<br>`datasources:uid:*` | Read alert rules in data sources that support alerting (Prometheus, Mimir, and Loki) |
|
||||||
| `alert.rules.external:write` | `datasources:*`<br>`datasources:uid:*` | Create, update, and delete alert rules in data sources that support alerting (Mimir and Loki). |
|
| `alert.rules.external:write` | `datasources:*`<br>`datasources:uid:*` | Create, update, and delete alert rules in data sources that support alerting (Mimir and Loki). |
|
||||||
| `alert.rules:create` | `folders:*`<br>`folders:uid:*` | Create Grafana alert rules in a folder. Combine this permission with `folders:read` in a scope that includes the folder and `datasources:query` in the scope of data sources the user can query. |
|
| `alert.rules:create` | `folders:*`<br>`folders:uid:*` | Create Grafana alert rules in a folder and its subfolders. Combine this permission with `folders:read` in a scope that includes the folder and `datasources:query` in the scope of data sources the user can query. |
|
||||||
| `alert.rules:delete` | `folders:*`<br>`folders:uid:*` | Delete Grafana alert rules in a folder. Combine this permission with `folders:read` in a scope that includes the folder and `datasources:query` in the scope of data sources the user can query. |
|
| `alert.rules:delete` | `folders:*`<br>`folders:uid:*` | Delete Grafana alert rules in a folder and its subfolders. Combine this permission with `folders:read` in a scope that includes the folder and `datasources:query` in the scope of data sources the user can query. |
|
||||||
| `alert.rules:read` | `folders:*`<br>`folders:uid:*` | Read Grafana alert rules in a folder. Combine this permission with `folders:read` in a scope that includes the folder and `datasources:query` in the scope of data sources the user can query. |
|
| `alert.rules:read` | `folders:*`<br>`folders:uid:*` | Read Grafana alert rules in a folder and its subfolders. Combine this permission with `folders:read` in a scope that includes the folder and `datasources:query` in the scope of data sources the user can query. |
|
||||||
| `alert.rules:write` | `folders:*`<br>`folders:uid:*` | Update Grafana alert rules in a folder. Combine this permission with `folders:read` in a scope that includes the folder and `datasources:query` in the scope of data sources the user can query. |
|
| `alert.rules:write` | `folders:*`<br>`folders:uid:*` | Update Grafana alert rules in a folder and its subfolders. Combine this permission with `folders:read` in a scope that includes the folder and `datasources:query` in the scope of data sources the user can query. |
|
||||||
| `alert.provisioning:read` | n/a | Read all Grafana alert rules, notification policies, etc via provisioning API. Permissions to folders and datasource are not required. |
|
| `alert.provisioning:read` | n/a | Read all Grafana alert rules, notification policies, etc via provisioning API. Permissions to folders and datasource are not required. |
|
||||||
| `alert.provisioning:write` | n/a | Update all Grafana alert rules, notification policies, etc via provisioning API. Permissions to folders and datasource are not required. |
|
| `alert.provisioning:write` | n/a | Update all Grafana alert rules, notification policies, etc via provisioning API. Permissions to folders and datasource are not required. |
|
||||||
| `annotations:create` | `annotations:*`<br>`annotations:type:*` | Create annotations. |
|
| `annotations:create` | `annotations:*`<br>`annotations:type:*` | Create annotations. |
|
||||||
| `annotations:delete` | `annotations:*`<br>`annotations:type:*` | Delete annotations. |
|
| `annotations:delete` | `annotations:*`<br>`annotations:type:*` | Delete annotations. |
|
||||||
| `annotations:read` | `annotations:*`<br>`annotations:type:*` | Read annotations and annotation tags. |
|
| `annotations:read` | `annotations:*`<br>`annotations:type:*` | Read annotations and annotation tags. |
|
||||||
| `annotations:write` | `annotations:*`<br>`annotations:type:*` | Update annotations. |
|
| `annotations:write` | `annotations:*`<br>`annotations:type:*` | Update annotations. |
|
||||||
| `apikeys:create` | n/a | Create API keys. |
|
| `apikeys:create` | n/a | Create API keys. |
|
||||||
| `apikeys:read` | `apikeys:*`<br>`apikeys:id:*` | Read API keys. |
|
| `apikeys:read` | `apikeys:*`<br>`apikeys:id:*` | Read API keys. |
|
||||||
| `apikeys:delete` | `apikeys:*`<br>`apikeys:id:*` | Delete API keys. |
|
| `apikeys:delete` | `apikeys:*`<br>`apikeys:id:*` | Delete API keys. |
|
||||||
| `dashboards:create` | `folders:*`<br>`folders:uid:*` | Create dashboards in one or more folders. |
|
| `dashboards:create` | `folders:*`<br>`folders:uid:*` | Create dashboards in one or more folders and their subfolders. |
|
||||||
| `dashboards:delete` | `dashboards:*`<br>`dashboards:uid:*`<br>`folders:*`<br>`folders:uid:*` | Delete one or more dashboards. |
|
| `dashboards:delete` | `dashboards:*`<br>`dashboards:uid:*`<br>`folders:*`<br>`folders:uid:*` | Delete one or more dashboards. |
|
||||||
| `dashboards.insights:read` | n/a | Read dashboard insights data and see presence indicators. |
|
| `dashboards.insights:read` | n/a | Read dashboard insights data and see presence indicators. |
|
||||||
| `dashboards.permissions:read` | `dashboards:*`<br>`dashboards:uid:*`<br>`folders:*`<br>`folders:uid:*` | Read permissions for one or more dashboards. |
|
| `dashboards.permissions:read` | `dashboards:*`<br>`dashboards:uid:*`<br>`folders:*`<br>`folders:uid:*` | Read permissions for one or more dashboards. |
|
||||||
| `dashboards.permissions:write` | `dashboards:*`<br>`dashboards:uid:*`<br>`folders:*`<br>`folders:uid:*` | Update permissions for one or more dashboards. |
|
| `dashboards.permissions:write` | `dashboards:*`<br>`dashboards:uid:*`<br>`folders:*`<br>`folders:uid:*` | Update permissions for one or more dashboards. |
|
||||||
| `dashboards:read` | `dashboards:*`<br>`dashboards:uid:*`<br>`folders:*`<br>`folders:uid:*` | Read one or more dashboards. |
|
| `dashboards:read` | `dashboards:*`<br>`dashboards:uid:*`<br>`folders:*`<br>`folders:uid:*` | Read one or more dashboards. |
|
||||||
| `dashboards:write` | `dashboards:*`<br>`dashboards:uid:*`<br>`folders:*`<br>`folders:uid:*` | Update one or more dashboards. |
|
| `dashboards:write` | `dashboards:*`<br>`dashboards:uid:*`<br>`folders:*`<br>`folders:uid:*` | Update one or more dashboards. |
|
||||||
| `datasources.caching:read` | `datasources:*`<br>`datasources:uid:*` | Read data source query caching settings. |
|
| `dashboards.public:write` | `dashboards:*`<br>`dashboards:uid:*` | Write public dashboard configuration. |
|
||||||
| `datasources.caching:write` | `datasources:*`<br>`datasources:uid:*` | Update data source query caching settings. |
|
| `datasources.caching:read` | `datasources:*`<br>`datasources:uid:*` | Read data source query caching settings. |
|
||||||
| `datasources:create` | n/a | Create data sources. |
|
| `datasources.caching:write` | `datasources:*`<br>`datasources:uid:*` | Update data source query caching settings. |
|
||||||
| `datasources:delete` | `datasources:*`<br>`datasources:uid:*` | Delete data sources. |
|
| `datasources:create` | n/a | Create data sources. |
|
||||||
| `datasources:explore` | n/a | Enable access to the **Explore** tab. |
|
| `datasources:delete` | `datasources:*`<br>`datasources:uid:*` | Delete data sources. |
|
||||||
| `datasources.id:read` | `datasources:*`<br>`datasources:uid:*` | Read data source IDs. |
|
| `datasources:explore` | n/a | Enable access to the **Explore** tab. |
|
||||||
| `datasources.insights:read` | n/a | Read data sources insights data. |
|
| `datasources.id:read` | `datasources:*`<br>`datasources:uid:*` | Read data source IDs. |
|
||||||
| `datasources.permissions:read` | `datasources:*`<br>`datasources:uid:*` | List data source permissions. |
|
| `datasources.insights:read` | n/a | Read data sources insights data. |
|
||||||
| `datasources.permissions:write` | `datasources:*`<br>`datasources:uid:*` | Update data source permissions. |
|
| `datasources.permissions:read` | `datasources:*`<br>`datasources:uid:*` | List data source permissions. |
|
||||||
| `datasources:query` | `datasources:*`<br>`datasources:uid:*` | Query data sources. |
|
| `datasources.permissions:write` | `datasources:*`<br>`datasources:uid:*` | Update data source permissions. |
|
||||||
| `datasources:read` | `datasources:*`<br>`datasources:uid:*` | List data sources. |
|
| `datasources:query` | `datasources:*`<br>`datasources:uid:*` | Query data sources. |
|
||||||
| `datasources:write` | `datasources:*`<br>`datasources:uid:*` | Update data sources. |
|
| `datasources:read` | `datasources:*`<br>`datasources:uid:*` | List data sources. |
|
||||||
| `folders.permissions:read` | `folders:*`<br>`folders:uid:*` | Read permissions for one or more folders. |
|
| `datasources:write` | `datasources:*`<br>`datasources:uid:*` | Update data sources. |
|
||||||
| `folders.permissions:write` | `folders:*`<br>`folders:uid:*` | Update permissions for one or more folders. |
|
| `folders.permissions:read` | `folders:*`<br>`folders:uid:*` | Read permissions for one or more folders and their subfolders. |
|
||||||
| `folders:create` | n/a | Create folders. |
|
| `folders.permissions:write` | `folders:*`<br>`folders:uid:*` | Update permissions for one or more folders and their subfolders. |
|
||||||
| `folders:delete` | `folders:*`<br>`folders:uid:*` | Delete one or more folders. |
|
| `folders:create` | n/a | Create folders in the root level. If granted together with `folders:write`, also allows creating subfolders under all folders that the user can update. |
|
||||||
| `folders:read` | `folders:*`<br>`folders:uid:*` | Read one or more folders. |
|
| `folders:delete` | `folders:*`<br>`folders:uid:*` | Delete one or more folders and their subfolders. |
|
||||||
| `folders:write` | `folders:*`<br>`folders:uid:*` | Update one or more folders. |
|
| `folders:read` | `folders:*`<br>`folders:uid:*` | Read one or more folders and their subfolders. |
|
||||||
| `ldap.config:reload` | n/a | Reload the LDAP configuration. |
|
| `folders:write` | `folders:*`<br>`folders:uid:*` | Update one or more folders and their subfolders. If granted together with `folders:create` permission, also allows creating subfolders under these folders. |
|
||||||
| `ldap.status:read` | n/a | Verify the availability of the LDAP server or servers. |
|
| `ldap.config:reload` | n/a | Reload the LDAP configuration. |
|
||||||
| `ldap.user:read` | n/a | Read users via LDAP. |
|
| `ldap.status:read` | n/a | Verify the availability of the LDAP server or servers. |
|
||||||
| `ldap.user:sync` | n/a | Sync users via LDAP. |
|
| `ldap.user:read` | n/a | Read users via LDAP. |
|
||||||
| `licensing.reports:read` | n/a | Get custom permission reports. |
|
| `ldap.user:sync` | n/a | Sync users via LDAP. |
|
||||||
| `licensing:delete` | n/a | Delete the license token. |
|
| `licensing.reports:read` | n/a | Get custom permission reports. |
|
||||||
| `licensing:read` | n/a | Read licensing information. |
|
| `licensing:delete` | n/a | Delete the license token. |
|
||||||
| `licensing:write` | n/a | Update the license token. |
|
| `licensing:read` | n/a | Read licensing information. |
|
||||||
| `org.users:write` | `users:*` <br> `users:id:*` | Update the organization role (`Viewer`, `Editor`, or `Admin`) of a user. |
|
| `licensing:write` | n/a | Update the license token. |
|
||||||
| `org.users:add` | `users:*` | Add a user to an organization or invite a new user to an organization. |
|
| `org.users:write` | `users:*` <br> `users:id:*` | Update the organization role (`Viewer`, `Editor`, or `Admin`) of a user. |
|
||||||
| `org.users:read` | `users:*` <br> `users:id:*` | Get user profiles within an organization. |
|
| `org.users:add` | `users:*` | Add a user to an organization or invite a new user to an organization. |
|
||||||
| `org.users:remove` | `users:*` <br> `users:id:*` | Remove a user from an organization. |
|
| `org.users:read` | `users:*` <br> `users:id:*` | Get user profiles within an organization. |
|
||||||
| `org:create` | n/a | Create an organization. |
|
| `org.users:remove` | `users:*` <br> `users:id:*` | Remove a user from an organization. |
|
||||||
| `orgs.preferences:read` | `orgs:*` <br> `orgs:id:*` | Read organization preferences. |
|
| `org:create` | n/a | Create an organization. |
|
||||||
| `orgs.preferences:write` | `orgs:*` <br> `orgs:id:*` | Update organization preferences. |
|
| `orgs.preferences:read` | `orgs:*` <br> `orgs:id:*` | Read organization preferences. |
|
||||||
| `orgs.quotas:read` | `orgs:*` <br> `orgs:id:*` | Read organization quotas. |
|
| `orgs.preferences:write` | `orgs:*` <br> `orgs:id:*` | Update organization preferences. |
|
||||||
| `orgs.quotas:write` | `orgs:*` <br> `orgs:id:*` | Update organization quotas. |
|
| `orgs.quotas:read` | `orgs:*` <br> `orgs:id:*` | Read organization quotas. |
|
||||||
| `orgs:delete` | `orgs:*` <br> `orgs:id:*` | Delete one or more organizations. |
|
| `orgs.quotas:write` | `orgs:*` <br> `orgs:id:*` | Update organization quotas. |
|
||||||
| `orgs:read` | `orgs:*` <br> `orgs:id:*` | Read one or more organizations. |
|
| `orgs:delete` | `orgs:*` <br> `orgs:id:*` | Delete one or more organizations. |
|
||||||
| `orgs:write` | `orgs:*` <br> `orgs:id:*` | Update one or more organizations. |
|
| `orgs:read` | `orgs:*` <br> `orgs:id:*` | Read one or more organizations. |
|
||||||
| `plugins.app:access` | `plugins:*` <br> `plugins:id:*` | Access one or more application plugins (still enforcing the organization role) |
|
| `orgs:write` | `orgs:*` <br> `orgs:id:*` | Update one or more organizations. |
|
||||||
| `provisioning:reload` | `provisioners:*` | Reload provisioning files. To find the exact scope for specific provisioner, see [Scope definitions]({{< relref "#scope-definitions" >}}). |
|
| `plugins.app:access` | `plugins:*` <br> `plugins:id:*` | Access one or more application plugins (still enforcing the organization role) |
|
||||||
| `reports:create` | n/a | Create reports. |
|
| `plugins:install` | n/a | Install and uninstall plugins. |
|
||||||
| `reports:write` | `reports:*` <br> `reports:id:*` | Update reports. |
|
| `plugins:write` | `plugins:*` <br> `plugins:id:*` | Edit settings for one or more plugins. |
|
||||||
| `reports.settings:read` | n/a | Read report settings. |
|
| `provisioning:reload` | `provisioners:*` | Reload provisioning files. To find the exact scope for specific provisioner, see [Scope definitions]({{< relref "#scope-definitions" >}}). |
|
||||||
| `reports.settings:write` | n/a | Update report settings. |
|
| `reports:create` | n/a | Create reports. |
|
||||||
| `reports:delete` | `reports:*` <br> `reports:id:*` | Delete reports. |
|
| `reports:write` | `reports:*` <br> `reports:id:*` | Update reports. |
|
||||||
| `reports:read` | `reports:*` | List all available reports or get a specific report. |
|
| `reports.settings:read` | n/a | Read report settings. |
|
||||||
| `reports:send` | `reports:*` | Send a report email. |
|
| `reports.settings:write` | n/a | Update report settings. |
|
||||||
| `roles:delete` | `permissions:type:delegate` | Delete a custom role. |
|
| `reports:delete` | `reports:*` <br> `reports:id:*` | Delete reports. |
|
||||||
| `roles:read` | `roles:*` <br> `roles:uid:*` | List roles and read a specific with its permissions. |
|
| `reports:read` | `reports:*` | List all available reports or get a specific report. |
|
||||||
| `roles:write` | `permissions:type:delegate` | Create or update a custom role. |
|
| `reports:send` | `reports:*` | Send a report email. |
|
||||||
| `roles:write` | `permissions:type:escalate` | Reset basic roles to their default permissions. |
|
| `roles:delete` | `permissions:type:delegate` | Delete a custom role. |
|
||||||
| `server.stats:read` | n/a | Read Grafana instance statistics. |
|
| `roles:read` | `roles:*` <br> `roles:uid:*` | List roles and read a specific with its permissions. |
|
||||||
| `serviceaccounts:write` | `serviceaccounts:*` | Create Grafana service accounts. |
|
| `roles:write` | `permissions:type:delegate` | Create or update a custom role. |
|
||||||
| `serviceaccounts:create` | n/a | Update Grafana service accounts. |
|
| `roles:write` | `permissions:type:escalate` | Reset basic roles to their default permissions. |
|
||||||
| `serviceaccounts:delete` | `serviceaccounts:*` | Delete Grafana service accounts. |
|
| `server.stats:read` | n/a | Read Grafana instance statistics. |
|
||||||
| `serviceaccounts:read` | `serviceaccounts:*` | Read Grafana service accounts. |
|
| `serviceaccounts:write` | `serviceaccounts:*` | Create Grafana service accounts. |
|
||||||
| `serviceaccounts.permissions:write` | `serviceaccounts:*` | Update Grafana service account permissions to control who can do what with the service account. |
|
| `serviceaccounts:create` | n/a | Update Grafana service accounts. |
|
||||||
| `serviceaccounts.permissions:read` | `serviceaccounts:*` | Read Grafana service account permissions to see who can do what with the service account. |
|
| `serviceaccounts:delete` | `serviceaccounts:*` | Delete Grafana service accounts. |
|
||||||
| `settings:read` | `settings:*`<br>`settings:auth.saml:*`<br>`settings:auth.saml:enabled` (property level) | Read the [Grafana configuration settings]({{< relref "../../../../setup-grafana/configure-grafana/" >}}) |
|
| `serviceaccounts:read` | `serviceaccounts:*` | Read Grafana service accounts. |
|
||||||
| `settings:write` | `settings:*`<br>`settings:auth.saml:*`<br>`settings:auth.saml:enabled` (property level) | Update any Grafana configuration settings that can be [updated at runtime]({{< relref "../../../../setup-grafana/configure-grafana/settings-updates-at-runtime" >}}). |
|
| `serviceaccounts.permissions:write` | `serviceaccounts:*` | Update Grafana service account permissions to control who can do what with the service account. |
|
||||||
| `status:accesscontrol` | `services:accesscontrol` | Get access-control enabled status. |
|
| `serviceaccounts.permissions:read` | `serviceaccounts:*` | Read Grafana service account permissions to see who can do what with the service account. |
|
||||||
| `teams.permissions:read` | `teams:*`<br>`teams:id:*` | Read members and External Group Synchronization setup for teams. |
|
| `settings:read` | `settings:*`<br>`settings:auth.saml:*`<br>`settings:auth.saml:enabled` (property level) | Read the [Grafana configuration settings]({{< relref "../../../../setup-grafana/configure-grafana/" >}}) |
|
||||||
| `teams.permissions:write` | `teams:*`<br>`teams:id:*` | Add, remove and update members and manage External Group Synchronization setup for teams. |
|
| `settings:write` | `settings:*`<br>`settings:auth.saml:*`<br>`settings:auth.saml:enabled` (property level) | Update any Grafana configuration settings that can be [updated at runtime]({{< relref "../../../../setup-grafana/configure-grafana/settings-updates-at-runtime" >}}). |
|
||||||
| `teams.roles:add` | `permissions:type:delegate` | Assign a role to a team. |
|
| `status:accesscontrol` | `services:accesscontrol` | Get access-control enabled status. |
|
||||||
| `teams.roles:read` | `teams:*` | List roles assigned directly to a team. |
|
| `teams.permissions:read` | `teams:*`<br>`teams:id:*` | Read members and Team Sync setup for teams. |
|
||||||
| `teams.roles:remove` | `permissions:type:delegate` | Unassign a role from a team. |
|
| `teams.permissions:write` | `teams:*`<br>`teams:id:*` | Add, remove and update members and manage Team Sync setup for teams. |
|
||||||
| `teams:create` | n/a | Create teams. |
|
| `teams.roles:add` | `permissions:type:delegate` | Assign a role to a team. |
|
||||||
| `teams:delete` | `teams:*`<br>`teams:id:*` | Delete one or more teams. |
|
| `teams.roles:read` | `teams:*` | List roles assigned directly to a team. |
|
||||||
| `teams:read` | `teams:*`<br>`teams:id:*` | Read one or more teams and team preferences. |
|
| `teams.roles:remove` | `permissions:type:delegate` | Unassign a role from a team. |
|
||||||
| `teams:write` | `teams:*`<br>`teams:id:*` | Update one or more teams and team preferences. |
|
| `teams:create` | n/a | Create teams. |
|
||||||
| `users.authtoken:read` | `global.users:*` <br> `global.users:id:*` | List authentication tokens that are assigned to a user. |
|
| `teams:delete` | `teams:*`<br>`teams:id:*` | Delete one or more teams. |
|
||||||
| `users.authtoken:write` | `global.users:*` <br> `global.users:id:*` | Update authentication tokens that are assigned to a user. |
|
| `teams:read` | `teams:*`<br>`teams:id:*` | Read one or more teams and team preferences. |
|
||||||
| `users.password:write` | `global.users:*` <br> `global.users:id:*` | Update a user’s password. |
|
| `teams:write` | `teams:*`<br>`teams:id:*` | Update one or more teams and team preferences. |
|
||||||
| `users.permissions:read` | `users:*` | List permissions of a user. |
|
| `users.authtoken:read` | `global.users:*` <br> `global.users:id:*` | List authentication tokens that are assigned to a user. |
|
||||||
| `users.permissions:write` | `global.users:*` <br> `global.users:id:*` | Update a user’s organization-level permissions. |
|
| `users.authtoken:write` | `global.users:*` <br> `global.users:id:*` | Update authentication tokens that are assigned to a user. |
|
||||||
| `users.quotas:read` | `global.users:*` <br> `global.users:id:*` | List a user’s quotas. |
|
| `users.password:write` | `global.users:*` <br> `global.users:id:*` | Update a user’s password. |
|
||||||
| `users.quotas:write` | `global.users:*` <br> `global.users:id:*` | Update a user’s quotas. |
|
| `users.permissions:read` | `users:*` | List permissions of a user. |
|
||||||
| `users.roles:add` | `permissions:type:delegate` | Assign a role to a user or a service account. |
|
| `users.permissions:write` | `global.users:*` <br> `global.users:id:*` | Update a user’s organization-level permissions. |
|
||||||
| `users.roles:read` | `users:*` | List roles assigned directly to a user or a service account. |
|
| `users.quotas:read` | `global.users:*` <br> `global.users:id:*` | List a user’s quotas. |
|
||||||
| `users.roles:remove` | `permissions:type:delegate` | Unassign a role from a user or a service account. |
|
| `users.quotas:write` | `global.users:*` <br> `global.users:id:*` | Update a user’s quotas. |
|
||||||
| `users:create` | n/a | Create a user. |
|
| `users.roles:add` | `permissions:type:delegate` | Assign a role to a user or a service account. |
|
||||||
| `users:delete` | `global.users:*` <br> `global.users:id:*` | Delete a user. |
|
| `users.roles:read` | `users:*` | List roles assigned directly to a user or a service account. |
|
||||||
| `users:disable` | `global.users:*` <br> `global.users:id:*` | Disable a user. |
|
| `users.roles:remove` | `permissions:type:delegate` | Unassign a role from a user or a service account. |
|
||||||
| `users:enable` | `global.users:*` <br> `global.users:id:*` | Enable a user. |
|
| `users:create` | n/a | Create a user. |
|
||||||
| `users:logout` | `global.users:*` <br> `global.users:id:*` | Sign out a user. |
|
| `users:delete` | `global.users:*` <br> `global.users:id:*` | Delete a user. |
|
||||||
| `users:read` | `global.users:*` | Read or search user profiles. |
|
| `users:disable` | `global.users:*` <br> `global.users:id:*` | Disable a user. |
|
||||||
| `users:write` | `global.users:*` <br> `global.users:id:*` | Update a user’s profile. |
|
| `users:enable` | `global.users:*` <br> `global.users:id:*` | Enable a user. |
|
||||||
|
| `users:logout` | `global.users:*` <br> `global.users:id:*` | Sign out a user. |
|
||||||
|
| `users:read` | `global.users:*` | Read or search user profiles. |
|
||||||
|
| `users:write` | `global.users:*` <br> `global.users:id:*` | Update a user’s profile. |
|
||||||
|
|
||||||
|
### Grafana OnCall action definitions (beta)
|
||||||
|
|
||||||
|
> **Note:** Available from Grafana 9.4 in early access.
|
||||||
|
|
||||||
|
> **Note:** This feature is behind the `accessControlOnCall` feature toggle.
|
||||||
|
> You can enable feature toggles through configuration file or environment variables. See configuration [docs]({{< relref "../../../../setup-grafana/configure-grafana/#feature_toggles" >}}) for details.
|
||||||
|
|
||||||
|
The following list contains role-based access control actions used by Grafana OnCall application plugin.
|
||||||
|
|
||||||
|
| Action | Applicable scope | Description |
|
||||||
|
| ------------------------------------------------ | ---------------- | ------------------------------------------------- |
|
||||||
|
| `grafana-oncall-app.alert-groups:read` | n/a | Read OnCall alert groups. |
|
||||||
|
| `grafana-oncall-app.alert-groups:write` | n/a | Create, edit and delete OnCall alert groups. |
|
||||||
|
| `grafana-oncall-app.integrations:read` | n/a | Read OnCall integrations. |
|
||||||
|
| `grafana-oncall-app.integrations:write` | n/a | Create, edit and delete OnCall integrations. |
|
||||||
|
| `grafana-oncall-app.integrations:test` | n/a | Test OnCall integrations. |
|
||||||
|
| `grafana-oncall-app.escalation-chains:read` | n/a | Read OnCall escalation chains. |
|
||||||
|
| `grafana-oncall-app.escalation-chains:write` | n/a | Create, edit and delete OnCall escalation chains. |
|
||||||
|
| `grafana-oncall-app.schedules:read` | n/a | Read OnCall schedules. |
|
||||||
|
| `grafana-oncall-app.schedules:write` | n/a | Create, edit and delete OnCall schedules. |
|
||||||
|
| `grafana-oncall-app.schedules:export` | n/a | Export OnCall schedules. |
|
||||||
|
| `grafana-oncall-app.chatops:read` | n/a | Read OnCall ChatOps. |
|
||||||
|
| `grafana-oncall-app.chatops:write` | n/a | Edit OnCall ChatOps. |
|
||||||
|
| `grafana-oncall-app.chatops:update-settings` | n/a | Edit OnCall ChatOps settings. |
|
||||||
|
| `grafana-oncall-app.maintenance:read` | n/a | Read OnCall maintenance. |
|
||||||
|
| `grafana-oncall-app.maintenance:write` | n/a | Edit OnCall maintenance. |
|
||||||
|
| `grafana-oncall-app.api-keys:read` | n/a | Read OnCall API keys. |
|
||||||
|
| `grafana-oncall-app.api-keys:write` | n/a | Create, edit and delete OnCall API keys. |
|
||||||
|
| `grafana-oncall-app.notifications:read` | n/a | Receive OnCall notifications. |
|
||||||
|
| `grafana-oncall-app.notification-settings:read` | n/a | Read OnCall notification settings. |
|
||||||
|
| `grafana-oncall-app.notification-settings:write` | n/a | Edit OnCall notification settings. |
|
||||||
|
| `grafana-oncall-app.user-settings:read` | n/a | Read user's own OnCall user settings. |
|
||||||
|
| `grafana-oncall-app.user-settings:write` | n/a | Edit user's own OnCall user settings. |
|
||||||
|
| `grafana-oncall-app.user-settings:admin` | n/a | Read and edit all users' OnCall user settings. |
|
||||||
|
| `grafana-oncall-app.other-settings:read` | n/a | Read OnCall settings. |
|
||||||
|
| `grafana-oncall-app.other-settings:write` | n/a | Edit OnCall settings. |
|
||||||
|
|
||||||
## Scope definitions
|
## Scope definitions
|
||||||
|
|
||||||
@@ -155,12 +196,13 @@ The following list contains role-based access control scopes.
|
|||||||
| `apikeys:*`<br>`apikeys:id:*` | Restrict an action to a set of API keys. For example, `apikeys:*` matches any API key, `apikey:id:1` matches the API key whose id is `1`. |
|
| `apikeys:*`<br>`apikeys:id:*` | Restrict an action to a set of API keys. For example, `apikeys:*` matches any API key, `apikey:id:1` matches the API key whose id is `1`. |
|
||||||
| `dashboards:*`<br>`dashboards:uid:*` | Restrict an action to a set of dashboards. For example, `dashboards:*` matches any dashboard, and `dashboards:uid:1` matches the dashboard whose UID is `1`. |
|
| `dashboards:*`<br>`dashboards:uid:*` | Restrict an action to a set of dashboards. For example, `dashboards:*` matches any dashboard, and `dashboards:uid:1` matches the dashboard whose UID is `1`. |
|
||||||
| `datasources:*`<br>`datasources:uid:*` | Restrict an action to a set of data sources. For example, `datasources:*` matches any data source, and `datasources:uid:1` matches the data source whose UID is `1`. |
|
| `datasources:*`<br>`datasources:uid:*` | Restrict an action to a set of data sources. For example, `datasources:*` matches any data source, and `datasources:uid:1` matches the data source whose UID is `1`. |
|
||||||
| `folders:*`<br>`folders:uid:*` | Restrict an action to a set of folders. For example, `folders:*` matches any folder, and `folders:uid:1` matches the folder whose UID is `1`. |
|
| `folders:*`<br>`folders:uid:*` | Restrict an action to a set of folders. For example, `folders:*` matches any folder, and `folders:uid:1` matches the folder whose UID is `1`. Note that permissions granted to a folder cascade down to subfolders located under it |
|
||||||
| `global.users:*` <br> `global.users:id:*` | Restrict an action to a set of global users. For example, `global.users:*` matches any user and `global.users:id:1` matches the user whose ID is `1`. |
|
| `global.users:*` <br> `global.users:id:*` | Restrict an action to a set of global users. For example, `global.users:*` matches any user and `global.users:id:1` matches the user whose ID is `1`. |
|
||||||
| `orgs:*` <br> `orgs:id:*` | Restrict an action to a set of organizations. For example, `orgs:*` matches any organization and `orgs:id:1` matches the organization whose ID is `1`. |
|
| `orgs:*` <br> `orgs:id:*` | Restrict an action to a set of organizations. For example, `orgs:*` matches any organization and `orgs:id:1` matches the organization whose ID is `1`. |
|
||||||
| `permissions:type:delegate` | The scope is only applicable for roles associated with the Access Control itself and indicates that you can delegate your permissions only, or a subset of it, by creating a new role or making an assignment. |
|
| `permissions:type:delegate` | The scope is only applicable for roles associated with the Access Control itself and indicates that you can delegate your permissions only, or a subset of it, by creating a new role or making an assignment. |
|
||||||
| `permissions:type:escalate` | The scope is required to trigger the reset of basic roles permissions. It indicates that users might acquire additional permissions they did not previously have. |
|
| `permissions:type:escalate` | The scope is required to trigger the reset of basic roles permissions. It indicates that users might acquire additional permissions they did not previously have. |
|
||||||
| `provisioners:*` | Restrict an action to a set of provisioners. For example, `provisioners:*` matches any provisioner, and `provisioners:accesscontrol` matches the role-based access control [provisioner]({{< relref "./rbac-provisioning/" >}}). |
|
| `plugins:*` <br> `plugins:id:*` | Restrict an action to a set of plugins. For example, `plugins:id:grafana-oncall-app` matches Grafana OnCall plugin, and `plugins:*` matches all plugins. |
|
||||||
|
| `provisioners:*` | Restrict an action to a set of provisioners. For example, `provisioners:*` matches any provisioner, and `provisioners:accesscontrol` matches the role-based access control [provisioner]({{< relref "./rbac-grafana-provisioning/" >}}). |
|
||||||
| `reports:*` <br> `reports:id:*` | Restrict an action to a set of reports. For example, `reports:*` matches any report and `reports:id:1` matches the report whose ID is `1`. |
|
| `reports:*` <br> `reports:id:*` | Restrict an action to a set of reports. For example, `reports:*` matches any report and `reports:id:1` matches the report whose ID is `1`. |
|
||||||
| `roles:*` <br> `roles:uid:*` | Restrict an action to a set of roles. For example, `roles:*` matches any role and `roles:uid:randomuid` matches only the role whose UID is `randomuid`. |
|
| `roles:*` <br> `roles:uid:*` | Restrict an action to a set of roles. For example, `roles:*` matches any role and `roles:uid:randomuid` matches only the role whose UID is `randomuid`. |
|
||||||
| `services:accesscontrol` | Restrict an action to target only the role-based access control service. You can use this in conjunction with the `status:accesscontrol` actions. |
|
| `services:accesscontrol` | Restrict an action to target only the role-based access control service. You can use this in conjunction with the `status:accesscontrol` actions. |
|
||||||
@@ -168,3 +210,4 @@ The following list contains role-based access control scopes.
|
|||||||
| `settings:*` | Restrict an action to a subset of settings. For example, `settings:*` matches all settings, `settings:auth.saml:*` matches all SAML settings, and `settings:auth.saml:enabled` matches the enable property on the SAML settings. |
|
| `settings:*` | Restrict an action to a subset of settings. For example, `settings:*` matches all settings, `settings:auth.saml:*` matches all SAML settings, and `settings:auth.saml:enabled` matches the enable property on the SAML settings. |
|
||||||
| `teams:*` <br> `teams:id:*` | Restrict an action to a set of teams from an organization. For example, `teams:*` matches any team and `teams:id:1` matches the team whose ID is `1`. |
|
| `teams:*` <br> `teams:id:*` | Restrict an action to a set of teams from an organization. For example, `teams:*` matches any team and `teams:id:1` matches the team whose ID is `1`. |
|
||||||
| `users:*` <br> `users:id:*` | Restrict an action to a set of users from an organization. For example, `users:*` matches any user and `users:id:1` matches the user whose ID is `1`. |
|
| `users:*` <br> `users:id:*` | Restrict an action to a set of users from an organization. For example, `users:*` matches any user and `users:id:1` matches the user whose ID is `1`. |
|
||||||
|
| `n/a` | `n/a` means not applicable. If an action has `n/a` specified for the scope, then the action does not require a scope. For example, the `teams:create` action does not require a scope and allows users to create teams. |
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/enterprise/access-control/manage-rbac-roles/
|
- ../../../enterprise/access-control/manage-rbac-roles/
|
||||||
- /docs/grafana/latest/enterprise/access-control/manage-role-assignments/
|
- ../../../enterprise/access-control/manage-role-assignments/
|
||||||
- /docs/grafana/latest/enterprise/access-control/provisioning/
|
- ../../../enterprise/access-control/provisioning/
|
||||||
- /docs/grafana/latest/administration/roles-and-permissions/access-control/manage-rbac-roles/
|
|
||||||
description: Learn how to view permissions associated with roles, create custom roles,
|
description: Learn how to view permissions associated with roles, create custom roles,
|
||||||
and update and delete roles in Grafana.
|
and update and delete roles in Grafana.
|
||||||
menuTitle: Manage RBAC roles
|
menuTitle: Manage RBAC roles
|
||||||
@@ -13,7 +12,7 @@ weight: 50
|
|||||||
|
|
||||||
# Manage RBAC roles
|
# Manage RBAC roles
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced]({{< ref "/docs/grafana-cloud" >}}).
|
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
||||||
|
|
||||||
This section includes instructions for how to view permissions associated with roles, create custom roles, and update and delete roles.
|
This section includes instructions for how to view permissions associated with roles, create custom roles, and update and delete roles.
|
||||||
|
|
||||||
@@ -91,7 +90,7 @@ Create a custom role when basic roles and fixed roles do not meet your permissio
|
|||||||
|
|
||||||
- [Plan your RBAC rollout strategy]({{< relref "./plan-rbac-rollout-strategy/" >}}).
|
- [Plan your RBAC rollout strategy]({{< relref "./plan-rbac-rollout-strategy/" >}}).
|
||||||
- Determine which permissions you want to add to the custom role. To see a list of actions and scope, refer to [RBAC permissions, actions, and scopes]({{< relref "./custom-role-actions-scopes/" >}}).
|
- Determine which permissions you want to add to the custom role. To see a list of actions and scope, refer to [RBAC permissions, actions, and scopes]({{< relref "./custom-role-actions-scopes/" >}}).
|
||||||
- [Enable role provisioning]({{< relref "./rbac-provisioning/" >}}).
|
- [Enable role provisioning]({{< relref "./rbac-grafana-provisioning/" >}}).
|
||||||
- Ensure that you have permissions to create a custom role.
|
- Ensure that you have permissions to create a custom role.
|
||||||
- By default, the Grafana Admin role has permission to create custom roles.
|
- By default, the Grafana Admin role has permission to create custom roles.
|
||||||
- A Grafana Admin can delegate the custom role privilege to another user by creating a custom role with the relevant permissions and adding the `permissions:type:delegate` scope.
|
- A Grafana Admin can delegate the custom role privilege to another user by creating a custom role with the relevant permissions and adding the `permissions:type:delegate` scope.
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/enterprise/access-control/plan-rbac-rollout-strategy/
|
- ../../../enterprise/access-control/plan-rbac-rollout-strategy/
|
||||||
- /docs/grafana/latest/enterprise/access-control/usage-scenarios/
|
- ../../../enterprise/access-control/usage-scenarios/
|
||||||
- /docs/grafana/latest/administration/roles-and-permissions/access-control/plan-rbac-rollout-strategy/
|
|
||||||
description: Plan your RBAC rollout strategy before you begin assigning roles to users
|
description: Plan your RBAC rollout strategy before you begin assigning roles to users
|
||||||
and teams.
|
and teams.
|
||||||
menuTitle: Plan your RBAC rollout strategy
|
menuTitle: Plan your RBAC rollout strategy
|
||||||
@@ -12,7 +11,7 @@ weight: 20
|
|||||||
|
|
||||||
# Plan your RBAC rollout strategy
|
# Plan your RBAC rollout strategy
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced]({{< ref "/docs/grafana-cloud" >}}).
|
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
||||||
|
|
||||||
An RBAC rollout strategy helps you determine _how_ you want to implement RBAC prior to assigning RBAC roles to users and teams.
|
An RBAC rollout strategy helps you determine _how_ you want to implement RBAC prior to assigning RBAC roles to users and teams.
|
||||||
|
|
||||||
@@ -83,7 +82,7 @@ We've compiled the following permissions rollout scenarios based on current Graf
|
|||||||
### Provide internal viewer employees with the ability to use Explore, but prevent external viewer contractors from using Explore
|
### Provide internal viewer employees with the ability to use Explore, but prevent external viewer contractors from using Explore
|
||||||
|
|
||||||
1. In Grafana, create a team with the name `Internal employees`.
|
1. In Grafana, create a team with the name `Internal employees`.
|
||||||
1. Assign the `fixed:datasources:querier` role to the `Internal employees` team.
|
1. Assign the `fixed:datasources:explorer` role to the `Internal employees` team.
|
||||||
1. Add internal employees to the `Internal employees` team, or map them from a SAML, LDAP, or Oauth team using [Team Sync]({{< relref "../../../../setup-grafana/configure-security/configure-team-sync/" >}}).
|
1. Add internal employees to the `Internal employees` team, or map them from a SAML, LDAP, or Oauth team using [Team Sync]({{< relref "../../../../setup-grafana/configure-security/configure-team-sync/" >}}).
|
||||||
1. Assign the viewer role to both internal employees and contractors.
|
1. Assign the viewer role to both internal employees and contractors.
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/enterprise/access-control/fine-grained-access-control-references/
|
- ../../../enterprise/access-control/fine-grained-access-control-references/
|
||||||
- /docs/grafana/latest/enterprise/access-control/rbac-fixed-basic-role-definitions/
|
- ../../../enterprise/access-control/rbac-fixed-basic-role-definitions/
|
||||||
- /docs/grafana/latest/administration/roles-and-permissions/access-control/rbac-fixed-basic-role-definitions/
|
|
||||||
description: This topic includes a table that lists permission associated with Grafana
|
description: This topic includes a table that lists permission associated with Grafana
|
||||||
fixed and basic roles.
|
fixed and basic roles.
|
||||||
menuTitle: RBAC role definitions
|
menuTitle: RBAC role definitions
|
||||||
@@ -12,7 +11,7 @@ weight: 70
|
|||||||
|
|
||||||
# RBAC role definitions
|
# RBAC role definitions
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced]({{< ref "/docs/grafana-cloud" >}}).
|
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
||||||
|
|
||||||
The following tables list permissions associated with basic and fixed roles.
|
The following tables list permissions associated with basic and fixed roles.
|
||||||
|
|
||||||
@@ -21,7 +20,7 @@ The following tables list permissions associated with basic and fixed roles.
|
|||||||
| Basic role | Associated fixed roles | Description |
|
| Basic role | Associated fixed roles | Description |
|
||||||
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
|
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
|
||||||
| Grafana Admin | `fixed:roles:reader`<br>`fixed:roles:writer`<br>`fixed:users:reader`<br>`fixed:users:writer`<br>`fixed:org.users:reader`<br>`fixed:org.users:writer`<br>`fixed:ldap:reader`<br>`fixed:ldap:writer`<br>`fixed:stats:reader`<br>`fixed:settings:reader`<br>`fixed:settings:writer`<br>`fixed:provisioning:writer`<br>`fixed:organization:reader`<br>`fixed:organization:maintainer`<br>`fixed:licensing:reader`<br>`fixed:licensing:writer`<br>`fixed:datasources.caching:reader`<br>`fixed:datasources.caching:writer`<br>`fixed:dashboards.insights:reader`<br>`fixed:datasources.insights:reader` | Default [Grafana server administrator]({{< relref "../#grafana-server-administrators" >}}) assignments. |
|
| Grafana Admin | `fixed:roles:reader`<br>`fixed:roles:writer`<br>`fixed:users:reader`<br>`fixed:users:writer`<br>`fixed:org.users:reader`<br>`fixed:org.users:writer`<br>`fixed:ldap:reader`<br>`fixed:ldap:writer`<br>`fixed:stats:reader`<br>`fixed:settings:reader`<br>`fixed:settings:writer`<br>`fixed:provisioning:writer`<br>`fixed:organization:reader`<br>`fixed:organization:maintainer`<br>`fixed:licensing:reader`<br>`fixed:licensing:writer`<br>`fixed:datasources.caching:reader`<br>`fixed:datasources.caching:writer`<br>`fixed:dashboards.insights:reader`<br>`fixed:datasources.insights:reader` | Default [Grafana server administrator]({{< relref "../#grafana-server-administrators" >}}) assignments. |
|
||||||
| Admin | `fixed:reports:reader`<br>`fixed:reports:writer`<br>`fixed:datasources:reader`<br>`fixed:datasources:writer`<br>`fixed:organization:writer`<br>`fixed:datasources.permissions:reader`<br>`fixed:datasources.permissions:writer`<br>`fixed:teams:writer`<br>`fixed:dashboards:reader`<br>`fixed:dashboards:writer`<br>`fixed:dashboards.permissions:reader`<br>`fixed:dashboards.permissions:writer`<br>`fixed:folders:reader`<br>`fixes:folders:writer`<br>`fixed:folders.permissions:reader`<br>`fixed:folders.permissions:writer`<br>`fixed:alerting:writer`<br>`fixed:apikeys:reader`<br>`fixed:apikeys:writer`<br>`fixed:alerting.provisioning:writer`<br>`fixed:datasources.caching:reader`<br>`fixed:datasources.caching:writer`<br>`fixed:dashboards.insights:reader`<br>`fixed:datasources.insights:reader` | Default [Grafana organization administrator]({{< relref "../#organization-users-and-permissions" >}}) assignments. |
|
| Admin | `fixed:reports:reader`<br>`fixed:reports:writer`<br>`fixed:datasources:reader`<br>`fixed:datasources:writer`<br>`fixed:organization:writer`<br>`fixed:datasources.permissions:reader`<br>`fixed:datasources.permissions:writer`<br>`fixed:teams:writer`<br>`fixed:dashboards:reader`<br>`fixed:dashboards:writer`<br>`fixed:dashboards.permissions:reader`<br>`fixed:dashboards.permissions:writer`<br>`fixed:folders:reader`<br>`fixed:folders:writer`<br>`fixed:folders.permissions:reader`<br>`fixed:folders.permissions:writer`<br>`fixed:alerting:writer`<br>`fixed:apikeys:reader`<br>`fixed:apikeys:writer`<br>`fixed:alerting.provisioning:writer`<br>`fixed:datasources.caching:reader`<br>`fixed:datasources.caching:writer`<br>`fixed:dashboards.insights:reader`<br>`fixed:datasources.insights:reader` | Default [Grafana organization administrator]({{< relref "../#organization-users-and-permissions" >}}) assignments. |
|
||||||
| Editor | `fixed:datasources:explorer`<br>`fixed:dashboards:creator`<br>`fixed:folders:creator`<br>`fixed:annotations:writer`<br>`fixed:teams:creator` if the `editors_can_admin` configuration flag is enabled<br>`fixed:alerting:writer`<br>`fixed:dashboards.insights:reader`<br>`fixed:datasources.insights:reader` | Default [Editor]({{< relref "../#organization-users-and-permissions" >}}) assignments. |
|
| Editor | `fixed:datasources:explorer`<br>`fixed:dashboards:creator`<br>`fixed:folders:creator`<br>`fixed:annotations:writer`<br>`fixed:teams:creator` if the `editors_can_admin` configuration flag is enabled<br>`fixed:alerting:writer`<br>`fixed:dashboards.insights:reader`<br>`fixed:datasources.insights:reader` | Default [Editor]({{< relref "../#organization-users-and-permissions" >}}) assignments. |
|
||||||
| Viewer | `fixed:datasources:id:reader`<br>`fixed:organization:reader`<br>`fixed:annotations:reader`<br>`fixed:annotations.dashboard:writer`<br>`fixed:alerting:reader`<br>`fixed:plugins.app:reader`<br>`fixed:dashboards.insights:reader`<br>`fixed:datasources.insights:reader` | Default [Viewer]({{< relref "../#organization-users-and-permissions" >}}) assignments. |
|
| Viewer | `fixed:datasources:id:reader`<br>`fixed:organization:reader`<br>`fixed:annotations:reader`<br>`fixed:annotations.dashboard:writer`<br>`fixed:alerting:reader`<br>`fixed:plugins.app:reader`<br>`fixed:dashboards.insights:reader`<br>`fixed:datasources.insights:reader` | Default [Viewer]({{< relref "../#organization-users-and-permissions" >}}) assignments. |
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/enterprise/access-control/rbac-provisioning/
|
- ../../../enterprise/access-control/rbac-provisioning/
|
||||||
- /docs/grafana/latest/administration/roles-and-permissions/access-control/rbac-provisioning/
|
- rbac-provisioning/
|
||||||
- /docs/grafana/latest/administration/roles-and-permissions/access-control/rbac-grafana-provisioning
|
description: Learn about RBAC Grafana provisioning and view an example YAML provisioning
|
||||||
description: Learn about RBAC Grafana provisioning and view an example YAML provisioning file
|
file that configures Grafana role assignments.
|
||||||
that configures Grafana role assignments.
|
|
||||||
menuTitle: Provisioning RBAC with Grafana
|
menuTitle: Provisioning RBAC with Grafana
|
||||||
title: Provisioning RBAC with Grafana
|
title: Provisioning RBAC with Grafana
|
||||||
weight: 60
|
weight: 60
|
||||||
@@ -12,7 +11,7 @@ weight: 60
|
|||||||
|
|
||||||
# Provisioning RBAC with Grafana
|
# Provisioning RBAC with Grafana
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced]({{< ref "/docs/grafana-cloud" >}}).
|
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
||||||
|
|
||||||
You can create, change or remove [Custom roles]({{< relref "./manage-rbac-roles/#create-custom-roles-using-provisioning" >}}) and create or remove [basic role assignments]({{< relref "./assign-rbac-roles/#assign-a-fixed-role-to-a-basic-role-using-provisioning" >}}), by adding one or more YAML configuration files in the `provisioning/access-control/` directory.
|
You can create, change or remove [Custom roles]({{< relref "./manage-rbac-roles/#create-custom-roles-using-provisioning" >}}) and create or remove [basic role assignments]({{< relref "./assign-rbac-roles/#assign-a-fixed-role-to-a-basic-role-using-provisioning" >}}), by adding one or more YAML configuration files in the `provisioning/access-control/` directory.
|
||||||
|
|
||||||
@@ -26,13 +25,17 @@ Grafana performs provisioning during startup. After you make a change to the con
|
|||||||
|
|
||||||
1. Sign in to the Grafana server.
|
1. Sign in to the Grafana server.
|
||||||
|
|
||||||
2. Locate the Grafana provisioning folder.
|
1. Locate the Grafana provisioning folder.
|
||||||
|
|
||||||
3. Create a new YAML in the following folder: **provisioning/access-control**. For example, `provisioning/access-control/custom-roles.yml`
|
1. Create a new YAML in the following folder: **provisioning/access-control**. For example, `provisioning/access-control/custom-roles.yml`
|
||||||
|
|
||||||
4. Add RBAC provisioning details to the configuration file. See [manage RBAC roles]({{< relref "./manage-rbac-roles/" >}}) and [assign RBAC roles]({{< relref "./assign-rbac-roles/" >}}) for instructions, and see this [example role provisioning file]({{< relref "./rbac-provisioning/#example" >}}) for a complete example of a provisioning file.
|
1. Add RBAC provisioning details to the configuration file.
|
||||||
|
|
||||||
5. Reload the provisioning configuration file.
|
Refer to [Manage RBAC roles]({{< relref "./manage-rbac-roles/" >}}) and [Assign RBAC roles]({{< relref "./assign-rbac-roles/" >}}) for instructions.
|
||||||
|
|
||||||
|
Refer to [example role provisioning file]({{< relref "#example-role-configuration-file-using-grafana-provisioning" >}}) for a complete example of a provisioning file.
|
||||||
|
|
||||||
|
1. Reload the provisioning configuration file.
|
||||||
|
|
||||||
For more information about reloading the provisioning configuration at runtime, refer to [Reload provisioning configurations]({{< relref "../../../../developers/http_api/admin/#reload-provisioning-configurations" >}}).
|
For more information about reloading the provisioning configuration at runtime, refer to [Reload provisioning configurations]({{< relref "../../../../developers/http_api/admin/#reload-provisioning-configurations" >}}).
|
||||||
|
|
||||||
@@ -46,7 +49,7 @@ The following example shows a complete YAML configuration file that:
|
|||||||
- Assign roles to teams
|
- Assign roles to teams
|
||||||
- Revoke assignments of roles to teams
|
- Revoke assignments of roles to teams
|
||||||
|
|
||||||
## Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/enterprise/access-control/rbac-provisioning/rbac-terraform-provisioning
|
- ../../../enterprise/access-control/rbac-provisioning/rbac-terraform-provisioning/
|
||||||
description: Learn about RBAC Terraform provisioning and view an example of provisioning configuration
|
description: Learn about RBAC Terraform provisioning and view an example of provisioning
|
||||||
for Grafana roles and role assignments.
|
configuration for Grafana roles and role assignments.
|
||||||
menuTitle: Provisioning RBAC with Terraform
|
menuTitle: Provisioning RBAC with Terraform
|
||||||
title: Provisioning RBAC with Terraform
|
title: Provisioning RBAC with Terraform
|
||||||
weight: 60
|
weight: 60
|
||||||
@@ -10,7 +10,7 @@ weight: 60
|
|||||||
|
|
||||||
# Provisioning RBAC with Terraform
|
# Provisioning RBAC with Terraform
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced]({{< ref "/docs/grafana-cloud" >}}).
|
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
||||||
|
|
||||||
You can create, change or remove [Custom roles](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/role) and create or remove [basic and custom role assignments](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/role_assignment), by using [Terraform's Grafana provider](https://registry.terraform.io/providers/grafana/grafana/latest/docs).
|
You can create, change or remove [Custom roles](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/role) and create or remove [basic and custom role assignments](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/role_assignment), by using [Terraform's Grafana provider](https://registry.terraform.io/providers/grafana/grafana/latest/docs).
|
||||||
|
|
||||||
@@ -22,15 +22,15 @@ You can create, change or remove [Custom roles](https://registry.terraform.io/pr
|
|||||||
|
|
||||||
## Create a Service Account Token for provisioning
|
## Create a Service Account Token for provisioning
|
||||||
|
|
||||||
We recommend using service account tokens for provisioning. [Service accounts](https://grafana.com/docs/grafana/latest/administration/service-accounts/) support fine grained permissions, which allows you to easily authenticate and use the minimum set of permissions needed to provision your RBAC infrastructure.
|
We recommend using service account tokens for provisioning. [Service accounts]({{< relref "../../../service-accounts/" >}}) support fine grained permissions, which allows you to easily authenticate and use the minimum set of permissions needed to provision your RBAC infrastructure.
|
||||||
|
|
||||||
To create a service account token for provisioning, complete the following steps.
|
To create a service account token for provisioning, complete the following steps.
|
||||||
|
|
||||||
1. [Create a new service account](https://grafana.com/docs/grafana/latest/administration/service-accounts/#create-a-service-account-in-grafana) for your CI pipeline.
|
1. [Create a new service account]({{< relref "../../../service-accounts/#create-a-service-account-in-grafana" >}}) for your CI pipeline.
|
||||||
1. [Assign permissions to service account](https://grafana.com/docs/grafana/latest/administration/service-accounts/#assign-roles-to-a-service-account-in-grafana):
|
1. [Assign permissions to service account]({{< relref "../../../service-accounts/#assign-roles-to-a-service-account-in-grafana" >}}):
|
||||||
1. You will need roles “Role reader”, "Role writer" and roles including any permissions that will be provisioned. For example, to create or assign a role that allows creating users, a service account needs permissions to create users.
|
- You will need roles “Role reader”, "Role writer" and roles including any permissions that will be provisioned. For example, to create or assign a role that allows creating users, a service account needs permissions to create users.
|
||||||
1. Alternatively, you can assign "Admin" basic role to the service account.
|
- Alternatively, you can assign "Admin" basic role to the service account.
|
||||||
1. [Create a new service account token](https://grafana.com/docs/grafana/latest/administration/service-accounts/#to-add-a-token-to-a-service-account) for use in Terraform.
|
1. [Create a new service account token]({{< relref "../../../service-accounts/#to-add-a-token-to-a-service-account" >}}) for use in Terraform.
|
||||||
|
|
||||||
Alternatively, you can use basic authentication. To view all the supported authentication formats, see [here](https://registry.terraform.io/providers/grafana/grafana/latest/docs#authentication).
|
Alternatively, you can use basic authentication. To view all the supported authentication formats, see [here](https://registry.terraform.io/providers/grafana/grafana/latest/docs#authentication).
|
||||||
|
|
||||||
@@ -105,7 +105,7 @@ resource "grafana_role" "my_new_role" {
|
|||||||
The following example shows how to provision role assignments.
|
The following example shows how to provision role assignments.
|
||||||
In this example a team, user and service account are provisioned, and the custom role from the previous example is assigned to them.
|
In this example a team, user and service account are provisioned, and the custom role from the previous example is assigned to them.
|
||||||
|
|
||||||
1. Extend the configuration file from the [previous example]({{##}}) with the following:
|
1. Extend the configuration file from the [previous example](#provision-custom-roles) with the following:
|
||||||
|
|
||||||
```terraform
|
```terraform
|
||||||
resource "grafana_team" "test_team" {
|
resource "grafana_team" "test_team" {
|
||||||
@@ -148,4 +148,4 @@ Similarly, you can look up and use `id`s of users, teams and service accounts th
|
|||||||
|
|
||||||
[RBAC setup with Grafana provisioning]({{< relref "./rbac-grafana-provisioning">}})
|
[RBAC setup with Grafana provisioning]({{< relref "./rbac-grafana-provisioning">}})
|
||||||
|
|
||||||
[Grafana Cloud Terraform provisioning](https://grafana.com/docs/grafana-cloud/infrastructure-as-code/terraform/)
|
[Grafana Cloud Terraform provisioning](/docs/grafana-cloud/infrastructure-as-code/terraform/)
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/administration/service-accounts/
|
- about-service-accounts/
|
||||||
- /docs/grafana/latest/administration/service-accounts/about-service-accounts/
|
- add-service-account-token/
|
||||||
- /docs/grafana/latest/administration/service-accounts/add-service-account-token/
|
- create-service-account/
|
||||||
- /docs/grafana/latest/administration/service-accounts/create-service-account/
|
- enable-service-accounts/
|
||||||
- /docs/grafana/latest/administration/service-accounts/enable-service-accounts/
|
|
||||||
description: This page contains information about service accounts in Grafana
|
description: This page contains information about service accounts in Grafana
|
||||||
keywords:
|
keywords:
|
||||||
- API keys
|
- API keys
|
||||||
|
|||||||
@@ -1,18 +1,21 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/administration/view-server/
|
- ../admin/view-server-settings/
|
||||||
- /docs/grafana/latest/admin/view-server-settings/
|
- ../admin/view-server-stats/
|
||||||
- /docs/grafana/latest/administration/view-server/view-server-settings/
|
- view-server/
|
||||||
- /docs/grafana/latest/admin/view-server-stats/
|
- view-server/view-server-settings/
|
||||||
- /docs/grafana/latest/administration/view-server/view-server-stats/
|
- view-server/view-server-stats/
|
||||||
- /docs/grafana/latest/administration/stats-and-license/
|
|
||||||
description: How to view server settings in the Grafana UI
|
description: How to view server settings in the Grafana UI
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
- configuration
|
- configuration
|
||||||
- server
|
- server
|
||||||
- settings
|
- settings
|
||||||
title: Stats and license
|
labels:
|
||||||
|
products:
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
title: View server statistics and license
|
||||||
weight: 400
|
weight: 400
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -22,33 +25,33 @@ This setting contains information about tools that Grafana Server Admins can use
|
|||||||
|
|
||||||
## View Grafana server settings
|
## View Grafana server settings
|
||||||
|
|
||||||
> Refer to [Role-based access control]({{< relref "../roles-and-permissions/access-control/" >}}) in Grafana Enterprise to understand how you can control access with RBAC permissions.
|
> Refer to [Role-based access control]({{< relref "../roles-and-permissions/access-control" >}}) in Grafana Enterprise to understand how you can control access with RBAC permissions.
|
||||||
|
|
||||||
If you are a Grafana server administrator, use the Settings tab to view the settings that are applied to your Grafana server via the [Configuration]({{< relref "../../setup-grafana/configure-grafana/#config-file-locations" >}}) file and any environmental variables.
|
If you are a Grafana server administrator, use the Settings tab to view the settings that are applied to your Grafana server via the [Configuration]({{< relref "../../setup-grafana/configure-grafana#configuration-file-location" >}}) file and any environmental variables.
|
||||||
|
|
||||||
> **Note:** Only Grafana server administrators can access the **Server Admin** menu. For more information about about administrative permissions, refer to [Roles and permissions]({{< relref "../roles-and-permissions/#grafana-server-administrators" >}}).
|
> **Note:** Only Grafana server administrators can access the **Server Admin** menu. For more information about about administrative permissions, refer to [Roles and permissions]({{< relref "../roles-and-permissions#grafana-server-administrators" >}}).
|
||||||
|
|
||||||
### View server settings
|
### View server settings
|
||||||
|
|
||||||
1. Log in to your Grafana server with an account that has the Grafana Admin flag set.
|
1. Log in to your Grafana server with an account that has the Grafana Admin flag set.
|
||||||
1. Hover your cursor over the **Server Admin** (shield) icon in the side menu and then click the **Settings** tab.
|
1. Click **Administration** in the left-side menu, and then **Settings**.
|
||||||
|
|
||||||
### Available settings
|
### Available settings
|
||||||
|
|
||||||
For a full list of server settings, refer to [Configuration]({{< relref "../../setup-grafana/configure-grafana/" >}}).
|
For a full list of server settings, refer to [Configuration]({{< relref "../../setup-grafana/configure-grafana#server" >}}).
|
||||||
|
|
||||||
## View Grafana server stats
|
## View Grafana server stats
|
||||||
|
|
||||||
> Refer to [Role-based access control]({{< relref "../roles-and-permissions/access-control/" >}}) in Grafana Enterprise to understand how you can control access with RBAC permissions.
|
> Refer to [Role-based access control]({{< relref "../roles-and-permissions/access-control" >}}) in Grafana Enterprise to understand how you can control access with RBAC permissions.
|
||||||
|
|
||||||
If you are a Grafana server admin, then you can view useful statistics about your Grafana server in the Stats & Licensing tab.
|
If you are a Grafana server admin, then you can view useful statistics about your Grafana server in the Stats & Licensing tab.
|
||||||
|
|
||||||
> **Note:** Only Grafana server administrators can access the **Server Admin** menu. For more information about about administrative permissions, refer to [Roles and permissions]({{< relref "../roles-and-permissions/#grafana-server-administrators" >}}).
|
> **Note:** Only Grafana server administrators can access the **Server Admin** menu. For more information about about administrative permissions, refer to [Roles and permissions]({{< relref "../roles-and-permissions#grafana-server-administrators" >}}).
|
||||||
|
|
||||||
### View server stats
|
### View server stats
|
||||||
|
|
||||||
1. Log in to your Grafana server with an account that has the Grafana Admin flag set.
|
1. Log in to your Grafana server with an account that has the Grafana Admin flag set.
|
||||||
1. Hover your cursor over the **Server Admin** (shield) icon in the side menu and then click the **Stats & Licensing** tab.
|
1. Click **Administration** in the left-side menu, and then **Stats and license**.
|
||||||
|
|
||||||
### Available stats
|
### Available stats
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-teams/
|
- ../manage-users/add-or-remove-user-from-team/
|
||||||
- /docs/grafana/latest/manage-users/add-or-remove-user-from-team/
|
- ../manage-users/create-or-remove-team/
|
||||||
- /docs/grafana/latest/manage-users/create-or-remove-team/
|
- ../manage-users/manage-teams/
|
||||||
- /docs/grafana/latest/manage-users/manage-teams/
|
- manage-users-and-permissions/manage-teams/
|
||||||
- /docs/grafana/latest/administration/team-management/
|
|
||||||
title: Team management
|
title: Team management
|
||||||
weight: 400
|
weight: 400
|
||||||
---
|
---
|
||||||
@@ -62,8 +61,6 @@ To add a team member:
|
|||||||
1. Choose if you want to add the user as a team Member or an Admin.
|
1. Choose if you want to add the user as a team Member or an Admin.
|
||||||
1. Click **Add to team**.
|
1. Click **Add to team**.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Grant team member permissions
|
## Grant team member permissions
|
||||||
|
|
||||||
Complete this task when you want to add or modify team member permissions.
|
Complete this task when you want to add or modify team member permissions.
|
||||||
@@ -76,8 +73,6 @@ To grant team member permissions:
|
|||||||
1. In the team member list, find and click the user that you want to change. You can use the search field to filter the list if necessary.
|
1. In the team member list, find and click the user that you want to change. You can use the search field to filter the list if necessary.
|
||||||
1. Click the **Permission** list, and then click the new user permission level.
|
1. Click the **Permission** list, and then click the new user permission level.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Remove a team member
|
## Remove a team member
|
||||||
|
|
||||||
You can remove a team member when you no longer want to apply team permissions to the user
|
You can remove a team member when you no longer want to apply team permissions to the user
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/
|
- manage-users-and-permissions/
|
||||||
title: User management
|
title: User management
|
||||||
weight: 200
|
weight: 200
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-dashboard-permissions/
|
- ../../permissions/dashboard_folder_permissions/
|
||||||
- /docs/grafana/latest/permissions/dashboard_folder_permissions/
|
- ../manage-users-and-permissions/manage-dashboard-permissions/
|
||||||
- /docs/grafana/latest/administration/user-management/manage-dashboard-permissions/
|
|
||||||
title: Manage dashboard permissions
|
title: Manage dashboard permissions
|
||||||
weight: 500
|
weight: 500
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-org-users/
|
- ../../manage-users/org-admin/
|
||||||
- /docs/grafana/latest/manage-users/org-admin/
|
- ../manage-users-and-permissions/manage-org-users/
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-org-users/view-list-org-users/
|
- ../manage-users-and-permissions/manage-org-users/change-user-org-permissions/
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-org-users/change-user-org-permissions/
|
- ../manage-users-and-permissions/manage-org-users/invite-user-join-org/
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-org-users/invite-user-join-org/
|
- ../manage-users-and-permissions/manage-org-users/manage-pending-invites/
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-org-users/manage-pending-invites/
|
- ../manage-users-and-permissions/manage-org-users/remove-user-from-org/
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-org-users/remove-user-from-org/
|
- ../manage-users-and-permissions/manage-org-users/view-list-org-users/
|
||||||
- /docs/grafana/latest/administration/user-management/manage-org-users/
|
|
||||||
title: Manage users in an organization
|
title: Manage users in an organization
|
||||||
weight: 400
|
weight: 400
|
||||||
---
|
---
|
||||||
@@ -33,8 +32,6 @@ You can see a list of users with accounts in your Grafana organization. If neces
|
|||||||
1. Sign in to Grafana as an organization administrator.
|
1. Sign in to Grafana as an organization administrator.
|
||||||
1. Hover your cursor over the **Configuration** (gear) icon in the side menu and click **Users**.
|
1. Hover your cursor over the **Configuration** (gear) icon in the side menu and click **Users**.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
> **Note:** If you have [server administrator]({{< relref "../../roles-and-permissions/#grafana-server-administrators" >}}) permissions, you can also [view a global list of users]({{< relref "../server-user-management#view-a-list-of-users" >}}) in the Server Admin section of Grafana.
|
> **Note:** If you have [server administrator]({{< relref "../../roles-and-permissions/#grafana-server-administrators" >}}) permissions, you can also [view a global list of users]({{< relref "../server-user-management#view-a-list-of-users" >}}) in the Server Admin section of Grafana.
|
||||||
|
|
||||||
## Change a user's organization permissions
|
## Change a user's organization permissions
|
||||||
@@ -96,8 +93,6 @@ When you invite users to join an organization, you assign the **Admin**, **Edito
|
|||||||
|
|
||||||
If the invitee is not already a user, the system adds them.
|
If the invitee is not already a user, the system adds them.
|
||||||
|
|
||||||
.
|
|
||||||
|
|
||||||
## Manage a pending invitation
|
## Manage a pending invitation
|
||||||
|
|
||||||
Periodically review invitations you have sent so that you can see a list of users that have not yet accepted the invitation or cancel a pending invitation.
|
Periodically review invitations you have sent so that you can see a list of users that have not yet accepted the invitation or cancel a pending invitation.
|
||||||
@@ -116,14 +111,10 @@ Periodically review invitations you have sent so that you can see a list of user
|
|||||||
|
|
||||||
The **Pending Invites** button appears only when there are unaccepted invitations.
|
The **Pending Invites** button appears only when there are unaccepted invitations.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
To cancel an invitation, click the red **X** next to the invitation.
|
To cancel an invitation, click the red **X** next to the invitation.
|
||||||
|
|
||||||
To copy an invitation link and send it directly to a user, click Copy Invite. You can then paste the invite link into a message.
|
To copy an invitation link and send it directly to a user, click Copy Invite. You can then paste the invite link into a message.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Remove a user from an organization
|
## Remove a user from an organization
|
||||||
|
|
||||||
You can remove a user from an organization when they no longer require access to the dashboard or data sources owned by the organization. No longer requiring access to an organization might occur when the user has left your company or has internally moved to another organization.
|
You can remove a user from an organization when they no longer require access to the dashboard or data sources owned by the organization. No longer requiring access to an organization might occur when the user has left your company or has internally moved to another organization.
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-server-users/
|
- ../../manage-users/server-admin/
|
||||||
- /docs/grafana/latest/manage-users/server-admin/
|
- ../../manage-users/server-admin/server-admin-manage-users/
|
||||||
- /docs/grafana/latest/manage-users/server-admin/server-admin-manage-users/
|
- ../manage-users-and-permissions/manage-server-users/
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-server-users/view-list-users/
|
- ../manage-users-and-permissions/manage-server-users/add-user/
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-server-users/view-edit-user-account/
|
- ../manage-users-and-permissions/manage-server-users/force-user-logout/
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-server-users/view-user-account-details/
|
- ../manage-users-and-permissions/manage-server-users/view-edit-user-account/
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-server-users/add-user/
|
- ../manage-users-and-permissions/manage-server-users/view-list-users/
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-server-users/force-user-logout/
|
- ../manage-users-and-permissions/manage-server-users/view-user-account-details/
|
||||||
- /docs/grafana/latest/administration/user-management/server-user-management/
|
|
||||||
title: Server user management
|
title: Server user management
|
||||||
weight: 100
|
weight: 100
|
||||||
---
|
---
|
||||||
@@ -38,8 +37,6 @@ You can see a list of users with accounts on your Grafana server. This action mi
|
|||||||
1. Sign in to Grafana as a server administrator.
|
1. Sign in to Grafana as a server administrator.
|
||||||
1. Hover your cursor over the **Server Admin** (shield) icon until a menu appears, and click **Users**.
|
1. Hover your cursor over the **Server Admin** (shield) icon until a menu appears, and click **Users**.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
> **Note:** If you have [organization administrator]({{< relref "../../roles-and-permissions/#organization-roles" >}}) permissions and _not_ [server administrator]({{< relref "../../roles-and-permissions/#grafana-server-administrators" >}}) permissions, you can still [view of list of users in a given organization]({{< relref "../manage-org-users/#view-a-list-of-organization-users" >}}).
|
> **Note:** If you have [organization administrator]({{< relref "../../roles-and-permissions/#organization-roles" >}}) permissions and _not_ [server administrator]({{< relref "../../roles-and-permissions/#grafana-server-administrators" >}}) permissions, you can still [view of list of users in a given organization]({{< relref "../manage-org-users/#view-a-list-of-organization-users" >}}).
|
||||||
|
|
||||||
## View user details
|
## View user details
|
||||||
@@ -62,26 +59,18 @@ A user account contains the following sections.
|
|||||||
|
|
||||||
This section contains basic user information, which users can update.
|
This section contains basic user information, which users can update.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
#### Permissions
|
#### Permissions
|
||||||
|
|
||||||
This indicates whether the user account has the Grafana administrator flag applied. If the flag is set to **Yes**, then the user is a Grafana server administrator.
|
This indicates whether the user account has the Grafana administrator flag applied. If the flag is set to **Yes**, then the user is a Grafana server administrator.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
#### Organizations
|
#### Organizations
|
||||||
|
|
||||||
This section lists the organizations the user belongs to and their assigned role.
|
This section lists the organizations the user belongs to and their assigned role.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
#### Sessions
|
#### Sessions
|
||||||
|
|
||||||
This section includes recent user sessions and information about the time the user logged in and they system they used. You can force logouts, if necessary.
|
This section includes recent user sessions and information about the time the user logged in and they system they used. You can force logouts, if necessary.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Edit a user account
|
## Edit a user account
|
||||||
|
|
||||||
Edit a user account when you want to modify user login credentials, or delete, disable, or enable a user.
|
Edit a user account when you want to modify user login credentials, or delete, disable, or enable a user.
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-server-users/add-remove-user-to-org/
|
- ../../manage-users-and-permissions/manage-server-users/add-remove-user-to-org/
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-server-users/add-user-to-org/
|
- ../../manage-users-and-permissions/manage-server-users/add-user-to-org/
|
||||||
- /docs/grafana/latest/administration/user-management/server-user-management/add-remove-user-to-org/
|
description: Describes how a Grafana server administrator can add or remove users
|
||||||
|
in an organization
|
||||||
title: Add or remove a user in an organization
|
title: Add or remove a user in an organization
|
||||||
description: Describes how a Grafana server administrator can add or remove users in an organization
|
|
||||||
weight: 30
|
weight: 30
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-server-users/assign-remove-server-admin-privileges/
|
- ../../manage-users-and-permissions/manage-server-users/assign-remove-server-admin-privileges/
|
||||||
- /docs/grafana/latest/administration/user-management/server-user-management/assign-remove-server-admin-privileges/
|
description: Describes how to assign and remove Grafana administrator privileges from
|
||||||
|
a server user.
|
||||||
title: Assign or remove Grafana server administrator privileges
|
title: Assign or remove Grafana server administrator privileges
|
||||||
description: Describes how to assign and remove Grafana administrator privileges from a server user.
|
|
||||||
weight: 20
|
weight: 20
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-server-users/change-user-org-permissions/
|
- ../../manage-users-and-permissions/manage-server-users/change-user-org-permissions/
|
||||||
- /docs/grafana/latest/administration/user-management/server-user-management/change-user-org-permissions/
|
|
||||||
title: Change a user's organization permissions
|
title: Change a user's organization permissions
|
||||||
weight: 50
|
weight: 50
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-server-users/grant-editor-admin-permissions/
|
- ../../manage-users-and-permissions/manage-server-users/grant-editor-admin-permissions/
|
||||||
- /docs/grafana/latest/administration/user-management/server-user-management/grant-editor-admin-permissions/
|
|
||||||
title: Grant editors administrator permissions
|
title: Grant editors administrator permissions
|
||||||
weight: 60
|
weight: 60
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/administration/change-your-password/
|
- ../change-your-password/
|
||||||
- /docs/grafana/latest/administration/manage-user-preferences/
|
- ../manage-user-preferences/
|
||||||
- /docs/grafana/latest/administration/user-management/user-preferences/
|
|
||||||
description: Learn how to update your user preferences and switch organizations
|
description: Learn how to update your user preferences and switch organizations
|
||||||
keywords:
|
keywords:
|
||||||
- password
|
- password
|
||||||
@@ -29,9 +28,7 @@ You can change your Grafana password at any time.
|
|||||||
|
|
||||||
1. Sign in to Grafana.
|
1. Sign in to Grafana.
|
||||||
1. Hover your mouse over the user icon in the lower-left corner of the page.
|
1. Hover your mouse over the user icon in the lower-left corner of the page.
|
||||||
1. Click **Change Password**.
|
1. Click **Change Password**. Grafana opens the **Change Password** tab.
|
||||||
Grafana opens the **Change Password** tab.
|
|
||||||
|
|
||||||
1. Enter your old password and a new password.
|
1. Enter your old password and a new password.
|
||||||
1. Confirm your new password.
|
1. Confirm your new password.
|
||||||
1. Click **Change Password**.
|
1. Click **Change Password**.
|
||||||
@@ -54,6 +51,7 @@ You can choose the way you would like data to appear in Grafana, including the U
|
|||||||
- **Home dashboard** refers to the dashboard you see when you sign in to Grafana. By default, this is set to the Home dashboard.
|
- **Home dashboard** refers to the dashboard you see when you sign in to Grafana. By default, this is set to the Home dashboard.
|
||||||
- **Timezone** is used by dashboards when you set time ranges, so that you view data in your timezone instead of UTC.
|
- **Timezone** is used by dashboards when you set time ranges, so that you view data in your timezone instead of UTC.
|
||||||
- **Week start** is the first day of the week you want to use in dashboard time ranges, for example, `This week`.
|
- **Week start** is the first day of the week you want to use in dashboard time ranges, for example, `This week`.
|
||||||
|
- **Language** determines the language used for parts of the Grafana interface.
|
||||||
|
|
||||||
**To edit your preferences**:
|
**To edit your preferences**:
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/alerting/
|
- about-alerting/
|
||||||
- /docs/grafana/latest/alerting/unified-alerting/alerting/
|
- unified-alerting/alerting/
|
||||||
- /docs/grafana/latest/about-alerting
|
|
||||||
title: Alerting
|
title: Alerting
|
||||||
weight: 114
|
weight: 114
|
||||||
---
|
---
|
||||||
@@ -69,6 +68,4 @@ With mute timings, you can specify a time interval when you don’t want new not
|
|||||||
|
|
||||||
- [Role-based access control]({{< relref "../administration/roles-and-permissions/access-control/" >}}) in Grafana Enterprise.
|
- [Role-based access control]({{< relref "../administration/roles-and-permissions/access-control/" >}}) in Grafana Enterprise.
|
||||||
|
|
||||||
- [Alertmanager]({{< relref "fundamentals/alertmanager/" >}})
|
|
||||||
|
|
||||||
- [High availability](https://grafana.com/docs/grafana/next/alerting/fundamentals/high-availability/)
|
- [High availability](https://grafana.com/docs/grafana/next/alerting/fundamentals/high-availability/)
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/alerting/alerting-rules/
|
- old-alerting/create-alerts/
|
||||||
- /docs/grafana/latest/alerting/old-alerting/create-alerts/
|
- rules/
|
||||||
- /docs/grafana/latest/alerting/rules/
|
- unified-alerting/alerting-rules/
|
||||||
- /docs/grafana/latest/alerting/unified-alerting/alerting-rules/
|
|
||||||
title: Manage your alert rules
|
title: Manage your alert rules
|
||||||
weight: 130
|
weight: 130
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/alerting/alerting-rules/create-grafana-managed-rule/
|
- ../unified-alerting/alerting-rules/create-grafana-managed-rule/
|
||||||
- /docs/grafana/latest/alerting/unified-alerting/alerting-rules/create-grafana-managed-rule/
|
|
||||||
description: Create Grafana managed alert rule
|
description: Create Grafana managed alert rule
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/alerting/alerting-rules/create-mimir-loki-managed-recording-rule/
|
- ../unified-alerting/alerting-rules/create-cortex-loki-managed-recording-rule/
|
||||||
- /docs/grafana/latest/alerting/unified-alerting/alerting-rules/create-cortex-loki-managed-recording-rule/
|
- ../unified-alerting/alerting-rules/create-mimir-loki-managed-recording-rule/
|
||||||
- /docs/grafana/latest/alerting/unified-alerting/alerting-rules/create-mimir-loki-managed-recording-rule/
|
|
||||||
description: Create Grafana Mimir or Loki managed recording rule
|
description: Create Grafana Mimir or Loki managed recording rule
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/alerting/alerting-rules/create-mimir-loki-managed-rule/
|
- ../unified-alerting/alerting-rules/create-cortex-loki-managed-recording-rule/
|
||||||
- /docs/grafana/latest/alerting/unified-alerting/alerting-rules/create-cortex-loki-managed-recording-rule/
|
- ../unified-alerting/alerting-rules/create-mimir-loki-managed-recording-rule/
|
||||||
- /docs/grafana/latest/alerting/unified-alerting/alerting-rules/create-mimir-loki-managed-recording-rule/
|
- ../unified-alerting/alerting-rules/create-mimir-loki-managed-rule/
|
||||||
- /docs/grafana/latest/alerting/unified-alerting/alerting-rules/create-mimir-loki-managed-rule/
|
|
||||||
description: Create Grafana Mimir or Loki managed alerting rule
|
description: Create Grafana Mimir or Loki managed alerting rule
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/alerting/alerting-rules/edit-mimir-loki-namespace-group/
|
- ../unified-alerting/alerting-rules/edit-cortex-loki-namespace-group/
|
||||||
- /docs/grafana/latest/alerting/unified-alerting/alerting-rules/edit-cortex-loki-namespace-group/
|
- ../unified-alerting/alerting-rules/edit-mimir-loki-namespace-group/
|
||||||
- /docs/grafana/latest/alerting/unified-alerting/alerting-rules/edit-mimir-loki-namespace-group/
|
|
||||||
description: Edit Grafana Mimir or Loki rule groups and namespaces
|
description: Edit Grafana Mimir or Loki rule groups and namespaces
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/alerting/alerting-rules/rule-list/
|
- ../unified-alerting/alerting-rules/rule-list/
|
||||||
- /docs/grafana/latest/alerting/unified-alerting/alerting-rules/rule-list/
|
- ../view-alert-rules/
|
||||||
- /docs/grafana/latest/alerting/view-alert-rules/
|
- rule-list/
|
||||||
- /docs/grafana/latest/alerting/alerting-rules/view-alert-rules
|
|
||||||
description: Manage alerting rules
|
description: Manage alerting rules
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/alerting/fundamentals/state-and-health/
|
- ../fundamentals/state-and-health/
|
||||||
- /docs/grafana/latest/alerting/unified-alerting/alerting-rules/state-and-health/
|
- ../unified-alerting/alerting-rules/state-and-health/
|
||||||
- /docs/grafana/latest/alerting/view-state-health/
|
- ../view-state-health/
|
||||||
description: State and Health of alerting rules
|
description: State and Health of alerting rules
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/alerting/difference-old-new/
|
- unified-alerting/difference-old-new/
|
||||||
- /docs/grafana/latest/alerting/unified-alerting/difference-old-new/
|
|
||||||
description: What's New with Grafana alerts
|
description: What's New with Grafana alerts
|
||||||
draft: true
|
draft: true
|
||||||
keywords:
|
keywords:
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/alerting/fundamentals/
|
- metrics/
|
||||||
- /docs/grafana/latest/alerting/metrics/
|
- unified-alerting/fundamentals/
|
||||||
- /docs/grafana/latest/alerting/unified-alerting/fundamentals/
|
|
||||||
title: Explore Alerting
|
title: Explore Alerting
|
||||||
weight: 105
|
weight: 105
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
|
||||||
- /docs/grafana/latest/alerting/fundamentals/alert-rules/
|
|
||||||
description: About Grafana alert rules
|
description: About Grafana alert rules
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user