Skip to content

Commit feb1ea6

Browse files
committed
clear release plan options data
Signed-off-by: Patrick Zhao <[email protected]>
1 parent 4ed80c5 commit feb1ea6

File tree

1 file changed

+98
-0
lines changed
  • pkg/cli/upgradeassistant/cmd/migrate

1 file changed

+98
-0
lines changed
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
/*
2+
Copyright 2025 The KodeRover Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package migrate
18+
19+
import (
20+
"fmt"
21+
22+
"github.com/koderover/zadig/v2/pkg/cli/upgradeassistant/internal/upgradepath"
23+
"github.com/koderover/zadig/v2/pkg/microservice/aslan/config"
24+
"github.com/koderover/zadig/v2/pkg/microservice/aslan/core/common/repository/models"
25+
commonrepo "github.com/koderover/zadig/v2/pkg/microservice/aslan/core/common/repository/mongodb"
26+
workflowController "github.com/koderover/zadig/v2/pkg/microservice/aslan/core/workflow/service/workflow/controller"
27+
internalhandler "github.com/koderover/zadig/v2/pkg/shared/handler"
28+
"github.com/koderover/zadig/v2/pkg/tool/log"
29+
)
30+
31+
func init() {
32+
upgradepath.RegisterHandler("9.0.0", "9.0.1", V900ToV901)
33+
upgradepath.RegisterHandler("9.0.1", "9.0.0", V901ToV900)
34+
}
35+
36+
func V900ToV901() error {
37+
ctx := internalhandler.NewBackgroupContext()
38+
39+
migrationInfo, err := getMigrationInfo()
40+
if err != nil {
41+
return fmt.Errorf("failed to get migration info from db, err: %s", err)
42+
}
43+
44+
defer func() {
45+
updateMigrationError(migrationInfo.ID, err)
46+
}()
47+
48+
cursor, err := commonrepo.NewReleasePlanColl().ListByCursor()
49+
if err != nil {
50+
return fmt.Errorf("failed to list release plans, error: %w", err)
51+
}
52+
53+
count := 0
54+
for cursor.Next(ctx) {
55+
var releasePlan models.ReleasePlan
56+
if err := cursor.Decode(&releasePlan); err != nil {
57+
return fmt.Errorf("failed to decode release plan, err: %v", err)
58+
}
59+
60+
for _, job := range releasePlan.Jobs {
61+
if job.Type == config.JobWorkflow {
62+
releaseJobSpec := new(models.WorkflowReleaseJobSpec)
63+
err = models.IToi(job.Spec, releaseJobSpec)
64+
if err != nil {
65+
return fmt.Errorf("failed to decode release job spec, release plan name: %s, err: %v", releasePlan.Name, err)
66+
}
67+
68+
if releaseJobSpec.Workflow == nil {
69+
log.Warnf("release plan %s job's workflow spec is nil", releasePlan.Name)
70+
continue
71+
}
72+
73+
controller := workflowController.CreateWorkflowController(releaseJobSpec.Workflow)
74+
err = controller.ClearOptions()
75+
if err != nil {
76+
return fmt.Errorf("failed to clear options, release plan name: %s, workflow name: %s, err", releasePlan.Name, releaseJobSpec.Workflow.Name)
77+
}
78+
79+
job.Spec = releaseJobSpec
80+
}
81+
}
82+
83+
err = commonrepo.NewReleasePlanColl().UpdateByID(ctx, releasePlan.ID.Hex(), &releasePlan)
84+
if err != nil {
85+
return fmt.Errorf("failed update release plan, name: %s, err: %v", releasePlan.Name, err)
86+
}
87+
88+
count++
89+
}
90+
91+
log.Infof("finished clear release plan options data, updated %v release plans", count)
92+
93+
return nil
94+
}
95+
96+
func V901ToV900() error {
97+
return nil
98+
}

0 commit comments

Comments
 (0)