Skip to content

Commit 2cba32c

Browse files
zhangrq5iSecloud
authored andcommitted
feat: doris升级流程actor改造及用户权限更新 #18258
1 parent 1f60953 commit 2cba32c

18 files changed

Lines changed: 755 additions & 30 deletions

dbm-services/bigdata/db-tools/dbactuator/internal/subcmd/doriscmd/check_process_start.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,6 @@ func (d *CheckProcessStartAct) Run() (err error) {
9696
return err
9797
}
9898

99-
logger.Info("check_decommission 执行成功")
99+
logger.Info("check_process_start 执行成功")
100100
return nil
101101
}

dbm-services/bigdata/db-tools/dbactuator/internal/subcmd/doriscmd/cmd.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ func DorisCommand() *cobra.Command {
3636
CheckProcessStartCommand(),
3737
CreateResourceCommand(),
3838
DropResourceCommand(),
39+
DecompressDorisPkgV2Command(),
40+
RenderConfigV2Command(),
41+
UpgradeNodeCommand(),
3942
},
4043
},
4144
}
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
package doriscmd
2+
3+
import (
4+
"encoding/json"
5+
"fmt"
6+
7+
"dbm-services/bigdata/db-tools/dbactuator/internal/subcmd"
8+
"dbm-services/bigdata/db-tools/dbactuator/pkg/components/doris"
9+
"dbm-services/bigdata/db-tools/dbactuator/pkg/rollback"
10+
"dbm-services/bigdata/db-tools/dbactuator/pkg/util"
11+
"dbm-services/common/go-pubpkg/logger"
12+
13+
"github.com/spf13/cobra"
14+
)
15+
16+
// DecompressDorisPkgV2Act 用于解压缩 Doris 包的结构体
17+
type DecompressDorisPkgV2Act struct {
18+
*subcmd.BaseOptions
19+
Service doris.DecompressPkgService
20+
}
21+
22+
// DecompressDorisPkgV2Command 创建解压缩 Doris 包的命令
23+
func DecompressDorisPkgV2Command() *cobra.Command {
24+
act := DecompressDorisPkgV2Act{
25+
BaseOptions: subcmd.GBaseOptions,
26+
}
27+
cmd := &cobra.Command{
28+
Use: "decompress_pkg_v2",
29+
Short: "解压缩v2",
30+
Example: fmt.Sprintf(`dbactuator doris decompress_pkg_v2 %s`, subcmd.CmdBaseExapmleStr),
31+
Run: func(cmd *cobra.Command, args []string) {
32+
util.CheckErr(act.Validate())
33+
if act.RollBack {
34+
util.CheckErr(act.Rollback())
35+
return
36+
}
37+
util.CheckErr(act.Init())
38+
util.CheckErr(act.Run())
39+
},
40+
}
41+
return cmd
42+
}
43+
44+
// Validate 用于验证参数
45+
func (d *DecompressDorisPkgV2Act) Validate() (err error) {
46+
return d.BaseOptions.Validate()
47+
}
48+
49+
// Init 用于初始化
50+
func (d *DecompressDorisPkgV2Act) Init() (err error) {
51+
logger.Info("DecompressDorisPkgV2Act 初始化")
52+
if err = d.Deserialize(&d.Service.Params); err != nil {
53+
logger.Error("DeserializeAndValidate 失败, %v", err)
54+
return err
55+
}
56+
d.Service.GeneralParam = subcmd.GeneralRuntimeParam
57+
d.Service.InstallParams = doris.InitDefaultInstallParam()
58+
59+
return nil
60+
}
61+
62+
// Rollback 用于回滚操作
63+
//
64+
// @receiver d
65+
// @return err
66+
func (d *DecompressDorisPkgV2Act) Rollback() (err error) {
67+
var r rollback.RollBackObjects
68+
if err = d.DeserializeAndValidate(&r); err != nil {
69+
logger.Error("DeserializeAndValidate 失败, %v", err)
70+
return err
71+
}
72+
err = r.RollBack()
73+
if err != nil {
74+
logger.Error("回滚失败 %s", err.Error())
75+
}
76+
return
77+
}
78+
79+
// Run 用于执行操作
80+
func (d *DecompressDorisPkgV2Act) Run() (err error) {
81+
steps := subcmd.Steps{
82+
{
83+
FunName: "预检查",
84+
Func: d.Service.PreCheck,
85+
},
86+
{
87+
FunName: "解压缩",
88+
Func: d.Service.DecompressDorisPkgV2,
89+
},
90+
}
91+
// 解析每个步骤执行返回内容的JSON
92+
if err := steps.Run(); err != nil {
93+
rollbackCtxBytes, jsonErr := json.Marshal(d.Service.RollBackContext)
94+
if jsonErr != nil {
95+
logger.Error("JSON Marshal %s", err.Error())
96+
fmt.Printf("<ctx>无法回滚<ctx>\n")
97+
}
98+
fmt.Printf("<ctx>%s<ctx>\n", string(rollbackCtxBytes))
99+
return err
100+
}
101+
102+
logger.Info("decompress_pkg_v2 执行成功")
103+
return nil
104+
}

dbm-services/bigdata/db-tools/dbactuator/internal/subcmd/doriscmd/install_doris.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,10 @@ func (d *InstallDorisAct) Run() (err error) {
9191
FunName: "部署Doris",
9292
Func: d.Service.InstallDoris,
9393
},
94+
{
95+
FunName: "校验组件RUNNING",
96+
Func: d.Service.CheckComponentRunning,
97+
},
9498
}
9599

96100
// json 解析每个步骤执行返回内容
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package doriscmd
2+
3+
import (
4+
"dbm-services/bigdata/db-tools/dbactuator/pkg/components/doris"
5+
"encoding/json"
6+
"fmt"
7+
8+
"dbm-services/bigdata/db-tools/dbactuator/internal/subcmd"
9+
"dbm-services/bigdata/db-tools/dbactuator/pkg/rollback"
10+
"dbm-services/bigdata/db-tools/dbactuator/pkg/util"
11+
"dbm-services/common/go-pubpkg/logger"
12+
13+
"github.com/spf13/cobra"
14+
)
15+
16+
// RenderConfigV2Act 用于渲染配置的V2版本结构体
17+
type RenderConfigV2Act struct {
18+
*subcmd.BaseOptions
19+
Service doris.InstallDorisService
20+
}
21+
22+
// RenderConfigV2Command 创建渲染配置V2版本的命令
23+
func RenderConfigV2Command() *cobra.Command {
24+
act := RenderConfigV2Act{
25+
BaseOptions: subcmd.GBaseOptions,
26+
}
27+
cmd := &cobra.Command{
28+
Use: "render_config_v2",
29+
Short: "doris 渲染集群配置v2",
30+
Example: fmt.Sprintf(`dbactuator doris render_config_v2 %s`, subcmd.CmdBaseExapmleStr),
31+
Run: func(cmd *cobra.Command, args []string) {
32+
util.CheckErr(act.Validate())
33+
if act.RollBack {
34+
util.CheckErr(act.Rollback())
35+
return
36+
}
37+
util.CheckErr(act.Init())
38+
util.CheckErr(act.Run())
39+
},
40+
}
41+
return cmd
42+
}
43+
44+
// Validate 用于验证参数
45+
func (d *RenderConfigV2Act) Validate() (err error) {
46+
return d.BaseOptions.Validate()
47+
}
48+
49+
// Init 用于初始化
50+
func (d *RenderConfigV2Act) Init() (err error) {
51+
logger.Info("RenderConfigV2Act Init")
52+
if err = d.Deserialize(&d.Service.Params); err != nil {
53+
logger.Error("DeserializeAndValidate failed, %v", err)
54+
return err
55+
}
56+
d.Service.GeneralParam = subcmd.GeneralRuntimeParam
57+
d.Service.InstallParams = doris.InitDefaultInstallParam()
58+
return nil
59+
}
60+
61+
// Rollback 用于回滚操作
62+
//
63+
// @receiver d
64+
// @return err
65+
func (d *RenderConfigV2Act) Rollback() (err error) {
66+
var r rollback.RollBackObjects
67+
if err = d.DeserializeAndValidate(&r); err != nil {
68+
logger.Error("DeserializeAndValidate failed, %v", err)
69+
return err
70+
}
71+
err = r.RollBack()
72+
if err != nil {
73+
logger.Error("roll back failed %s", err.Error())
74+
}
75+
return
76+
}
77+
78+
// Run 用于执行
79+
func (d *RenderConfigV2Act) Run() (err error) {
80+
steps := subcmd.Steps{
81+
{
82+
FunName: "渲染Doris配置V2",
83+
Func: d.Service.RenderConfigV2,
84+
},
85+
}
86+
87+
// json 解析每个步骤执行返回内容
88+
if err := steps.Run(); err != nil {
89+
rollbackCtxBytes, jsonErr := json.Marshal(d.Service.RollBackContext)
90+
if jsonErr != nil {
91+
logger.Error("json Marshal %s", err.Error())
92+
fmt.Printf("<ctx>Can't RollBack<ctx>\n")
93+
}
94+
fmt.Printf("<ctx>%s<ctx>\n", string(rollbackCtxBytes))
95+
return err
96+
}
97+
98+
logger.Info("render_config_v2 successfully")
99+
return nil
100+
}

dbm-services/bigdata/db-tools/dbactuator/internal/subcmd/doriscmd/restart_process.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,10 @@ func (d *RestartProcessAct) Run() (err error) {
8383
FunName: "重启doris进程",
8484
Func: d.Service.StartStopComponent,
8585
},
86+
{
87+
FunName: "校验组件RUNNING",
88+
Func: d.Service.CheckComponentRunning,
89+
},
8690
}
8791

8892
// json 解析每个步骤执行返回内容

dbm-services/bigdata/db-tools/dbactuator/internal/subcmd/doriscmd/start_process.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,10 @@ func (d *StartProcessAct) Run() (err error) {
8383
FunName: "启动doris进程",
8484
Func: d.Service.StartStopComponent,
8585
},
86+
{
87+
FunName: "校验组件RUNNING",
88+
Func: d.Service.CheckComponentRunning,
89+
},
8690
}
8791

8892
// json 解析每个步骤执行返回内容
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
package doriscmd
2+
3+
import (
4+
"encoding/json"
5+
"fmt"
6+
7+
"dbm-services/bigdata/db-tools/dbactuator/internal/subcmd"
8+
"dbm-services/bigdata/db-tools/dbactuator/pkg/components/doris"
9+
"dbm-services/bigdata/db-tools/dbactuator/pkg/rollback"
10+
"dbm-services/bigdata/db-tools/dbactuator/pkg/util"
11+
"dbm-services/common/go-pubpkg/logger"
12+
13+
"github.com/spf13/cobra"
14+
)
15+
16+
// UpgradeNodeAct 升级节点操作结构体
17+
type UpgradeNodeAct struct {
18+
*subcmd.BaseOptions
19+
Service doris.UpgradeService
20+
}
21+
22+
// UpgradeNodeCommand 创建升级节点命令
23+
func UpgradeNodeCommand() *cobra.Command {
24+
act := UpgradeNodeAct{
25+
BaseOptions: subcmd.GBaseOptions,
26+
}
27+
cmd := &cobra.Command{
28+
Use: "upgrade_node",
29+
Short: "升级doris节点",
30+
Example: fmt.Sprintf(`dbactuator doris upgrade_node %s`, subcmd.CmdBaseExapmleStr),
31+
Run: func(cmd *cobra.Command, args []string) {
32+
util.CheckErr(act.Validate())
33+
if act.RollBack {
34+
util.CheckErr(act.Rollback())
35+
return
36+
}
37+
util.CheckErr(act.Init())
38+
util.CheckErr(act.Run())
39+
},
40+
}
41+
return cmd
42+
}
43+
44+
// Validate 用于验证参数
45+
func (d *UpgradeNodeAct) Validate() (err error) {
46+
return d.BaseOptions.Validate()
47+
}
48+
49+
// Init 用于初始化
50+
func (d *UpgradeNodeAct) Init() (err error) {
51+
logger.Info("UpgradeNodeAct Init")
52+
if err = d.Deserialize(&d.Service.Params); err != nil {
53+
logger.Error("DeserializeAndValidate failed, %v", err)
54+
return err
55+
}
56+
d.Service.GeneralParam = subcmd.GeneralRuntimeParam
57+
d.Service.InstallParams = doris.InitDefaultInstallParam()
58+
return nil
59+
}
60+
61+
// Rollback 用于回滚操作
62+
//
63+
// @receiver d
64+
// @return err
65+
func (d *UpgradeNodeAct) Rollback() (err error) {
66+
var r rollback.RollBackObjects
67+
if err = d.DeserializeAndValidate(&r); err != nil {
68+
logger.Error("DeserializeAndValidate failed, %v", err)
69+
return err
70+
}
71+
err = r.RollBack()
72+
if err != nil {
73+
logger.Error("roll back failed %s", err.Error())
74+
}
75+
return
76+
}
77+
78+
// Run 用于执行升级操作
79+
func (d *UpgradeNodeAct) Run() (err error) {
80+
steps := subcmd.Steps{
81+
{
82+
FunName: "升级预检查",
83+
Func: d.Service.PreCheck,
84+
},
85+
{
86+
FunName: "停止进程",
87+
Func: d.Service.StopProcess,
88+
},
89+
{
90+
FunName: "切换角色软链",
91+
Func: d.Service.SwitchRoleLink,
92+
},
93+
{
94+
FunName: "切换JDK软链",
95+
Func: d.Service.SwitchJdkLink,
96+
},
97+
{
98+
FunName: "新版本目录赋权",
99+
Func: d.Service.ChownNewVersion,
100+
},
101+
{
102+
FunName: "启动进程",
103+
Func: d.Service.StartProcess,
104+
},
105+
{
106+
FunName: "校验组件RUNNING",
107+
Func: d.Service.CheckComponentRunning,
108+
},
109+
}
110+
111+
// json 解析每个步骤执行返回内容
112+
if err := steps.Run(); err != nil {
113+
rollbackCtxBytes, jsonErr := json.Marshal(d.Service.RollBackContext)
114+
if jsonErr != nil {
115+
logger.Error("json Marshal %s", err.Error())
116+
fmt.Printf("<ctx>Can't RollBack<ctx>\n")
117+
}
118+
fmt.Printf("<ctx>%s<ctx>\n", string(rollbackCtxBytes))
119+
return err
120+
}
121+
122+
logger.Info("upgrade_node successfully")
123+
return nil
124+
}

0 commit comments

Comments
 (0)