puppet_metadata 3.0.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/metadata2gha +8 -10
- data/lib/puppet_metadata/aio.rb +5 -5
- data/lib/puppet_metadata/beaker.rb +17 -3
- data/lib/puppet_metadata/github_actions.rb +11 -6
- data/lib/puppet_metadata/metadata.rb +11 -6
- data/lib/puppet_metadata/operatingsystem.rb +12 -2
- data/lib/puppet_metadata.rb +2 -0
- metadata +22 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4eeb2df8e93dc5c1eff89ca619a29ca8862bd8c98b3b3862273d05c053a2019c
|
|
4
|
+
data.tar.gz: 9cdb5e2c21fc08c2cba8a9c42ddcec33e0fe326e6b478380e79007c34aeaf1f2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8a637579127e64447e244511f5ba2d459c00fa4587d9e321a32c427ca0e71901088bb67c56d725067b6a3bafaaaa3df898a474803685a05eb6efe6024da612c0
|
|
7
|
+
data.tar.gz: cd7fa183863692be6a0efbbcb46473ace449f11b832490c173d397084c28666b5d83c7ac26e0a56d5d1619b744395e56e1ce08970ae8781b939c32426d9573f6
|
data/bin/metadata2gha
CHANGED
|
@@ -9,7 +9,7 @@ options = {
|
|
|
9
9
|
beaker_use_fqdn: false,
|
|
10
10
|
beaker_pidfile_workaround: false,
|
|
11
11
|
domain: nil,
|
|
12
|
-
minimum_major_puppet_version: nil
|
|
12
|
+
minimum_major_puppet_version: nil,
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
OptionParser.new do |opts|
|
|
@@ -26,25 +26,23 @@ OptionParser.new do |opts|
|
|
|
26
26
|
|
|
27
27
|
opts.banner = "Usage: #{$0} [options] metadata"
|
|
28
28
|
|
|
29
|
-
opts.on(
|
|
30
|
-
opts.on(
|
|
31
|
-
opts.on(
|
|
32
|
-
opts.on(
|
|
29
|
+
opts.on('--[no-]use-fqdn', 'Generate beaker setfiles with a FQDN') { |opt| options[:beaker_use_fqdn] = opt }
|
|
30
|
+
opts.on('--pidfile-workaround VALUE', 'Generate the systemd PIDFile workaround to work around a docker bug', PidfileWorkaround) { |opt| options[:beaker_pidfile_workaround] = opt }
|
|
31
|
+
opts.on('-d', '--domain VALUE', 'the domain for the box, only used when --use-fqdn is set to true') { |opt| options[:domain] = opt }
|
|
32
|
+
opts.on('--minimum-major-puppet-version VERSION', "Don't create actions for Puppet versions less than this major version") { |opt| options[:minimum_major_puppet_version] = opt }
|
|
33
33
|
end.parse!
|
|
34
34
|
|
|
35
35
|
filename = ARGV[0]
|
|
36
|
-
if filename.nil? || filename.empty?
|
|
37
|
-
filename = 'metadata.json'
|
|
38
|
-
end
|
|
36
|
+
filename = 'metadata.json' if filename.nil? || filename.empty?
|
|
39
37
|
|
|
40
38
|
begin
|
|
41
39
|
metadata = PuppetMetadata.read(filename)
|
|
42
40
|
rescue StandardError => e
|
|
43
|
-
|
|
41
|
+
warn "Failed to read #{filename}: #{e}"
|
|
44
42
|
exit 2
|
|
45
43
|
end
|
|
46
44
|
|
|
47
|
-
github_output =
|
|
45
|
+
github_output = ENV['GITHUB_OUTPUT'].nil? ? $stdout : File.open(ENV.fetch('GITHUB_OUTPUT', nil), 'a')
|
|
48
46
|
metadata.github_actions(options).outputs.each do |name, value|
|
|
49
47
|
github_output.write("#{name}=#{value.to_json}\n")
|
|
50
48
|
end
|
data/lib/puppet_metadata/aio.rb
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
module PuppetMetadata
|
|
2
2
|
class AIO
|
|
3
3
|
COMPATIBLE = {
|
|
4
|
-
'AlmaLinux'
|
|
5
|
-
'Amazon'
|
|
6
|
-
'CentOS'
|
|
4
|
+
'AlmaLinux' => 'RedHat',
|
|
5
|
+
'Amazon' => 'RedHat',
|
|
6
|
+
'CentOS' => 'RedHat',
|
|
7
7
|
'OracleLinux' => 'RedHat',
|
|
8
|
-
'Rocky'
|
|
9
|
-
'Scientific'
|
|
8
|
+
'Rocky' => 'RedHat',
|
|
9
|
+
'Scientific' => 'RedHat',
|
|
10
10
|
}.freeze
|
|
11
11
|
|
|
12
12
|
BUILDS = {
|
|
@@ -21,6 +21,18 @@ module PuppetMetadata
|
|
|
21
21
|
'CentOS' => ['8'],
|
|
22
22
|
}.freeze
|
|
23
23
|
class << self
|
|
24
|
+
# modifies the operating system name to suit beaker-hostgenerator
|
|
25
|
+
# @param [String] os
|
|
26
|
+
# @return [String] the modified OS name
|
|
27
|
+
def adjusted_os(os)
|
|
28
|
+
case os
|
|
29
|
+
when 'OracleLinux'
|
|
30
|
+
'oracle'
|
|
31
|
+
else
|
|
32
|
+
os.downcase
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
24
36
|
# Convert an Operating System name with a release to a Beaker setfile
|
|
25
37
|
#
|
|
26
38
|
# @param [String] os
|
|
@@ -46,8 +58,10 @@ module PuppetMetadata
|
|
|
46
58
|
def os_release_to_setfile(os, release, use_fqdn: false, pidfile_workaround: false, domain: nil, puppet_version: nil)
|
|
47
59
|
return unless os_supported?(os)
|
|
48
60
|
|
|
49
|
-
|
|
50
|
-
|
|
61
|
+
aos = adjusted_os(os)
|
|
62
|
+
|
|
63
|
+
name = "#{aos}#{release.tr('.', '')}-64"
|
|
64
|
+
hostname = (puppet_version.nil? && puppet_version != 'none') ? name : "#{name}-#{puppet_version}"
|
|
51
65
|
domain ||= 'example.com' if use_fqdn
|
|
52
66
|
|
|
53
67
|
options = {}
|
|
@@ -71,7 +85,7 @@ module PuppetMetadata
|
|
|
71
85
|
# Return whether a Beaker setfile can be generated for the given OS
|
|
72
86
|
# @param [String] os The operating system
|
|
73
87
|
def os_supported?(os)
|
|
74
|
-
[
|
|
88
|
+
%w[Archlinux CentOS Fedora Debian Ubuntu Rocky AlmaLinux OracleLinux].include?(os)
|
|
75
89
|
end
|
|
76
90
|
|
|
77
91
|
private
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
module PuppetMetadata
|
|
2
2
|
class GithubActions
|
|
3
|
-
attr_reader :metadata
|
|
4
|
-
attr_reader :options
|
|
3
|
+
attr_reader :metadata, :options
|
|
5
4
|
|
|
6
5
|
# @param [PuppetMetadata::Metadata] metadata
|
|
7
6
|
# @param [Hash] options
|
|
@@ -49,14 +48,20 @@ module PuppetMetadata
|
|
|
49
48
|
def beaker_os_releases
|
|
50
49
|
majors = puppet_major_versions
|
|
51
50
|
|
|
51
|
+
distro_puppet_version = {
|
|
52
|
+
name: 'Distro Puppet',
|
|
53
|
+
value: nil, # We don't know the version and since it's rolling, it can be anything
|
|
54
|
+
collection: 'none',
|
|
55
|
+
}
|
|
56
|
+
|
|
52
57
|
metadata.operatingsystems.each do |os, releases|
|
|
53
58
|
case os
|
|
54
59
|
when 'Archlinux', 'Gentoo'
|
|
55
|
-
yield [os, 'rolling',
|
|
60
|
+
yield [os, 'rolling', distro_puppet_version]
|
|
56
61
|
else
|
|
57
62
|
releases&.each do |release|
|
|
58
63
|
majors.each do |puppet_version|
|
|
59
|
-
if AIO.has_aio_build?(os, release, puppet_version[:value])
|
|
64
|
+
if AIO.has_aio_build?(os, release, puppet_version[:value]) # rubocop:disable Style/IfUnlessModifier
|
|
60
65
|
yield [os, release, puppet_version]
|
|
61
66
|
end
|
|
62
67
|
end
|
|
@@ -80,7 +85,7 @@ module PuppetMetadata
|
|
|
80
85
|
name: setfile[1],
|
|
81
86
|
value: setfile[0],
|
|
82
87
|
},
|
|
83
|
-
puppet: puppet_version
|
|
88
|
+
puppet: puppet_version,
|
|
84
89
|
}
|
|
85
90
|
end
|
|
86
91
|
|
|
@@ -88,7 +93,7 @@ module PuppetMetadata
|
|
|
88
93
|
end
|
|
89
94
|
|
|
90
95
|
def puppet_version_below_minimum?(version)
|
|
91
|
-
return false unless options[:minimum_major_puppet_version]
|
|
96
|
+
return false unless version && options[:minimum_major_puppet_version]
|
|
92
97
|
|
|
93
98
|
Gem::Version.new(version) < Gem::Version.new(options[:minimum_major_puppet_version])
|
|
94
99
|
end
|
|
@@ -35,7 +35,7 @@ module PuppetMetadata
|
|
|
35
35
|
if validate
|
|
36
36
|
require 'metadata_json_lint'
|
|
37
37
|
schema_errors = MetadataJsonLint::Schema.new.validate(metadata)
|
|
38
|
-
raise InvalidMetadataException
|
|
38
|
+
raise InvalidMetadataException, schema_errors if schema_errors.any?
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
@metadata = metadata
|
|
@@ -67,10 +67,11 @@ module PuppetMetadata
|
|
|
67
67
|
|
|
68
68
|
supported = metadata['operatingsystem_support'].map do |os|
|
|
69
69
|
next unless os['operatingsystem']
|
|
70
|
+
|
|
70
71
|
[os['operatingsystem'], os['operatingsystemrelease']]
|
|
71
72
|
end
|
|
72
73
|
|
|
73
|
-
|
|
74
|
+
supported.compact.to_h
|
|
74
75
|
end
|
|
75
76
|
end
|
|
76
77
|
|
|
@@ -98,11 +99,12 @@ module PuppetMetadata
|
|
|
98
99
|
|
|
99
100
|
unsupported = operatingsystems.map do |os, rels|
|
|
100
101
|
next unless rels
|
|
102
|
+
|
|
101
103
|
eol = rels.select { |rel| OperatingSystem.eol?(os, rel, at) }
|
|
102
104
|
[os, eol] if eol.any?
|
|
103
105
|
end
|
|
104
106
|
|
|
105
|
-
|
|
107
|
+
unsupported.compact.to_h
|
|
106
108
|
end
|
|
107
109
|
|
|
108
110
|
# A hash representation of the requirements
|
|
@@ -143,10 +145,12 @@ module PuppetMetadata
|
|
|
143
145
|
|
|
144
146
|
# Current latest major is 7. It is highly recommended that modules
|
|
145
147
|
# actually specify exact bounds, but this prevents an infinite loop.
|
|
146
|
-
end_major = requirement.end == SemanticPuppet::Version::MAX ? 7 : requirement.end.major
|
|
148
|
+
end_major = (requirement.end == SemanticPuppet::Version::MAX) ? 7 : requirement.end.major
|
|
147
149
|
|
|
148
150
|
(requirement.begin.major..end_major).select do |major|
|
|
149
|
-
requirement.include?(SemanticPuppet::Version.new(major, 0,
|
|
151
|
+
requirement.include?(SemanticPuppet::Version.new(major, 0,
|
|
152
|
+
0)) || requirement.include?(SemanticPuppet::Version.new(major,
|
|
153
|
+
99, 99))
|
|
150
154
|
end
|
|
151
155
|
end
|
|
152
156
|
|
|
@@ -197,11 +201,12 @@ module PuppetMetadata
|
|
|
197
201
|
|
|
198
202
|
reqs = array.map do |requirement|
|
|
199
203
|
next unless requirement['name']
|
|
204
|
+
|
|
200
205
|
version_requirement = requirement['version_requirement'] || '>= 0'
|
|
201
206
|
[requirement['name'], SemanticPuppet::VersionRange.parse(version_requirement)]
|
|
202
207
|
end
|
|
203
208
|
|
|
204
|
-
|
|
209
|
+
reqs.compact.to_h
|
|
205
210
|
end
|
|
206
211
|
|
|
207
212
|
def matches?(required_version, provided_version)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'date'
|
|
2
4
|
|
|
3
5
|
module PuppetMetadata
|
|
@@ -43,6 +45,12 @@ module PuppetMetadata
|
|
|
43
45
|
'2.2' => '2003-06-30',
|
|
44
46
|
'2.1' => '2000-09-30',
|
|
45
47
|
},
|
|
48
|
+
# https://endoflife.date/oraclelinux
|
|
49
|
+
'OracleLinux' => {
|
|
50
|
+
'9' => '2032-06-30',
|
|
51
|
+
'8' => '2029-07-01',
|
|
52
|
+
'7' => '2024-07-01',
|
|
53
|
+
},
|
|
46
54
|
# https://endoflife.software/operating-systems/linux/fedora
|
|
47
55
|
'Fedora' => {
|
|
48
56
|
'32' => nil,
|
|
@@ -157,8 +165,10 @@ module PuppetMetadata
|
|
|
157
165
|
def eol_date(operatingsystem, release)
|
|
158
166
|
releases = EOL_DATES[operatingsystem]
|
|
159
167
|
return unless releases
|
|
168
|
+
|
|
160
169
|
date = releases[release]
|
|
161
170
|
return unless date
|
|
171
|
+
|
|
162
172
|
Date.parse(date)
|
|
163
173
|
end
|
|
164
174
|
|
|
@@ -193,8 +203,8 @@ module PuppetMetadata
|
|
|
193
203
|
def supported_releases(operatingsystem)
|
|
194
204
|
releases = EOL_DATES[operatingsystem]
|
|
195
205
|
today = Date.today
|
|
196
|
-
releases.select { |
|
|
197
|
-
|
|
206
|
+
releases.select { |_release, eol_date| !eol_date || Date.parse(eol_date) > today }.keys
|
|
207
|
+
.sort_by { |release| Gem::Version.new(release) }
|
|
198
208
|
end
|
|
199
209
|
end
|
|
200
210
|
end
|
data/lib/puppet_metadata.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: puppet_metadata
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vox Pupuli
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2023-
|
|
12
|
+
date: 2023-08-11 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: metadata-json-lint
|
|
@@ -59,6 +59,20 @@ dependencies:
|
|
|
59
59
|
- - "~>"
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
61
|
version: '13.0'
|
|
62
|
+
- !ruby/object:Gem::Dependency
|
|
63
|
+
name: rdoc
|
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '6.0'
|
|
69
|
+
type: :development
|
|
70
|
+
prerelease: false
|
|
71
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '6.0'
|
|
62
76
|
- !ruby/object:Gem::Dependency
|
|
63
77
|
name: rspec
|
|
64
78
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -88,19 +102,19 @@ dependencies:
|
|
|
88
102
|
- !ruby/object:Gem::Version
|
|
89
103
|
version: '1.0'
|
|
90
104
|
- !ruby/object:Gem::Dependency
|
|
91
|
-
name:
|
|
105
|
+
name: voxpupuli-rubocop
|
|
92
106
|
requirement: !ruby/object:Gem::Requirement
|
|
93
107
|
requirements:
|
|
94
108
|
- - "~>"
|
|
95
109
|
- !ruby/object:Gem::Version
|
|
96
|
-
version:
|
|
110
|
+
version: 2.0.0
|
|
97
111
|
type: :development
|
|
98
112
|
prerelease: false
|
|
99
113
|
version_requirements: !ruby/object:Gem::Requirement
|
|
100
114
|
requirements:
|
|
101
115
|
- - "~>"
|
|
102
116
|
- !ruby/object:Gem::Version
|
|
103
|
-
version:
|
|
117
|
+
version: 2.0.0
|
|
104
118
|
- !ruby/object:Gem::Dependency
|
|
105
119
|
name: yard
|
|
106
120
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -147,6 +161,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
147
161
|
- - ">="
|
|
148
162
|
- !ruby/object:Gem::Version
|
|
149
163
|
version: '2.7'
|
|
164
|
+
- - "<"
|
|
165
|
+
- !ruby/object:Gem::Version
|
|
166
|
+
version: '4'
|
|
150
167
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
151
168
|
requirements:
|
|
152
169
|
- - ">="
|