github.com/Cloud-Foundations/Dominator@v0.3.4/cmd/mdbd/loadDsHostFqdn.go (about)

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