puppet_facts 0.1.0 → 0.2.1
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.
data/CHANGELOG.md
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
2014-08-07 Release 0.2.1
|
2
|
+
|
3
|
+
Bugfixes:
|
4
|
+
- Rename opensuse- to sles- in PE3.3.
|
5
|
+
|
6
|
+
2014-08-07 Release 0.2.0
|
7
|
+
|
8
|
+
Features:
|
9
|
+
- Add `on_pe_supported_platforms` to take an argument of target platforms
|
10
|
+
- Add `on_pe_unsupported_platforms` to perform the inverse
|
11
|
+
- Add ability to only check PE versions that match metadata requirements
|
File without changes
|
File without changes
|
data/lib/puppet_facts.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
require 'json'
|
2
|
+
require 'puppet'
|
3
|
+
# From puppet
|
4
|
+
require 'semver'
|
2
5
|
|
3
6
|
module PuppetFacts
|
4
7
|
|
@@ -15,17 +18,45 @@ module PuppetFacts
|
|
15
18
|
PuppetFacts.pe_platforms[pe_version]
|
16
19
|
end
|
17
20
|
|
18
|
-
def on_pe_supported_platforms
|
19
|
-
|
21
|
+
def on_pe_supported_platforms(targets=nil)
|
22
|
+
targets = Array(targets) if targets
|
23
|
+
|
24
|
+
# TODO This should filter based on set_pe_supported_platforms
|
20
25
|
facts = PuppetFacts.pe_platform_facts
|
21
26
|
sup_facts = Hash.new
|
22
|
-
#TODO how do we compare against this?
|
23
|
-
# "name": "pe",
|
24
|
-
# "version_requirement": "3.2.x"
|
25
|
-
# "version_requirement": ">= 3.2.0 < 3.4.0"
|
26
27
|
facts.each do |pe_ver,platforms|
|
27
|
-
|
28
|
-
|
28
|
+
pe_semver = "#{pe_ver.sub(/^PE/,'')}.0"
|
29
|
+
if SemVer[PuppetFacts.get_pe_requirement] === SemVer.new(pe_semver)
|
30
|
+
sup_facts[pe_ver] = platforms.select do |platform, facts|
|
31
|
+
if targets
|
32
|
+
PuppetFacts.meta_supported_platforms.include?(platform) && targets.include?(platform)
|
33
|
+
else
|
34
|
+
PuppetFacts.meta_supported_platforms.include?(platform)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
sup_facts
|
40
|
+
end
|
41
|
+
|
42
|
+
# We need the inverse, this is kind of ugly. I don't want to cram it into the
|
43
|
+
# other method however.
|
44
|
+
def on_pe_unsupported_platforms(targets=nil)
|
45
|
+
targets = Array(targets) if targets
|
46
|
+
|
47
|
+
# TODO This should filter based on set_pe_supported_platforms
|
48
|
+
facts = PuppetFacts.pe_platform_facts
|
49
|
+
sup_facts = Hash.new
|
50
|
+
facts.each do |pe_ver,platforms|
|
51
|
+
pe_semver = "#{pe_ver.sub(/^PE/,'')}.0"
|
52
|
+
if SemVer[PuppetFacts.get_pe_requirement] === SemVer.new(pe_semver)
|
53
|
+
sup_facts[pe_ver] = platforms.select do |platform, facts|
|
54
|
+
if targets
|
55
|
+
! PuppetFacts.meta_supported_platforms.include?(platform) && ! targets.include?(platform)
|
56
|
+
else
|
57
|
+
! PuppetFacts.meta_supported_platforms.include?(platform)
|
58
|
+
end
|
59
|
+
end
|
29
60
|
end
|
30
61
|
end
|
31
62
|
sup_facts
|
@@ -44,15 +75,20 @@ module PuppetFacts
|
|
44
75
|
def self.pe_versions
|
45
76
|
@pe_versions ||= get_pe_versions
|
46
77
|
end
|
78
|
+
|
79
|
+
# @api private
|
47
80
|
def self.get_pe_versions
|
48
81
|
@pe_dirs.collect do |dir|
|
49
82
|
File.basename(dir)
|
50
83
|
end
|
51
84
|
end
|
52
85
|
|
86
|
+
# @api private
|
53
87
|
def self.pe_platforms
|
54
88
|
@pe_platforms ||= get_pe_platforms
|
55
89
|
end
|
90
|
+
|
91
|
+
# @api private
|
56
92
|
def self.get_pe_platforms
|
57
93
|
@pe_dirs.inject({}) do |memo,pe_dir|
|
58
94
|
pe_version = File.basename(pe_dir)
|
@@ -66,18 +102,24 @@ module PuppetFacts
|
|
66
102
|
end
|
67
103
|
end
|
68
104
|
|
105
|
+
# @api private
|
69
106
|
def self.pe_facts_paths
|
70
107
|
@pe_facts_paths ||= get_pe_facts_paths
|
71
108
|
end
|
109
|
+
|
110
|
+
# @api private
|
72
111
|
def self.get_pe_facts_paths
|
73
112
|
@pe_dirs.collect do |dir|
|
74
113
|
Dir[File.join(dir,"*")]
|
75
114
|
end.flatten
|
76
115
|
end
|
77
116
|
|
117
|
+
# @api private
|
78
118
|
def self.pe_platform_facts
|
79
119
|
@pe_platform_facts ||= get_pe_platform_facts
|
80
120
|
end
|
121
|
+
|
122
|
+
# @api private
|
81
123
|
def self.get_pe_platform_facts
|
82
124
|
pe_facts_paths.inject({}) do |memo,file|
|
83
125
|
pe_platform = File.basename(file.gsub(/\.facts/, ''))
|
@@ -92,10 +134,12 @@ module PuppetFacts
|
|
92
134
|
end
|
93
135
|
end
|
94
136
|
|
137
|
+
# @api private
|
95
138
|
def self.meta_supported_platforms
|
96
139
|
@meta_supported_platforms ||= get_meta_supported_platforms
|
97
140
|
end
|
98
141
|
|
142
|
+
# @api private
|
99
143
|
def self.meta_to_facts(input)
|
100
144
|
meta_to_facts = {
|
101
145
|
'RedHat' => 'redhat',
|
@@ -118,12 +162,10 @@ module PuppetFacts
|
|
118
162
|
end
|
119
163
|
end
|
120
164
|
|
165
|
+
# @api private
|
121
166
|
def self.get_meta_supported_platforms
|
122
|
-
|
123
|
-
|
124
|
-
end
|
125
|
-
metadata = JSON.parse(File.read('metadata.json'))
|
126
|
-
if metadata.nil? or metadata['operatingsystem_support'].nil?
|
167
|
+
metadata = get_metadata
|
168
|
+
if metadata['operatingsystem_support'].nil?
|
127
169
|
fail StandardError, "Unknown operatingsystem support"
|
128
170
|
end
|
129
171
|
os_sup = metadata['operatingsystem_support']
|
@@ -140,4 +182,31 @@ module PuppetFacts
|
|
140
182
|
end
|
141
183
|
end.flatten
|
142
184
|
end
|
185
|
+
|
186
|
+
# @api private
|
187
|
+
def self.get_metadata
|
188
|
+
if ! File.file?('metadata.json')
|
189
|
+
fail StandardError, "Can't find metadata.json... dunno why"
|
190
|
+
end
|
191
|
+
metadata = JSON.parse(File.read('metadata.json'))
|
192
|
+
if metadata.nil?
|
193
|
+
fail StandardError, "Metadata is empty"
|
194
|
+
end
|
195
|
+
metadata
|
196
|
+
end
|
197
|
+
|
198
|
+
# @api private
|
199
|
+
def self.get_pe_requirement
|
200
|
+
metadata = get_metadata
|
201
|
+
if metadata['requirements'].nil?
|
202
|
+
fail StandardError, 'No requirements in metadata'
|
203
|
+
end
|
204
|
+
pe_requirement = metadata['requirements'].select do |x|
|
205
|
+
x['name'] == 'pe'
|
206
|
+
end
|
207
|
+
if pe_requirement.empty?
|
208
|
+
fail StandardError, 'No PE requirement found in metadata'
|
209
|
+
end
|
210
|
+
pe_requirement.first['version_requirement']
|
211
|
+
end
|
143
212
|
end
|
data/lib/puppet_facts/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet_facts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-07
|
12
|
+
date: 2014-08-07 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Contains facts from many PE and POSS systems
|
15
15
|
email:
|
@@ -19,6 +19,7 @@ extensions: []
|
|
19
19
|
extra_rdoc_files: []
|
20
20
|
files:
|
21
21
|
- 3.6/ubuntu-1404-x86_64.facts
|
22
|
+
- CHANGELOG.md
|
22
23
|
- PE2.8/centos-5-i386.facts
|
23
24
|
- PE2.8/centos-5-x86_64.facts
|
24
25
|
- PE2.8/centos-6-i386.facts
|
@@ -129,8 +130,6 @@ files:
|
|
129
130
|
- PE3.3/debian-6-x86_64.facts
|
130
131
|
- PE3.3/debian-7-i386.facts
|
131
132
|
- PE3.3/debian-7-x86_64.facts
|
132
|
-
- PE3.3/opensuse-11-i386.facts
|
133
|
-
- PE3.3/opensuse-11-x86_64.facts
|
134
133
|
- PE3.3/oracle-5-i386.facts
|
135
134
|
- PE3.3/oracle-5-x86_64.facts
|
136
135
|
- PE3.3/oracle-6-i386.facts
|
@@ -144,6 +143,8 @@ files:
|
|
144
143
|
- PE3.3/scientific-5-x86_64.facts
|
145
144
|
- PE3.3/scientific-6-i386.facts
|
146
145
|
- PE3.3/scientific-6-x86_64.facts
|
146
|
+
- PE3.3/sles-11-i386.facts
|
147
|
+
- PE3.3/sles-11-x86_64.facts
|
147
148
|
- PE3.3/ubuntu-1004-i386.facts
|
148
149
|
- PE3.3/ubuntu-1004-x86_64.facts
|
149
150
|
- PE3.3/ubuntu-1204-i386.facts
|