func GetSchedule(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-read") if err != nil { logit.Error.Println("GetSchedule: validate token error " + err.Error()) rest.Error(w, err.Error(), http.StatusUnauthorized) return } ID := r.PathParam("ID") if ID == "" { rest.Error(w, "ID required", 400) return } result, err := backup.GetSchedule(dbConn, ID) if err != nil { logit.Error.Println("GetNode: " + err.Error()) rest.Error(w, err.Error(), 400) return } w.WriteJson(result) }
func BackupNow(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 := BackupNowPost{} err = r.DecodeJsonPayload(&postMsg) if err != nil { logit.Error.Println("BackupNow: 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("BackupNow: validate token error " + err.Error()) rest.Error(w, err.Error(), http.StatusUnauthorized) return } if postMsg.ServerID == "" { logit.Error.Println("BackupNow: error node ServerID required") rest.Error(w, "server ID required", 400) return } if postMsg.ProfileName == "" { logit.Error.Println("BackupNow: error node ProfileName required") rest.Error(w, "ProfileName required", 400) return } if postMsg.ScheduleID == "" { logit.Error.Println("BackupNow: error schedule ID required") rest.Error(w, "schedule ID required", 400) return } schedule, err2 := backup.GetSchedule(dbConn, postMsg.ScheduleID) if err2 != nil { logit.Error.Println("BackupNow: " + err2.Error()) rest.Error(w, err2.Error(), 400) return } //get the server details for where the backup should be made server := admindb.Server{} server, err = admindb.GetServer(dbConn, postMsg.ServerID) if err != nil { logit.Error.Println("BackupNow: " + err.Error()) rest.Error(w, err.Error(), 400) return } //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()) } request := backup.BackupRequest{} request.ScheduleID = postMsg.ScheduleID request.ServerID = server.ID if KubeEnv { request.ContainerName = schedule.ContainerName + "-db" } else { request.ContainerName = schedule.ContainerName } request.ServerName = server.Name request.ServerIP = server.IPAddress request.ProfileName = postMsg.ProfileName backupServerURL := "cpm-backup." + domainname.Value + ":13000" output, err := backup.BackupNowClient(backupServerURL, request) if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), http.StatusInternalServerError) return } logit.Info.Println("output=" + output) w.WriteHeader(http.StatusOK) status := SimpleStatus{} status.Status = "OK" w.WriteJson(&status) }