@@ -19,12 +19,15 @@ package controllers
1919import (
2020 "context"
2121 "fmt"
22+ "reflect"
23+ "strings"
24+
2225 databricksv1alpha1 "github.com/microsoft/azure-databricks-operator/api/v1alpha1"
26+ "github.com/prometheus/client_golang/prometheus"
27+ dbmodels "github.com/xinsnake/databricks-sdk-golang/azure/models"
2328 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2429 "k8s.io/apimachinery/pkg/types"
25- "reflect"
2630 "sigs.k8s.io/controller-runtime/pkg/client"
27- "strings"
2831)
2932
3033func (r * DjobReconciler ) submit (instance * databricksv1alpha1.Djob ) error {
@@ -68,11 +71,12 @@ func (r *DjobReconciler) submit(instance *databricksv1alpha1.Djob) error {
6871 }
6972 instance .ObjectMeta .SetOwnerReferences (references )
7073 }
71- jobSettings := databricksv1alpha1 . ToDatabricksJobSettings (instance . Spec )
72- job , err := r . APIClient . Jobs (). Create ( jobSettings )
74+ job , err := r . createJob (instance )
75+
7376 if err != nil {
7477 return err
7578 }
79+
7680 instance .Spec .Name = instance .GetName ()
7781 instance .Status = & databricksv1alpha1.DjobStatus {
7882 JobStatus : & job ,
@@ -85,7 +89,8 @@ func (r *DjobReconciler) refresh(instance *databricksv1alpha1.Djob) error {
8589
8690 jobID := instance .Status .JobStatus .JobID
8791
88- job , err := r .APIClient .Jobs ().Get (jobID )
92+ job , err := r .getJob (jobID )
93+
8994 if err != nil {
9095 return err
9196 }
@@ -126,12 +131,39 @@ func (r *DjobReconciler) delete(instance *databricksv1alpha1.Djob) error {
126131 jobID := instance .Status .JobStatus .JobID
127132
128133 // Check if the job exists before trying to delete it
129- if _ , err := r .APIClient . Jobs (). Get (jobID ); err != nil {
134+ if _ , err := r .getJob (jobID ); err != nil {
130135 if strings .Contains (err .Error (), "does not exist" ) {
131136 return nil
132137 }
133138 return err
134139 }
135140
136- return r .APIClient .Jobs ().Delete (jobID )
141+ return trackExecutionTime (djobDeleteDuration , func () error {
142+ err := r .APIClient .Jobs ().Delete (jobID )
143+ trackSuccessFailure (err , djobCounterVec , "delete" )
144+ return err
145+ })
146+ }
147+
148+ func (r * DjobReconciler ) getJob (jobID int64 ) (job dbmodels.Job , err error ) {
149+ timer := prometheus .NewTimer (djobGetDuration )
150+ defer timer .ObserveDuration ()
151+
152+ job , err = r .APIClient .Jobs ().Get (jobID )
153+
154+ trackSuccessFailure (err , djobCounterVec , "get" )
155+
156+ return job , err
157+ }
158+
159+ func (r * DjobReconciler ) createJob (instance * databricksv1alpha1.Djob ) (job dbmodels.Job , err error ) {
160+ timer := prometheus .NewTimer (djobCreateDuration )
161+ defer timer .ObserveDuration ()
162+
163+ jobSettings := databricksv1alpha1 .ToDatabricksJobSettings (instance .Spec )
164+ job , err = r .APIClient .Jobs ().Create (jobSettings )
165+
166+ trackSuccessFailure (err , djobCounterVec , "create" )
167+
168+ return job , err
137169}
0 commit comments