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  }