@@ -143,8 +143,10 @@ func New(address string, opts ...ClientOpt) (*Client, error) {
143143 // check namespace labels for default runtime
144144 if copts .defaultRuntime == "" && copts .defaultns != "" {
145145 ctx := namespaces .WithNamespace (context .Background (), copts .defaultns )
146- if err := c .GetLabel (ctx , defaults .DefaultRuntimeNSLabel , & c . runtime , "" ); err != nil {
146+ if label , err := c .GetLabel (ctx , defaults .DefaultRuntimeNSLabel ); err != nil {
147147 return nil , err
148+ } else if label != "" {
149+ c .runtime = label
148150 }
149151 }
150152
@@ -168,8 +170,10 @@ func NewWithConn(conn *grpc.ClientConn, opts ...ClientOpt) (*Client, error) {
168170 // check namespace labels for default runtime
169171 if copts .defaultRuntime == "" && copts .defaultns != "" {
170172 ctx := namespaces .WithNamespace (context .Background (), copts .defaultns )
171- if err := c .GetLabel (ctx , defaults .DefaultRuntimeNSLabel , & c . runtime , "" ); err != nil {
173+ if label , err := c .GetLabel (ctx , defaults .DefaultRuntimeNSLabel ); err != nil {
172174 return nil , err
175+ } else if label != "" {
176+ c .runtime = label
173177 }
174178 }
175179
@@ -482,28 +486,22 @@ func writeIndex(ctx context.Context, index *ocispec.Index, client *Client, ref s
482486 return writeContent (ctx , client .ContentStore (), ocispec .MediaTypeImageIndex , ref , bytes .NewReader (data ), content .WithLabels (labels ))
483487}
484488
485- // GetLabel gets a label value from namespace store and saves it in 'out' variable.
486- // If there is no value, a fallback value will be used instead.
487- func (c * Client ) GetLabel (ctx context.Context , label string , out * string , fallback string ) error {
489+ // GetLabel gets a label value from namespace store
490+ // If there is no default label, an empty string returned with nil error
491+ func (c * Client ) GetLabel (ctx context.Context , label string ) ( string , error ) {
488492 ns , err := namespaces .NamespaceRequired (ctx )
489493 if err != nil {
490- return err
494+ return "" , err
491495 }
492496
493497 srv := c .NamespaceService ()
494498 labels , err := srv .Labels (ctx , ns )
495499 if err != nil {
496- return err
497- }
498-
499- value , ok := labels [label ]
500- if ok {
501- * out = value
502- } else {
503- * out = fallback
500+ return "" , err
504501 }
505502
506- return nil
503+ value := labels [label ]
504+ return value , nil
507505}
508506
509507// Subscribe to events that match one or more of the provided filters.
@@ -671,17 +669,34 @@ func (c *Client) Version(ctx context.Context) (Version, error) {
671669 }, nil
672670}
673671
674- func (c * Client ) getSnapshotter (ctx context.Context , name string ) (snapshots. Snapshotter , error ) {
672+ func (c * Client ) resolveSnapshotterName (ctx context.Context , name string ) (string , error ) {
675673 if name == "" {
676- if err := c .GetLabel (ctx , defaults .DefaultSnapshotterNSLabel , & name , DefaultSnapshotter ); err != nil {
677- return nil , err
674+ label , err := c .GetLabel (ctx , defaults .DefaultSnapshotterNSLabel )
675+ if err != nil {
676+ return "" , err
677+ }
678+
679+ if label != "" {
680+ name = label
681+ } else {
682+ name = DefaultSnapshotter
678683 }
679684 }
680685
686+ return name , nil
687+ }
688+
689+ func (c * Client ) getSnapshotter (ctx context.Context , name string ) (snapshots.Snapshotter , error ) {
690+ name , err := c .resolveSnapshotterName (ctx , name )
691+ if err != nil {
692+ return nil , err
693+ }
694+
681695 s := c .SnapshotService (name )
682696 if s == nil {
683697 return nil , errors .Wrapf (errdefs .ErrNotFound , "snapshotter %s was not found" , name )
684698 }
699+
685700 return s , nil
686701}
687702
0 commit comments