diff --git a/go.mod b/go.mod index c240a7309..d475f835c 100644 --- a/go.mod +++ b/go.mod @@ -96,7 +96,8 @@ 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.20241225183733-80a5e1ba7a2c +// attiasas:remove_usage_ecosys +replace github.com/jfrog/jfrog-client-go => github.com/attiasas/jfrog-client-go v0.0.0-20250119095720-828b0be8a057 // 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 856eb31e4..eabf411b4 100644 --- a/go.sum +++ b/go.sum @@ -19,6 +19,8 @@ github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFI github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/attiasas/jfrog-client-go v0.0.0-20250119095720-828b0be8a057 h1:UQca9wB62fqY3JxhY8jARn1Y7g9T7VDVtBXB+UfNmFU= +github.com/attiasas/jfrog-client-go v0.0.0-20250119095720-828b0be8a057/go.mod h1:ohIfKpMBCQsE9kunrKQ1wvoExpqsPLaluRFO186B5EM= github.com/bradleyjkemp/cupaloy/v2 v2.8.0 h1:any4BmKE+jGIaMpnU8YgH/I2LPiLBufr6oMMlVBbn9M= github.com/bradleyjkemp/cupaloy/v2 v2.8.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1lps46Enkdqw6aRX0= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= @@ -93,8 +95,6 @@ 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.49.0 h1:NaTK6+LQBEJafL//6ntnS/eVx1dZMJnxydALwWHKORQ= -github.com/jfrog/jfrog-client-go v1.49.0/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/usage.go b/utils/usage/usage.go index 6834b63d3..e82e83cd8 100644 --- a/utils/usage/usage.go +++ b/utils/usage/usage.go @@ -11,7 +11,6 @@ import ( clientutils "github.com/jfrog/jfrog-client-go/utils" "github.com/jfrog/jfrog-client-go/utils/errorutils" "github.com/jfrog/jfrog-client-go/utils/log" - ecosysusage "github.com/jfrog/jfrog-client-go/utils/usage" xrayusage "github.com/jfrog/jfrog-client-go/xray/usage" "golang.org/x/sync/errgroup" @@ -27,7 +26,6 @@ type UsageReporter struct { serverDetails *config.ServerDetails reportWaitGroup *errgroup.Group - sendToEcosystem bool sendToXray bool sendToArtifactory bool } @@ -48,7 +46,6 @@ func NewUsageReporter(productId string, serverDetails *config.ServerDetails) *Us ProductId: productId, serverDetails: serverDetails, reportWaitGroup: new(errgroup.Group), - sendToEcosystem: true, sendToXray: true, sendToArtifactory: true, } @@ -63,11 +60,6 @@ func ShouldReportUsage() (reportUsage bool) { return reportUsage } -func (ur *UsageReporter) SetSendToEcosystem(send bool) *UsageReporter { - ur.sendToEcosystem = send - return ur -} - func (ur *UsageReporter) SetSendToXray(send bool) *UsageReporter { ur.sendToXray = send return ur @@ -89,14 +81,6 @@ func (ur *UsageReporter) Report(features ...ReportFeature) { return } log.Debug(ArtifactoryCallHomePrefix, "Sending info...") - if ur.sendToEcosystem { - ur.reportWaitGroup.Go(func() (err error) { - if err = ur.reportToEcosystem(features...); err != nil { - err = fmt.Errorf("ecosystem, %w", err) - } - return - }) - } if ur.sendToXray { ur.reportWaitGroup.Go(func() (err error) { if err = ur.reportToXray(features...); err != nil { @@ -122,22 +106,6 @@ func (ur *UsageReporter) WaitForResponses() (err error) { return } -func (ur *UsageReporter) reportToEcosystem(features ...ReportFeature) (err error) { - if ur.serverDetails.Url == "" { - err = errorutils.CheckErrorf("JFrog Platform URL is not set") - return - } - reports, err := ur.convertAttributesToEcosystemReports(features...) - if err != nil { - return - } - if len(reports) == 0 { - err = errorutils.CheckErrorf("nothing to send") - return - } - return ecosysusage.SendEcosystemUsageReports(reports...) -} - func (ur *UsageReporter) reportToXray(features ...ReportFeature) (err error) { events := ur.convertAttributesToXrayEvents(features...) if len(events) == 0 { @@ -219,28 +187,3 @@ func (ur *UsageReporter) convertAttributesToXrayEvents(reportFeatures ...ReportF } return } - -func (ur *UsageReporter) convertAttributesToEcosystemReports(reportFeatures ...ReportFeature) (reports []ecosysusage.ReportEcosystemUsageData, err error) { - accountId := ur.serverDetails.Url - clientToFeaturesMap := map[string][]string{} - // Combine - for _, feature := range reportFeatures { - if feature.FeatureId == "" { - continue - } - if features, contains := clientToFeaturesMap[feature.ClientId]; contains { - clientToFeaturesMap[feature.ClientId] = append(features, feature.FeatureId) - } else { - clientToFeaturesMap[feature.ClientId] = []string{feature.FeatureId} - } - } - // Create data - for clientId, features := range clientToFeaturesMap { - var report ecosysusage.ReportEcosystemUsageData - if report, err = ecosysusage.CreateUsageData(ur.ProductId, accountId, clientId, features...); err != nil { - return - } - reports = append(reports, report) - } - return -} diff --git a/utils/usage/usage_test.go b/utils/usage/usage_test.go index 4ff918642..f9d649510 100644 --- a/utils/usage/usage_test.go +++ b/utils/usage/usage_test.go @@ -9,7 +9,6 @@ import ( "github.com/jfrog/jfrog-cli-core/v2/utils/config" "github.com/jfrog/jfrog-client-go/artifactory/usage" - ecosysusage "github.com/jfrog/jfrog-client-go/utils/usage" xrayusage "github.com/jfrog/jfrog-client-go/xray/usage" "github.com/stretchr/testify/assert" @@ -41,25 +40,6 @@ var ( {FeatureId: "featureId", ClientId: "clientId2"}, {FeatureId: "featureId"}, } - ecosystemData = []ecosysusage.ReportEcosystemUsageData{ - { - ProductId: productName, - AccountId: serverUrl, - ClientId: "clientId", - Features: []string{"featureId2"}, - }, - { - ProductId: productName, - AccountId: serverUrl, - ClientId: "clientId2", - Features: []string{"featureId"}, - }, - { - ProductId: productName, - AccountId: serverUrl, - Features: []string{"featureId"}, - }, - } ) func TestConvertToArtifactoryUsage(t *testing.T) { @@ -69,22 +49,13 @@ func TestConvertToArtifactoryUsage(t *testing.T) { } } -func TestConvertToEcosystemUsage(t *testing.T) { - reporter := NewUsageReporter(productName, &config.ServerDetails{Url: serverUrl}) - for i := 0; i < len(features); i++ { - report, err := reporter.convertAttributesToEcosystemReports(features[i]) - assert.NoError(t, err) - assert.Equal(t, ecosystemData[i], report[0]) - } -} - func TestReportArtifactoryUsage(t *testing.T) { const commandName = "test-command" server := httptest.NewServer(createArtifactoryUsageHandler(t, productName, commandName)) defer server.Close() serverDetails := &config.ServerDetails{ArtifactoryUrl: server.URL + "/"} - reporter := NewUsageReporter(productName, serverDetails).SetSendToEcosystem(false).SetSendToXray(false) + reporter := NewUsageReporter(productName, serverDetails).SetSendToXray(false) reporter.Report(ReportFeature{ FeatureId: commandName, @@ -93,7 +64,7 @@ func TestReportArtifactoryUsage(t *testing.T) { } func TestReportArtifactoryUsageError(t *testing.T) { - reporter := NewUsageReporter("", &config.ServerDetails{}).SetSendToEcosystem(false).SetSendToXray(false) + reporter := NewUsageReporter("", &config.ServerDetails{}).SetSendToXray(false) reporter.Report(ReportFeature{ FeatureId: "", }) @@ -101,7 +72,7 @@ func TestReportArtifactoryUsageError(t *testing.T) { server := httptest.NewServer(create404UsageHandler(t)) defer server.Close() - reporter = NewUsageReporter("", &config.ServerDetails{ArtifactoryUrl: server.URL + "/"}).SetSendToEcosystem(false).SetSendToXray(false) + reporter = NewUsageReporter("", &config.ServerDetails{ArtifactoryUrl: server.URL + "/"}).SetSendToXray(false) reporter.Report(ReportFeature{ FeatureId: "", }) @@ -140,7 +111,7 @@ func TestReportXrayUsage(t *testing.T) { defer server.Close() serverDetails := &config.ServerDetails{XrayUrl: server.URL + "/"} - reporter := NewUsageReporter(productName, serverDetails).SetSendToEcosystem(false).SetSendToArtifactory(false) + reporter := NewUsageReporter(productName, serverDetails).SetSendToArtifactory(false) reporter.Report(ReportFeature{ FeatureId: commandName, @@ -150,13 +121,13 @@ func TestReportXrayUsage(t *testing.T) { } func TestReportXrayError(t *testing.T) { - reporter := NewUsageReporter("", &config.ServerDetails{}).SetSendToEcosystem(false).SetSendToArtifactory(false) + reporter := NewUsageReporter("", &config.ServerDetails{}).SetSendToArtifactory(false) reporter.Report(ReportFeature{}) assert.Error(t, reporter.WaitForResponses()) server := httptest.NewServer(create404UsageHandler(t)) defer server.Close() - reporter = NewUsageReporter("", &config.ServerDetails{ArtifactoryUrl: server.URL + "/"}).SetSendToEcosystem(false).SetSendToArtifactory(false) + reporter = NewUsageReporter("", &config.ServerDetails{ArtifactoryUrl: server.URL + "/"}).SetSendToArtifactory(false) reporter.Report(ReportFeature{}) assert.Error(t, reporter.WaitForResponses()) } @@ -187,19 +158,6 @@ func createXrayUsageHandler(t *testing.T, productId, commandName, clientId strin } } -func TestReportEcosystemUsageError(t *testing.T) { - // No features - reporter := NewUsageReporter("", &config.ServerDetails{}).SetSendToArtifactory(false).SetSendToXray(false) - reporter.Report() - assert.NoError(t, reporter.WaitForResponses()) - // Empty features - reporter.Report(ReportFeature{ - FeatureId: "", - ClientId: "client", - }) - assert.Error(t, reporter.WaitForResponses()) -} - func create404UsageHandler(t *testing.T) http.HandlerFunc { return func(w http.ResponseWriter, _ *http.Request) { w.WriteHeader(http.StatusNotFound)