github.com/databricks/cli@v0.203.0/bundle/deploy/terraform/interpolate.go (about)

     1  package terraform
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	"github.com/databricks/cli/bundle"
     8  	"github.com/databricks/cli/bundle/config/interpolation"
     9  )
    10  
    11  // Rewrite variable references to resources into Terraform compatible format.
    12  func interpolateTerraformResourceIdentifiers(path string, lookup map[string]string) (string, error) {
    13  	parts := strings.Split(path, interpolation.Delimiter)
    14  	if parts[0] == "resources" {
    15  		switch parts[1] {
    16  		case "pipelines":
    17  			path = strings.Join(append([]string{"databricks_pipeline"}, parts[2:]...), interpolation.Delimiter)
    18  			return fmt.Sprintf("${%s}", path), nil
    19  		case "jobs":
    20  			path = strings.Join(append([]string{"databricks_job"}, parts[2:]...), interpolation.Delimiter)
    21  			return fmt.Sprintf("${%s}", path), nil
    22  		case "models":
    23  			path = strings.Join(append([]string{"databricks_mlflow_model"}, parts[2:]...), interpolation.Delimiter)
    24  			return fmt.Sprintf("${%s}", path), nil
    25  		case "experiments":
    26  			path = strings.Join(append([]string{"databricks_mlflow_experiment"}, parts[2:]...), interpolation.Delimiter)
    27  			return fmt.Sprintf("${%s}", path), nil
    28  		default:
    29  			panic("TODO: " + parts[1])
    30  		}
    31  	}
    32  
    33  	return interpolation.DefaultLookup(path, lookup)
    34  }
    35  
    36  func Interpolate() bundle.Mutator {
    37  	return interpolation.Interpolate(interpolateTerraformResourceIdentifiers)
    38  }