dropsonde 0.0.7 → 0.0.8
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/CHANGELOG.md +16 -2
- data/lib/dropsonde/cache.rb +9 -3
- data/lib/dropsonde/metrics/dependencies.rb +3 -4
- data/lib/dropsonde/metrics/modules.rb +86 -7
- data/lib/dropsonde/metrics/platforms.rb +3 -4
- data/lib/dropsonde/metrics/puppetfiles.rb +1 -1
- data/lib/dropsonde/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05a4a694cd3915ec7c3683c7c8250fd1f857d07ef8fb6cae80c832404b35e3ce
|
4
|
+
data.tar.gz: 95245d11a85ef50539f86182cc458246178ffb24ff409bd04fbef9a0a23342ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a8eed2636ad7735accf3e3f6bacbcb16bae84514b3503e718eb96426ca0bbe6a39a06a9ea06727714b6e578ac4a3bd9ddd6fe76f9bebb4c1d63c084b3503c44b
|
7
|
+
data.tar.gz: 2d1c1cf87cef36cdcb196cab0c135970020389462b99b0ff8447dcefe3ae1f381da31a93ad29a34fedbfd6134eeba2b8c58a3ee30069021c74e3972a857f5950
|
data/CHANGELOG.md
CHANGED
@@ -1,11 +1,25 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
## [0.0.
|
3
|
+
## [0.0.8](https://github.com/puppetlabs/dropsonde/tree/0.0.8) (2022-08-29)
|
4
4
|
|
5
|
-
[Full Changelog](https://github.com/puppetlabs/dropsonde/compare/v0.0.
|
5
|
+
[Full Changelog](https://github.com/puppetlabs/dropsonde/compare/v0.0.7...0.0.8)
|
6
6
|
|
7
7
|
**Merged pull requests:**
|
8
8
|
|
9
|
+
- \[maint\] correct cache [\#29](https://github.com/puppetlabs/dropsonde/pull/29) ([binford2k](https://github.com/binford2k))
|
10
|
+
- \[maint\] rubocop style fixes [\#28](https://github.com/puppetlabs/dropsonde/pull/28) ([binford2k](https://github.com/binford2k))
|
11
|
+
- Fix example generation [\#27](https://github.com/puppetlabs/dropsonde/pull/27) ([binford2k](https://github.com/binford2k))
|
12
|
+
- unused modules [\#26](https://github.com/puppetlabs/dropsonde/pull/26) ([binford2k](https://github.com/binford2k))
|
13
|
+
- Adding changelog generation to Rakefile [\#23](https://github.com/puppetlabs/dropsonde/pull/23) ([binford2k](https://github.com/binford2k))
|
14
|
+
|
15
|
+
## [v0.0.7](https://github.com/puppetlabs/dropsonde/tree/v0.0.7) (2022-02-10)
|
16
|
+
|
17
|
+
[Full Changelog](https://github.com/puppetlabs/dropsonde/compare/v0.0.6...v0.0.7)
|
18
|
+
|
19
|
+
**Merged pull requests:**
|
20
|
+
|
21
|
+
- Releasing v00.7 [\#22](https://github.com/puppetlabs/dropsonde/pull/22) ([binford2k](https://github.com/binford2k))
|
22
|
+
- Releasing v00.7 [\#21](https://github.com/puppetlabs/dropsonde/pull/21) ([binford2k](https://github.com/binford2k))
|
9
23
|
- update server language [\#20](https://github.com/puppetlabs/dropsonde/pull/20) ([binford2k](https://github.com/binford2k))
|
10
24
|
- Updates the telemetry endpoint to a stable URL [\#19](https://github.com/puppetlabs/dropsonde/pull/19) ([MikaelSmith](https://github.com/MikaelSmith))
|
11
25
|
- docs updates now that it's shipped [\#18](https://github.com/puppetlabs/dropsonde/pull/18) ([binford2k](https://github.com/binford2k))
|
data/lib/dropsonde/cache.rb
CHANGED
@@ -7,11 +7,13 @@ require 'puppet_forge'
|
|
7
7
|
|
8
8
|
# cache class
|
9
9
|
class Dropsonde::Cache
|
10
|
+
@@cache = nil # rubocop:disable Style/ClassVars
|
10
11
|
@autoupdate = false
|
11
12
|
|
12
|
-
def initialize(path, ttl, autoupdate)
|
13
|
+
def initialize(path = '~/.dropsonde', ttl = 7, autoupdate = true) # rubocop:disable Style/OptionalBooleanParameter
|
14
|
+
path = File.expand_path(path)
|
13
15
|
FileUtils.mkdir_p(path)
|
14
|
-
@path = "#{
|
16
|
+
@path = "#{path}/forge.json"
|
15
17
|
@ttl = ttl
|
16
18
|
@autoupdate = autoupdate
|
17
19
|
|
@@ -27,10 +29,14 @@ class Dropsonde::Cache
|
|
27
29
|
PuppetForge.user_agent = 'Dropsonde Telemetry Client/0.0.1'
|
28
30
|
end
|
29
31
|
|
30
|
-
def modules
|
32
|
+
def self.modules
|
31
33
|
@@cache['modules']
|
32
34
|
end
|
33
35
|
|
36
|
+
def modules
|
37
|
+
Dropsonde::Cache.modules
|
38
|
+
end
|
39
|
+
|
34
40
|
def cache
|
35
41
|
@@cache
|
36
42
|
end
|
@@ -71,12 +71,11 @@ class Dropsonde::Metrics::Dependencies
|
|
71
71
|
# make it easier to write data aggregation queries without access to the
|
72
72
|
# actual private data that users have submitted.
|
73
73
|
|
74
|
-
dropsonde_cache = Dropsonde::Cache.new('foo', 7, true)
|
75
74
|
versions = ['>= 1.5.2', '>= 4.3.2', '>= 3.0.0 < 4.0.0', '>= 2.2.1 < 5.0.0', '>= 5.0.0 < 7.0.0', '>= 4.11.0']
|
76
75
|
[
|
77
|
-
dependencies:
|
78
|
-
|
79
|
-
|
76
|
+
dependencies: Dropsonde::Cache.modules
|
77
|
+
.sample(rand(250))
|
78
|
+
.map do |item|
|
80
79
|
{
|
81
80
|
name: item,
|
82
81
|
version_requirement: versions.sample,
|
@@ -5,6 +5,8 @@ class Dropsonde::Metrics::Modules
|
|
5
5
|
def self.initialize_modules
|
6
6
|
# require any libraries needed here -- no need to load puppet; it's already initialized
|
7
7
|
# All plugins are initialized before any metrics are generated.
|
8
|
+
require 'puppet/info_service'
|
9
|
+
require 'puppet/info_service/class_information_service'
|
8
10
|
end
|
9
11
|
|
10
12
|
def self.description
|
@@ -64,6 +66,46 @@ class Dropsonde::Metrics::Modules
|
|
64
66
|
"name": 'classes',
|
65
67
|
"type": 'RECORD',
|
66
68
|
},
|
69
|
+
{
|
70
|
+
"fields": [
|
71
|
+
{
|
72
|
+
"description": 'The module name',
|
73
|
+
"mode": 'NULLABLE',
|
74
|
+
"name": 'name',
|
75
|
+
"type": 'STRING',
|
76
|
+
},
|
77
|
+
{
|
78
|
+
"description": 'The module slug (author-name)',
|
79
|
+
"mode": 'NULLABLE',
|
80
|
+
"name": 'slug',
|
81
|
+
"type": 'STRING',
|
82
|
+
},
|
83
|
+
{
|
84
|
+
"description": 'The module version',
|
85
|
+
"mode": 'NULLABLE',
|
86
|
+
"name": 'version',
|
87
|
+
"type": 'STRING',
|
88
|
+
},
|
89
|
+
],
|
90
|
+
"description": 'List of modules whose classes are not declared in any environments.',
|
91
|
+
"mode": 'REPEATED',
|
92
|
+
"name": 'unused_modules',
|
93
|
+
"type": 'RECORD',
|
94
|
+
},
|
95
|
+
{
|
96
|
+
"fields": [
|
97
|
+
{
|
98
|
+
"description": 'The class name',
|
99
|
+
"mode": 'NULLABLE',
|
100
|
+
"name": 'name',
|
101
|
+
"type": 'STRING',
|
102
|
+
},
|
103
|
+
],
|
104
|
+
"description": 'List of unused classes in all environments.',
|
105
|
+
"mode": 'REPEATED',
|
106
|
+
"name": 'unused_classes',
|
107
|
+
"type": 'RECORD',
|
108
|
+
},
|
67
109
|
]
|
68
110
|
end
|
69
111
|
|
@@ -102,13 +144,45 @@ class Dropsonde::Metrics::Modules
|
|
102
144
|
count: results.count { |row| row['title'] == title },
|
103
145
|
}
|
104
146
|
}.compact
|
147
|
+
|
148
|
+
# now lets get a list of all classes so we can identify which are unused
|
149
|
+
infoservice = Puppet::InfoService::ClassInformationService.new
|
150
|
+
env_hash = {}
|
151
|
+
environments.each do |env|
|
152
|
+
manifests = Puppet.lookup(:environments).get(env).modules.reduce([]) do |acc, mod|
|
153
|
+
next acc unless mod.forge_module?
|
154
|
+
|
155
|
+
acc.concat mod.all_manifests
|
156
|
+
end
|
157
|
+
env_hash[env] = manifests
|
158
|
+
end
|
159
|
+
|
160
|
+
klasses_per_env = infoservice.classes_per_environment(env_hash)
|
161
|
+
|
162
|
+
installed_classes = klasses_per_env.reduce([]) do |klasses, (_key, env)|
|
163
|
+
names = env.reduce([]) do |acc, (_file, contents)|
|
164
|
+
acc.concat(contents[:classes].map { |c| c[:name] })
|
165
|
+
end
|
166
|
+
|
167
|
+
klasses.concat names
|
168
|
+
end
|
169
|
+
|
170
|
+
unused_modules = installed_classes.map { |c| c.split('::').first }.sort.uniq
|
171
|
+
classes.each { |c| unused_modules.delete(c[:name].split('::').first.downcase) }
|
172
|
+
|
173
|
+
unused_classes = installed_classes.dup
|
174
|
+
classes.each { |c| unused_classes.delete(c[:name].downcase) }
|
105
175
|
else
|
106
176
|
classes = []
|
177
|
+
unused_modules = []
|
178
|
+
unused_classes = []
|
107
179
|
end
|
108
180
|
|
109
181
|
[
|
110
182
|
{ modules: modules },
|
111
183
|
{ classes: classes },
|
184
|
+
{ unused_modules: unused_modules },
|
185
|
+
{ unused_classes: unused_classes },
|
112
186
|
]
|
113
187
|
end
|
114
188
|
|
@@ -119,25 +193,30 @@ class Dropsonde::Metrics::Modules
|
|
119
193
|
|
120
194
|
versions = ['1.3.2', '0.0.1', '0.1.2', '1.0.0', '3.0.2', '7.10', '6.1.0', '2.1.0', '1.4.0']
|
121
195
|
classes = ['', '::Config', '::Service', '::Server', '::Client', '::Packages']
|
122
|
-
dropsonde_cache = Dropsonde::Cache.new('foo', 7, true)
|
123
196
|
[
|
124
|
-
modules:
|
125
|
-
|
126
|
-
|
197
|
+
modules: Dropsonde::Cache.modules
|
198
|
+
.sample(rand(100))
|
199
|
+
.map do |item|
|
127
200
|
{
|
128
201
|
name: item.split('-').last,
|
129
202
|
slug: item,
|
130
203
|
version: versions.sample,
|
131
204
|
}
|
132
205
|
end,
|
133
|
-
classes:
|
134
|
-
|
135
|
-
|
206
|
+
classes: Dropsonde::Cache.modules
|
207
|
+
.sample(rand(500))
|
208
|
+
.map do |item|
|
136
209
|
{
|
137
210
|
name: item.split('-').last.capitalize + classes.sample,
|
138
211
|
count: rand(750),
|
139
212
|
}
|
140
213
|
end,
|
214
|
+
unused_modules: Dropsonde::Cache.modules
|
215
|
+
.sample(rand(500))
|
216
|
+
.map { |item| item.split('-').last },
|
217
|
+
unused_classes: Dropsonde::Cache.modules
|
218
|
+
.sample(rand(500))
|
219
|
+
.map { |item| item.split('-').last.capitalize + classes.sample },
|
141
220
|
]
|
142
221
|
end
|
143
222
|
|
@@ -100,10 +100,9 @@ class Dropsonde::Metrics::Platforms
|
|
100
100
|
platforms = %w[RedHat Debian Windows Suse FreeBSD Darwin Archlinux AIX]
|
101
101
|
classes = ['', '::Config', '::Service', '::Server', '::Client', '::Packages']
|
102
102
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
.map { |item|
|
103
|
+
data = Dropsonde::Cache.modules
|
104
|
+
.sample(rand(35))
|
105
|
+
.map { |item|
|
107
106
|
name = item.split('-').last.capitalize + classes.sample
|
108
107
|
|
109
108
|
rand(5).times.map do
|
@@ -54,7 +54,7 @@ class Dropsonde::Metrics::Puppetfiles
|
|
54
54
|
next unless File.file? puppetfile
|
55
55
|
|
56
56
|
tokens = Ripper.sexp(File.read(puppetfile)).flatten
|
57
|
-
indices = tokens.map.with_index { |a, i| a == :command ? i : nil }.compact
|
57
|
+
indices = tokens.map.with_index { |a, i| (a == :command) ? i : nil }.compact
|
58
58
|
|
59
59
|
indices.map { |i| tokens[i + 2] }
|
60
60
|
}.flatten.compact
|
data/lib/dropsonde/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dropsonde
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Ford
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -164,7 +164,7 @@ homepage: https://github.com/puppetlabs/dropsonde
|
|
164
164
|
licenses:
|
165
165
|
- Apache-2.0
|
166
166
|
metadata: {}
|
167
|
-
post_install_message:
|
167
|
+
post_install_message:
|
168
168
|
rdoc_options: []
|
169
169
|
require_paths:
|
170
170
|
- lib
|
@@ -179,8 +179,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
181
|
requirements: []
|
182
|
-
rubygems_version: 3.1.
|
183
|
-
signing_key:
|
182
|
+
rubygems_version: 3.1.6
|
183
|
+
signing_key:
|
184
184
|
specification_version: 4
|
185
185
|
summary: A simple telemetry probe for gathering usage information about Puppet infrastructures.
|
186
186
|
test_files: []
|