// 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 }