|
7 | 7 |
|
8 | 8 | "github.com/gorilla/mux"
|
9 | 9 |
|
10 |
| - "github.com/ovh/cds/engine/api/application" |
11 |
| - "github.com/ovh/cds/engine/api/ascode/sync" |
| 10 | + "github.com/ovh/cds/engine/api/ascode" |
12 | 11 | "github.com/ovh/cds/engine/api/event"
|
13 | 12 | "github.com/ovh/cds/engine/api/operation"
|
14 | 13 | "github.com/ovh/cds/engine/api/project"
|
@@ -88,12 +87,9 @@ func (api *API) postImportAsCodeHandler() service.Handler {
|
88 | 87 | func (api *API) getImportAsCodeHandler() service.Handler {
|
89 | 88 | return func(ctx context.Context, w http.ResponseWriter, r *http.Request) error {
|
90 | 89 | vars := mux.Vars(r)
|
91 |
| - uuid := vars["uuid"] |
92 |
| - |
93 |
| - var ope = new(sdk.Operation) |
94 |
| - ope.UUID = uuid |
95 |
| - if err := operation.GetRepositoryOperation(ctx, api.mustDB(), ope); err != nil { |
96 |
| - return sdk.WrapError(err, "Cannot get repository operation status") |
| 90 | + ope, err := operation.GetRepositoryOperation(ctx, api.mustDB(), vars["uuid"]) |
| 91 | + if err != nil { |
| 92 | + return sdk.WrapError(err, "cannot get repository operation status") |
97 | 93 | }
|
98 | 94 | return service.WriteJSON(w, ope, http.StatusOK)
|
99 | 95 | }
|
@@ -123,11 +119,9 @@ func (api *API) postPerformImportAsCodeHandler() service.Handler {
|
123 | 119 | return sdk.WrapError(errp, "postPerformImportAsCodeHandler> Cannot load project %s", key)
|
124 | 120 | }
|
125 | 121 |
|
126 |
| - var ope = new(sdk.Operation) |
127 |
| - ope.UUID = uuid |
128 |
| - |
129 |
| - if err := operation.GetRepositoryOperation(ctx, api.mustDB(), ope); err != nil { |
130 |
| - return sdk.WrapError(err, "Unable to get repository operation") |
| 122 | + ope, err := operation.GetRepositoryOperation(ctx, api.mustDB(), uuid) |
| 123 | + if err != nil { |
| 124 | + return sdk.WrapError(err, "unable to get repository operation") |
131 | 125 | }
|
132 | 126 |
|
133 | 127 | if ope.Status != sdk.OperationStatusDone {
|
@@ -167,11 +161,14 @@ func (api *API) postPerformImportAsCodeHandler() service.Handler {
|
167 | 161 | if opt.FromRepository != "" {
|
168 | 162 | mods = append(mods, workflowtemplate.TemplateRequestModifiers.DefaultNameAndRepositories(ctx, api.mustDB(), api.Cache, *proj, opt.FromRepository))
|
169 | 163 | }
|
170 |
| - wti, err := workflowtemplate.CheckAndExecuteTemplate(ctx, api.mustDB(), *consumer, *proj, &data, mods...) |
| 164 | + var allMsg []sdk.Message |
| 165 | + msgTemplate, wti, err := workflowtemplate.CheckAndExecuteTemplate(ctx, api.mustDB(), *consumer, *proj, &data, mods...) |
| 166 | + allMsg = append(allMsg, msgTemplate...) |
171 | 167 | if err != nil {
|
172 | 168 | return err
|
173 | 169 | }
|
174 |
| - allMsg, wrkflw, _, err := workflow.Push(ctx, api.mustDB(), api.Cache, proj, data, opt, getAPIConsumer(ctx), project.DecryptWithBuiltinKey) |
| 170 | + msgPush, wrkflw, _, err := workflow.Push(ctx, api.mustDB(), api.Cache, proj, data, opt, getAPIConsumer(ctx), project.DecryptWithBuiltinKey) |
| 171 | + allMsg = append(allMsg, msgPush...) |
175 | 172 | if err != nil {
|
176 | 173 | return sdk.WrapError(err, "unable to push workflow")
|
177 | 174 | }
|
@@ -203,43 +200,38 @@ func (api *API) postPerformImportAsCodeHandler() service.Handler {
|
203 | 200 | }
|
204 | 201 | }
|
205 | 202 |
|
206 |
| -func (api *API) postResyncPRAsCodeHandler() service.Handler { |
| 203 | +func (api *API) postWorkflowAsCodeEventsResyncHandler() service.Handler { |
207 | 204 | return func(ctx context.Context, w http.ResponseWriter, r *http.Request) error {
|
208 | 205 | vars := mux.Vars(r)
|
209 |
| - key := vars["key"] |
210 |
| - appName := FormString(r, "appName") |
211 |
| - fromRepo := FormString(r, "repo") |
| 206 | + projectKey := vars["key"] |
| 207 | + workflowName := vars["permWorkflowName"] |
212 | 208 |
|
213 |
| - proj, errP := project.Load(api.mustDB(), key, |
| 209 | + proj, err := project.Load(api.mustDB(), projectKey, |
214 | 210 | project.LoadOptions.WithApplicationWithDeploymentStrategies,
|
215 | 211 | project.LoadOptions.WithPipelines,
|
216 | 212 | project.LoadOptions.WithEnvironments,
|
217 | 213 | project.LoadOptions.WithIntegrations,
|
218 |
| - project.LoadOptions.WithClearKeys) |
219 |
| - if errP != nil { |
220 |
| - return sdk.WrapError(errP, "unable to load project") |
221 |
| - } |
222 |
| - var app sdk.Application |
223 |
| - switch { |
224 |
| - case appName != "": |
225 |
| - appP, err := application.LoadByName(api.mustDB(), key, appName) |
226 |
| - if err != nil { |
227 |
| - return err |
228 |
| - } |
229 |
| - app = *appP |
230 |
| - case fromRepo != "": |
231 |
| - wkf, err := workflow.LoadByRepo(ctx, api.Cache, api.mustDB(), *proj, fromRepo, workflow.LoadOptions{}) |
232 |
| - if err != nil { |
233 |
| - return err |
234 |
| - } |
235 |
| - app = wkf.Applications[wkf.WorkflowData.Node.Context.ApplicationID] |
236 |
| - default: |
237 |
| - return sdk.WrapError(sdk.ErrWrongRequest, "Missing appName or repo query parameter") |
| 214 | + project.LoadOptions.WithClearKeys, |
| 215 | + ) |
| 216 | + if err != nil { |
| 217 | + return err |
238 | 218 | }
|
239 | 219 |
|
240 |
| - if _, _, err := sync.SyncAsCodeEvent(ctx, api.mustDB(), api.Cache, *proj, app, getAPIConsumer(ctx).AuthentifiedUser); err != nil { |
| 220 | + wf, err := workflow.Load(ctx, api.mustDB(), api.Cache, *proj, workflowName, workflow.LoadOptions{}) |
| 221 | + if err != nil { |
241 | 222 | return err
|
242 | 223 | }
|
| 224 | + |
| 225 | + res, err := ascode.SyncEvents(ctx, api.mustDB(), api.Cache, *proj, *wf, getAPIConsumer(ctx).AuthentifiedUser) |
| 226 | + if err != nil { |
| 227 | + return err |
| 228 | + } |
| 229 | + if res.Merged { |
| 230 | + if err := workflow.UpdateFromRepository(api.mustDB(), wf.ID, res.FromRepository); err != nil { |
| 231 | + return err |
| 232 | + } |
| 233 | + } |
| 234 | + |
243 | 235 | return nil
|
244 | 236 | }
|
245 | 237 | }
|
0 commit comments