Skip to content

Commit 5a142a9

Browse files
authored
Support app telemetry toggle for docker deployer. (#168)
1 parent 4494134 commit 5a142a9

5 files changed

Lines changed: 108 additions & 0 deletions

File tree

cmd/apptelemetry-disable.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package cmd
2+
3+
import (
4+
"github.com/couchbaselabs/cbdinocluster/deployment/dockerdeploy"
5+
"github.com/spf13/cobra"
6+
"go.uber.org/zap"
7+
)
8+
9+
var appTelemetryDisableCmd = &cobra.Command{
10+
Use: "disable <cluster-id>",
11+
Short: "Disables app telemetry",
12+
Args: cobra.MinimumNArgs(1),
13+
Run: func(cmd *cobra.Command, args []string) {
14+
helper := CmdHelper{}
15+
logger := helper.GetLogger()
16+
ctx := helper.GetContext()
17+
18+
_, deployer, cluster := helper.IdentifyCluster(ctx, args[0])
19+
20+
dockerDeployer, ok := deployer.(*dockerdeploy.Deployer)
21+
if !ok {
22+
logger.Fatal("Toggling app telemetry is only supported for docker deployer")
23+
}
24+
25+
err := dockerDeployer.SetAppTelemetry(ctx, cluster.GetID(), false)
26+
if err != nil {
27+
logger.Fatal("failed to disable app telemetry", zap.Error(err))
28+
}
29+
},
30+
}
31+
32+
func init() {
33+
appTelemetryCmd.AddCommand(appTelemetryDisableCmd)
34+
}

cmd/apptelemetry-enable.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package cmd
2+
3+
import (
4+
"github.com/couchbaselabs/cbdinocluster/deployment/dockerdeploy"
5+
"github.com/spf13/cobra"
6+
"go.uber.org/zap"
7+
)
8+
9+
var appTelemetryEnableCmd = &cobra.Command{
10+
Use: "enable <cluster-id>",
11+
Short: "Enables app telemetry",
12+
Args: cobra.MinimumNArgs(1),
13+
Run: func(cmd *cobra.Command, args []string) {
14+
helper := CmdHelper{}
15+
logger := helper.GetLogger()
16+
ctx := helper.GetContext()
17+
18+
_, deployer, cluster := helper.IdentifyCluster(ctx, args[0])
19+
20+
dockerDeployer, ok := deployer.(*dockerdeploy.Deployer)
21+
if !ok {
22+
logger.Fatal("Toggling app telemetry is only supported for docker deployer")
23+
}
24+
25+
err := dockerDeployer.SetAppTelemetry(ctx, cluster.GetID(), true)
26+
if err != nil {
27+
logger.Fatal("failed to enable app telemetry", zap.Error(err))
28+
}
29+
},
30+
}
31+
32+
func init() {
33+
appTelemetryCmd.AddCommand(appTelemetryEnableCmd)
34+
}

cmd/apptelemetry.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package cmd
2+
3+
import (
4+
"github.com/spf13/cobra"
5+
)
6+
7+
var appTelemetryCmd = &cobra.Command{
8+
Use: "app-telemetry",
9+
Short: "Provides access to app telemetry settings",
10+
Run: nil,
11+
}
12+
13+
func init() {
14+
rootCmd.AddCommand(appTelemetryCmd)
15+
}

deployment/dockerdeploy/deployer.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1367,6 +1367,17 @@ func (d *Deployer) KillCouchbase(ctx context.Context, clusterID string, nodeIDs
13671367
return nil
13681368
}
13691369

1370+
func (d *Deployer) SetAppTelemetry(ctx context.Context, clusterID string, enable bool) error {
1371+
controller, err := d.getController(ctx, clusterID)
1372+
if err != nil {
1373+
return errors.Wrap(err, "failed to get controller for cluster")
1374+
}
1375+
1376+
return controller.Controller().SetAppTelemetry(ctx, &clustercontrol.AppTelemetryOptions{
1377+
Enabled: enable,
1378+
})
1379+
}
1380+
13701381
func (d *Deployer) RedeployCluster(ctx context.Context, clusterID string) error {
13711382
return errors.New("docker deploy does not support redeploy cluster")
13721383
}

utils/clustercontrol/controller.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -948,3 +948,17 @@ type SetupJwtOptions_Issuer struct {
948948
func (c *Controller) SetupJwtAuth(ctx context.Context, opts *SetupJwtAuthOptions) error {
949949
return c.doJsonReq(ctx, "PUT", "/settings/jwt", opts, true, nil)
950950
}
951+
952+
type AppTelemetryOptions struct {
953+
Enabled bool
954+
}
955+
956+
func (c *Controller) SetAppTelemetry(ctx context.Context, opts *AppTelemetryOptions) error {
957+
form := make(url.Values)
958+
enabled := false
959+
if opts != nil {
960+
enabled = opts.Enabled
961+
}
962+
form.Add("enabled", strconv.FormatBool(enabled))
963+
return c.doFormPost(ctx, "/settings/appTelemetry", form, true, nil)
964+
}

0 commit comments

Comments
 (0)