@@ -19,9 +19,6 @@ import (
1919// NewJobsAPI creates JobsAPI instance from provider meta
2020func NewJobsAPI (ctx context.Context , m interface {}) JobsAPI {
2121 client := m .(* common.DatabricksClient )
22- if client .UseMutiltaskJobs {
23- ctx = context .WithValue (ctx , common .Api , common .API_2_1 )
24- }
2522 return JobsAPI {client , ctx }
2623}
2724
@@ -239,6 +236,18 @@ var jobSchema = common.StructToSchema(JobSettings{},
239236
240237// ResourceJob ...
241238func ResourceJob () * schema.Resource {
239+ getReadCtx := func (ctx context.Context , d * schema.ResourceData ) context.Context {
240+ var js JobSettings
241+ err := common .DataToStructPointer (d , jobSchema , & js )
242+ if err != nil {
243+ log .Printf ("[INFO] no job resource data available. Returning default context" )
244+ return ctx
245+ }
246+ if js .isMultiTask () {
247+ return context .WithValue (ctx , common .Api , common .API_2_1 )
248+ }
249+ return ctx
250+ }
242251 return common.Resource {
243252 Schema : jobSchema ,
244253 SchemaVersion : 2 ,
@@ -256,13 +265,10 @@ func ResourceJob() *schema.Resource {
256265 if alwaysRunning && js .MaxConcurrentRuns > 1 {
257266 return fmt .Errorf ("`always_running` must be specified only with `max_concurrent_runs = 1`" )
258267 }
259- c := m .(* common.DatabricksClient )
260- if c .UseMutiltaskJobs {
261- for _ , task := range js .Tasks {
262- err = validateClusterDefinition (* task .NewCluster )
263- if err != nil {
264- return fmt .Errorf ("task %s invalid: %w" , task .TaskKey , err )
265- }
268+ for _ , task := range js .Tasks {
269+ err = validateClusterDefinition (* task .NewCluster )
270+ if err != nil {
271+ return fmt .Errorf ("task %s invalid: %w" , task .TaskKey , err )
266272 }
267273 }
268274 if js .NewCluster != nil {
@@ -282,19 +288,22 @@ func ResourceJob() *schema.Resource {
282288 sort .Slice (js .Tasks , func (i , j int ) bool {
283289 return js .Tasks [i ].TaskKey < js .Tasks [j ].TaskKey
284290 })
291+ if js .isMultiTask () {
292+ ctx = context .WithValue (ctx , common .Api , common .API_2_1 )
293+ }
285294 jobsAPI := NewJobsAPI (ctx , c )
286295 job , err := jobsAPI .Create (js )
287296 if err != nil {
288297 return err
289298 }
290299 d .SetId (job .ID ())
291300 if d .Get ("always_running" ).(bool ) {
292- // TODO: test this with c.UseMutiltaskJobs
293301 return jobsAPI .Start (job .JobID , d .Timeout (schema .TimeoutCreate ))
294302 }
295303 return nil
296304 },
297305 Read : func (ctx context.Context , d * schema.ResourceData , c * common.DatabricksClient ) error {
306+ ctx = getReadCtx (ctx , d )
298307 job , err := NewJobsAPI (ctx , c ).Read (d .Id ())
299308 if err != nil {
300309 return err
@@ -311,18 +320,21 @@ func ResourceJob() *schema.Resource {
311320 if err != nil {
312321 return err
313322 }
323+ if js .isMultiTask () {
324+ ctx = context .WithValue (ctx , common .Api , common .API_2_1 )
325+ }
314326 jobsAPI := NewJobsAPI (ctx , c )
315327 err = jobsAPI .Update (d .Id (), js )
316328 if err != nil {
317329 return err
318330 }
319331 if d .Get ("always_running" ).(bool ) {
320- // TODO: test this with c.UseMutiltaskJobs
321332 return jobsAPI .Restart (d .Id (), d .Timeout (schema .TimeoutUpdate ))
322333 }
323334 return nil
324335 },
325336 Delete : func (ctx context.Context , d * schema.ResourceData , c * common.DatabricksClient ) error {
337+ ctx = getReadCtx (ctx , d )
326338 return NewJobsAPI (ctx , c ).Delete (d .Id ())
327339 },
328340 }.ToResource ()
0 commit comments