aboutsummaryrefslogtreecommitdiff
path: root/cmd/internal
diff options
context:
space:
mode:
authorJonathan Amsterdam <jba@google.com>2020-09-21 18:04:04 -0400
committerJonathan Amsterdam <jba@google.com>2020-09-21 22:21:22 +0000
commitd1c56be7ea7b8f8007c4dcfb14799fd9cde7ec01 (patch)
treeff53dc94b6444f9c7e55d5d8259a1a314cb79e22 /cmd/internal
parent70a7984c0fea932a6ecbf29c2a85ea4814948a58 (diff)
downloadgo-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.go23
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)