github.com/Cloud-Foundations/Dominator@v0.3.4/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(params makeGeneratorParams) (generator, error) { 13 return sourceGenerator{loadText, params.args[0]}, nil 14 } 15 16 func loadText(reader io.Reader, datacentre string, logger log.Logger) ( 17 *mdb.Mdb, error) { 18 scanner := bufio.NewScanner(reader) 19 var newMdb mdb.Mdb 20 for scanner.Scan() { 21 fields := strings.Fields(scanner.Text()) 22 if len(fields) > 0 { 23 if fields[0][0] == '#' { 24 continue 25 } 26 var machine mdb.Machine 27 machine.Hostname = fields[0] 28 if len(fields) > 1 { 29 machine.RequiredImage = fields[1] 30 if len(fields) > 2 { 31 machine.PlannedImage = fields[2] 32 if len(fields) > 3 && fields[3] == "true" { 33 machine.DisableUpdates = true 34 } 35 } 36 } 37 newMdb.Machines = append(newMdb.Machines, machine) 38 } 39 } 40 if err := scanner.Err(); err != nil { 41 return nil, err 42 } 43 return &newMdb, nil 44 }