Skip to content

Commit

Permalink
fix: implemented cache for storing cloud provider (#4591)
Browse files Browse the repository at this point in the history
* common lib version upgrade

* wip

* implemented cache for storing cloud provider

* removed unnecessary loggers

* refactoring

* fix
  • Loading branch information
ashishdevtron committed Jan 29, 2024
1 parent ed7dc4f commit d714166
Show file tree
Hide file tree
Showing 12 changed files with 57 additions and 26 deletions.
7 changes: 7 additions & 0 deletions client/telemetry/TelemetryConfig.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package telemetry

type TelemetryConfig struct {
// cloudProvider will be set only once at the startup and the value will be stored as cache
// which will further reduce the api calls made to various IMDS
cloudProvider string
}
35 changes: 23 additions & 12 deletions client/telemetry/TelemetryEventClient.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ type TelemetryEventClientImpl struct {
InstalledAppRepository repository2.InstalledAppRepository
userAttributesRepository repository.UserAttributesRepository
cloudProviderIdentifierService cloudProviderIdentifier.ProviderIdentifierService
telemetryConfig TelemetryConfig
}

type TelemetryEventClient interface {
Expand Down Expand Up @@ -92,6 +93,7 @@ func NewTelemetryEventClientImpl(logger *zap.SugaredLogger, client *http.Client,
helmAppClient: helmAppClient,
InstalledAppRepository: InstalledAppRepository,
cloudProviderIdentifierService: cloudProviderIdentifierService,
telemetryConfig: TelemetryConfig{},
}

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

func (impl *TelemetryEventClientImpl) GetCloudProvider() (string, error) {
// assumption: the IMDS server will be reachable on startup
if len(impl.telemetryConfig.cloudProvider) == 0 {
provider, err := impl.cloudProviderIdentifierService.IdentifyProvider()
if err != nil {
impl.logger.Errorw("exception while getting cluster provider", "error", err)
return "", err
}
impl.telemetryConfig.cloudProvider = provider
}
return impl.telemetryConfig.cloudProvider, nil
}

func (impl *TelemetryEventClientImpl) StopCron() {
impl.cron.Stop()
}
Expand Down Expand Up @@ -321,12 +336,11 @@ func (impl *TelemetryEventClientImpl) SendSummaryEvent(eventType string) error {
payload.HelmChartSuccessfulDeploymentCount = helmChartSuccessfulDeploymentCount
payload.ExternalHelmAppClusterCount = ExternalHelmAppClusterCount

provider, err := impl.cloudProviderIdentifierService.IdentifyProvider()
payload.ClusterProvider, err = impl.GetCloudProvider()
if err != nil {
impl.logger.Errorw("exception while getting cluster provider", "error", err)
impl.logger.Errorw("error while getting cluster provider", "error", err)
return err
}
payload.ClusterProvider = provider

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

provider, err := impl.cloudProviderIdentifierService.IdentifyProvider()
payload.ClusterProvider, err = impl.GetCloudProvider()
if err != nil {
impl.logger.Errorw("exception while getting cluster provider", "error", err)
impl.logger.Errorw("error while getting cluster provider", "error", err)
return nil, err
}
payload.ClusterProvider = provider

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

provider, err := impl.cloudProviderIdentifierService.IdentifyProvider()
payload.ClusterProvider, err = impl.GetCloudProvider()
if err != nil {
impl.logger.Errorw("exception while getting cluster provider", "error", err)
impl.logger.Errorw("error while getting cluster provider", "error", err)
return err
}
payload.ClusterProvider = provider

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

provider, err := impl.cloudProviderIdentifierService.IdentifyProvider()
payload.ClusterProvider, err = impl.GetCloudProvider()
if err != nil {
impl.logger.Errorw("exception while getting cluster provider", "error", err)
impl.logger.Errorw("error while getting cluster provider", "error", err)
return err
}
payload.ClusterProvider = provider

reqBody, err := json.Marshal(payload)
if err != nil {
Expand Down
6 changes: 3 additions & 3 deletions client/telemetry/TelemetryEventClientExtended.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ func NewTelemetryEventClientImplExtended(logger *zap.SugaredLogger, client *http
InstalledAppRepository: InstalledAppRepository,
userAttributesRepository: userAttributesRepository,
cloudProviderIdentifierService: cloudProviderIdentifierService,
telemetryConfig: TelemetryConfig{},
},
}

Expand Down Expand Up @@ -327,12 +328,11 @@ func (impl *TelemetryEventClientImplExtended) SendSummaryEvent(eventType string)
payload.HelmChartSuccessfulDeploymentCount = HelmChartSuccessfulDeploymentCount
payload.ExternalHelmAppClusterCount = ExternalHelmAppClusterCount

provider, err := impl.cloudProviderIdentifierService.IdentifyProvider()
payload.ClusterProvider, err = impl.GetCloudProvider()
if err != nil {
impl.logger.Errorw("exception while getting cluster provider", "error", err)
impl.logger.Errorw("error while getting cluster provider", "error", err)
return err
}
payload.ClusterProvider = provider

latestUser, err := impl.userAuditService.GetLatestUser()
if err == nil {
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ require (
github.com/davecgh/go-spew v1.1.1
github.com/deckarep/golang-set v1.8.0
github.com/devtron-labs/authenticator v0.4.33
github.com/devtron-labs/common-lib v0.0.10
github.com/devtron-labs/common-lib v0.0.11
github.com/devtron-labs/protos v0.0.0-20230503113602-282404f70fd2
github.com/evanphx/json-patch v5.6.0+incompatible
github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -223,8 +223,8 @@ github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4 h1:YcpmyvADG
github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM=
github.com/devtron-labs/authenticator v0.4.33 h1:FpAV3ZgFluaRFcMwPpwxr/mwSipJ16XRvgABq3BzP5Y=
github.com/devtron-labs/authenticator v0.4.33/go.mod h1:ozNfT8WcruiSgnUbyp48WVfc41++W6xYXhKFp67lNTU=
github.com/devtron-labs/common-lib v0.0.10 h1:3ayOUwIedXTvBEj80mKJ0iLo06glZ9nzY/WFsYFpYGM=
github.com/devtron-labs/common-lib v0.0.10/go.mod h1:95/DizzVXu1kHap/VwEvdxwgd+BvPVYc0bJzt8yqGDU=
github.com/devtron-labs/common-lib v0.0.11 h1:xyVjD09miYhOKt0Oc//kOBWJas/OXsP7dyRoA1Hg90U=
github.com/devtron-labs/common-lib v0.0.11/go.mod h1:95/DizzVXu1kHap/VwEvdxwgd+BvPVYc0bJzt8yqGDU=
github.com/devtron-labs/protos v0.0.0-20230503113602-282404f70fd2 h1:/IEIsJTxDZ3hv8uOoCaqdWCXqcv7nCAgX9AP/v84dUY=
github.com/devtron-labs/protos v0.0.0-20230503113602-282404f70fd2/go.mod h1:l85jxWHlcSo910hdUfRycL40yGzC6glE93V1sVxVPto=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion vendor/modules.txt
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ github.com/devtron-labs/authenticator/jwt
github.com/devtron-labs/authenticator/middleware
github.com/devtron-labs/authenticator/oidc
github.com/devtron-labs/authenticator/password
# github.com/devtron-labs/common-lib v0.0.10
# github.com/devtron-labs/common-lib v0.0.11
## explicit; go 1.20
github.com/devtron-labs/common-lib/blob-storage
github.com/devtron-labs/common-lib/cloud-provider-identifier
Expand Down

0 comments on commit d714166

Please sign in to comment.