github.com/muhammadn/cortex@v1.9.1-0.20220510110439-46bb7000d03d/tools/blocksconvert/shared_config.go (about)

     1  package blocksconvert
     2  
     3  import (
     4  	"context"
     5  	"flag"
     6  
     7  	"github.com/go-kit/log"
     8  	"github.com/pkg/errors"
     9  	"github.com/prometheus/client_golang/prometheus"
    10  	"github.com/thanos-io/thanos/pkg/objstore"
    11  
    12  	"github.com/cortexproject/cortex/pkg/chunk"
    13  	"github.com/cortexproject/cortex/pkg/chunk/storage"
    14  	"github.com/cortexproject/cortex/pkg/storage/bucket"
    15  )
    16  
    17  type SharedConfig struct {
    18  	SchemaConfig  chunk.SchemaConfig // Flags registered by main.go
    19  	StorageConfig storage.Config
    20  
    21  	Bucket       bucket.Config
    22  	BucketPrefix string
    23  }
    24  
    25  func (cfg *SharedConfig) RegisterFlags(f *flag.FlagSet) {
    26  	cfg.SchemaConfig.RegisterFlags(f)
    27  	cfg.Bucket.RegisterFlagsWithPrefix("blocks-storage.", f)
    28  	cfg.StorageConfig.RegisterFlags(f)
    29  
    30  	f.StringVar(&cfg.BucketPrefix, "blocksconvert.bucket-prefix", "migration", "Prefix in the bucket for storing plan files.")
    31  }
    32  
    33  func (cfg *SharedConfig) GetBucket(l log.Logger, reg prometheus.Registerer) (objstore.Bucket, error) {
    34  	if err := cfg.Bucket.Validate(); err != nil {
    35  		return nil, errors.Wrap(err, "invalid bucket config")
    36  	}
    37  
    38  	bucket, err := bucket.NewClient(context.Background(), cfg.Bucket, "bucket", l, reg)
    39  	if err != nil {
    40  		return nil, errors.Wrap(err, "failed to create bucket")
    41  	}
    42  
    43  	return bucket, nil
    44  }