fix owner
This commit is contained in:
parent
2ad2356fbe
commit
5d57fd98b9
|
@ -8,6 +8,18 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// 7 nachkommerstellen sollten genug sein (7cm genau)
|
||||||
|
// http://blog.3960.org/post/7309573249/genauigkeit-bei-geo-koordinaten
|
||||||
|
|
||||||
|
const GEOROUND = 0.0000001
|
||||||
|
|
||||||
|
func geoEqual(a, b float64) bool {
|
||||||
|
if (a-b) < GEOROUND && (b-a) < GEOROUND {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
type ApiAliases struct {
|
type ApiAliases struct {
|
||||||
aliases *models.Aliases
|
aliases *models.Aliases
|
||||||
config *models.Config
|
config *models.Config
|
||||||
|
@ -35,17 +47,34 @@ func (api *ApiAliases) cleaner() {
|
||||||
//counter for the diffrent attribute
|
//counter for the diffrent attribute
|
||||||
count := 0
|
count := 0
|
||||||
if nodeinfo := node.Nodeinfo; nodeinfo != nil {
|
if nodeinfo := node.Nodeinfo; nodeinfo != nil {
|
||||||
count += 1
|
if len(alias.Hostname) > 0 {
|
||||||
if alias.Hostname == nodeinfo.Hostname {
|
count += 1
|
||||||
count -= 1
|
if alias.Hostname == nodeinfo.Hostname {
|
||||||
}
|
|
||||||
if alias.Location != nil && nodeinfo.Location != nil {
|
|
||||||
count += 2
|
|
||||||
if alias.Location.Latitude == nodeinfo.Location.Latitude {
|
|
||||||
count -= 1
|
count -= 1
|
||||||
|
alias.Hostname = ""
|
||||||
}
|
}
|
||||||
if alias.Location.Longtitude == nodeinfo.Location.Longtitude {
|
}
|
||||||
|
if len(alias.Owner) > 0 {
|
||||||
|
count += 1
|
||||||
|
if nodeinfo.Owner != nil && alias.Owner == nodeinfo.Owner.Contact {
|
||||||
count -= 1
|
count -= 1
|
||||||
|
alias.Owner = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if alias.Location != nil {
|
||||||
|
count += 2
|
||||||
|
if nodeinfo.Location != nil {
|
||||||
|
if geoEqual(alias.Location.Latitude, nodeinfo.Location.Latitude) {
|
||||||
|
count -= 1
|
||||||
|
if geoEqual(alias.Location.Longtitude, nodeinfo.Location.Longtitude) {
|
||||||
|
count -= 1
|
||||||
|
alias.Location = nil
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if geoEqual(alias.Location.Longtitude, nodeinfo.Location.Longtitude) {
|
||||||
|
count -= 1
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if nodeinfo.Wireless != nil && alias.Wireless != nil {
|
if nodeinfo.Wireless != nil && alias.Wireless != nil {
|
||||||
|
@ -62,11 +91,16 @@ func (api *ApiAliases) cleaner() {
|
||||||
if alias.Wireless.TxPower5 == nodeinfo.Wireless.TxPower5 {
|
if alias.Wireless.TxPower5 == nodeinfo.Wireless.TxPower5 {
|
||||||
count -= 1
|
count -= 1
|
||||||
}
|
}
|
||||||
|
if alias.Wireless.Channel24 == nodeinfo.Wireless.Channel24 && alias.Wireless.TxPower24 == nodeinfo.Wireless.TxPower24 && alias.Wireless.Channel5 == nodeinfo.Wireless.Channel5 && alias.Wireless.TxPower5 == nodeinfo.Wireless.TxPower5 {
|
||||||
|
alias.Wireless = nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//delete element
|
//delete element
|
||||||
if count <= 0 {
|
if count <= 0 {
|
||||||
delete(api.aliases.List, key)
|
delete(api.aliases.List, key)
|
||||||
|
fmt.Print("[api] node updated '", key, "'\n")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -93,6 +127,7 @@ func (api *ApiAliases) SaveOne(w http.ResponseWriter, r *http.Request, ps httpro
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
api.aliases.Update(ps.ByName("nodeid"), &alias)
|
api.aliases.Update(ps.ByName("nodeid"), &alias)
|
||||||
|
fmt.Print("[api] node updated '", ps.ByName("nodeid"), "'\n")
|
||||||
jsonOutput(w, r, alias)
|
jsonOutput(w, r, alias)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,6 +136,7 @@ func (api *ApiAliases) Cleanup(w http.ResponseWriter, r *http.Request, _ httprou
|
||||||
jsonOutput(w, r, api.aliases.List)
|
jsonOutput(w, r, api.aliases.List)
|
||||||
}
|
}
|
||||||
func (api *ApiAliases) AnsibleDiff(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
|
func (api *ApiAliases) AnsibleDiff(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
|
||||||
|
fmt.Print("[api] ansible\n")
|
||||||
api.cleaner()
|
api.cleaner()
|
||||||
jsonOutput(w, r, models.GenerateAnsible(api.nodes, api.aliases.List))
|
jsonOutput(w, r, models.GenerateAnsible(api.nodes, api.aliases.List))
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,10 +27,12 @@ func GenerateAnsible(nodes *Nodes, aliases map[string]*Alias) *Ansible {
|
||||||
ansible.Nodes = append(ansible.Nodes, nodeid)
|
ansible.Nodes = append(ansible.Nodes, nodeid)
|
||||||
|
|
||||||
vars := &AnsibleHostVars{
|
vars := &AnsibleHostVars{
|
||||||
Address: node.Nodeinfo.Network.Addresses[0],
|
|
||||||
Hostname: alias.Hostname,
|
Hostname: alias.Hostname,
|
||||||
Owner: alias.Owner,
|
Owner: alias.Owner,
|
||||||
}
|
}
|
||||||
|
if node.Nodeinfo.Network.Addresses != nil {
|
||||||
|
vars.Address = node.Nodeinfo.Network.Addresses[0]
|
||||||
|
}
|
||||||
if alias.Wireless != nil {
|
if alias.Wireless != nil {
|
||||||
vars.Channel24 = alias.Wireless.Channel24
|
vars.Channel24 = alias.Wireless.Channel24
|
||||||
vars.TxPower24 = alias.Wireless.TxPower24
|
vars.TxPower24 = alias.Wireless.TxPower24
|
||||||
|
|
Loading…
Reference in New Issue