puppet_metadata 0.3.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 98140c70afa012445fc26f6db9b1f6f2a5b1fb58660d2d9c450c4f93bafc9b6d
4
- data.tar.gz: 1078ef0d2c8d722ad76f2a9aae5160182ccbc50169a95e45989a48eadbc5abbc
3
+ metadata.gz: e8eb631a9aedc17f9f1e298507ab1b181b6e5923b412fcfb4e169cdff9820b12
4
+ data.tar.gz: e991cabd97835e963c08ab86dcf86455d3e898400032584d64cf40a1251af986
5
5
  SHA512:
6
- metadata.gz: 6382308409c4cf5043b0296ecef6242a1ff71a9e1682bdcb31906214dacc367c128f72ff2fb431dcb8d431b89f5a0123358c9e4e8319ea95c8359e26ce6b8141
7
- data.tar.gz: cbef56666c77918ab1789ebe89bebaa54eb8fdde34c993ae82cb53bcd426154f252b12ff58c0efbfb695bc8f47a33066506615a147679f20df1a73705469fc47
6
+ metadata.gz: b7b644b7fd564ae6a4fe57ba11becd6ffc242e9744362fc882412425783f0af70464f99da7dd30eaa9cb6da447ce4c85267797605f92365606bcbf52d48c8210
7
+ data.tar.gz: 6cd2fa3fd5d41ef5fe01dc91143e31873e98237da6757df2d3500c4d44b9b7406f78f48f0c69fc22905773d27ebd76852611e4208fe911e382348d214505c0ff
data/README.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # puppet_metadata
2
2
 
3
+ [![License](https://img.shields.io/github/license/voxpupuli/puppet_metadata.svg)](https://github.com/voxpupuli/puppet_metadata/blob/master/LICENSE)
4
+ [![Test](https://github.com/voxpupuli/puppet_metadata/actions/workflows/test.yml/badge.svg)](https://github.com/voxpupuli/puppet_metadata/actions/workflows/test.yml)
5
+ [![codecov](https://codecov.io/gh/voxpupuli/puppet_metadata/branch/master/graph/badge.svg?token=Mypkl78hvK)](https://codecov.io/gh/voxpupuli/puppet_metadata)
6
+ [![Release](https://github.com/voxpupuli/puppet_metadata/actions/workflows/release.yml/badge.svg)](https://github.com/voxpupuli/puppet_metadata/actions/workflows/release.yml)
7
+ [![RubyGem Version](https://img.shields.io/gem/v/puppet_metadata.svg)](https://rubygems.org/gems/puppet_metadata)
8
+ [![RubyGem Downloads](https://img.shields.io/gem/dt/puppet_metadata.svg)](https://rubygems.org/gems/puppet_metadata)
9
+ [![Donated by Ewoud Kohl van Wijngaarden](https://img.shields.io/badge/donated%20by-Ewoud%20Kohl%20van%20Wijngaarden-fb7047.svg)](#copyright)
10
+
3
11
  The gem intends to provide an abstraction over Puppet's metadata.json file. Its API allow easy iteration over its illogical data structures.
4
12
 
5
13
  ## Generating Github Actions outputs
@@ -90,3 +98,22 @@ This results in the following JSON data
90
98
  ```
91
99
 
92
100
  It is also possible to specify a comma separated list of operating systems as used in `metadata.json` (`CentOS,Ubuntu`).
101
+
102
+ ## Transfer Notice
103
+
104
+ This plugin was originally authored by [Ewoud Kohl van Wijngaarden](https://github.com/ekohl).
105
+ The maintainer preferred that [Vox Pupuli](https://voxpupuli.org/) take ownership of the module for future improvement and maintenance.
106
+ Existing pull requests and issues were transferred, please fork and continue to contribute [here](https://github.com/voxpupuli/puppet_metadata).
107
+
108
+ ## License
109
+
110
+ This gem is licensed under the Apache-2 license.
111
+
112
+ ## Release information
113
+
114
+ To make a new release, please do:
115
+ * Update the version in the puppet_metadata.gemspec file
116
+ * Install gems with `bundle install --with release --path .vendor`
117
+ * generate the changelog with `bundle exec rake changelog`
118
+ * Create a PR with it
119
+ * After it got merged, push a tag. A github workflow will do the actual release
@@ -1,5 +1,6 @@
1
1
  # A module that provides abstractions around Puppet's metadata format.
2
2
  module PuppetMetadata
3
+ autoload :AIO, 'puppet_metadata/aio'
3
4
  autoload :Beaker, 'puppet_metadata/beaker'
4
5
  autoload :GithubActions, 'puppet_metadata/github_actions'
5
6
  autoload :Metadata, 'puppet_metadata/metadata'
@@ -0,0 +1,59 @@
1
+ module PuppetMetadata
2
+ class AIO
3
+ COMPATIBLE = {
4
+ 'AlmaLinux' => 'RedHat',
5
+ 'Amazon' => 'RedHat',
6
+ 'CentOS' => 'RedHat',
7
+ 'OracleLinux' => 'RedHat',
8
+ 'Rocky' => 'RedHat',
9
+ 'Scientific' => 'RedHat',
10
+ }
11
+
12
+ BUILDS = {
13
+ # RPM-based
14
+ 'RedHat' => {
15
+ '5' => 5..7,
16
+ '6' => 5..7,
17
+ '7' => 5..7,
18
+ '8' => 5..7,
19
+ },
20
+ 'Fedora' => {
21
+ '26' => [5],
22
+ '27' => 5..6,
23
+ '28' => 5..6,
24
+ '29' => 5..6,
25
+ '30' => 5..7,
26
+ '31' => 5..7,
27
+ '32' => 6..7,
28
+ '34' => 6..7,
29
+ },
30
+ 'SLES' => {
31
+ '11' => [7],
32
+ '12' => [7],
33
+ '15' => [7],
34
+ },
35
+ # deb-based
36
+ 'Debian' => {
37
+ '7' => [5],
38
+ '8' => 5..7,
39
+ '9' => 5..7,
40
+ '10' => 5..7,
41
+ '11' => 6..7,
42
+ },
43
+ 'Ubuntu' => {
44
+ '14.04' => 5..6,
45
+ '16.04' => 5..7,
46
+ '18.04' => 5..7,
47
+ '20.04' => 6..7,
48
+ },
49
+ }
50
+
51
+ def self.find_base_os(os)
52
+ COMPATIBLE.fetch(os, os)
53
+ end
54
+
55
+ def self.has_aio_build?(os, release, puppet_version)
56
+ BUILDS.dig(find_base_os(os), release)&.include?(puppet_version)
57
+ end
58
+ end
59
+ end
@@ -13,6 +13,7 @@ module PuppetMetadata
13
13
  beaker_setfiles: beaker_setfiles(beaker_use_fqdn, beaker_pidfile_workaround),
14
14
  puppet_major_versions: puppet_major_versions,
15
15
  puppet_unit_test_matrix: puppet_unit_test_matrix,
16
+ github_action_test_matrix: github_action_test_matrix(use_fqdn: beaker_use_fqdn, pidfile_workaround: beaker_pidfile_workaround),
16
17
  }
17
18
  end
18
19
 
@@ -63,5 +64,31 @@ module PuppetMetadata
63
64
  '2.7'
64
65
  end
65
66
  end
67
+
68
+
69
+ def github_action_test_matrix(use_fqdn: false, pidfile_workaround: false)
70
+ matrix_include = []
71
+
72
+ metadata.operatingsystems.each do |os, releases|
73
+ releases&.each do |release|
74
+ puppet_major_versions.each do |puppet_version|
75
+ next unless AIO.has_aio_build?(os, release, puppet_version[:value])
76
+
77
+ setfile = PuppetMetadata::Beaker.os_release_to_setfile(os, release, use_fqdn: use_fqdn, pidfile_workaround: pidfile_workaround)
78
+ next unless setfile
79
+
80
+ matrix_include << {
81
+ setfile: {
82
+ name: setfile[1],
83
+ value: setfile[0],
84
+ },
85
+ puppet: puppet_version
86
+ }
87
+ end
88
+ end
89
+ end
90
+
91
+ matrix_include
92
+ end
66
93
  end
67
94
  end
@@ -141,7 +141,11 @@ module PuppetMetadata
141
141
  requirement = requirements['puppet']
142
142
  raise Exception, 'No Puppet requirement found' unless requirement
143
143
 
144
- (requirement.begin.major..requirement.end.major).select do |major|
144
+ # Current latest major is 7. It is highly recommended that modules
145
+ # actually specify exact bounds, but this prevents an infinite loop.
146
+ end_major = requirement.end == SemanticPuppet::Version::MAX ? 7 : requirement.end.major
147
+
148
+ (requirement.begin.major..end_major).select do |major|
145
149
  requirement.include?(SemanticPuppet::Version.new(major, 0, 0)) || requirement.include?(SemanticPuppet::Version.new(major, 99, 99))
146
150
  end
147
151
  end
@@ -22,9 +22,10 @@ module PuppetMetadata
22
22
  # https://wiki.debian.org/DebianReleases
23
23
  'Debian' => {
24
24
  # TODO: EOL is standard support, not the extended life cycle
25
+ '11' => nil, # '~2024',
25
26
  '10' => nil, # '~2022',
26
- '9' => nil, # '~2020',
27
- '8' => '2018-06-06',
27
+ '9' => '2020-07-06',
28
+ '8' => '2018-06-17',
28
29
  '7' => '2016-04-26',
29
30
  '6' => '2015-05-31',
30
31
  '5' => '2012-02-06',
metadata CHANGED
@@ -1,30 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet_metadata
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vox Pupuli
8
8
  - Ewoud Kohl van Wijngaarden
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-11-17 00:00:00.000000000 Z
12
+ date: 2021-08-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: metadata-json-lint
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: '2.0'
21
+ - - "<"
22
+ - !ruby/object:Gem::Version
23
+ version: '4'
21
24
  type: :runtime
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
25
- - - "~>"
28
+ - - ">="
26
29
  - !ruby/object:Gem::Version
27
30
  version: '2.0'
31
+ - - "<"
32
+ - !ruby/object:Gem::Version
33
+ version: '4'
28
34
  - !ruby/object:Gem::Dependency
29
35
  name: semantic_puppet
30
36
  requirement: !ruby/object:Gem::Requirement
@@ -121,6 +127,7 @@ files:
121
127
  - README.md
122
128
  - bin/metadata2gha
123
129
  - lib/puppet_metadata.rb
130
+ - lib/puppet_metadata/aio.rb
124
131
  - lib/puppet_metadata/beaker.rb
125
132
  - lib/puppet_metadata/github_actions.rb
126
133
  - lib/puppet_metadata/metadata.rb
@@ -129,7 +136,7 @@ homepage: http://github.com/voxpupuli/puppet_metadata
129
136
  licenses:
130
137
  - Apache-2.0
131
138
  metadata: {}
132
- post_install_message:
139
+ post_install_message:
133
140
  rdoc_options:
134
141
  - "--main"
135
142
  - README.md
@@ -146,8 +153,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
153
  - !ruby/object:Gem::Version
147
154
  version: '0'
148
155
  requirements: []
149
- rubygems_version: 3.1.4
150
- signing_key:
156
+ rubygems_version: 3.2.22
157
+ signing_key:
151
158
  specification_version: 4
152
159
  summary: Data structures for the Puppet Metadata
153
160
  test_files: []