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
@@ -24,10 +24,15 @@ func (cr *configReader) parseConfigs(file os.FileInfo) ([]*DashboardsAsConfig, e
|
||||
}
|
||||
|
||||
apiVersion := &ConfigVersion{ApiVersion: 0}
|
||||
yaml.Unmarshal(yamlFile, &apiVersion)
|
||||
|
||||
// We ignore the error here because it errors out for version 0 which does not have apiVersion
|
||||
// specified (so 0 is default). This can also error in case the apiVersion is not an integer but at the moment
|
||||
// this does not handle that case and would still go on as if version = 0.
|
||||
// TODO: return appropriate error in case the apiVersion is specified but isn't integer (or even if it is
|
||||
// integer > max version?).
|
||||
_ = yaml.Unmarshal(yamlFile, &apiVersion)
|
||||
|
||||
if apiVersion.ApiVersion > 0 {
|
||||
|
||||
v1 := &DashboardAsConfigV1{}
|
||||
err := yaml.Unmarshal(yamlFile, &v1)
|
||||
if err != nil {
|
||||
@@ -37,7 +42,6 @@ func (cr *configReader) parseConfigs(file os.FileInfo) ([]*DashboardsAsConfig, e
|
||||
if v1 != nil {
|
||||
return v1.mapToDashboardAsConfig(), nil
|
||||
}
|
||||
|
||||
} else {
|
||||
var v0 []*DashboardsAsConfigV0
|
||||
err := yaml.Unmarshal(yamlFile, &v0)
|
||||
@@ -78,13 +82,23 @@ func (cr *configReader) readConfig() ([]*DashboardsAsConfig, error) {
|
||||
}
|
||||
}
|
||||
|
||||
for i := range dashboards {
|
||||
if dashboards[i].OrgId == 0 {
|
||||
dashboards[i].OrgId = 1
|
||||
uidUsage := map[string]uint8{}
|
||||
for _, dashboard := range dashboards {
|
||||
if dashboard.OrgId == 0 {
|
||||
dashboard.OrgId = 1
|
||||
}
|
||||
|
||||
if dashboards[i].UpdateIntervalSeconds == 0 {
|
||||
dashboards[i].UpdateIntervalSeconds = 10
|
||||
if dashboard.UpdateIntervalSeconds == 0 {
|
||||
dashboard.UpdateIntervalSeconds = 10
|
||||
}
|
||||
if len(dashboard.FolderUid) > 0 {
|
||||
uidUsage[dashboard.FolderUid] += 1
|
||||
}
|
||||
}
|
||||
|
||||
for uid, times := range uidUsage {
|
||||
if times > 1 {
|
||||
cr.log.Error("the same 'folderUid' is used more than once", "folderUid", uid)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user