in terraformutils/providerwrapper/provider.go [120:158]
func (p *ProviderWrapper) readObjBlocks(block map[string]*configschema.NestedBlock, readOnlyAttributes []string, parent string) []string {
for k, v := range block {
if len(v.BlockTypes) > 0 {
if parent == "-1" {
readOnlyAttributes = p.readObjBlocks(v.BlockTypes, readOnlyAttributes, k)
} else {
readOnlyAttributes = p.readObjBlocks(v.BlockTypes, readOnlyAttributes, parent+"\\.[0-9]+\\."+k)
}
}
fieldCount := 0
for key, l := range v.Attributes {
if !l.Optional && !l.Required {
fieldCount++
switch v.Nesting {
case configschema.NestingList:
if parent == "-1" {
readOnlyAttributes = append(readOnlyAttributes, "^"+k+"\\.[0-9]+\\."+key+"($|\\.[0-9]+|\\.#)")
} else {
readOnlyAttributes = append(readOnlyAttributes, "^"+parent+"\\.(.*)\\."+key+"$")
}
case configschema.NestingSet:
if parent == "-1" {
readOnlyAttributes = append(readOnlyAttributes, "^"+k+"\\.[0-9]+\\."+key+"$")
} else {
readOnlyAttributes = append(readOnlyAttributes, "^"+parent+"\\.(.*)\\."+key+"($|\\.(.*))")
}
case configschema.NestingMap:
readOnlyAttributes = append(readOnlyAttributes, parent+"\\."+key)
default:
readOnlyAttributes = append(readOnlyAttributes, parent+"\\."+key+"$")
}
}
}
if fieldCount == len(v.Block.Attributes) && fieldCount > 0 && len(v.BlockTypes) == 0 {
readOnlyAttributes = append(readOnlyAttributes, "^"+k)
}
}
return readOnlyAttributes
}