add API for aliases/ansible
This commit is contained in:
parent
d1aa7ab4d7
commit
139c94f083
|
@ -3,14 +3,17 @@ package api
|
|||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"encoding/json"
|
||||
"github.com/julienschmidt/httprouter"
|
||||
"github.com/FreifunkBremen/respond-collector/models"
|
||||
)
|
||||
|
||||
type ApiAliases struct {
|
||||
aliases *models.Aliases
|
||||
config *models.Config
|
||||
nodes *models.Nodes
|
||||
}
|
||||
|
||||
func NewAliases (config *models.Config, router *httprouter.Router,prefix string,nodes *models.Nodes) {
|
||||
api := &ApiAliases{
|
||||
aliases: models.NewAliases(config),
|
||||
|
@ -22,20 +25,32 @@ func NewAliases (config *models.Config, router *httprouter.Router,prefix string,
|
|||
router.GET(prefix+"/alias/:nodeid", api.GetOne)
|
||||
router.POST(prefix+"/alias/:nodeid", api.SaveOne)
|
||||
}
|
||||
|
||||
func (api *ApiAliases) GetAll(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
|
||||
jsonOutput(w,api.aliases.List)
|
||||
}
|
||||
|
||||
func (api *ApiAliases) GetOne(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
||||
if alias := api.aliases.List[ps.ByName("nodeid")]; alias !=nil{
|
||||
jsonOutput(w,alias)
|
||||
return
|
||||
}
|
||||
fmt.Fprint(w, "Not found: ", ps.ByName("nodeid"),"\n")
|
||||
}
|
||||
|
||||
func (api *ApiAliases) SaveOne(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
||||
alias := &models.Alias{Hostname: ps.ByName("nodeid")}
|
||||
api.aliases.Update(ps.ByName("nodeid"),alias)
|
||||
api.GetOne(w,r,ps)
|
||||
var alias models.Alias
|
||||
err := json.NewDecoder(r.Body).Decode(&alias)
|
||||
|
||||
if err != nil{
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
fmt.Fprint(w, "Decode: ", ps.ByName("nodeid"),"\n")
|
||||
return
|
||||
}
|
||||
api.aliases.Update(ps.ByName("nodeid"),&alias)
|
||||
jsonOutput(w,alias)
|
||||
}
|
||||
|
||||
func (api *ApiAliases) AnsibleDiff(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
|
||||
diff := api.aliases.List
|
||||
//TODO diff between List and api.nodes (for run not at all)
|
||||
|
|
Loading…
Reference in New Issue