in calnex/export/export.go [33:86]
func Export(source string, insecureTLS bool, channels []api.Channel, output io.WriteCloser) (err error) {
var success bool
calnexAPI := api.NewAPI(source, insecureTLS)
if len(channels) == 0 {
channels, err = calnexAPI.FetchUsedChannels()
if err != nil {
return errNoUsedChannels
}
}
for _, channel := range channels {
printSuccess := true
probe, err := calnexAPI.FetchChannelProbe(channel)
if err != nil {
log.Errorf("Failed to fetch protocol from the channel %s: %v", channel, err)
success = success || false
continue
}
target, err := calnexAPI.FetchChannelTarget(channel, *probe)
if err != nil {
log.Errorf("Failed to fetch target from the channel %s: %v", channel, err)
success = success || false
continue
}
csvLines, err := calnexAPI.FetchCsv(channel)
if err != nil {
log.Errorf("Failed to fetch data from channel %s: %v", channel, err)
success = success || false
continue
}
for _, csvLine := range csvLines {
entry, err := entryFromCSV(csvLine, channel.String(), target, probe.String(), source)
if err != nil {
printSuccess = false
success = success || printSuccess
log.Errorf("Failed to generate scribe line for data channel %s: %v", channel, err)
break
}
entryj, _ := json.Marshal(entry)
fmt.Fprintln(output, string(entryj))
}
success = success || printSuccess
}
if !success {
return errNoTarget
}
return nil
}