github.com/jfrog/jfrog-cli-core/v2@v2.52.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  }