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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
# File 'manifests/artifactory.pp', line 53
define archive::artifactory (
Stdlib::HTTPUrl $url,
Array $headers = [],
Boolean $cleanup = false,
Boolean $extract = false,
Enum['present', 'absent'] $ensure = 'present',
String $path = $name,
Optional[Stdlib::Absolutepath] $archive_path = undef,
Optional[String] $creates = undef,
Optional[String] $extract_path = undef,
Optional[String] $group = undef,
Optional[String] $mode = undef,
Optional[String] $owner = undef,
Optional[String] $password = undef,
Optional[String] $username = undef,
) {
include archive::params
if $archive_path {
$file_path = "${archive_path}/${name}"
} else {
$file_path = $path
}
assert_type(Stdlib::Absolutepath, $file_path) |$expected, $actual| {
fail("archive::artifactory[${name}]: \$name or \$archive_path must be '${expected}', not '${actual}'")
}
$maven2_data = archive::parse_artifactory_url($url)
if $maven2_data and $maven2_data['folder_iteg_rev'] == 'SNAPSHOT' {
# URL represents a SNAPSHOT version. eg 'http://artifactory.example.com/artifactory/repo/com/example/artifact/0.0.1-SNAPSHOT/artifact-0.0.1-SNAPSHOT.zip'
# Only Artifactory Pro downloads this directly but the corresponding file endpoint (where the sha1 checksum is published) doesn't exist
# This means we can't use the artifactory_sha1 function
$latest_url_data = archive::artifactory_latest_url($url, $maven2_data)
$file_url = $latest_url_data['url']
$sha1 = $latest_url_data['sha1']
} else {
$file_url = $url
$sha1 = archive::artifactory_checksum($url,'sha1')
}
archive { $file_path:
ensure => $ensure,
path => $file_path,
extract => $extract,
extract_path => $extract_path,
headers => $headers,
username => $username,
password => $password,
source => $file_url,
checksum => $sha1,
checksum_type => 'sha1',
creates => $creates,
cleanup => $cleanup,
}
$file_owner = pick($owner, $archive::params::owner)
$file_group = pick($group, $archive::params::group)
$file_mode = pick($mode, $archive::params::mode)
file { $file_path:
owner => $file_owner,
group => $file_group,
mode => $file_mode,
require => Archive[$file_path],
}
}
|