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  }