-
Notifications
You must be signed in to change notification settings - Fork 93
Expand file tree
/
Copy pathcommon.go
More file actions
83 lines (71 loc) · 2.99 KB
/
common.go
File metadata and controls
83 lines (71 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package lifecycle
import (
"github.com/jfrog/jfrog-cli-core/v2/artifactory/utils"
"github.com/jfrog/jfrog-cli-core/v2/common/spec"
"github.com/jfrog/jfrog-cli-core/v2/utils/config"
"github.com/jfrog/jfrog-client-go/lifecycle"
"github.com/jfrog/jfrog-client-go/lifecycle/services"
clientUtils "github.com/jfrog/jfrog-client-go/utils"
"github.com/jfrog/jfrog-client-go/utils/distribution"
)
const minimalLifecycleArtifactoryVersion = "7.63.2"
type releaseBundleCmd struct {
serverDetails *config.ServerDetails
releaseBundleName string
releaseBundleVersion string
sync bool
rbProjectKey string
}
func (rbc *releaseBundleCmd) getPrerequisites() (servicesManager *lifecycle.LifecycleServicesManager,
rbDetails services.ReleaseBundleDetails, queryParams services.CommonOptionalQueryParams, err error) {
return rbc.initPrerequisites()
}
func (rbp *ReleaseBundlePromoteCommand) getPromotionPrerequisites() (servicesManager *lifecycle.LifecycleServicesManager,
rbDetails services.ReleaseBundleDetails, queryParams services.CommonOptionalQueryParams, err error) {
servicesManager, rbDetails, queryParams, err = rbp.initPrerequisites()
queryParams.PromotionType = rbp.promotionType
return servicesManager, rbDetails, queryParams, err
}
func (rbc *releaseBundleCmd) initPrerequisites() (servicesManager *lifecycle.LifecycleServicesManager,
rbDetails services.ReleaseBundleDetails, queryParams services.CommonOptionalQueryParams, err error) {
servicesManager, err = utils.CreateLifecycleServiceManager(rbc.serverDetails, false)
if err != nil {
return
}
rbDetails = services.ReleaseBundleDetails{
ReleaseBundleName: rbc.releaseBundleName,
ReleaseBundleVersion: rbc.releaseBundleVersion,
}
queryParams = services.CommonOptionalQueryParams{
ProjectKey: rbc.rbProjectKey,
Async: !rbc.sync,
}
return
}
func validateArtifactoryVersionSupported(serverDetails *config.ServerDetails) error {
rtServiceManager, err := utils.CreateServiceManager(serverDetails, 3, 0, false)
if err != nil {
return err
}
versionStr, err := rtServiceManager.GetVersion()
if err != nil {
return err
}
return clientUtils.ValidateMinimumVersion(clientUtils.Artifactory, versionStr, minimalLifecycleArtifactoryVersion)
}
// If distribution rules are empty, distribute to all edges.
func getAggregatedDistRules(distributionRules *spec.DistributionRules) (aggregatedRules []*distribution.DistributionCommonParams) {
if isDistributionRulesEmpty(distributionRules) {
aggregatedRules = append(aggregatedRules, &distribution.DistributionCommonParams{SiteName: "*"})
} else {
for _, rules := range distributionRules.DistributionRules {
aggregatedRules = append(aggregatedRules, rules.ToDistributionCommonParams())
}
}
return
}
func isDistributionRulesEmpty(distributionRules *spec.DistributionRules) bool {
return distributionRules == nil ||
len(distributionRules.DistributionRules) == 0 ||
len(distributionRules.DistributionRules) == 1 && distributionRules.DistributionRules[0].IsEmpty()
}