8
8
"fmt"
9
9
"net/http"
10
10
"net/url"
11
+ "time"
11
12
13
+ "github.com/ovh/cds/cli"
12
14
"github.com/ovh/cds/sdk"
13
15
)
14
16
@@ -234,7 +236,7 @@ func (c *client) AdminDatabaseSignaturesResume(service string) (sdk.CanonicalFor
234
236
return res , err
235
237
}
236
238
237
- func (c * client ) AdminDatabaseSignaturesRollEntity (service string , e string ) error {
239
+ func (c * client ) AdminDatabaseSignaturesRollEntity (service string , e string , idx * int64 ) error {
238
240
resume , err := c .AdminDatabaseSignaturesResume (service )
239
241
if err != nil {
240
242
return err
@@ -245,19 +247,34 @@ func (c *client) AdminDatabaseSignaturesRollEntity(service string, e string) err
245
247
}
246
248
247
249
for _ , s := range resume [e ] {
250
+ ctx , cancel := context .WithCancel (context .Background ())
251
+ defer cancel ()
252
+
253
+ var display = new (cli.Display )
254
+ display .Printf ("Rolling %v..." , e )
255
+ display .Do (ctx )
256
+
248
257
url := fmt .Sprintf ("/admin/database/signature/%s/%s" , e , s .Signer )
249
258
var pks []string
250
259
var f = c .switchServiceCallFunc (service , http .MethodGet , url , nil , & pks )
251
260
if _ , err := f (); err != nil {
252
261
return err
253
262
}
254
263
255
- for _ , pk := range pks {
264
+ for i , pk := range pks {
265
+ if idx != nil && * idx > int64 (i ) {
266
+ continue
267
+ }
268
+ display .Printf ("Rolling %v (%d/%d)..." , e , i + 1 , len (pks ))
256
269
url := fmt .Sprintf ("/admin/database/signature/%s/roll/%s" , e , pk )
257
270
var f = c .switchServiceCallFunc (service , http .MethodPost , url , nil , nil )
258
271
if _ , err := f (); err != nil {
259
272
return err
260
273
}
274
+ if i == len (pks )- 1 {
275
+ display .Printf ("Rolling %v (%d/%d) - DONE\n " , e , i + 1 , len (pks ))
276
+ time .Sleep (time .Second )
277
+ }
261
278
}
262
279
}
263
280
return nil
@@ -270,7 +287,7 @@ func (c *client) AdminDatabaseSignaturesRollAllEntities(service string) error {
270
287
}
271
288
272
289
for e := range resume {
273
- if err := c .AdminDatabaseSignaturesRollEntity (service , e ); err != nil {
290
+ if err := c .AdminDatabaseSignaturesRollEntity (service , e , nil ); err != nil {
274
291
return err
275
292
}
276
293
}
@@ -284,7 +301,7 @@ func (c *client) AdminDatabaseListEncryptedEntities(service string) ([]string, e
284
301
return res , err
285
302
}
286
303
287
- func (c * client ) AdminDatabaseRollEncryptedEntity (service string , e string ) error {
304
+ func (c * client ) AdminDatabaseRollEncryptedEntity (service string , e string , idx * int64 ) error {
288
305
url := fmt .Sprintf ("/admin/database/encryption/%s" , e )
289
306
var pks []string
290
307
@@ -293,12 +310,26 @@ func (c *client) AdminDatabaseRollEncryptedEntity(service string, e string) erro
293
310
return err
294
311
}
295
312
296
- for _ , pk := range pks {
313
+ for i , pk := range pks {
314
+ ctx , cancel := context .WithCancel (context .Background ())
315
+ defer cancel ()
316
+
317
+ var display = new (cli.Display )
318
+ display .Printf ("Rolling %v..." , e )
319
+ display .Do (ctx )
320
+ if idx != nil && * idx > int64 (i ) {
321
+ continue
322
+ }
323
+ display .Printf ("Rolling %v (%d/%d)..." , e , i + 1 , len (pks ))
297
324
url := fmt .Sprintf ("/admin/database/encryption/%s/roll/%s" , e , pk )
298
325
var f = c .switchServiceCallFunc (service , http .MethodPost , url , nil , nil )
299
326
if _ , err := f (); err != nil {
300
327
return err
301
328
}
329
+ if i == len (pks )- 1 {
330
+ display .Printf ("Rolling %v (%d/%d) - DONE\n " , e , i + 1 , len (pks ))
331
+ time .Sleep (time .Second )
332
+ }
302
333
}
303
334
304
335
return nil
@@ -310,7 +341,7 @@ func (c *client) AdminDatabaseRollAllEncryptedEntities(service string) error {
310
341
return err
311
342
}
312
343
for _ , e := range entities {
313
- if err := c .AdminDatabaseRollEncryptedEntity (service , e ); err != nil {
344
+ if err := c .AdminDatabaseRollEncryptedEntity (service , e , nil ); err != nil {
314
345
return err
315
346
}
316
347
}
0 commit comments