Skip to content

Commit

Permalink
EVEREST-1392 Fix disabling telemetry (#617)
Browse files Browse the repository at this point in the history
* fix disabling telemetry

* Flag to disable telemetry
  • Loading branch information
oksana-grishchenko authored Aug 30, 2024
1 parent 17c5f45 commit 24fcb7a
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 4 deletions.
2 changes: 1 addition & 1 deletion api/database_cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ func (e *EverestServer) CreateDatabaseCluster(ctx echo.Context, namespace string
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()

if err := e.collectMetrics(ctx, e.config.TelemetryURL); err != nil {
if err := e.collectMetrics(ctx, *e.config); err != nil {
e.l.Errorf("Could not send metrics: %s", err)
}
}()
Expand Down
9 changes: 6 additions & 3 deletions api/telemetry.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,15 +92,18 @@ func (e *EverestServer) RunTelemetryJob(ctx context.Context, c *config.EverestCo
return
case <-timer.C:
timer.Reset(interval)
err = e.collectMetrics(ctx, c.TelemetryURL)
err = e.collectMetrics(ctx, *c)
if err != nil {
e.l.Error(errors.Join(err, errors.New("failed to collect telemetry data")))
}
}
}
}

func (e *EverestServer) collectMetrics(ctx context.Context, url string) error {
func (e *EverestServer) collectMetrics(ctx context.Context, config config.EverestConfig) error {
if config.DisableTelemetry {
return nil
}
everestID, err := e.kubeClient.GetEverestID(ctx)
if err != nil {
e.l.Error(errors.Join(err, errors.New("failed to get Everest settings")))
Expand Down Expand Up @@ -150,5 +153,5 @@ func (e *EverestServer) collectMetrics(ctx context.Context, url string) error {
},
}

return e.report(ctx, url, report)
return e.report(ctx, config.TelemetryURL, report)
}
1 change: 1 addition & 0 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ func main() {
// the prod TelemetryURL is set for the release builds during the build time.
// The dev TelemetryURL is set only when running `make run-debug`.
if c.TelemetryURL != "" {
l.Info("Telemetry is running")
go server.RunTelemetryJob(tCtx, c)
} else {
l.Info("Telemetry is not running, the TELEMETRY_URL is not set")
Expand Down
3 changes: 3 additions & 0 deletions commands/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ func initInstallFlags(cmd *cobra.Command) {
cmd.Flags().Bool(install.FlagSkipWizard, false, "Skip installation wizard")
cmd.Flags().String(install.FlagVersionMetadataURL, "https://check.percona.com", "URL to retrieve version metadata information from")
cmd.Flags().String(install.FlagVersion, "", "Everest version to install. By default the latest version is installed")
cmd.Flags().Bool(install.FlagDisableTelemetry, false, "Disable telemetry")
cmd.Flags().MarkHidden(install.FlagDisableTelemetry)

cmd.Flags().Bool(install.FlagOperatorMongoDB, true, "Install MongoDB operator")
cmd.Flags().Bool(install.FlagOperatorPostgresql, true, "Install PostgreSQL operator")
Expand All @@ -86,6 +88,7 @@ func initInstallViperFlags(cmd *cobra.Command) {
viper.BindPFlag(install.FlagNamespaces, cmd.Flags().Lookup(install.FlagNamespaces)) //nolint:errcheck,gosec
viper.BindPFlag(install.FlagVersionMetadataURL, cmd.Flags().Lookup(install.FlagVersionMetadataURL)) //nolint:errcheck,gosec
viper.BindPFlag(install.FlagVersion, cmd.Flags().Lookup(install.FlagVersion)) //nolint:errcheck,gosec
viper.BindPFlag(install.FlagDisableTelemetry, cmd.Flags().Lookup(install.FlagDisableTelemetry)) //nolint:errcheck,gosec

viper.BindPFlag(install.FlagOperatorMongoDB, cmd.Flags().Lookup(install.FlagOperatorMongoDB)) //nolint:errcheck,gosec
viper.BindPFlag(install.FlagOperatorPostgresql, cmd.Flags().Lookup(install.FlagOperatorPostgresql)) //nolint:errcheck,gosec
Expand Down
24 changes: 24 additions & 0 deletions pkg/install/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ const (
FlagVersion = "version"
// FlagSkipWizard represents the flag to skip the installation wizard.
FlagSkipWizard = "skip-wizard"
// FlagDisableTelemetry disables telemetry.
FlagDisableTelemetry = "disable-telemetry"
)

const postInstallMessage = "Everest has been successfully installed!"
Expand Down Expand Up @@ -144,6 +146,8 @@ type (
VersionMetadataURL string `mapstructure:"version-metadata-url"`
// Version defines the version to be installed. If empty, the latest version is installed.
Version string `mapstructure:"version"`
// DisableTelemetry disables telemetry.
DisableTelemetry bool `mapstructure:"disable-telemetry"`

Operator OperatorConfig

Expand Down Expand Up @@ -443,6 +447,9 @@ func (o *Install) provisionEverest(ctx context.Context, v *goversion.Version) er
if err = o.kubeClient.InstallEverest(ctx, common.SystemNamespace, v); err != nil {
return err
}
if err := o.setEnvs(ctx); err != nil {
return err
}
if err := o.kubeClient.CreateRSAKeyPair(ctx); err != nil {
return err
}
Expand All @@ -467,6 +474,23 @@ func (o *Install) provisionEverest(ctx context.Context, v *goversion.Version) er
return nil
}

func (o *Install) setEnvs(ctx context.Context) error {
if !o.config.DisableTelemetry {
return nil
}

everestDeployment, err := o.kubeClient.GetDeployment(ctx, common.PerconaEverestDeploymentName, common.SystemNamespace)
if err != nil {
return err
}
everestDeployment.Spec.Template.Spec.Containers[0].Env = append(everestDeployment.Spec.Template.Spec.Containers[0].Env, corev1.EnvVar{
Name: "DISABLE_TELEMETRY",
Value: "true",
})
_, err = o.kubeClient.UpdateDeployment(ctx, everestDeployment)
return err
}

func (o *Install) operatorNamesListShortHand() string {
operators := []string{}
if o.config.Operator.PXC {
Expand Down

0 comments on commit 24fcb7a

Please sign in to comment.