diff options
| author | Jonathan Amsterdam <jba@google.com> | 2020-09-21 18:04:04 -0400 |
|---|---|---|
| committer | Jonathan Amsterdam <jba@google.com> | 2020-09-21 22:21:22 +0000 |
| commit | d1c56be7ea7b8f8007c4dcfb14799fd9cde7ec01 (patch) | |
| tree | ff53dc94b6444f9c7e55d5d8259a1a314cb79e22 /cmd/internal | |
| parent | 70a7984c0fea932a6ecbf29c2a85ea4814948a58 (diff) | |
| download | go-x-pkgsite-d1c56be7ea7b8f8007c4dcfb14799fd9cde7ec01.tar.xz | |
internal/cmdconfig: use dynamic config for experiments on env var
If the GO_DISCOVERY_EXPERIMENTS_FROM_CONFIG env var is "true", read
experiments from dynamic config instead of the database.
Temporary, until we switch over completely to dynamic config.
For golang/go#41483
Change-Id: Icf6038fb9f2322eba24bedf60450cd9fce84bd6c
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/256380
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
Reviewed-by: Julie Qiu <julie@golang.org>
Diffstat (limited to 'cmd/internal')
| -rw-r--r-- | cmd/internal/cmdconfig/cmdconfig.go | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/cmd/internal/cmdconfig/cmdconfig.go b/cmd/internal/cmdconfig/cmdconfig.go index 272410ab..1315813d 100644 --- a/cmd/internal/cmdconfig/cmdconfig.go +++ b/cmd/internal/cmdconfig/cmdconfig.go @@ -7,9 +7,11 @@ package cmdconfig import ( "context" + "os" "time" "cloud.google.com/go/errorreporting" + "golang.org/x/pkgsite/internal" "golang.org/x/pkgsite/internal/config" "golang.org/x/pkgsite/internal/log" "golang.org/x/pkgsite/internal/middleware" @@ -45,7 +47,26 @@ func ReportingClient(ctx context.Context, cfg *config.Config) *errorreporting.Cl } // Experimenter configures a middleware.Experimenter. -func Experimenter(ctx context.Context, getter middleware.ExperimentGetter, reportingClient *errorreporting.Client) *middleware.Experimenter { +func Experimenter(ctx context.Context, cfg *config.Config, getter middleware.ExperimentGetter, reportingClient *errorreporting.Client) *middleware.Experimenter { + if os.Getenv("GO_DISCOVERY_EXPERIMENTS_FROM_CONFIG") == "true" { + // Ignore getter, use dynamic config. + log.Infof(ctx, "using dynamic config for experiments") + getter = func(ctx context.Context) ([]*internal.Experiment, error) { + var exps []*internal.Experiment + dc, err := cfg.ReadDynamic(ctx) + if err != nil { + return nil, err + } + for _, cexp := range dc.Experiments { + exps = append(exps, &internal.Experiment{ + Name: cexp.Name, + Description: cexp.Description, + Rollout: cexp.Rollout, + }) + } + return exps, nil + } + } e, err := middleware.NewExperimenter(ctx, 1*time.Minute, getter, reportingClient) if err != nil { log.Fatal(ctx, err) |
