From adb90138e20cff2a87ba2f9a75d67b2ef0982335 Mon Sep 17 00:00:00 2001 From: Omer Zidkoni <50792403+omerzi@users.noreply.github.com> Date: Tue, 21 Jan 2025 12:07:58 +0200 Subject: [PATCH] Visibility - update commands count metric to correspond with client changes (#1330) --- common/commands/command.go | 5 +- go.mod | 2 +- go.sum | 4 +- .../usage/visibility/commands_count_metric.go | 35 ++++++++++++++ .../commands_count_metric_test.go} | 9 ++-- .../visibility/visibility_system_manager.go | 25 ++++++++++ utils/usage/visibility_system_manager.go | 47 ------------------- 7 files changed, 70 insertions(+), 57 deletions(-) create mode 100644 utils/usage/visibility/commands_count_metric.go rename utils/usage/{visibility_system_manager_test.go => visibility/commands_count_metric_test.go} (92%) create mode 100644 utils/usage/visibility/visibility_system_manager.go delete mode 100644 utils/usage/visibility_system_manager.go diff --git a/common/commands/command.go b/common/commands/command.go index f103dfda7..899cdaf9d 100644 --- a/common/commands/command.go +++ b/common/commands/command.go @@ -7,8 +7,8 @@ import ( "github.com/jfrog/jfrog-cli-core/v2/artifactory/utils" "github.com/jfrog/jfrog-cli-core/v2/utils/config" "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils" - coreusage "github.com/jfrog/jfrog-cli-core/v2/utils/usage" usageReporter "github.com/jfrog/jfrog-cli-core/v2/utils/usage" + "github.com/jfrog/jfrog-cli-core/v2/utils/usage/visibility" rtClient "github.com/jfrog/jfrog-client-go/artifactory" "github.com/jfrog/jfrog-client-go/artifactory/usage" "github.com/jfrog/jfrog-client-go/utils/log" @@ -92,7 +92,8 @@ func reportUsage(command Command, channel chan<- bool) { } func reportUsageToVisibilitySystem(command Command, serverDetails *config.ServerDetails) { - if err := coreusage.NewVisibilitySystemManager(serverDetails).SendUsage(command.CommandName()); err != nil { + commandsCountMetric := visibility.NewCommandsCountMetric(command.CommandName()) + if err := visibility.NewVisibilitySystemManager(serverDetails).SendUsage(commandsCountMetric); err != nil { log.Debug("Visibility System Usage reporting:", err.Error()) } } diff --git a/go.mod b/go.mod index 23a84f787..3d3d7aab9 100644 --- a/go.mod +++ b/go.mod @@ -96,7 +96,7 @@ require ( gopkg.in/warnings.v0 v0.1.2 // indirect ) -replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20250119123447-32f2fc161629 +replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20250121093504-a3e981c875d7 // replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.8.9-0.20241121100855-e7a75ceee2bd diff --git a/go.sum b/go.sum index ac5343352..0a99fe38a 100644 --- a/go.sum +++ b/go.sum @@ -93,8 +93,8 @@ github.com/jfrog/build-info-go v1.10.8 h1:8D4wtvKzLS1hzfDWtfH4OliZLtLCgL62tXCnGW github.com/jfrog/build-info-go v1.10.8/go.mod h1:JcISnovFXKx3wWf3p1fcMmlPdt6adxScXvoJN4WXqIE= github.com/jfrog/gofrog v1.7.6 h1:QmfAiRzVyaI7JYGsB7cxfAJePAZTzFz0gRWZSE27c6s= github.com/jfrog/gofrog v1.7.6/go.mod h1:ntr1txqNOZtHplmaNd7rS4f8jpA5Apx8em70oYEe7+4= -github.com/jfrog/jfrog-client-go v1.28.1-0.20250119123447-32f2fc161629 h1:53aHwuDQrxEBBCNfS88kckKjjJmnjg5F6QnFF+UjgvI= -github.com/jfrog/jfrog-client-go v1.28.1-0.20250119123447-32f2fc161629/go.mod h1:ohIfKpMBCQsE9kunrKQ1wvoExpqsPLaluRFO186B5EM= +github.com/jfrog/jfrog-client-go v1.28.1-0.20250121093504-a3e981c875d7 h1:w0thxklC2enMUFn1lWoOBiuidzIvJnDJNczQRmRE0wQ= +github.com/jfrog/jfrog-client-go v1.28.1-0.20250121093504-a3e981c875d7/go.mod h1:ohIfKpMBCQsE9kunrKQ1wvoExpqsPLaluRFO186B5EM= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= diff --git a/utils/usage/visibility/commands_count_metric.go b/utils/usage/visibility/commands_count_metric.go new file mode 100644 index 000000000..e80c308d1 --- /dev/null +++ b/utils/usage/visibility/commands_count_metric.go @@ -0,0 +1,35 @@ +package visibility + +import ( + "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils" + "github.com/jfrog/jfrog-client-go/jfconnect/services" + "os" +) + +type commandsCountLabels struct { + ProductID string `json:"product_id"` + ProductVersion string `json:"product_version"` + FeatureID string `json:"feature_id"` + OIDCUsed string `json:"oidc_used"` + JobID string `json:"job_id"` + RunID string `json:"run_id"` + GitRepo string `json:"git_repo"` + GhTokenForCodeScanningAlertsProvided string `json:"gh_token_for_code_scanning_alerts_provided"` +} + +func NewCommandsCountMetric(commandName string) services.VisibilityMetric { + return services.VisibilityMetric{ + Value: 1, + Name: "jfcli_commands_count", + Labels: &commandsCountLabels{ + ProductID: coreutils.GetCliUserAgentName(), + ProductVersion: coreutils.GetCliUserAgentVersion(), + FeatureID: commandName, + OIDCUsed: os.Getenv("JFROG_CLI_USAGE_OIDC_USED"), + JobID: os.Getenv("JFROG_CLI_USAGE_JOB_ID"), + RunID: os.Getenv("JFROG_CLI_USAGE_RUN_ID"), + GitRepo: os.Getenv("JFROG_CLI_USAGE_GIT_REPO"), + GhTokenForCodeScanningAlertsProvided: os.Getenv("JFROG_CLI_USAGE_GH_TOKEN_FOR_CODE_SCANNING_ALERTS_PROVIDED"), + }, + } +} diff --git a/utils/usage/visibility_system_manager_test.go b/utils/usage/visibility/commands_count_metric_test.go similarity index 92% rename from utils/usage/visibility_system_manager_test.go rename to utils/usage/visibility/commands_count_metric_test.go index edcbbb62e..2ce05b2ed 100644 --- a/utils/usage/visibility_system_manager_test.go +++ b/utils/usage/visibility/commands_count_metric_test.go @@ -1,15 +1,14 @@ -package usage +package visibility import ( "encoding/json" - "testing" - "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils" testsutils "github.com/jfrog/jfrog-client-go/utils/tests" "github.com/stretchr/testify/assert" + "testing" ) -func TestCreateMetric(t *testing.T) { +func TestCreateCommandsCountMetric(t *testing.T) { // Set environment variables for the test using SetEnvWithCallbackAndAssert envVars := map[string]string{ "JFROG_CLI_USAGE_OIDC_USED": "TRUE", @@ -30,7 +29,7 @@ func TestCreateMetric(t *testing.T) { }() commandName := "testCommand" - metric := NewVisibilitySystemManager(nil).createMetric(commandName) + metric := NewCommandsCountMetric(commandName) metricJSON, err := json.Marshal(metric) assert.NoError(t, err) diff --git a/utils/usage/visibility/visibility_system_manager.go b/utils/usage/visibility/visibility_system_manager.go new file mode 100644 index 000000000..2c0e22135 --- /dev/null +++ b/utils/usage/visibility/visibility_system_manager.go @@ -0,0 +1,25 @@ +package visibility + +import ( + "github.com/jfrog/jfrog-cli-core/v2/artifactory/utils" + "github.com/jfrog/jfrog-cli-core/v2/utils/config" + "github.com/jfrog/jfrog-client-go/jfconnect/services" +) + +type VisibilitySystemManager struct { + serverDetails *config.ServerDetails +} + +func NewVisibilitySystemManager(serverDetails *config.ServerDetails) *VisibilitySystemManager { + return &VisibilitySystemManager{ + serverDetails: serverDetails, + } +} + +func (vsm *VisibilitySystemManager) SendUsage(metric services.VisibilityMetric) error { + manager, err := utils.CreateJfConnectServiceManager(vsm.serverDetails, 0, 0) + if err != nil { + return err + } + return manager.PostVisibilityMetric(metric) +} diff --git a/utils/usage/visibility_system_manager.go b/utils/usage/visibility_system_manager.go deleted file mode 100644 index 6b23c9aa8..000000000 --- a/utils/usage/visibility_system_manager.go +++ /dev/null @@ -1,47 +0,0 @@ -package usage - -import ( - "os" - - "github.com/jfrog/jfrog-cli-core/v2/artifactory/utils" - "github.com/jfrog/jfrog-cli-core/v2/utils/config" - "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils" - "github.com/jfrog/jfrog-client-go/jfconnect/services" -) - -type VisibilitySystemManager struct { - serverDetails *config.ServerDetails -} - -func NewVisibilitySystemManager(serverDetails *config.ServerDetails) *VisibilitySystemManager { - return &VisibilitySystemManager{ - serverDetails: serverDetails, - } -} - -func (vsm *VisibilitySystemManager) createMetric(commandName string) services.VisibilityMetric { - metricLabels := services.Labels{ - ProductID: coreutils.GetCliUserAgentName(), - ProductVersion: coreutils.GetCliUserAgentVersion(), - FeatureID: commandName, - OIDCUsed: os.Getenv("JFROG_CLI_USAGE_OIDC_USED"), - JobID: os.Getenv("JFROG_CLI_USAGE_JOB_ID"), - RunID: os.Getenv("JFROG_CLI_USAGE_RUN_ID"), - GitRepo: os.Getenv("JFROG_CLI_USAGE_GIT_REPO"), - GhTokenForCodeScanningAlertsProvided: os.Getenv("JFROG_CLI_USAGE_GH_TOKEN_FOR_CODE_SCANNING_ALERTS_PROVIDED"), - } - - return services.VisibilityMetric{ - Value: 1, - MetricsName: "jfcli_commands_count", - Labels: metricLabels, - } -} - -func (vsm *VisibilitySystemManager) SendUsage(commandName string) error { - manager, err := utils.CreateJfConnectServiceManager(vsm.serverDetails, 0, 0) - if err != nil { - return err - } - return manager.PostVisibilityMetric(vsm.createMetric(commandName)) -}