Skip to content

Commit 2d5f808

Browse files
authored
Allow using empty strings as job parameters (#3158)
* Allow using empty strings as job parameters * Add unit tests * Add acceptance test * Fix parameter name in tests
1 parent b8d0130 commit 2d5f808

File tree

3 files changed

+99
-9
lines changed

3 files changed

+99
-9
lines changed

internal/acceptance/job_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,22 @@ func TestAccJobTasks(t *testing.T) {
9090
9191
notebook_task {
9292
notebook_path = databricks_notebook.this.path
93+
base_parameters = {
94+
"param_0" = "{{job.parameters.empty_default}}"
95+
"param_0" = "{{job.parameters.non_empty_default}}"
96+
}
9397
}
9498
}
99+
100+
parameter {
101+
name = "empty_default"
102+
default = ""
103+
}
104+
105+
parameter {
106+
name = "non_empty_default"
107+
default = "non_empty"
108+
}
95109
}`,
96110
})
97111
}

jobs/resource_job.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ type JobSettings struct {
273273
Queue *jobs.QueueSettings `json:"queue,omitempty"`
274274
RunAs *JobRunAs `json:"run_as,omitempty" tf:"computed"`
275275
Health *JobHealth `json:"health,omitempty"`
276-
Parameters []JobParameterDefinition `json:"parameters,omitempty" tf:"alias:parameter"`
276+
Parameters []jobs.JobParameterDefinition `json:"parameters,omitempty" tf:"alias:parameter"`
277277
Deployment *jobs.JobDeployment `json:"deployment,omitempty"`
278278
EditMode jobs.CreateJobEditMode `json:"edit_mode,omitempty"`
279279
}
@@ -342,12 +342,6 @@ type JobParameter struct {
342342
Value string `json:"value,omitempty"`
343343
}
344344

345-
// Job-level parameter definitions
346-
type JobParameterDefinition struct {
347-
Name string `json:"name,omitempty"`
348-
Default string `json:"default,omitempty"`
349-
}
350-
351345
// RunState of the job
352346
type RunState struct {
353347
ResultState string `json:"result_state,omitempty"`

jobs/resource_job_test.go

Lines changed: 84 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -553,7 +553,7 @@ func TestResourceJobCreate_JobParameters(t *testing.T) {
553553
},
554554
},
555555
MaxConcurrentRuns: 1,
556-
Parameters: []JobParameterDefinition{
556+
Parameters: []jobs.JobParameterDefinition{
557557
{
558558
Name: "hello",
559559
Default: "world",
@@ -582,7 +582,7 @@ func TestResourceJobCreate_JobParameters(t *testing.T) {
582582
TaskKey: "b",
583583
},
584584
},
585-
Parameters: []JobParameterDefinition{
585+
Parameters: []jobs.JobParameterDefinition{
586586
{
587587
Name: "hello",
588588
Default: "world",
@@ -621,6 +621,88 @@ func TestResourceJobCreate_JobParameters(t *testing.T) {
621621
assert.NoError(t, err)
622622
assert.Equal(t, "231", d.Id())
623623
}
624+
625+
func TestResourceJobCreate_JobParameters_EmptyDefault(t *testing.T) {
626+
d, err := qa.ResourceFixture{
627+
Fixtures: []qa.HTTPFixture{
628+
{
629+
Method: "POST",
630+
Resource: "/api/2.1/jobs/create",
631+
ExpectedRequest: JobSettings{
632+
Name: "JobParameterTesting",
633+
MaxConcurrentRuns: 1,
634+
Tasks: []JobTaskSettings{
635+
{
636+
TaskKey: "a",
637+
},
638+
},
639+
Parameters: []jobs.JobParameterDefinition{
640+
{
641+
Name: "key",
642+
Default: "",
643+
},
644+
},
645+
},
646+
Response: Job{
647+
JobID: 231,
648+
},
649+
},
650+
{
651+
Method: "GET",
652+
Resource: "/api/2.1/jobs/get?job_id=231",
653+
Response: Job{
654+
// good enough for mock
655+
Settings: &JobSettings{
656+
Tasks: []JobTaskSettings{
657+
{
658+
TaskKey: "a",
659+
},
660+
},
661+
Parameters: []jobs.JobParameterDefinition{
662+
{
663+
Name: "key",
664+
Default: "",
665+
},
666+
},
667+
},
668+
},
669+
},
670+
},
671+
Create: true,
672+
Resource: ResourceJob(),
673+
HCL: `
674+
name = "JobParameterTesting"
675+
676+
parameter {
677+
name = "key"
678+
default = ""
679+
}
680+
681+
task {
682+
task_key = "a"
683+
}`,
684+
}.Apply(t)
685+
assert.NoError(t, err)
686+
assert.Equal(t, "231", d.Id())
687+
}
688+
689+
func TestResourceJobCreate_JobParameters_DefaultIsRequired(t *testing.T) {
690+
qa.ResourceFixture{
691+
Create: true,
692+
Resource: ResourceJob(),
693+
HCL: `
694+
name = "JobParameterTesting"
695+
696+
parameter {
697+
name = "key"
698+
}
699+
700+
task {
701+
task_key = "a"
702+
}`,
703+
}.ExpectError(t, "invalid config supplied. [parameter.#.default] Missing required argument")
704+
}
705+
624706
func TestResourceJobCreate_JobClusters(t *testing.T) {
625707
d, err := qa.ResourceFixture{
626708
Fixtures: []qa.HTTPFixture{

0 commit comments

Comments
 (0)