Browse Source

provisioning: dont return error unless you want to cancel all operations

bergquist 8 years ago
parent
commit
84fea7c148
1 changed files with 11 additions and 7 deletions
  1. 11 7
      pkg/services/provisioning/dashboards/file_reader.go

+ 11 - 7
pkg/services/provisioning/dashboards/file_reader.go

@@ -120,16 +120,15 @@ func (fr *fileReader) startWalkingDisk() error {
 		cmd := &models.DeleteDashboardCommand{OrgId: fr.Cfg.OrgId, Id: dashboardId}
 		err := bus.Dispatch(cmd)
 		if err != nil {
-			return err
+			fr.log.Error("failed to delete dashboard", "id", cmd.Id)
 		}
 	}
 
-	// insert/update dashboards based on json files
+	// save dashboards based on json files
 	for path, fileInfo := range filesFoundOnDisk {
 		err = fr.saveDashboard(path, folderId, fileInfo, provisionedDashboardRefs)
 		if err != nil {
-			fr.log.Error("Failed to save dashboard", "error", err)
-			return err
+			fr.log.Error("failed to save dashboard", "error", err)
 		}
 	}
 
@@ -142,8 +141,8 @@ func (fr *fileReader) saveDashboard(path string, folderId int64, fileInfo os.Fil
 		return err
 	}
 
-	provisionedData, allReadyProvisioned := provisionedDashboardRefs[path]
-	if allReadyProvisioned && provisionedData.Updated.Unix() == resolvedFileInfo.ModTime().Unix() {
+	provisionedData, alreadyProvisioned := provisionedDashboardRefs[path]
+	if alreadyProvisioned && provisionedData.Updated.Unix() == resolvedFileInfo.ModTime().Unix() {
 		return nil // dashboard is already in sync with the database
 	}
 
@@ -153,7 +152,12 @@ func (fr *fileReader) saveDashboard(path string, folderId int64, fileInfo os.Fil
 		return nil
 	}
 
-	if allReadyProvisioned {
+	if dash.Dashboard.Id != 0 {
+		fr.log.Error("provisioned dashboard json files cannot contain id")
+		return nil
+	}
+
+	if alreadyProvisioned {
 		dash.Dashboard.SetId(provisionedData.DashboardId)
 	}