in tpgtools/resource.go [810:893]
func (r *Resource) loadHandWrittenSamples() []Sample {
sampleAccessoryFolder := r.getSampleAccessoryFolder()
sampleFriendlyMetaPath := path.Join(string(sampleAccessoryFolder), "meta.yaml")
samples := []Sample{}
if !pathExists(sampleFriendlyMetaPath) {
return samples
}
files, err := ioutil.ReadDir(string(sampleAccessoryFolder))
if err != nil {
glog.Exit(err)
}
for _, file := range files {
if fileName := strings.ToLower(file.Name()); !strings.HasSuffix(fileName, ".tf.tmpl") ||
strings.Contains(fileName, "_update") {
continue
}
sample := Sample{}
sampleName := strings.Split(file.Name(), ".")[0]
sampleDefinitionFile := path.Join(string(sampleAccessoryFolder), sampleName+".yaml")
var tc []byte
if pathExists(sampleDefinitionFile) {
tc, err = mergeYaml(sampleDefinitionFile, sampleFriendlyMetaPath)
} else {
tc, err = ioutil.ReadFile(sampleFriendlyMetaPath)
}
if err != nil {
glog.Exit(err)
}
err = yaml.UnmarshalStrict(tc, &sample)
if err != nil {
glog.Exit(err)
}
versionMatch := false
// if no versions provided assume all versions
if len(sample.Versions) <= 0 {
sample.HasGAEquivalent = true
versionMatch = true
} else {
for _, v := range sample.Versions {
if v == r.versionMetadata.V {
versionMatch = true
}
if v == "ga" {
sample.HasGAEquivalent = true
}
}
}
if !versionMatch {
glog.Errorf("skipping %q due to no version match", file.Name())
continue
}
sample.SamplesPath = sampleAccessoryFolder
sample.resourceReference = r
sample.FileName = file.Name()
sample.PrimaryResource = &(sample.FileName)
if sample.Name == nil || *sample.Name == "" {
sampleName = strings.Split(sample.FileName, ".")[0]
sample.Name = &sampleName
}
sample.TestSlug = RenderedString(snakeToTitleCase(miscellaneousNameSnakeCase(sampleName)).titlecase() + "HandWritten")
// The "labels" and "annotations" fields in the state are decided by the configuration.
// During importing, as the configuration is unavailableafter, the "labels" and "annotations" fields in the state will be empty.
// So add the "labels" and the "annotations" fields to the ImportStateVerifyIgnore list.
if r.HasLabels() {
sample.IgnoreRead = append(sample.IgnoreRead, "labels", "terraform_labels")
}
if r.HasAnnotations() {
sample.IgnoreRead = append(sample.IgnoreRead, "annotations")
}
samples = append(samples, sample)
}
return samples
}