func AddSchedule(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("AddSchedule: error in decode" + err.Error()) rest.Error(w, err.Error(), http.StatusInternalServerError) return } if postMsg.ServerID == "" { logit.Error.Println("AddSchedule: error node ServerID required") rest.Error(w, "server ID required", 400) return } if postMsg.ContainerName == "" { logit.Error.Println("AddSchedule: error node ContainerName required") rest.Error(w, "ContainerName required", 400) return } if postMsg.ProfileName == "" { logit.Error.Println("AddSchedule: error node ProfileName required") rest.Error(w, "ProfileName required", 400) return } if postMsg.Name == "" { logit.Error.Println("AddSchedule: error node Name required") rest.Error(w, "Name required", 400) return } err = secimpl.Authorize(dbConn, postMsg.Token, "perm-backup") if err != nil { logit.Error.Println("AddSchedule: validate token error " + err.Error()) rest.Error(w, err.Error(), http.StatusUnauthorized) return } s := backup.BackupSchedule{} s.ServerID = postMsg.ServerID 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 = "*" result, err := backup.AddSchedule(dbConn, s) if err != nil { logit.Error.Println("GetNode: " + err.Error()) rest.Error(w, err.Error(), 400) return } logit.Info.Println("AddSchedule: new ID " + result) //we choose by design to not notify the backup 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 backup server w.WriteHeader(http.StatusOK) status := SimpleStatus{} status.Status = "OK" w.WriteJson(&status) }