puppet_metadata 3.0.0 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
- - ">="
|