@@ -27,7 +27,6 @@ import (
27
27
tenanttmp "configcenter/pkg/types/tenant-template"
28
28
"configcenter/src/common"
29
29
"configcenter/src/common/blog"
30
- httpheader "configcenter/src/common/http/header"
31
30
"configcenter/src/common/http/rest"
32
31
"configcenter/src/common/index"
33
32
"configcenter/src/common/metadata"
@@ -43,28 +42,22 @@ import (
43
42
)
44
43
45
44
func (s * Service ) addTenant (req * restful.Request , resp * restful.Response ) {
46
- rHeader := req .Request .Header
47
- defErr := s .CCErr .CreateDefaultCCErrorIf (httpheader .GetLanguage (rHeader ))
48
- kit := rest .NewKitFromHeader (rHeader , s .CCErr )
45
+ kit := rest .NewKitFromHeader (req .Request .Header , s .CCErr )
49
46
50
47
if ! s .Config .EnableMultiTenantMode {
51
48
blog .Errorf ("multi-tenant mode is not enabled, cannot add tenant, rid: %s" , kit .Rid )
52
- result := & metadata.RespError {
53
- Msg : defErr .Errorf (common .CCErrCommAddTenantErr ,
54
- fmt .Errorf ("multi-tenant mode is not enabled, cannot add tenant" )),
55
- }
56
- resp .WriteError (http .StatusInternalServerError , result )
49
+ resp .WriteError (http .StatusInternalServerError , & metadata.RespError {
50
+ Msg : kit .CCError .New (common .CCErrCommAddTenantErr , "multi-tenant mode is not enabled, cannot add tenant" )})
57
51
return
58
52
}
59
53
60
54
_ , exist := tenant .GetTenant (kit .TenantID )
61
55
if exist {
62
- // add watch token for new tenant
63
- // TODO 如果租户已经存在的情况下也调一下,防止之前新增租户了但是这个失败了
56
+ // add watch token for new tenant in case tenant is created without watch tokens
64
57
if err := s .addWatchTokenForNewTenant (kit ); err != nil {
65
58
blog .Errorf ("add watch token for new tenant %s failed, err: %v, rid: %s" , kit .TenantID , err , kit .Rid )
66
- result := & metadata. RespError { Msg : defErr . Errorf ( common . CCErrCommAddTenantErr , err . Error ())}
67
- resp . WriteError ( http . StatusInternalServerError , result )
59
+ resp . WriteError ( http . StatusInternalServerError , & metadata. RespError {
60
+ Msg : kit . CCError . New ( common . CCErrCommAddTenantErr , err . Error ())} )
68
61
return
69
62
}
70
63
resp .WriteEntity (metadata .NewSuccessResp ("tenant exist" ))
@@ -76,10 +69,8 @@ func (s *Service) addTenant(req *restful.Request, resp *restful.Response) {
76
69
tenants , err := apigwcli .Client ().User ().GetTenants (kit .Ctx , kit .Header )
77
70
if err != nil {
78
71
blog .Errorf ("get tenants from bk-user failed, err: %v, rid: %s" , err , kit .Rid )
79
- result := & metadata.RespError {
80
- Msg : defErr .Errorf (common .CCErrCommAddTenantErr , fmt .Errorf ("get tenants from bk-user failed" )),
81
- }
82
- resp .WriteError (http .StatusInternalServerError , result )
72
+ resp .WriteError (http .StatusInternalServerError , & metadata.RespError {
73
+ Msg : kit .CCError .New (common .CCErrCommAddTenantErr , "get tenants from bk-user failed" )})
83
74
}
84
75
85
76
tenantMap := make (map [string ]user.Status )
@@ -89,51 +80,42 @@ func (s *Service) addTenant(req *restful.Request, resp *restful.Response) {
89
80
90
81
if status , ok := tenantMap [kit .TenantID ]; ! ok || status != user .EnabledStatus {
91
82
blog .Errorf ("tenant %s invalid, rid: %s" , kit .TenantID , kit .Rid )
92
- result := & metadata.RespError {
93
- Msg : defErr .Errorf (common .CCErrCommAddTenantErr ,
94
- fmt .Errorf ("tenant %s invalid" , kit .TenantID )),
95
- }
96
- resp .WriteError (http .StatusInternalServerError , result )
83
+ resp .WriteError (http .StatusInternalServerError , & metadata.RespError {
84
+ Msg : kit .CCError .Errorf (common .CCErrCommAddTenantErr , fmt .Sprintf ("tenant %s invalid" , kit .TenantID ))})
97
85
return
98
86
}
99
87
}
100
88
89
+ if err := s .addTenantData (kit ); err != nil {
90
+ resp .WriteError (http .StatusInternalServerError , & metadata.RespError {
91
+ Msg : kit .CCError .New (common .CCErrCommAddTenantErr , err .Error ())})
92
+ return
93
+ }
94
+
95
+ resp .WriteEntity (metadata .NewSuccessResp ("add tenant success" ))
96
+ }
97
+
98
+ func (s * Service ) addTenantData (kit * rest.Kit ) error {
101
99
cli , dbUUID , err := logics .GetNewTenantCli (kit , mongodb .Dal ())
102
100
if err != nil {
103
101
blog .Errorf ("get new tenant db failed, err: %v, rid: %s" , err , kit .Rid )
104
- result := & metadata.RespError {
105
- Msg : defErr .Errorf (common .CCErrCommAddTenantErr , fmt .Errorf ("get new tenant db failed" )),
106
- }
107
- resp .WriteError (http .StatusInternalServerError , result )
108
- return
102
+ return err
109
103
}
110
104
111
105
if err = addTableIndexes (kit , cli ); err != nil {
112
106
blog .Errorf ("create table and indexes for tenant %s failed, err: %v, rid: %s" , kit .TenantID , err , kit .Rid )
113
- result := & metadata.RespError {
114
- Msg : defErr .Errorf (common .CCErrCommAddTenantErr , err .Error ()),
115
- }
116
- resp .WriteError (http .StatusInternalServerError , result )
117
- return
107
+ return err
118
108
}
119
109
120
110
// add default area
121
111
if err = addDefaultArea (kit , cli ); err != nil {
122
112
blog .Errorf ("add default area failed, err: %v, rid: %s" , err , kit .Rid )
123
- result := & metadata.RespError {
124
- Msg : defErr .Errorf (common .CCErrCommAddTenantErr , err .Error ()),
125
- }
126
- resp .WriteError (http .StatusInternalServerError , result )
127
- return
113
+ return err
128
114
}
129
115
130
116
if err = addDataFromTemplate (kit , cli ); err != nil {
131
117
blog .Errorf ("create init data for tenant %s failed, err: %v" , kit .TenantID , err )
132
- result := & metadata.RespError {
133
- Msg : defErr .Errorf (common .CCErrCommAddTenantErr , err .Error ()),
134
- }
135
- resp .WriteError (http .StatusInternalServerError , result )
136
- return
118
+ return err
137
119
}
138
120
139
121
// add tenant db relation
@@ -145,28 +127,20 @@ func (s *Service) addTenant(req *restful.Request, resp *restful.Response) {
145
127
err = mongodb .Shard (kit .SysShardOpts ()).Table (common .BKTableNameTenant ).Insert (kit .Ctx , data )
146
128
if err != nil {
147
129
blog .Errorf ("add tenant db relations failed, err: %v, rid: %s" , err , kit .Rid )
148
- result := & metadata.RespError {
149
- Msg : defErr .Errorf (common .CCErrCommAddTenantErr , err .Error ()),
150
- }
151
- resp .WriteError (http .StatusInternalServerError , result )
152
- return
130
+ return err
153
131
}
154
132
155
133
// refresh tenants, ignore refresh tenants error
156
- if err = logics .RefreshTenants (s .CoreAPI ); err != nil {
134
+ if err = logics .RefreshTenants (s .CoreAPI , s . db ); err != nil {
157
135
blog .Errorf ("refresh tenants failed, err: %v, rid: %s" , err , kit .Rid )
158
136
}
159
137
160
138
// add watch token for new tenant
161
- // TODO 如果租户已经存在的情况下也调一下,防止之前新增租户了但是这个失败了
162
139
if err = s .addWatchTokenForNewTenant (kit ); err != nil {
163
140
blog .Errorf ("add watch token for new tenant %s failed, err: %v, rid: %s" , kit .TenantID , err , kit .Rid )
164
- result := & metadata.RespError {Msg : defErr .Errorf (common .CCErrCommAddTenantErr , err .Error ())}
165
- resp .WriteError (http .StatusInternalServerError , result )
166
- return
141
+ return err
167
142
}
168
-
169
- resp .WriteEntity (metadata .NewSuccessResp ("add tenant success" ))
143
+ return nil
170
144
}
171
145
172
146
func (s * Service ) addWatchTokenForNewTenant (kit * rest.Kit ) error {
0 commit comments