in internal/azure/tags/tags.go [30:66]
func FlattenTags(input interface{}) types.Map {
if input == nil {
return basetypes.NewMapNull(types.StringType)
}
tagsMap := make(map[string]attr.Value)
switch inputMap := input.(type) {
case map[string]interface{}:
for k, v := range inputMap {
tagsMap[k] = basetypes.NewStringValue(v.(string))
}
case map[string]string:
for k, v := range inputMap {
tagsMap[k] = basetypes.NewStringValue(v)
}
case types.Map:
for k, v := range inputMap.Elements() {
if v.IsNull() {
tagsMap[k] = basetypes.NewStringNull()
continue
}
if strV, ok := v.(types.String); ok {
tagsMap[k] = strV
}
}
case types.Object:
for k, v := range inputMap.Attributes() {
if v.IsNull() {
tagsMap[k] = basetypes.NewStringNull()
continue
}
if strV, ok := v.(types.String); ok {
tagsMap[k] = strV
}
}
}
return basetypes.NewMapValueMust(types.StringType, tagsMap)
}