// UpdateSchedule updates a given task schedule func UpdateSchedule(w rest.ResponseWriter, r *rest.Request) { dbConn, err := util.GetConnection(CLUSTERADMIN_DB) if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), 400) return } defer dbConn.Close() postMsg := AddSchedulePost{} err = r.DecodeJsonPayload(&postMsg) if err != nil { logit.Error.Println("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("validate token error " + err.Error()) rest.Error(w, err.Error(), http.StatusUnauthorized) return } if postMsg.ID == "" { logit.Error.Println("schedule ID required") rest.Error(w, "schedule ID required", 400) return } if postMsg.Enabled == "" { logit.Error.Println("Enabled required") rest.Error(w, "Enabled required", 400) return } if postMsg.Minutes == "" { logit.Error.Println("Minutes required") rest.Error(w, "schedule Minutes required", 400) return } if postMsg.Hours == "" { logit.Error.Println("Hours required") rest.Error(w, "schedule Hours required", 400) return } if postMsg.DayOfMonth == "" { logit.Error.Println("DayOfMonth required") rest.Error(w, "schedule DayOfMonth required", 400) return } if postMsg.Month == "" { logit.Error.Println("Month required") rest.Error(w, "schedule Month required", 400) return } if postMsg.DayOfWeek == "" { logit.Error.Println("DayOfWeek required") rest.Error(w, "schedule DayOfWeek required", 400) return } if postMsg.Name == "" { logit.Error.Println("Name required") rest.Error(w, "schedule Name required", 400) return } s := task.TaskSchedule{} s.ID = postMsg.ID 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 s.RestoreSet = postMsg.RestoreSet s.RestoreRemotePath = postMsg.RestoreRemotePath s.RestoreRemoteHost = postMsg.RestoreRemoteHost s.RestoreRemoteUser = postMsg.RestoreRemoteUser s.RestoreDbUser = postMsg.RestoreDbUser s.RestoreDbPass = postMsg.RestoreDbPass s.Serverip = postMsg.Serverip err = task.UpdateSchedule(dbConn, s) if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), 400) return } //notify task server to reload it's schedules output, err := task.ReloadClient() if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), 400) return } logit.Info.Println("reload output=" + output.Output) w.WriteHeader(http.StatusOK) status := types.SimpleStatus{} status.Status = "OK" w.WriteJson(&status) }
// AddSchedule creates a new task schedule func AddSchedule(w rest.ResponseWriter, r *rest.Request) { dbConn, err := util.GetConnection(CLUSTERADMIN_DB) if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), 400) return } defer dbConn.Close() postMsg := AddSchedulePost{} err = r.DecodeJsonPayload(&postMsg) if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), http.StatusInternalServerError) return } if postMsg.ContainerName == "" { logit.Error.Println("node ContainerName required") rest.Error(w, "ContainerName required", 400) return } if postMsg.ProfileName == "" { logit.Error.Println("node ProfileName required") rest.Error(w, "ProfileName required", 400) return } if postMsg.Name == "" { logit.Error.Println("node Name required") rest.Error(w, "Name required", 400) return } //logit.Info.Println("in adminapi.backupmgmt.AddSchedule got serverIP of " + postMsg.Serverip) err = secimpl.Authorize(dbConn, postMsg.Token, "perm-backup") if err != nil { logit.Error.Println("validate token error " + err.Error()) rest.Error(w, err.Error(), http.StatusUnauthorized) return } s := task.TaskSchedule{} s.ContainerName = postMsg.ContainerName s.ProfileName = postMsg.ProfileName s.Name = postMsg.Name //defaults for any new schedule s.Enabled = "NO" s.Minutes = "00" s.Hours = "11" s.DayOfMonth = "1" s.Month = "*" s.DayOfWeek = "*" s.RestoreSet = postMsg.RestoreSet s.RestoreRemotePath = postMsg.RestoreRemotePath s.RestoreRemoteHost = postMsg.RestoreRemoteHost s.RestoreRemoteUser = postMsg.RestoreRemoteUser s.RestoreDbUser = postMsg.RestoreDbUser s.RestoreDbPass = postMsg.RestoreDbPass s.Serverip = postMsg.Serverip result, err := task.AddSchedule(dbConn, s) if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), 400) return } logit.Info.Println("AddSchedule: new ID " + result) //we choose by design to not notify the task server //on schedule adds, instead we mark any new schedule //as DISABLED, forcing the user to change the defaults //and use the UpdateSchedule which does force a notify //to the task server w.WriteHeader(http.StatusOK) status := types.SimpleStatus{} status.Status = "OK" w.WriteJson(&status) }