func()

in tools/gcpviz/main.go [794:857]


func (v *GcpViz) loadRelationsMap(fileName string) error {
	yamlFile, err := ioutil.ReadFile(fileName)
	if err != nil {
		return err
	}
	var relations RawResourceRelations
	err = yaml.Unmarshal(yamlFile, &relations)
	if err != nil {
		return err
	}

	v.Relations.AssetTypes = make(map[string][]jsonpath.FilterFunc, len(relations.AssetTypes))
	for assetType, paths := range relations.AssetTypes {
		v.Relations.AssetTypes[assetType] = make([]jsonpath.FilterFunc, len(paths))
		for idx, path := range paths {
			preparedPath, err := jsonpath.Prepare(path)
			if err != nil {
				return err
			}
			v.Relations.AssetTypes[assetType][idx] = preparedPath
		}
	}

	v.Relations.Aliases = make(map[string][]jsonpath.FilterFunc, len(relations.Aliases))
	for assetType, paths := range relations.Aliases {
		v.Relations.Aliases[assetType] = make([]jsonpath.FilterFunc, len(paths))
		for idx, path := range paths {
			preparedPath, err := jsonpath.Prepare(path)
			if err != nil {
				return err
			}
			v.Relations.Aliases[assetType][idx] = preparedPath
		}
	}

	v.Relations.IpAddresses = make(map[string][]jsonpath.FilterFunc, len(relations.IpAddresses))
	for assetType, paths := range relations.IpAddresses {
		v.Relations.IpAddresses[assetType] = make([]jsonpath.FilterFunc, len(paths))
		for idx, path := range paths {
			preparedPath, err := jsonpath.Prepare(path)
			if err != nil {
				return err
			}
			v.Relations.IpAddresses[assetType][idx] = preparedPath
		}
	}

	v.Relations.Enrich = make(map[string]map[string]map[string]jsonpath.FilterFunc, len(relations.Enrich))
	for assetType, fields := range relations.Enrich {
		v.Relations.Enrich[assetType] = make(map[string]map[string]jsonpath.FilterFunc, len(fields))
		for fieldName, subAsset := range fields {
			v.Relations.Enrich[assetType][fieldName] = make(map[string]jsonpath.FilterFunc, len(subAsset))
			for subAssetType, path := range subAsset {
				preparedPath, err := jsonpath.Prepare(path)
				if err != nil {
					return err
				}
				v.Relations.Enrich[assetType][fieldName][subAssetType] = preparedPath
			}
		}
	}

	return nil
}