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