func UpdateSchedule(w rest.ResponseWriter, r *rest.Request) { dbConn, err := util.GetConnection(CLUSTERADMIN_DB) if err != nil { logit.Error.Println("BackupNow: error " + err.Error()) rest.Error(w, err.Error(), 400) return } defer dbConn.Close() postMsg := AddSchedulePost{} err = r.DecodeJsonPayload(&postMsg) if err != nil { logit.Error.Println("UpdateSchedule: error in decode" + err.Error()) rest.Error(w, err.Error(), http.StatusInternalServerError) return } err = secimpl.Authorize(dbConn, postMsg.Token, "perm-backup") if err != nil { logit.Error.Println("UpdateSchedule: validate token error " + err.Error()) rest.Error(w, err.Error(), http.StatusUnauthorized) return } if postMsg.ID == "" { logit.Error.Println("UpdateSchedule: error schedule ID required") rest.Error(w, "schedule ID required", 400) return } if postMsg.ServerID == "" { logit.Error.Println("UpdateSchedule: error ServerID required") rest.Error(w, "schedule ID required", 400) return } if postMsg.Enabled == "" { logit.Error.Println("UpdateSchedule: error Enabled required") rest.Error(w, "Enabled required", 400) return } if postMsg.Minutes == "" { logit.Error.Println("UpdateSchedule: error Minutes required") rest.Error(w, "schedule Minutes required", 400) return } if postMsg.Hours == "" { logit.Error.Println("UpdateSchedule: error Hours required") rest.Error(w, "schedule Hours required", 400) return } if postMsg.DayOfMonth == "" { logit.Error.Println("UpdateSchedule: error DayOfMonth required") rest.Error(w, "schedule DayOfMonth required", 400) return } if postMsg.Month == "" { logit.Error.Println("UpdateSchedule: error Month required") rest.Error(w, "schedule Month required", 400) return } if postMsg.DayOfWeek == "" { logit.Error.Println("UpdateSchedule: error DayOfWeek required") rest.Error(w, "schedule DayOfWeek required", 400) return } if postMsg.Name == "" { logit.Error.Println("UpdateSchedule: error Name required") rest.Error(w, "schedule Name required", 400) return } s := backup.BackupSchedule{} s.ID = postMsg.ID s.ServerID = postMsg.ServerID s.Minutes = postMsg.Minutes s.Hours = postMsg.Hours s.Enabled = postMsg.Enabled s.DayOfMonth = postMsg.DayOfMonth s.Month = postMsg.Month s.DayOfWeek = postMsg.DayOfWeek s.Name = postMsg.Name err = backup.UpdateSchedule(dbConn, s) if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), 400) return } //notify backup server to reload it's schedules //get the domain name //get domain name var domainname admindb.Setting domainname, err = admindb.GetSetting(dbConn, "DOMAIN-NAME") if err != nil { logit.Error.Println("BackupNow: DOMAIN-NAME err " + err.Error()) } backupServerURL := "cpm-backup." + domainname.Value + ":13000" output, err := backup.ReloadClient(backupServerURL, s) if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), 400) return } logit.Info.Println("reload output=" + output) w.WriteHeader(http.StatusOK) status := SimpleStatus{} status.Status = "OK" w.WriteJson(&status) }
func DeleteSchedule(w rest.ResponseWriter, r *rest.Request) { dbConn, err := util.GetConnection(CLUSTERADMIN_DB) if err != nil { logit.Error.Println("BackupNow: error " + err.Error()) rest.Error(w, err.Error(), 400) return } defer dbConn.Close() err = secimpl.Authorize(dbConn, r.PathParam("Token"), "perm-backup") if err != nil { logit.Error.Println("DeleteSchedule: validate token error " + err.Error()) rest.Error(w, err.Error(), http.StatusUnauthorized) return } ID := r.PathParam("ID") if ID == "" { rest.Error(w, "schedule ID required", 400) return } err = backup.DeleteSchedule(dbConn, ID) if err != nil { logit.Error.Println("DeleteSchedule: " + err.Error()) rest.Error(w, err.Error(), 400) return } //notify backup server to reload schedules //get the domain name //get domain name var domainname admindb.Setting domainname, err = admindb.GetSetting(dbConn, "DOMAIN-NAME") if err != nil { logit.Error.Println("DeleteSchedule: DOMAIN-NAME err " + err.Error()) rest.Error(w, err.Error(), 400) return } s := backup.BackupSchedule{} backupServerURL := "cpm-backup." + domainname.Value + ":13000" var output string output, err = backup.ReloadClient(backupServerURL, s) if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), 400) return } logit.Info.Println("reload output=" + output) w.WriteHeader(http.StatusOK) status := SimpleStatus{} status.Status = "OK" w.WriteJson(&status) }