@@ -336,16 +336,11 @@ func readContainer(container *containers.Container, bkt *bolt.Bucket) error {
336336 container .Runtime .Name = string (n )
337337 }
338338
339- obkt := rbkt .Get (bucketKeyOptions )
340- if obkt == nil {
341- return nil
342- }
343-
344- var any types.Any
345- if err := proto .Unmarshal (obkt , & any ); err != nil {
339+ any , err := boltutil .ReadAny (rbkt , bucketKeyOptions )
340+ if err != nil {
346341 return err
347342 }
348- container .Runtime .Options = & any
343+ container .Runtime .Options = any
349344 case string (bucketKeySpec ):
350345 var any types.Any
351346 if err := proto .Unmarshal (v , & any ); err != nil {
@@ -357,22 +352,8 @@ func readContainer(container *containers.Container, bkt *bolt.Bucket) error {
357352 case string (bucketKeySnapshotter ):
358353 container .Snapshotter = string (v )
359354 case string (bucketKeyExtensions ):
360- ebkt := bkt .Bucket (bucketKeyExtensions )
361- if ebkt == nil {
362- return nil
363- }
364-
365- extensions := make (map [string ]types.Any )
366- if err := ebkt .ForEach (func (k , v []byte ) error {
367- var a types.Any
368- if err := proto .Unmarshal (v , & a ); err != nil {
369- return err
370- }
371-
372- extensions [string (k )] = a
373- return nil
374- }); err != nil {
375-
355+ extensions , err := boltutil .ReadExtensions (bkt )
356+ if err != nil {
376357 return err
377358 }
378359
@@ -388,15 +369,8 @@ func writeContainer(bkt *bolt.Bucket, container *containers.Container) error {
388369 return err
389370 }
390371
391- if container .Spec != nil {
392- spec , err := container .Spec .Marshal ()
393- if err != nil {
394- return err
395- }
396-
397- if err := bkt .Put (bucketKeySpec , spec ); err != nil {
398- return err
399- }
372+ if err := boltutil .WriteAny (bkt , bucketKeySpec , container .Spec ); err != nil {
373+ return err
400374 }
401375
402376 for _ , v := range [][2 ][]byte {
@@ -424,33 +398,12 @@ func writeContainer(bkt *bolt.Bucket, container *containers.Container) error {
424398 return err
425399 }
426400
427- if len (container .Extensions ) > 0 {
428- ebkt , err := bkt .CreateBucketIfNotExists (bucketKeyExtensions )
429- if err != nil {
430- return err
431- }
432-
433- for name , ext := range container .Extensions {
434- p , err := proto .Marshal (& ext )
435- if err != nil {
436- return err
437- }
438-
439- if err := ebkt .Put ([]byte (name ), p ); err != nil {
440- return err
441- }
442- }
401+ if err := boltutil .WriteExtensions (bkt , container .Extensions ); err != nil {
402+ return err
443403 }
444404
445- if container .Runtime .Options != nil {
446- data , err := proto .Marshal (container .Runtime .Options )
447- if err != nil {
448- return err
449- }
450-
451- if err := rbkt .Put (bucketKeyOptions , data ); err != nil {
452- return err
453- }
405+ if err := boltutil .WriteAny (rbkt , bucketKeyOptions , container .Runtime .Options ); err != nil {
406+ return err
454407 }
455408
456409 return boltutil .WriteLabels (bkt , container .Labels )
0 commit comments