Skip to content
This repository was archived by the owner on Jul 28, 2020. It is now read-only.

Commit 2a99bca

Browse files
committed
Sent analytics when a service is deployed
When a service is successfuly deployed a telemetry event is sent with the service information [#161153365]
1 parent e5874a3 commit 2a99bca

File tree

6 files changed

+69
-1
lines changed

6 files changed

+69
-1
lines changed

cfanalytics/cfanalytics.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ const (
1919
BOSH_ENV = "bosh"
2020
ERROR = "error"
2121
UNINSTALL = "uninstall"
22+
DEPLOY_SERVICE = "deployed service"
2223
)
2324

2425
//go:generate mockgen -package mocks -destination mocks/analytics_client.go gopkg.in/segmentio/analytics-go.v3 Client

cmd/deploy-service/deploy_service.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package deploy_service
22

33
import (
4+
"code.cloudfoundry.org/cfdev/cfanalytics"
45
"code.cloudfoundry.org/cfdev/config"
56
e "code.cloudfoundry.org/cfdev/errors"
67
"code.cloudfoundry.org/cfdev/metadata"
@@ -31,6 +32,11 @@ type Provisioner interface {
3132
GetWhiteListedService(string, []provision.Service) (*provision.Service, error)
3233
}
3334

35+
//go:generate mockgen -package mocks -destination mocks/analytics.go code.cloudfoundry.org/cfdev/cmd/stop Analytics
36+
type Analytics interface {
37+
Event(event string, data ...map[string]interface{}) error
38+
}
39+
3440
const compatibilityVersion = "v3"
3541

3642
type DeployService struct {
@@ -39,6 +45,7 @@ type DeployService struct {
3945
Provisioner Provisioner
4046
MetaDataReader MetaDataReader
4147
Config config.Config
48+
Analytics Analytics
4249
}
4350

4451
type Args struct {
@@ -95,5 +102,8 @@ func (c *DeployService) Execute(args Args) error {
95102
return e.SafeWrap(err, "Failed to deploy services")
96103
}
97104

105+
extraProperties := map[string]interface{}{"name": args.Service}
106+
c.Analytics.Event(cfanalytics.DEPLOY_SERVICE, extraProperties)
107+
98108
return nil
99109
}

cmd/deploy-service/deploy_service_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@ var _ = Describe("DeployService", func() {
1919
mockMetadataReader *mocks.MockMetaDataReader
2020
mockProvisioner *mocks.MockProvisioner
2121
mockUI *mocks.MockUI
22+
mockAnalytics *mocks.MockAnalytics
2223
cmd *deploy_service.DeployService
2324
)
2425
BeforeEach(func() {
2526
mockController = gomock.NewController(GinkgoT())
2627
mockUI = mocks.NewMockUI(mockController)
2728
mockMetadataReader = mocks.NewMockMetaDataReader(mockController)
2829
mockProvisioner = mocks.NewMockProvisioner(mockController)
30+
mockAnalytics = mocks.NewMockAnalytics(mockController)
2931

3032
cmd = &deploy_service.DeployService{
3133
UI: mockUI,
@@ -34,6 +36,7 @@ var _ = Describe("DeployService", func() {
3436
Config: config.Config{
3537
CacheDir: "some-cache-dir",
3638
},
39+
Analytics: mockAnalytics,
3740
}
3841
})
3942

@@ -48,11 +51,13 @@ var _ = Describe("DeployService", func() {
4851
Version: "v3",
4952
Services: []provision.Service{service},
5053
}, nil)
54+
5155
mockProvisioner.EXPECT().Ping().Return(nil)
5256
mockProvisioner.EXPECT().GetWhiteListedService("some-service", []provision.Service{service}).Return(&service, nil)
53-
5457
mockProvisioner.EXPECT().DeployServices(mockUI, []provision.Service{service}).Return(nil)
5558

59+
mockAnalytics.EXPECT().Event("deployed service", map[string]interface{}{"name": "some-service"})
60+
5661
err := cmd.Execute(deploy_service.Args{
5762
Service: "some-service",
5863
})

cmd/deploy-service/mocks/analytics.go

Lines changed: 50 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/root_darwin.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ func NewRoot(exit chan struct{}, ui UI, config config.Config, analyticsClient An
184184
UI: ui,
185185
Provisioner: provision.NewController(config),
186186
MetaDataReader: metaDataReader,
187+
Analytics: analyticsClient,
187188
Config: config,
188189
},
189190
} {

cmd/root_windows.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ func NewRoot(exit chan struct{}, ui UI, config config.Config, analyticsClient An
192192
Provisioner: provision.NewController(config),
193193
MetaDataReader: metaDataReader,
194194
Config: config,
195+
Analytics: analyticsClient,
195196
},
196197
} {
197198
dev.AddCommand(cmd.Cmd())

0 commit comments

Comments
 (0)