github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/cmd/mdbd/loadText.go (about) 1 package main 2 3 import ( 4 "bufio" 5 "io" 6 "strings" 7 8 "github.com/Cloud-Foundations/Dominator/lib/log" 9 "github.com/Cloud-Foundations/Dominator/lib/mdb" 10 ) 11 12 func newTextGenerator(args []string, 13 logger log.DebugLogger) (generator, error) { 14 return sourceGenerator{loadText, args[0]}, nil 15 } 16 17 func loadText(reader io.Reader, datacentre string, logger log.Logger) ( 18 *mdb.Mdb, error) { 19 scanner := bufio.NewScanner(reader) 20 var newMdb mdb.Mdb 21 for scanner.Scan() { 22 fields := strings.Fields(scanner.Text()) 23 if len(fields) > 0 { 24 if fields[0][0] == '#' { 25 continue 26 } 27 var machine mdb.Machine 28 machine.Hostname = fields[0] 29 if len(fields) > 1 { 30 machine.RequiredImage = fields[1] 31 if len(fields) > 2 { 32 machine.PlannedImage = fields[2] 33 if len(fields) > 3 && fields[3] == "true" { 34 machine.DisableUpdates = true 35 } 36 } 37 } 38 newMdb.Machines = append(newMdb.Machines, machine) 39 } 40 } 41 if err := scanner.Err(); err != nil { 42 return nil, err 43 } 44 return &newMdb, nil 45 }