in dev/import-beats/kibana.go [265:297]
func migrateKibanaObjects(objects []mapStr, moduleName string, dataStreamNames []string) (map[string]map[string][]byte, map[string]string, error) {
extracted := make(map[string]map[string][]byte)
dashboardIDMap := make(map[string]string)
for _, object := range objects {
aType, err := object.getValue("type")
if err != nil {
return nil, nil, errors.Wrapf(err, "retrieving type failed")
}
id, err := object.getValue("id")
if err != nil {
return nil, nil, errors.Wrapf(err, "retrieving id failed")
}
origID, ok := id.(string)
if !ok {
return nil, nil, errors.New("expected id to be a string")
}
data, newID, err := migrateObject(object, moduleName, dataStreamNames)
if err != nil {
return nil, nil, err
}
dashboardIDMap[origID] = newID
if _, ok := extracted[aType.(string)]; !ok {
extracted[aType.(string)] = map[string][]byte{}
}
extracted[aType.(string)][newID+".json"] = data
}
return extracted, dashboardIDMap, nil
}