mirror of https://github.com/databricks/cli.git
54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
|
package validate
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/databricks/cli/bundle"
|
||
|
"github.com/databricks/cli/libs/diag"
|
||
|
)
|
||
|
|
||
|
func JobClusterKeyDefined() bundle.ReadOnlyMutator {
|
||
|
return &jobClusterKeyDefined{}
|
||
|
}
|
||
|
|
||
|
type jobClusterKeyDefined struct {
|
||
|
}
|
||
|
|
||
|
func (v *jobClusterKeyDefined) Name() string {
|
||
|
return "validate:job_cluster_key_defined"
|
||
|
}
|
||
|
|
||
|
func (v *jobClusterKeyDefined) Apply(ctx context.Context, rb bundle.ReadOnlyBundle) diag.Diagnostics {
|
||
|
diags := diag.Diagnostics{}
|
||
|
|
||
|
for k, job := range rb.Config().Resources.Jobs {
|
||
|
jobClusterKeys := make(map[string]bool)
|
||
|
for _, cluster := range job.JobClusters {
|
||
|
if cluster.JobClusterKey != "" {
|
||
|
jobClusterKeys[cluster.JobClusterKey] = true
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for index, task := range job.Tasks {
|
||
|
if task.JobClusterKey != "" {
|
||
|
if _, ok := jobClusterKeys[task.JobClusterKey]; !ok {
|
||
|
loc := location{
|
||
|
path: fmt.Sprintf("resources.jobs.%s.tasks[%d].job_cluster_key", k, index),
|
||
|
rb: rb,
|
||
|
}
|
||
|
|
||
|
diags = diags.Append(diag.Diagnostic{
|
||
|
Severity: diag.Warning,
|
||
|
Summary: fmt.Sprintf("job_cluster_key %s is not defined", task.JobClusterKey),
|
||
|
Location: loc.Location(),
|
||
|
Path: loc.Path(),
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return diags
|
||
|
}
|