//PutDefinition creates or updates a server definition func (ServerDef) PutDefinition(kvs kvstore.KVStore, resp http.ResponseWriter, req *http.Request) (interface{}, error) { body, err := ioutil.ReadAll(req.Body) req.Body.Close() log.Info(fmt.Sprintf("Put request with payload %s", string(body))) if err != nil { resp.WriteHeader(http.StatusInternalServerError) return nil, nil } serverName := resourceIDFromURI(req.RequestURI) log.Info(serverName) if serverName == "" { resp.WriteHeader(http.StatusNotFound) return nil, errServiceResourceMissing } serverConfig := new(config.ServerConfig) err = json.Unmarshal(body, serverConfig) if err != nil { log.Warn("Error unmarshaling request body") resp.WriteHeader(http.StatusBadRequest) return nil, err } serverConfig.Name = serverName err = serverConfig.Store(kvs) if err != nil { log.Warn("Error persisting server definition") resp.WriteHeader(http.StatusInternalServerError) return nil, err } err = kvs.Flush() if err != nil { return nil, err } return nil, nil }