func addToNestedMap()

in gke-deploy/core/resource/resource.go [661:683]


func addToNestedMap(obj *Object, key, value string, override bool, nestedFields ...string) error {
	mapField, ok, err := unstructured.NestedMap(obj.Object, nestedFields...)
	if err != nil {
		return fmt.Errorf("failed to get map field: %v", err)
	}

	if !ok {
		mapField = make(map[string]interface{})
	}

	if existing, ok := mapField[key]; ok && !override {
		if existing != value {
			fmt.Fprintf(os.Stderr, "\nWARNING: Key %q is already set as %q for object %v in %v field. Not overriding.\n", key, existing, obj, strings.Join(nestedFields, "."))
		}
	} else {
		mapField[key] = value
		if err := unstructured.SetNestedMap(obj.Object, mapField, nestedFields...); err != nil {
			return fmt.Errorf("failed to set map field: %v", err)
		}
	}

	return nil
}