(cfg *Config)
| 112 | } |
| 113 | |
| 114 | func initBackend(cfg *Config) (rw backend.VersionedReaderWriter, err error) { |
| 115 | switch cfg.Backend { |
| 116 | case backend.Local: |
| 117 | r, w, _, err := local.New(cfg.Local) |
| 118 | if err != nil { |
| 119 | return nil, err |
| 120 | } |
| 121 | // Create overrides directory with necessary permissions |
| 122 | err = os.MkdirAll(path.Join(cfg.Local.Path, OverridesKeyPath), 0o700) |
| 123 | if err != nil { |
| 124 | return nil, err |
| 125 | } |
| 126 | rw = backend.NewFakeVersionedReaderWriter(r, w) |
| 127 | case backend.GCS: |
| 128 | rw, err = gcs.NewVersionedReaderWriter(cfg.GCS, cfg.ConfirmVersioning) |
| 129 | case backend.S3: |
| 130 | rw, err = s3.NewVersionedReaderWriter(cfg.S3) |
| 131 | case backend.Azure: |
| 132 | rw, err = azure.NewVersionedReaderWriter(cfg.Azure) |
| 133 | default: |
| 134 | err = fmt.Errorf("unknown backend %s", cfg.Backend) |
| 135 | } |
| 136 | if err != nil { |
| 137 | return nil, err |
| 138 | } |
| 139 | if cfg.Backend == backend.Local || cfg.Backend == backend.S3 || cfg.Backend == backend.Azure { |
| 140 | level.Warn(log.Logger).Log( |
| 141 | "msg", "versioned backend requests are best-effort for the configured backend, concurrent requests modifying user-configurable overrides might cause data races", |
| 142 | "backend", cfg.Backend, |
| 143 | ) |
| 144 | } |
| 145 | return rw, nil |
| 146 | } |
| 147 | |
| 148 | func (o *clientImpl) List(ctx context.Context) ([]string, error) { |
| 149 | ctx, span := tracer.Start(ctx, "clientImpl.List") |
no test coverage detected