github.com/jfrog/jfrog-cli-core/v2@v2.51.0/lifecycle/common.go (about) 1 package lifecycle 2 3 import ( 4 "github.com/jfrog/jfrog-cli-core/v2/artifactory/utils" 5 "github.com/jfrog/jfrog-cli-core/v2/common/spec" 6 "github.com/jfrog/jfrog-cli-core/v2/utils/config" 7 "github.com/jfrog/jfrog-client-go/lifecycle" 8 "github.com/jfrog/jfrog-client-go/lifecycle/services" 9 clientUtils "github.com/jfrog/jfrog-client-go/utils" 10 "github.com/jfrog/jfrog-client-go/utils/distribution" 11 ) 12 13 const minimalLifecycleArtifactoryVersion = "7.63.2" 14 15 type releaseBundleCmd struct { 16 serverDetails *config.ServerDetails 17 releaseBundleName string 18 releaseBundleVersion string 19 sync bool 20 rbProjectKey string 21 } 22 23 func (rbc *releaseBundleCmd) getPrerequisites() (servicesManager *lifecycle.LifecycleServicesManager, 24 rbDetails services.ReleaseBundleDetails, queryParams services.CommonOptionalQueryParams, err error) { 25 servicesManager, err = utils.CreateLifecycleServiceManager(rbc.serverDetails, false) 26 if err != nil { 27 return 28 } 29 rbDetails = services.ReleaseBundleDetails{ 30 ReleaseBundleName: rbc.releaseBundleName, 31 ReleaseBundleVersion: rbc.releaseBundleVersion, 32 } 33 queryParams = services.CommonOptionalQueryParams{ 34 ProjectKey: rbc.rbProjectKey, 35 Async: !rbc.sync, 36 } 37 return 38 } 39 40 func validateArtifactoryVersionSupported(serverDetails *config.ServerDetails) error { 41 rtServiceManager, err := utils.CreateServiceManager(serverDetails, 3, 0, false) 42 if err != nil { 43 return err 44 } 45 46 versionStr, err := rtServiceManager.GetVersion() 47 if err != nil { 48 return err 49 } 50 51 return clientUtils.ValidateMinimumVersion(clientUtils.Artifactory, versionStr, minimalLifecycleArtifactoryVersion) 52 } 53 54 // If distribution rules are empty, distribute to all edges. 55 func getAggregatedDistRules(distributionRules *spec.DistributionRules) (aggregatedRules []*distribution.DistributionCommonParams) { 56 if isDistributionRulesEmpty(distributionRules) { 57 aggregatedRules = append(aggregatedRules, &distribution.DistributionCommonParams{SiteName: "*"}) 58 } else { 59 for _, rules := range distributionRules.DistributionRules { 60 aggregatedRules = append(aggregatedRules, rules.ToDistributionCommonParams()) 61 } 62 } 63 return 64 } 65 66 func isDistributionRulesEmpty(distributionRules *spec.DistributionRules) bool { 67 return distributionRules == nil || 68 len(distributionRules.DistributionRules) == 0 || 69 len(distributionRules.DistributionRules) == 1 && distributionRules.DistributionRules[0].IsEmpty() 70 }