func()

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
}