@@ -112,6 +112,15 @@ func registerTenantHandlers(api *operations.ConsoleAPI) {
112
112
}
113
113
return admin_api .NewTenantAddZoneCreated ()
114
114
})
115
+
116
+ api .AdminAPIGetTenantUsageHandler = admin_api .GetTenantUsageHandlerFunc (func (params admin_api.GetTenantUsageParams , session * models.Principal ) middleware.Responder {
117
+ payload , err := getTenantUsageResponse (session , params )
118
+ if err != nil {
119
+ log .Println (err )
120
+ return admin_api .NewGetTenantUsageDefault (500 ).WithPayload (& models.Error {Code : 500 , Message : swag .String ("Unable to get tenant usage" )})
121
+ }
122
+ return admin_api .NewGetTenantUsageOK ().WithPayload (payload )
123
+ })
115
124
}
116
125
117
126
// deleteTenantAction performs the actions of deleting a tenant
@@ -178,7 +187,7 @@ func getTenant(ctx context.Context, operatorClient OperatorClient, namespace, te
178
187
return minInst , nil
179
188
}
180
189
181
- func getTenantInfo (tenant * operator.Tenant , tenantInfo * usageInfo ) * models.Tenant {
190
+ func getTenantInfo (tenant * operator.Tenant ) * models.Tenant {
182
191
var instanceCount int64
183
192
var volumeCount int64
184
193
for _ , zone := range tenant .Spec .Zones {
@@ -217,7 +226,6 @@ func getTenantInfo(tenant *operator.Tenant, tenantInfo *usageInfo) *models.Tenan
217
226
Zones : zones ,
218
227
Namespace : tenant .ObjectMeta .Namespace ,
219
228
Image : tenant .Spec .Image ,
220
- UsedSize : tenantInfo .DisksUsage ,
221
229
}
222
230
}
223
231
@@ -230,55 +238,18 @@ func getTenantInfoResponse(session *models.Principal, params admin_api.TenantInf
230
238
if err != nil {
231
239
return nil , err
232
240
}
233
- clientset , err := cluster .K8sClient (session .SessionToken )
234
- if err != nil {
235
- log .Println ("error getting k8sClient:" , err )
236
- return nil , err
237
- }
238
241
239
242
opClient := & operatorClient {
240
243
client : opClientClientSet ,
241
244
}
242
- k8sClient := & k8sClient {
243
- client : clientset ,
244
- }
245
245
246
246
minTenant , err := getTenant (ctx , opClient , params .Namespace , params .Tenant )
247
247
if err != nil {
248
248
log .Println ("error getting minioTenant:" , err )
249
249
return nil , err
250
250
}
251
- tenantScheme := getTenantScheme (minTenant )
252
251
253
- svcName := minTenant .Spec .ServiceName
254
- if svcName == "" {
255
- svcName = minTenant .Name
256
- // TODO:
257
- // 1 get tenant services
258
- // 2 filter out cluster ip svc
259
- }
260
-
261
- mAdmin , err := getTenantAdminClient (
262
- ctx ,
263
- k8sClient ,
264
- params .Namespace ,
265
- params .Tenant ,
266
- svcName ,
267
- tenantScheme )
268
- if err != nil {
269
- log .Println ("error getting tenant's admin client:" , err )
270
- return nil , err
271
- }
272
- // create a minioClient interface implementation
273
- // defining the client to be used
274
- adminClient := adminClient {client : mAdmin }
275
- // serialize output
276
- adminInfo , err := getAdminInfo (ctx , adminClient )
277
- if err != nil {
278
- log .Println ("error getting admin info:" , err )
279
- return nil , err
280
- }
281
- info := getTenantInfo (minTenant , adminInfo )
252
+ info := getTenantInfo (minTenant )
282
253
return info , nil
283
254
}
284
255
@@ -684,3 +655,65 @@ func getTenantAddZoneResponse(session *models.Principal, params admin_api.Tenant
684
655
}
685
656
return nil
686
657
}
658
+
659
+ // getTenantUsageResponse returns the usage of a tenant
660
+ func getTenantUsageResponse (session * models.Principal , params admin_api.GetTenantUsageParams ) (* models.TenantUsage , error ) {
661
+ // 5 seconds timeout
662
+ ctx , cancel := context .WithTimeout (context .Background (), 5 * time .Second )
663
+ defer cancel ()
664
+
665
+ opClientClientSet , err := cluster .OperatorClient (session .SessionToken )
666
+ if err != nil {
667
+ return nil , err
668
+ }
669
+ clientset , err := cluster .K8sClient (session .SessionToken )
670
+ if err != nil {
671
+ log .Println ("error getting k8sClient:" , err )
672
+ return nil , err
673
+ }
674
+
675
+ opClient := & operatorClient {
676
+ client : opClientClientSet ,
677
+ }
678
+ k8sClient := & k8sClient {
679
+ client : clientset ,
680
+ }
681
+
682
+ minTenant , err := getTenant (ctx , opClient , params .Namespace , params .Tenant )
683
+ if err != nil {
684
+ log .Println ("error getting minioTenant:" , err )
685
+ return nil , err
686
+ }
687
+ tenantScheme := getTenantScheme (minTenant )
688
+
689
+ svcName := minTenant .Spec .ServiceName
690
+ if svcName == "" {
691
+ svcName = minTenant .Name
692
+ // TODO:
693
+ // 1 get tenant services
694
+ // 2 filter out cluster ip svc
695
+ }
696
+
697
+ mAdmin , err := getTenantAdminClient (
698
+ ctx ,
699
+ k8sClient ,
700
+ params .Namespace ,
701
+ params .Tenant ,
702
+ svcName ,
703
+ tenantScheme )
704
+ if err != nil {
705
+ log .Println ("error getting tenant's admin client:" , err )
706
+ return nil , err
707
+ }
708
+ // create a minioClient interface implementation
709
+ // defining the client to be used
710
+ adminClient := adminClient {client : mAdmin }
711
+ // serialize output
712
+ adminInfo , err := getAdminInfo (ctx , adminClient )
713
+ if err != nil {
714
+ log .Println ("error getting admin info:" , err )
715
+ return nil , err
716
+ }
717
+ info := & models.TenantUsage {UsedSize : adminInfo .Usage }
718
+ return info , nil
719
+ }
0 commit comments