@@ -3,6 +3,7 @@ package airflow2
33import (
44 "bytes"
55 "context"
6+ "encoding/base64"
67 "encoding/json"
78 "fmt"
89 "io"
@@ -28,7 +29,7 @@ var resBaseDAG []byte
2829
2930const (
3031 baseLibFileName = "__lib.py"
31- dagStatusUrl = "api/v1/dags/%s/dagRuns"
32+ dagStatusUrl = "api/v1/dags/%s/dagRuns?limit=99999 "
3233 dagRunClearURL = "api/v1/dags/%s/clearTaskInstances"
3334)
3435
@@ -116,19 +117,24 @@ func (a *scheduler) GetJobStatus(ctx context.Context, projSpec models.ProjectSpe
116117 return nil , errors .Errorf ("scheduler host not set for %s" , projSpec .Name )
117118 }
118119 schdHost = strings .Trim (schdHost , "/" )
120+ authToken , ok := projSpec .Secret .GetByName (models .ProjectSchedulerAuth )
121+ if ! ok {
122+ return nil , errors .Errorf ("%s secret not configured for project %s" , models .ProjectSchedulerAuth , projSpec .Name )
123+ }
119124
120- fetchUrl := fmt .Sprintf (fmt .Sprintf ("%s/%s" , schdHost , dagStatusUrl ), jobName )
121- request , err := http .NewRequest (http .MethodGet , fetchUrl , nil )
125+ fetchURL := fmt .Sprintf (fmt .Sprintf ("%s/%s" , schdHost , dagStatusUrl ), jobName )
126+ request , err := http .NewRequest (http .MethodGet , fetchURL , nil )
122127 if err != nil {
123- return nil , errors .Wrapf (err , "failed to build http request for %s" , fetchUrl )
128+ return nil , errors .Wrapf (err , "failed to build http request for %s" , fetchURL )
124129 }
130+ request .Header .Set ("Authorization" , fmt .Sprintf ("Basic %s" , base64 .StdEncoding .EncodeToString ([]byte (authToken ))))
125131
126132 resp , err := a .httpClient .Do (request )
127133 if err != nil {
128- return nil , errors .Wrapf (err , "failed to fetch airflow dag runs from %s" , fetchUrl )
134+ return nil , errors .Wrapf (err , "failed to fetch airflow dag runs from %s" , fetchURL )
129135 }
130136 if resp .StatusCode != http .StatusOK {
131- return nil , errors .Errorf ("failed to fetch airflow dag runs from %s" , fetchUrl )
137+ return nil , errors .Errorf ("failed to fetch airflow dag runs from %s: %d " , fetchURL , resp . StatusCode )
132138 }
133139 defer resp .Body .Close ()
134140
@@ -184,6 +190,10 @@ func (a *scheduler) Clear(ctx context.Context, projSpec models.ProjectSpec, jobN
184190 if ! ok {
185191 return errors .Errorf ("scheduler host not set for %s" , projSpec .Name )
186192 }
193+ authToken , ok := projSpec .Secret .GetByName (models .ProjectSchedulerAuth )
194+ if ! ok {
195+ return errors .Errorf ("%s secret not configured for project %s" , models .ProjectSchedulerAuth , projSpec .Name )
196+ }
187197
188198 schdHost = strings .Trim (schdHost , "/" )
189199 airflowDateFormat := "2006-01-02T15:04:05+00:00"
@@ -199,13 +209,14 @@ func (a *scheduler) Clear(ctx context.Context, projSpec models.ProjectSpec, jobN
199209 return errors .Wrapf (err , "failed to build http request for %s" , postURL )
200210 }
201211 request .Header .Set ("Content-Type" , "application/json" )
212+ request .Header .Set ("Authorization" , fmt .Sprintf ("Basic %s" , base64 .StdEncoding .EncodeToString ([]byte (authToken ))))
202213
203214 resp , err := a .httpClient .Do (request )
204215 if err != nil {
205216 return errors .Wrapf (err , "failed to clear airflow dag runs from %s" , postURL )
206217 }
207218 if resp .StatusCode != http .StatusOK {
208- return errors .Errorf ("failed to clear airflow dag runs from %s" , postURL )
219+ return errors .Errorf ("failed to clear airflow dag runs from %s: %d " , postURL , resp . StatusCode )
209220 }
210221 defer resp .Body .Close ()
211222
0 commit comments