Skip to content

Commit d714166

Browse files
fix: implemented cache for storing cloud provider (#4591)
* common lib version upgrade * wip * implemented cache for storing cloud provider * removed unnecessary loggers * refactoring * fix
1 parent ed7dc4f commit d714166

File tree

12 files changed

+57
-26
lines changed

12 files changed

+57
-26
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package telemetry
2+
3+
type TelemetryConfig struct {
4+
// cloudProvider will be set only once at the startup and the value will be stored as cache
5+
// which will further reduce the api calls made to various IMDS
6+
cloudProvider string
7+
}

client/telemetry/TelemetryEventClient.go

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ type TelemetryEventClientImpl struct {
5959
InstalledAppRepository repository2.InstalledAppRepository
6060
userAttributesRepository repository.UserAttributesRepository
6161
cloudProviderIdentifierService cloudProviderIdentifier.ProviderIdentifierService
62+
telemetryConfig TelemetryConfig
6263
}
6364

6465
type TelemetryEventClient interface {
@@ -92,6 +93,7 @@ func NewTelemetryEventClientImpl(logger *zap.SugaredLogger, client *http.Client,
9293
helmAppClient: helmAppClient,
9394
InstalledAppRepository: InstalledAppRepository,
9495
cloudProviderIdentifierService: cloudProviderIdentifierService,
96+
telemetryConfig: TelemetryConfig{},
9597
}
9698

9799
watcher.HeartbeatEventForTelemetry()
@@ -109,6 +111,19 @@ func NewTelemetryEventClientImpl(logger *zap.SugaredLogger, client *http.Client,
109111
return watcher, err
110112
}
111113

114+
func (impl *TelemetryEventClientImpl) GetCloudProvider() (string, error) {
115+
// assumption: the IMDS server will be reachable on startup
116+
if len(impl.telemetryConfig.cloudProvider) == 0 {
117+
provider, err := impl.cloudProviderIdentifierService.IdentifyProvider()
118+
if err != nil {
119+
impl.logger.Errorw("exception while getting cluster provider", "error", err)
120+
return "", err
121+
}
122+
impl.telemetryConfig.cloudProvider = provider
123+
}
124+
return impl.telemetryConfig.cloudProvider, nil
125+
}
126+
112127
func (impl *TelemetryEventClientImpl) StopCron() {
113128
impl.cron.Stop()
114129
}
@@ -321,12 +336,11 @@ func (impl *TelemetryEventClientImpl) SendSummaryEvent(eventType string) error {
321336
payload.HelmChartSuccessfulDeploymentCount = helmChartSuccessfulDeploymentCount
322337
payload.ExternalHelmAppClusterCount = ExternalHelmAppClusterCount
323338

324-
provider, err := impl.cloudProviderIdentifierService.IdentifyProvider()
339+
payload.ClusterProvider, err = impl.GetCloudProvider()
325340
if err != nil {
326-
impl.logger.Errorw("exception while getting cluster provider", "error", err)
341+
impl.logger.Errorw("error while getting cluster provider", "error", err)
327342
return err
328343
}
329-
payload.ClusterProvider = provider
330344

331345
latestUser, err := impl.userAuditService.GetLatestUser()
332346
if err == nil {
@@ -487,12 +501,11 @@ func (impl *TelemetryEventClientImpl) SendTelemetryInstallEventEA() (*TelemetryE
487501
payload.DevtronMode = util.GetDevtronVersion().ServerMode
488502
payload.ServerVersion = k8sServerVersion.String()
489503

490-
provider, err := impl.cloudProviderIdentifierService.IdentifyProvider()
504+
payload.ClusterProvider, err = impl.GetCloudProvider()
491505
if err != nil {
492-
impl.logger.Errorw("exception while getting cluster provider", "error", err)
506+
impl.logger.Errorw("error while getting cluster provider", "error", err)
493507
return nil, err
494508
}
495-
payload.ClusterProvider = provider
496509

497510
reqBody, err := json.Marshal(payload)
498511
if err != nil {
@@ -554,12 +567,11 @@ func (impl *TelemetryEventClientImpl) SendTelemetryDashboardAccessEvent() error
554567
payload.DevtronMode = util.GetDevtronVersion().ServerMode
555568
payload.ServerVersion = k8sServerVersion.String()
556569

557-
provider, err := impl.cloudProviderIdentifierService.IdentifyProvider()
570+
payload.ClusterProvider, err = impl.GetCloudProvider()
558571
if err != nil {
559-
impl.logger.Errorw("exception while getting cluster provider", "error", err)
572+
impl.logger.Errorw("error while getting cluster provider", "error", err)
560573
return err
561574
}
562-
payload.ClusterProvider = provider
563575

564576
reqBody, err := json.Marshal(payload)
565577
if err != nil {
@@ -621,12 +633,11 @@ func (impl *TelemetryEventClientImpl) SendTelemetryDashboardLoggedInEvent() erro
621633
payload.DevtronMode = util.GetDevtronVersion().ServerMode
622634
payload.ServerVersion = k8sServerVersion.String()
623635

624-
provider, err := impl.cloudProviderIdentifierService.IdentifyProvider()
636+
payload.ClusterProvider, err = impl.GetCloudProvider()
625637
if err != nil {
626-
impl.logger.Errorw("exception while getting cluster provider", "error", err)
638+
impl.logger.Errorw("error while getting cluster provider", "error", err)
627639
return err
628640
}
629-
payload.ClusterProvider = provider
630641

631642
reqBody, err := json.Marshal(payload)
632643
if err != nil {

client/telemetry/TelemetryEventClientExtended.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ func NewTelemetryEventClientImplExtended(logger *zap.SugaredLogger, client *http
101101
InstalledAppRepository: InstalledAppRepository,
102102
userAttributesRepository: userAttributesRepository,
103103
cloudProviderIdentifierService: cloudProviderIdentifierService,
104+
telemetryConfig: TelemetryConfig{},
104105
},
105106
}
106107

@@ -327,12 +328,11 @@ func (impl *TelemetryEventClientImplExtended) SendSummaryEvent(eventType string)
327328
payload.HelmChartSuccessfulDeploymentCount = HelmChartSuccessfulDeploymentCount
328329
payload.ExternalHelmAppClusterCount = ExternalHelmAppClusterCount
329330

330-
provider, err := impl.cloudProviderIdentifierService.IdentifyProvider()
331+
payload.ClusterProvider, err = impl.GetCloudProvider()
331332
if err != nil {
332-
impl.logger.Errorw("exception while getting cluster provider", "error", err)
333+
impl.logger.Errorw("error while getting cluster provider", "error", err)
333334
return err
334335
}
335-
payload.ClusterProvider = provider
336336

337337
latestUser, err := impl.userAuditService.GetLatestUser()
338338
if err == nil {

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ require (
1616
github.com/davecgh/go-spew v1.1.1
1717
github.com/deckarep/golang-set v1.8.0
1818
github.com/devtron-labs/authenticator v0.4.33
19-
github.com/devtron-labs/common-lib v0.0.10
19+
github.com/devtron-labs/common-lib v0.0.11
2020
github.com/devtron-labs/protos v0.0.0-20230503113602-282404f70fd2
2121
github.com/evanphx/json-patch v5.6.0+incompatible
2222
github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,8 @@ github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4 h1:YcpmyvADG
223223
github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM=
224224
github.com/devtron-labs/authenticator v0.4.33 h1:FpAV3ZgFluaRFcMwPpwxr/mwSipJ16XRvgABq3BzP5Y=
225225
github.com/devtron-labs/authenticator v0.4.33/go.mod h1:ozNfT8WcruiSgnUbyp48WVfc41++W6xYXhKFp67lNTU=
226-
github.com/devtron-labs/common-lib v0.0.10 h1:3ayOUwIedXTvBEj80mKJ0iLo06glZ9nzY/WFsYFpYGM=
227-
github.com/devtron-labs/common-lib v0.0.10/go.mod h1:95/DizzVXu1kHap/VwEvdxwgd+BvPVYc0bJzt8yqGDU=
226+
github.com/devtron-labs/common-lib v0.0.11 h1:xyVjD09miYhOKt0Oc//kOBWJas/OXsP7dyRoA1Hg90U=
227+
github.com/devtron-labs/common-lib v0.0.11/go.mod h1:95/DizzVXu1kHap/VwEvdxwgd+BvPVYc0bJzt8yqGDU=
228228
github.com/devtron-labs/protos v0.0.0-20230503113602-282404f70fd2 h1:/IEIsJTxDZ3hv8uOoCaqdWCXqcv7nCAgX9AP/v84dUY=
229229
github.com/devtron-labs/protos v0.0.0-20230503113602-282404f70fd2/go.mod h1:l85jxWHlcSo910hdUfRycL40yGzC6glE93V1sVxVPto=
230230
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=

vendor/github.com/devtron-labs/common-lib/cloud-provider-identifier/ProviderIdentifierService.go

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

vendor/github.com/devtron-labs/common-lib/cloud-provider-identifier/providers/alibaba.go

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

vendor/github.com/devtron-labs/common-lib/cloud-provider-identifier/providers/azure.go

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

vendor/github.com/devtron-labs/common-lib/cloud-provider-identifier/providers/digitalOcean.go

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

vendor/github.com/devtron-labs/common-lib/cloud-provider-identifier/providers/google.go

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

0 commit comments

Comments
 (0)