@@ -33,71 +33,54 @@ func (c *PrivTaskPara) addWhiteList(targetMetaInfos []*service.Instance) (err er
33
33
slog .Any ("proxies" , workingProxies ),
34
34
)
35
35
36
- // 确实有要操作的 proxy
37
- if len (workingProxies ) > 0 {
38
- var cmds []string
39
- for _ , clientIp := range c .SourceIPs {
40
- //clientIp 可能是 localhost, 要忽略
41
- if clientIp == "localhost" {
42
- continue
43
- }
44
- cmds = append (
45
- cmds ,
46
- fmt .Sprintf (`refresh_users('%s@%s', '+')` ,
47
- c .User , clientIp ,
48
- ))
49
- }
36
+ if len (workingProxies ) <= 0 {
37
+ return nil
38
+ }
39
+
40
+ cmds := generateProxyCmds (c .SourceIPs , c .User )
41
+ slog .Info (
42
+ "add proxy white list" ,
43
+ slog .Any ("cmds" , cmds ),
44
+ )
45
+
46
+ // drs 执行多个 sql 是循环一个一个来的
47
+ // 所以批量发送是可以的, 只是这么搞 drs 负载估计要炸
48
+ // 这里搞并发的意义不大
49
+ var errCollect error
50
+ for bkCloudId , addresses := range workingProxies {
50
51
slog .Info (
51
52
"add proxy white list" ,
52
- slog .Any ("cmds" , cmds ),
53
+ slog .Int64 ("bk_cloud_id" , bkCloudId ),
54
+ slog .Any ("addresses" , addresses ),
55
+ )
56
+ drsRes , err := drs .RPCProxyAdmin (
57
+ bkCloudId ,
58
+ addresses ,
59
+ cmds ,
60
+ false ,
61
+ 0 ,
53
62
)
63
+ if err != nil {
64
+ slog .Error ("add proxy white list" , slog .String ("err" , err .Error ()))
65
+ return err
66
+ }
54
67
55
- // drs 执行多个 sql 是循环一个一个来的
56
- // 所以批量发送是可以的, 只是这么搞 drs 负载估计要炸
57
- // 这里搞并发的意义不大
58
- var errCollect error
59
- for bkCloudId , addresses := range workingProxies {
68
+ // 错误要收集起来
69
+ ec := collectErrors (drsRes )
70
+ if ec != nil {
71
+ slog .Error ("add proxy white list" , slog .String ("err collection" , ec .Error ()))
72
+ errCollect = errors .Join (errCollect , ec )
73
+ } else {
60
74
slog .Info (
61
- "add proxy white list" ,
75
+ "add proxy white list success " ,
62
76
slog .Int64 ("bk_cloud_id" , bkCloudId ),
63
- slog .Any ("addresses" , addresses ),
64
77
)
65
- drsRes , err := drs .RPCProxyAdmin (
66
- bkCloudId ,
67
- addresses ,
68
- cmds ,
69
- false ,
70
- 0 ,
71
- )
72
- if err != nil {
73
- slog .Error (
74
- "add proxy white list" ,
75
- slog .Int64 ("bk_cloud_id" , bkCloudId ),
76
- slog .String ("err" , err .Error ()),
77
- )
78
- return err
79
- }
80
-
81
- // 错误要收集起来
82
- ec := collectErrors (drsRes )
83
- if ec != nil {
84
- slog .Error (
85
- "add proxy white list" ,
86
- slog .Int64 ("bk_cloud_id" , bkCloudId ),
87
- slog .String ("err" , ec .Error ()),
88
- )
89
- errCollect = errors .Join (errCollect , ec )
90
- } else {
91
- slog .Info (
92
- "add proxy white list success" ,
93
- slog .Int64 ("bk_cloud_id" , bkCloudId ),
94
- )
95
- }
96
- }
97
- if errCollect != nil {
98
- return errCollect
99
78
}
100
79
}
80
+ if errCollect != nil {
81
+ return errCollect
82
+ }
83
+
101
84
return nil
102
85
}
103
86
@@ -120,3 +103,18 @@ func collectErrors(res []*drs.OneAddressResult) (ec error) {
120
103
}
121
104
return ec
122
105
}
106
+
107
+ func generateProxyCmds (clientIps []string , username string ) (cmds []string ) {
108
+ for _ , clientIp := range clientIps {
109
+ //clientIp 可能是 localhost, 要忽略
110
+ if clientIp == "localhost" {
111
+ continue
112
+ }
113
+ cmds = append (
114
+ cmds ,
115
+ fmt .Sprintf (`refresh_users('%s@%s', '+')` ,
116
+ username , clientIp ,
117
+ ))
118
+ }
119
+ return cmds
120
+ }
0 commit comments