github.com/Cloud-Foundations/Dominator@v0.3.4/cmd/mdbd/loadDsHostFqdn.go (about) 1 package main 2 3 import ( 4 "errors" 5 "io" 6 7 "github.com/Cloud-Foundations/Dominator/lib/json" 8 "github.com/Cloud-Foundations/Dominator/lib/log" 9 "github.com/Cloud-Foundations/Dominator/lib/mdb" 10 ) 11 12 func newDsHostFqdnGenerator(params makeGeneratorParams) (generator, error) { 13 return sourceGenerator{loadDsHostFqdn, params.args[0]}, nil 14 } 15 16 func loadDsHostFqdn(reader io.Reader, datacentre string, logger log.Logger) ( 17 *mdb.Mdb, error) { 18 type machineType struct { 19 Fqdn string 20 } 21 22 type dataCentreType map[string]machineType 23 24 type inMdbType map[string]dataCentreType 25 26 var inMdb inMdbType 27 var outMdb mdb.Mdb 28 if err := json.Read(reader, &inMdb); err != nil { 29 return nil, errors.New("error decoding: " + err.Error()) 30 } 31 for dsName, dataCentre := range inMdb { 32 if datacentre != "" && dsName != datacentre { 33 continue 34 } 35 for _, inMachine := range dataCentre { 36 var outMachine mdb.Machine 37 if inMachine.Fqdn != "" { 38 outMachine.Hostname = inMachine.Fqdn 39 outMdb.Machines = append(outMdb.Machines, outMachine) 40 } 41 } 42 } 43 return &outMdb, nil 44 }