Devenv: Create script to provision many folders (#75427)

* user essentials mob! 🔱

* user essentials mob! 🔱

lastFile:devenv/bulk-folders/bulk-folders.sh

* user essentials mob! 🔱

lastFile:devenv/setup.sh

* user essentials mob! 🔱

lastFile:devenv/setup.sh

* user essentials mob! 🔱

* user essentials mob! 🔱

* user essentials mob! 🔱

* codeowners

---------

Co-authored-by: eledobleefe <laura.fernandez@grafana.com>
Co-authored-by: Laura Benz <laura.benz@grafana.com>
Co-authored-by: Tobias Skarhed <tobias.skarhed@gmail.com>
This commit is contained in:
Josh Hunt 2023-09-26 12:05:37 +00:00 committed by GitHub
parent 611df82259
commit 354c1e992e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 47 additions and 8 deletions

1
.github/CODEOWNERS vendored
View File

@ -166,6 +166,7 @@
/devenv/docker/blocks/self-instrumentation* @grafana/observability-metrics
/devenv/bulk-dashboards/ @grafana/dashboards-squad
/devenv/bulk-folders/ @grafana/grafana-frontend-platform
/devenv/bulk_alerting_dashboards/ @grafana/alerting-backend-product
/devenv/create_docker_compose.sh @grafana/backend-platform
/devenv/dashboards.yaml @grafana/dashboards-squad

7
.gitignore vendored
View File

@ -87,8 +87,10 @@ public/css/*.min.css
/devenv/docker/ha-test-unified-alerting/logs/webhook/webhook-listener.log
conf/custom.ini
/conf/provisioning/**/custom.yaml
/conf/provisioning/**/dev.yaml
/conf/provisioning/**/*.yaml
!/conf/provisioning/**/sample.yaml
/conf/ldap_dev.toml
/conf/ldap_freeipa.toml
profile.cov
@ -126,6 +128,7 @@ pkg/services/quota/quotaimpl/storage/storage.json
*.orig
/devenv/bulk-dashboards/*.json
/devenv/bulk-folders/*/*.json
/devenv/bulk_alerting_dashboards/*.json
/devenv/datasources_bulk.yaml
/devenv/bulk_alerting_dashboards/bulk_alerting_datasources.yaml

View File

@ -0,0 +1,17 @@
#!/bin/bash
numberOfFolders=${1:-200}
numberOfDashboardsPerFolder=${2:-3}
for (( folderCounter=1; folderCounter<="$numberOfFolders"; folderCounter++ ))
do
echo "Creating folder $folderCounter"
folderPath="bulk-folders/Bulk Folder ${folderCounter}"
mkdir -p "$folderPath"
for (( dashCounter=1; dashCounter<="$numberOfDashboardsPerFolder"; dashCounter++ ))
do
jsonnet -o "$folderPath/dashboard${dashCounter}.json" -e "local bulkDash = import 'bulk-dashboards/bulkdash.jsonnet'; bulkDash + { uid: 'bulk-folder-${folderCounter}-${dashCounter}', title: 'Bulk Folder ${folderCounter} Dashboard ${dashCounter}' }"
done
done

View File

@ -0,0 +1,8 @@
apiVersion: 1
providers:
- name: 'Bulk folders'
type: file
options:
foldersFromFilesStructure: true
path: devenv/bulk-folders

View File

@ -35,6 +35,11 @@ bulkAlertingDashboard() {
ln -s -f ../../../devenv/bulk_alerting_dashboards/bulk_alerting_datasources.yaml ../conf/provisioning/datasources/custom.yaml
}
bulkFolders() {
./bulk-folders/bulk-folders.sh "$1"
ln -s -f ../../../devenv/bulk-folders/bulk-folders.yaml ../conf/provisioning/dashboards/bulk-folders.yaml
}
requiresJsonnet() {
if ! type "jsonnet" > /dev/null; then
echo "you need you install jsonnet to run this script"
@ -57,23 +62,28 @@ devDatasources() {
usage() {
echo -e "\n"
echo "Usage:"
echo " bulk-dashboards - create and provisioning 400 dashboards"
echo " bulk-alerting-dashboards - create and provisioning 400 dashboards with alerts"
echo " no args - provisioning core datasources and dev dashboards"
echo " bulk-dashboards - provision 400 dashboards"
echo " bulk-alerting-dashboards - provision 400 dashboards with alerts"
echo " bulk-folders [folders] [dashboards] - provision many folders with dashboards"
echo " bulk-folders - provision 200 folders with 3 dashboards in each"
echo " no args - provision core datasources and dev dashboards"
}
main() {
echo -e "------------------------------------------------------------------"
echo -e "This script sets up provisioning for dev datasources and dashboards"
echo -e "------------------------------------------------------------------"
echo -e "----------------------------------------------------------------------------"
echo -e "This script sets up provisioning for dev datasources, dashboards and folders"
echo -e "----------------------------------------------------------------------------"
echo -e "\n"
local cmd=$1
local arg1=$2
if [[ $cmd == "bulk-alerting-dashboards" ]]; then
bulkAlertingDashboard
elif [[ $cmd == "bulk-dashboards" ]]; then
bulkDashboard
elif [[ $cmd == "bulk-folders" ]]; then
bulkFolders "$arg1"
else
devDashboards
devDatasources