Esempio n. 1
0
// ParseConfigFromPuppet takes a special puppet param string and config and
// returns the graph configuration structure.
func ParseConfigFromPuppet(puppetParam, puppetConf string) *gconfig.GraphConfig {
	var puppetConfArg string
	if puppetConf != "" {
		puppetConfArg = "--config=" + puppetConf
	}

	var cmd *exec.Cmd
	if puppetParam == "agent" {
		cmd = exec.Command("puppet", "mgmtgraph", "print", puppetConfArg)
	} else if strings.HasSuffix(puppetParam, ".pp") {
		cmd = exec.Command("puppet", "mgmtgraph", "print", puppetConfArg, "--manifest", puppetParam)
	} else {
		cmd = exec.Command("puppet", "mgmtgraph", "print", puppetConfArg, "--code", puppetParam)
	}

	log.Println("Puppet: launching translator")

	var config gconfig.GraphConfig
	if data, err := runPuppetCommand(cmd); err != nil {
		return nil
	} else if err := config.Parse(data); err != nil {
		log.Printf("Puppet: Error: Could not parse YAML output with Parse: %v", err)
		return nil
	}

	return &config
}