@@ -3,15 +3,22 @@ package commands
33import (
44 "sync"
55
6+ "github.com/jfrog/gofrog/version"
67 "github.com/jfrog/jfrog-cli-core/v2/artifactory/utils"
78 "github.com/jfrog/jfrog-cli-core/v2/utils/config"
89 "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils"
910 coreusage "github.com/jfrog/jfrog-cli-core/v2/utils/usage"
1011 usageReporter "github.com/jfrog/jfrog-cli-core/v2/utils/usage"
12+ rtClient "github.com/jfrog/jfrog-client-go/artifactory"
1113 "github.com/jfrog/jfrog-client-go/artifactory/usage"
1214 "github.com/jfrog/jfrog-client-go/utils/log"
1315)
1416
17+ const (
18+ minCallHomeArtifactoryVersion = "6.9.0"
19+ minVisibilitySystemArtifactoryVersion = "7.102"
20+ )
21+
1522type Command interface {
1623 // Runs the command
1724 Run () error
@@ -43,32 +50,45 @@ func reportUsage(command Command, channel chan<- bool) {
4350
4451 serverDetails , err := command .ServerDetails ()
4552 if err != nil {
46- log .Debug ("Usage reporting:" , err .Error ())
53+ log .Debug ("Usage reporting. Failed accessing ServerDetails." , err .Error ())
54+ return
55+ }
56+ if serverDetails == nil || serverDetails .ArtifactoryUrl == "" {
57+ return
58+ }
59+ serviceManager , err := utils .CreateServiceManager (serverDetails , - 1 , 0 , false )
60+ if err != nil {
61+ log .Debug ("Usage reporting. Failed creating the Artifactory Service Manager." , err .Error ())
62+ return
63+ }
64+ artifactoryVersion , err := serviceManager .GetVersion ()
65+ if err != nil {
66+ log .Debug ("Usage reporting. Failed getting the version of Artifactory" , err .Error ())
4767 return
4868 }
4969
50- if serverDetails != nil {
51- var wg sync.WaitGroup
70+ var wg sync.WaitGroup
5271
53- // Report the usage to Artifactory's Call Home API.
54- if serverDetails . ArtifactoryUrl != "" {
55- wg .Add (1 )
56- go func () {
57- defer wg .Done ()
58- reportUsageToArtifactoryCallHome (command , serverDetails )
59- }()
60- }
72+ // Report the usage to Artifactory's Call Home API.
73+ if version . NewVersion ( artifactoryVersion ). AtLeast ( minCallHomeArtifactoryVersion ) {
74+ wg .Add (1 )
75+ go func () {
76+ defer wg .Done ()
77+ reportUsageToArtifactoryCallHome (command , serviceManager )
78+ }()
79+ }
6180
62- // Report the usage to the Visibility System.
81+ // Report the usage to the Visibility System.
82+ if version .NewVersion (artifactoryVersion ).AtLeast (minVisibilitySystemArtifactoryVersion ) {
6383 wg .Add (1 )
6484 go func () {
6585 defer wg .Done ()
6686 reportUsageToVisibilitySystem (command , serverDetails )
6787 }()
68-
69- // Wait for the two report actions to finish.
70- wg .Wait ()
7188 }
89+
90+ // Wait for the two report actions to finish.
91+ wg .Wait ()
7292}
7393
7494func reportUsageToVisibilitySystem (command Command , serverDetails * config.ServerDetails ) {
@@ -77,14 +97,9 @@ func reportUsageToVisibilitySystem(command Command, serverDetails *config.Server
7797 }
7898}
7999
80- func reportUsageToArtifactoryCallHome (command Command , serverDetails * config. ServerDetails ) {
100+ func reportUsageToArtifactoryCallHome (command Command , serviceManager rtClient. ArtifactoryServicesManager ) {
81101 log .Debug (usageReporter .ArtifactoryCallHomePrefix , "Sending info..." )
82- serviceManager , err := utils .CreateServiceManager (serverDetails , - 1 , 0 , false )
83- if err != nil {
84- log .Debug (usageReporter .ArtifactoryCallHomePrefix , err .Error ())
85- return
86- }
87- if err = usage .NewArtifactoryCallHome ().SendUsage (coreutils .GetCliUserAgent (), command .CommandName (), serviceManager ); err != nil {
102+ if err := usage .NewArtifactoryCallHome ().Send (coreutils .GetCliUserAgent (), command .CommandName (), serviceManager ); err != nil {
88103 log .Debug (err .Error ())
89104 }
90105}
0 commit comments