func AdminStartNode(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("AdminStartNode: validate token error " + err.Error()) rest.Error(w, err.Error(), http.StatusUnauthorized) return } ID := r.PathParam("ID") if ID == "" { logit.Error.Println("AdminStartNode: error ID required") rest.Error(w, "ID required", http.StatusBadRequest) return } node, err := admindb.GetContainer(dbConn, ID) if err != nil { logit.Error.Println("AdminStartNode:" + err.Error()) rest.Error(w, err.Error(), http.StatusBadRequest) return } server := admindb.Server{} server, err = admindb.GetServer(dbConn, node.ServerID) if err != nil { logit.Error.Println("AdminStartNode:" + err.Error()) rest.Error(w, err.Error(), http.StatusBadRequest) return } var url = "http://" + server.IPAddress + ":10001" var response cpmserverapi.DockerStartResponse request := &cpmserverapi.DockerStartRequest{} request.ContainerName = node.Name response, err = cpmserverapi.DockerStartClient(url, request) if err != nil { logit.Error.Println("AdminStartNode: error when trying to start container " + err.Error()) } logit.Info.Println(response.Output) w.WriteHeader(http.StatusOK) status := SimpleStatus{} status.Status = "OK" w.WriteJson(&status) }
func testDockerStart() { var response cpmserverapi.DockerStartResponse var err error request := &cpmserverapi.DockerStartRequest{} request.ContainerName = "testpoo" response, err = cpmserverapi.DockerStartClient("http://192.168.0.106:10001", request) if err != nil { fmt.Println(err.Error()) } fmt.Println("returned " + response.Output) }
func AdminStartServerContainers(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("AdminStartServerContainers: validate token error " + err.Error()) rest.Error(w, err.Error(), http.StatusUnauthorized) return } //serverID serverid := r.PathParam("ID") if serverid == "" { logit.Error.Println("AdminStartServerContainers: error ID required") rest.Error(w, "ID required", http.StatusBadRequest) return } containers, err := admindb.GetAllContainersForServer(dbConn, serverid) if err != nil { logit.Error.Println("AdminStartServerContainers:" + err.Error()) rest.Error(w, err.Error(), http.StatusBadRequest) return } //for each, get server, start container //use a 'best effort' approach here since containers //can be removed outside of CPM's control var url string for i := range containers { //fetch the server server := admindb.Server{} server, err = admindb.GetServer(dbConn, containers[i].ServerID) if err != nil { logit.Error.Println("AdminStartServerContainers:" + err.Error()) rest.Error(w, err.Error(), http.StatusBadRequest) return } //start the container var response cpmserverapi.DockerStartResponse var err error request := &cpmserverapi.DockerStartRequest{} request.ContainerName = containers[i].Name url = "http://" + server.IPAddress + ":10001" response, err = cpmserverapi.DockerStartClient(url, request) if err != nil { logit.Error.Println("AdminStartServerContainers: error when trying to start container " + err.Error()) } logit.Info.Println(response.Output) } w.WriteHeader(http.StatusOK) status := SimpleStatus{} status.Status = "OK" w.WriteJson(&status) }