complete ansible alias

This commit is contained in:
Martin Geno 2016-05-29 22:49:40 +02:00
parent e4a46e593b
commit 83dd82e6d2
3 changed files with 34 additions and 26 deletions

View File

@ -38,11 +38,13 @@ func (api *ApiAliases) cleaner() {
if alias.Hostname == nodeinfo.Hostname { if alias.Hostname == nodeinfo.Hostname {
count -= 1 count -= 1
} }
if alias.Location.Latitude == nodeinfo.Location.Latitude { if alias.Location != nil && nodeinfo.Location != nil {
count -= 1 if alias.Location.Latitude == nodeinfo.Location.Latitude {
} count -= 1
if alias.Location.Longtitude == nodeinfo.Location.Longtitude { }
count -= 1 if alias.Location.Longtitude == nodeinfo.Location.Longtitude {
count -= 1
}
} }
/* /*
if alias.Freq24.TxPower == nodeinfo.Freq24.TxPower { if alias.Freq24.TxPower == nodeinfo.Freq24.TxPower {

View File

@ -11,14 +11,14 @@ import (
) )
type Alias struct { type Alias struct {
Hostname string `json:"hostname"` Hostname string `json:"hostname,omitempty"`
Location *data.Location `json:"location"` Location *data.Location `json:"location,omitempty"`
Freq24 *Frequence `json:"freq24"` Freq24 *Frequence `json:"freq24,omitempty"`
Freq5 *Frequence `json:"freq5"` Freq5 *Frequence `json:"freq5,omitempty"`
} }
type Frequence struct { type Frequence struct {
TxPower int `json:"txpower"` TxPower int `json:"txpower,omitempty"`
Channel int `json:"channel"` Channel int `json:"channel,omitempty"`
} }
// Nodes struct: cache DB of Node's structs // Nodes struct: cache DB of Node's structs

View File

@ -8,13 +8,13 @@ type Ansible struct {
} }
type AnsibleHostVars struct { type AnsibleHostVars struct {
Address string `json:"ansible_ssh_host"` Address string `json:"ansible_ssh_host"`
Hostname string `json:"node_name"` Hostname string `json:"node_name,omitempty"`
Channel24 int `json:"radio24_channel"` Channel24 int `json:"radio24_channel,omitempty"`
TxPower24 int `json:"radio24_txpower"` TxPower24 int `json:"radio24_txpower,omitempty"`
Channel5 int `json:"radio5_channel"` Channel5 int `json:"radio5_channel,omitempty"`
TxPower5 int `json:"radio5_txpower"` TxPower5 int `json:"radio5_txpower,omitempty"`
GeoLatitude float64 `json:"geo_latitude"` GeoLatitude float64 `json:"geo_latitude,omitempty"`
GeoLongitude float64 `json:"geo_longitude"` GeoLongitude float64 `json:"geo_longitude,omitempty"`
} }
func GenerateAnsible(nodes *Nodes, aliases map[string]*Alias) *Ansible { func GenerateAnsible(nodes *Nodes, aliases map[string]*Alias) *Ansible {
@ -25,14 +25,20 @@ 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], Address: node.Nodeinfo.Network.Addresses[0],
Hostname: alias.Hostname, Hostname: alias.Hostname,
Channel24: alias.Freq24.Channel, }
Channel5: alias.Freq5.Channel, if alias.Freq24 != nil {
TxPower24: alias.Freq24.TxPower, vars.Channel24 = alias.Freq24.Channel
TxPower5: alias.Freq5.TxPower, vars.TxPower24 = alias.Freq24.TxPower
GeoLatitude: alias.Location.Latitude, }
GeoLongitude: alias.Location.Longtitude, if alias.Freq5 != nil {
vars.Channel5 = alias.Freq5.Channel
vars.TxPower5 = alias.Freq5.TxPower
}
if alias.Location != nil {
vars.GeoLatitude = alias.Location.Latitude
vars.GeoLongitude = alias.Location.Longtitude
} }
ansible.Meta.HostVars = append(ansible.Meta.HostVars, vars) ansible.Meta.HostVars = append(ansible.Meta.HostVars, vars)