mirror of https://github.com/databricks/cli.git
60 lines
1.6 KiB
Go
60 lines
1.6 KiB
Go
package apps
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/databricks/cli/bundle"
|
|
"github.com/databricks/cli/libs/diag"
|
|
"github.com/databricks/cli/libs/dyn"
|
|
"github.com/databricks/cli/libs/dyn/dynvar"
|
|
)
|
|
|
|
type interpolateVariables struct{}
|
|
|
|
func (i *interpolateVariables) Apply(ctx context.Context, b *bundle.Bundle) diag.Diagnostics {
|
|
pattern := dyn.NewPattern(
|
|
dyn.Key("resources"),
|
|
dyn.Key("apps"),
|
|
dyn.AnyKey(),
|
|
dyn.Key("config"),
|
|
)
|
|
|
|
tfToConfigMap := map[string]string{
|
|
"databricks_pipeline": "pipelines",
|
|
"databricks_job": "jobs",
|
|
"databricks_mlflow_model": "models",
|
|
"databricks_mlflow_experiment": "experiments",
|
|
"databricks_model_serving": "model_serving_endpoints",
|
|
"databricks_registered_model": "registered_models",
|
|
"databricks_quality_monitor": "quality_monitors",
|
|
"databricks_schema": "schemas",
|
|
"databricks_volume": "volumes",
|
|
"databricks_cluster": "clusters",
|
|
"databricks_dashboard": "dashboards",
|
|
"databricks_app": "apps",
|
|
}
|
|
|
|
err := b.Config.Mutate(func(root dyn.Value) (dyn.Value, error) {
|
|
return dyn.MapByPattern(root, pattern, func(p dyn.Path, v dyn.Value) (dyn.Value, error) {
|
|
return dynvar.Resolve(v, func(path dyn.Path) (dyn.Value, error) {
|
|
key, ok := tfToConfigMap[path[0].Key()]
|
|
if ok {
|
|
path = dyn.NewPath(dyn.Key("resources"), dyn.Key(key)).Append(path[1:]...)
|
|
}
|
|
|
|
return dyn.GetByPath(root, path)
|
|
})
|
|
})
|
|
})
|
|
|
|
return diag.FromErr(err)
|
|
}
|
|
|
|
func (i *interpolateVariables) Name() string {
|
|
return "apps.InterpolateVariables"
|
|
}
|
|
|
|
func InterpolateVariables() bundle.Mutator {
|
|
return &interpolateVariables{}
|
|
}
|