func GetBackupNodes(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 } err = secimpl.Authorize(dbConn, r.PathParam("Token"), "perm-read") if err != nil { logit.Error.Println("GetAllNodes: validate token error " + err.Error()) rest.Error(w, err.Error(), http.StatusUnauthorized) return } results, err2 := admindb.GetAllContainers(dbConn) if err2 != nil { logit.Error.Println("GetAllNodes: " + err2.Error()) rest.Error(w, err2.Error(), 400) } i := 0 //nodes := make([]ClusterNode, found) nodes := []ClusterNode{} for i = range results { if results[i].Role == "unassigned" || results[i].Role == "master" { n := ClusterNode{} n.ID = results[i].ID n.Name = results[i].Name n.ClusterID = results[i].ClusterID n.ServerID = results[i].ServerID n.Role = results[i].Role n.Image = results[i].Image n.CreateDate = results[i].CreateDate n.ProjectName = results[i].ProjectName n.ServerName = results[i].ServerName n.Status = "UNKNOWN" nodes = append(nodes, n) } i++ } w.WriteJson(&nodes) }
func GetAllNodes(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("GetAllNodes: validate token error " + err.Error()) rest.Error(w, err.Error(), http.StatusUnauthorized) return } results, err := admindb.GetAllContainers(dbConn) if err != nil { logit.Error.Println("GetAllNodes: " + err.Error()) rest.Error(w, err.Error(), http.StatusBadRequest) } nodes := make([]ClusterNode, len(results)) i := 0 for i = range results { nodes[i].ID = results[i].ID nodes[i].Name = results[i].Name nodes[i].ClusterID = results[i].ClusterID nodes[i].ServerID = results[i].ServerID nodes[i].Role = results[i].Role nodes[i].Image = results[i].Image nodes[i].CreateDate = results[i].CreateDate nodes[i].ProjectID = results[i].ProjectID nodes[i].ProjectName = results[i].ProjectName nodes[i].ServerName = results[i].ServerName nodes[i].ClusterName = results[i].ClusterName //nodes[i].Status = "UNKNOWN" i++ } w.WriteJson(&nodes) }
func Collecthc() error { var err error logit.Info.Println("Collecthc called") var dbConn *sql.DB dbConn, err = util.GetConnection(CLUSTERADMIN_DB) if err != nil { logit.Error.Println(err.Error()) } defer dbConn.Close() var domain string domain, err = getDomain(dbConn) var pgport string pgport, err = getPort(dbConn) //get all containers var containers []admindb.Container containers, err = admindb.GetAllContainers(dbConn) if err != nil { logit.Error.Println(err.Error()) } //for each container, do a health check i := 0 var checks []HealthCheck checks = make([]HealthCheck, 0) var status string for i = range containers { hc := HealthCheck{} hc.ProjectID = containers[i].ProjectID hc.ProjectName = containers[i].ProjectName hc.ContainerName = containers[i].Name hc.ContainerID = containers[i].ID hc.ContainerRole = containers[i].Role hc.ContainerImage = containers[i].Image status, err = ping(dbConn, pgport, hc.ContainerName+"."+domain, hc.ContainerRole) hc.Status = status checks = append(checks, hc) i++ } //delete current health checks err = DeleteHealthCheck(dbConn) if err != nil { logit.Error.Println(err.Error()) return err } //persist health checks i = 0 for i = range checks { _, err = InsertHealthCheck(dbConn, checks[i]) if err != nil { logit.Error.Println(err.Error()) } i++ } return nil }