Provisioning: Support FolderUid in Dashboard Provisioning Config (#16559)
* add folderUid to DashbaordsAsConfig structs and DashbardProviderConfigs struct, set these values in mapping func look for new folderUid values in config_reader tests set dashboard folder Uid explicitly in file_reader, which has no affect when not given * formatting and docstrings * add folderUid to DashbaordsAsConfig structs and DashbardProviderConfigs struct, set these values in mapping func look for new folderUid values in config_reader tests set dashboard folder Uid explicitly in file_reader, which has no affect when not given * formatting and docstrings * add folderUid option, as well as documentation for the rest of the fields * add blank folderUid in devenv example. * add folderUid to provisioning sample yaml * instead of just warning, return error if unmarshalling dashboard provisioning file fails * Removing the error handling and adding comment * Add duplicity check for folder Uids Co-authored-by: swtch1 <joshua.thornton@protonmail.com>
This commit is contained in:
committed by
Andrej Ocenas
co-authored by
swtch1
parent
19e824006a
commit
fca5ee4bea
@@ -78,6 +78,7 @@ func (fr *fileReader) ReadAndListen(ctx context.Context) error {
|
||||
}
|
||||
}
|
||||
|
||||
// startWalkingDisk finds and saves dashboards on disk.
|
||||
func (fr *fileReader) startWalkingDisk() error {
|
||||
resolvedPath := fr.resolvePath(fr.Path)
|
||||
if _, err := os.Stat(resolvedPath); err != nil {
|
||||
@@ -119,6 +120,7 @@ func (fr *fileReader) startWalkingDisk() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// handleMissingDashboardFiles will unprovision or delete dashboards which are missing on disk.
|
||||
func (fr *fileReader) handleMissingDashboardFiles(provisionedDashboardRefs map[string]*models.DashboardProvisioning, filesFoundOnDisk map[string]os.FileInfo) {
|
||||
// find dashboards to delete since json file is missing
|
||||
var dashboardToDelete []int64
|
||||
@@ -151,6 +153,7 @@ func (fr *fileReader) handleMissingDashboardFiles(provisionedDashboardRefs map[s
|
||||
}
|
||||
}
|
||||
|
||||
// saveDashboard saves or updates the dashboard provisioning file at path.
|
||||
func (fr *fileReader) saveDashboard(path string, folderId int64, fileInfo os.FileInfo, provisionedDashboardRefs map[string]*models.DashboardProvisioning) (provisioningMetadata, error) {
|
||||
provisioningMetadata := provisioningMetadata{}
|
||||
resolvedFileInfo, err := resolveSymlink(fileInfo, path)
|
||||
@@ -189,7 +192,7 @@ func (fr *fileReader) saveDashboard(path string, folderId int64, fileInfo os.Fil
|
||||
dash.Dashboard.SetId(provisionedData.DashboardId)
|
||||
}
|
||||
|
||||
fr.log.Debug("saving new dashboard", "provisoner", fr.Cfg.Name, "file", path, "folderId", dash.Dashboard.FolderId)
|
||||
fr.log.Debug("saving new dashboard", "provisioner", fr.Cfg.Name, "file", path, "folderId", dash.Dashboard.FolderId)
|
||||
dp := &models.DashboardProvisioning{
|
||||
ExternalId: path,
|
||||
Name: fr.Cfg.Name,
|
||||
@@ -234,6 +237,8 @@ func getOrCreateFolderId(cfg *DashboardsAsConfig, service dashboards.DashboardPr
|
||||
dash.Dashboard.IsFolder = true
|
||||
dash.Overwrite = true
|
||||
dash.OrgId = cfg.OrgId
|
||||
// set dashboard folderUid if given
|
||||
dash.Dashboard.SetUid(cfg.FolderUid)
|
||||
dbDash, err := service.SaveFolderForProvisionedDashboards(dash)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
|
||||
Reference in New Issue
Block a user