func RestAddHost(w *rest.ResponseWriter, r *rest.Request, client *serviced.ControlClient) { var payload dao.Host var hostId string err := r.DecodeJsonPayload(&payload) if err != nil { glog.V(1).Infof("Could not decode host payload: %v", err) RestBadRequest(w) return } // Save the pool ID and IP address for later. GetInfo wipes these pool := payload.PoolId ipAddr := payload.IpAddr remoteClient, err := serviced.NewAgentClient(payload.IpAddr) if err != nil { glog.Errorf("Could not create connection to host %s: %v", payload.IpAddr, err) RestServerError(w) return } err = remoteClient.GetInfo(0, &payload) if err != nil { glog.Errorf("Unable to get remote host info: %v", err) RestBadRequest(w) return } // Reset the pool ID and IP address payload.PoolId = pool parts := strings.Split(ipAddr, ":") payload.IpAddr = parts[0] err = client.AddHost(payload, &hostId) if err != nil { glog.Errorf("Unable to add host: %v", err) RestServerError(w) return } glog.V(0).Info("Added host ", hostId) w.WriteJson(&SimpleResponse{"Added host", hostLinks(hostId)}) }