puppet 7.17.0 → 7.18.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +17 -17
- data/lib/puppet/agent.rb +31 -13
- data/lib/puppet/info_service/task_information_service.rb +1 -1
- data/lib/puppet/module/task.rb +5 -1
- data/lib/puppet/version.rb +1 -1
- data/man/man5/puppet.conf.5 +2 -2
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/unit/agent_spec.rb +22 -0
- data/spec/unit/info_service_spec.rb +11 -3
- data/spec/unit/task_spec.rb +56 -13
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc377db6a973ccb5b9b583f877d4e610ef783f3cc53e0dbb35f8cd22b2413bb4
|
4
|
+
data.tar.gz: 439e9ec7147b6762286c967e20891056a6cac3f8924aaba80232964de8f32f01
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3d68870fced027cd769461c82f24af918fc3ef804be9caa800240c92eb518ff1b2eef9603ec8ba7d20b28bcdb9676927ddb1e596ccd148a501c77fed6e993b2
|
7
|
+
data.tar.gz: 149c2d818067d98dc89341854c608f9e45c02c62eaea024a92cf804895c455229a3f3cf7975344e1ab5334b17d7917faa903769ac1b39abc9d44f2938579d34e
|
data/Gemfile.lock
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
GIT
|
2
2
|
remote: https://github.com/puppetlabs/packaging
|
3
|
-
revision:
|
3
|
+
revision: 6edc2f8e4ebe3cbea96c3af9c294bcd6e2953648
|
4
4
|
branch: 1.0.x
|
5
5
|
specs:
|
6
|
-
packaging (0.
|
6
|
+
packaging (0.107.0.9.g6edc2f8)
|
7
7
|
apt_stage_artifacts
|
8
8
|
artifactory (~> 3)
|
9
9
|
csv (= 3.1.5)
|
@@ -15,7 +15,7 @@ GIT
|
|
15
15
|
PATH
|
16
16
|
remote: .
|
17
17
|
specs:
|
18
|
-
puppet (7.
|
18
|
+
puppet (7.18.0)
|
19
19
|
CFPropertyList (~> 2.2)
|
20
20
|
concurrent-ruby (~> 1.0)
|
21
21
|
deep_merge (~> 1.0)
|
@@ -33,7 +33,7 @@ GEM
|
|
33
33
|
CFPropertyList (2.3.6)
|
34
34
|
addressable (2.8.0)
|
35
35
|
public_suffix (>= 2.0.2, < 5.0)
|
36
|
-
apt_stage_artifacts (0.
|
36
|
+
apt_stage_artifacts (0.11.0)
|
37
37
|
docopt
|
38
38
|
artifactory (3.0.15)
|
39
39
|
ast (2.4.2)
|
@@ -48,7 +48,7 @@ GEM
|
|
48
48
|
digest-crc (0.6.4)
|
49
49
|
rake (>= 12.0.0, < 14.0.0)
|
50
50
|
docopt (0.6.1)
|
51
|
-
facter (4.2.
|
51
|
+
facter (4.2.10)
|
52
52
|
hocon (~> 1.3)
|
53
53
|
thor (>= 1.0.1, < 2.0)
|
54
54
|
faraday (2.3.0)
|
@@ -64,7 +64,7 @@ GEM
|
|
64
64
|
fast_gettext (~> 1.1.0)
|
65
65
|
gettext (>= 3.0.2, < 3.3.0)
|
66
66
|
locale
|
67
|
-
google-apis-core (0.
|
67
|
+
google-apis-core (0.7.0)
|
68
68
|
addressable (~> 2.5, >= 2.5.1)
|
69
69
|
googleauth (>= 0.16.2, < 2.a)
|
70
70
|
httpclient (>= 2.8.1, < 3.a)
|
@@ -73,17 +73,17 @@ GEM
|
|
73
73
|
retriable (>= 2.0, < 4.a)
|
74
74
|
rexml
|
75
75
|
webrick
|
76
|
-
google-apis-iamcredentials_v1 (0.
|
77
|
-
google-apis-core (>= 0.
|
78
|
-
google-apis-storage_v1 (0.
|
79
|
-
google-apis-core (>= 0.
|
76
|
+
google-apis-iamcredentials_v1 (0.13.0)
|
77
|
+
google-apis-core (>= 0.7, < 2.a)
|
78
|
+
google-apis-storage_v1 (0.18.0)
|
79
|
+
google-apis-core (>= 0.7, < 2.a)
|
80
80
|
google-cloud-core (1.6.0)
|
81
81
|
google-cloud-env (~> 1.0)
|
82
82
|
google-cloud-errors (~> 1.0)
|
83
83
|
google-cloud-env (1.6.0)
|
84
84
|
faraday (>= 0.17.3, < 3.0)
|
85
85
|
google-cloud-errors (1.2.0)
|
86
|
-
google-cloud-storage (1.
|
86
|
+
google-cloud-storage (1.37.0)
|
87
87
|
addressable (~> 2.8)
|
88
88
|
digest-crc (~> 0.4)
|
89
89
|
google-apis-iamcredentials_v1 (~> 0.1)
|
@@ -91,7 +91,7 @@ GEM
|
|
91
91
|
google-cloud-core (~> 1.6)
|
92
92
|
googleauth (>= 0.16.2, < 2.a)
|
93
93
|
mini_mime (~> 1.0)
|
94
|
-
googleauth (1.
|
94
|
+
googleauth (1.2.0)
|
95
95
|
faraday (>= 0.17.3, < 3.a)
|
96
96
|
jwt (>= 1.4, < 3.0)
|
97
97
|
memoist (~> 0.16)
|
@@ -109,14 +109,14 @@ GEM
|
|
109
109
|
httpclient (2.8.3)
|
110
110
|
json-schema (2.8.1)
|
111
111
|
addressable (>= 2.4)
|
112
|
-
jwt (2.
|
112
|
+
jwt (2.4.1)
|
113
113
|
locale (2.1.3)
|
114
114
|
memoist (0.16.2)
|
115
115
|
memory_profiler (1.0.0)
|
116
116
|
method_source (1.0.0)
|
117
117
|
mini_mime (1.1.2)
|
118
118
|
minitar (0.9)
|
119
|
-
msgpack (1.5.
|
119
|
+
msgpack (1.5.3)
|
120
120
|
multi_json (1.15.0)
|
121
121
|
mustache (1.1.1)
|
122
122
|
optimist (3.0.1)
|
@@ -182,9 +182,9 @@ GEM
|
|
182
182
|
ruby2_keywords (0.0.5)
|
183
183
|
scanf (1.0.0)
|
184
184
|
semantic_puppet (1.0.4)
|
185
|
-
signet (0.
|
185
|
+
signet (0.17.0)
|
186
186
|
addressable (~> 2.8)
|
187
|
-
faraday (>= 0.17.5, < 3.
|
187
|
+
faraday (>= 0.17.5, < 3.a)
|
188
188
|
jwt (>= 1.5, < 3.0)
|
189
189
|
multi_json (~> 1.10)
|
190
190
|
text (1.3.1)
|
@@ -198,7 +198,7 @@ GEM
|
|
198
198
|
crack (>= 0.3.2)
|
199
199
|
hashdiff (>= 0.4.0, < 2.0.0)
|
200
200
|
webrick (1.7.0)
|
201
|
-
yard (0.9.
|
201
|
+
yard (0.9.28)
|
202
202
|
webrick (~> 1.7.0)
|
203
203
|
|
204
204
|
PLATFORMS
|
data/lib/puppet/agent.rb
CHANGED
@@ -38,15 +38,25 @@ class Puppet::Agent
|
|
38
38
|
# Perform a run with our client.
|
39
39
|
def run(client_options = {})
|
40
40
|
if disabled?
|
41
|
-
|
41
|
+
log_disabled_message
|
42
42
|
return
|
43
43
|
end
|
44
44
|
|
45
45
|
result = nil
|
46
46
|
wait_for_lock_deadline = nil
|
47
47
|
block_run = Puppet::Application.controlled_run do
|
48
|
-
# splay may sleep for awhile!
|
49
|
-
|
48
|
+
# splay may sleep for awhile when running onetime! If not onetime, then
|
49
|
+
# the job scheduler splays (only once) so that agents assign themselves a
|
50
|
+
# slot within the splay interval.
|
51
|
+
do_splay = client_options.fetch(:splay, Puppet[:splay])
|
52
|
+
if do_splay
|
53
|
+
splay(do_splay)
|
54
|
+
|
55
|
+
if disabled?
|
56
|
+
log_disabled_message
|
57
|
+
break
|
58
|
+
end
|
59
|
+
end
|
50
60
|
|
51
61
|
# waiting for certs may sleep for awhile depending on onetime, waitforcert and maxwaitforcert!
|
52
62
|
# this needs to happen before forking so that if we fail to obtain certs and try to exit, then
|
@@ -59,14 +69,19 @@ class Puppet::Agent
|
|
59
69
|
begin
|
60
70
|
# lock may sleep for awhile depending on waitforlock and maxwaitforlock!
|
61
71
|
lock do
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
72
|
+
if disabled?
|
73
|
+
log_disabled_message
|
74
|
+
nil
|
75
|
+
else
|
76
|
+
# NOTE: Timeout is pretty heinous as the location in which it
|
77
|
+
# throws an error is entirely unpredictable, which means that
|
78
|
+
# it can interrupt code blocks that perform cleanup or enforce
|
79
|
+
# sanity. The only thing a Puppet agent should do after this
|
80
|
+
# error is thrown is die with as much dignity as possible.
|
81
|
+
Timeout.timeout(Puppet[:runtimeout], RunTimeoutError) do
|
82
|
+
Puppet.override(ssl_context: ssl_context) do
|
83
|
+
client.run(client_args)
|
84
|
+
end
|
70
85
|
end
|
71
86
|
end
|
72
87
|
end
|
@@ -88,8 +103,7 @@ class Puppet::Agent
|
|
88
103
|
end
|
89
104
|
rescue RunTimeoutError => detail
|
90
105
|
Puppet.log_exception(detail, _("Execution of %{client_class} did not complete within %{runtimeout} seconds and was terminated.") %
|
91
|
-
{client_class: client_class,
|
92
|
-
runtimeout: Puppet[:runtimeout]})
|
106
|
+
{client_class: client_class, runtimeout: Puppet[:runtimeout]})
|
93
107
|
nil
|
94
108
|
rescue StandardError => detail
|
95
109
|
Puppet.log_exception(detail, _("Could not run %{client_class}: %{detail}") % { client_class: client_class, detail: detail })
|
@@ -155,4 +169,8 @@ class Puppet::Agent
|
|
155
169
|
sm = Puppet::SSL::StateMachine.new(waitforcert: waitforcert, onetime: Puppet[:onetime])
|
156
170
|
sm.ensure_client_certificate
|
157
171
|
end
|
172
|
+
|
173
|
+
def log_disabled_message
|
174
|
+
Puppet.notice _("Skipping run of %{client_class}; administratively disabled (Reason: '%{disable_message}');\nUse 'puppet agent --enable' to re-enable.") % { client_class: client_class, disable_message: disable_message }
|
175
|
+
end
|
158
176
|
end
|
@@ -6,7 +6,7 @@ class Puppet::InfoService::TaskInformationService
|
|
6
6
|
env = Puppet.lookup(:environments).get!(environment_name)
|
7
7
|
env.modules.map do |mod|
|
8
8
|
mod.tasks.map do |task|
|
9
|
-
{:module => {:name => task.module.name}, :name => task.name}
|
9
|
+
{:module => {:name => task.module.name}, :name => task.name, :metadata => task.metadata}
|
10
10
|
end
|
11
11
|
end.flatten
|
12
12
|
end
|
data/lib/puppet/module/task.rb
CHANGED
@@ -52,6 +52,10 @@ class Puppet::Module
|
|
52
52
|
return false
|
53
53
|
end
|
54
54
|
|
55
|
+
def self.is_tasks_file?(path)
|
56
|
+
File.file?(path) && is_tasks_filename?(path)
|
57
|
+
end
|
58
|
+
|
55
59
|
# Determine whether a file has a legal name for either a task's executable or metadata file.
|
56
60
|
def self.is_tasks_filename?(path)
|
57
61
|
name_less_extension = File.basename(path, '.*')
|
@@ -200,7 +204,7 @@ class Puppet::Module
|
|
200
204
|
|
201
205
|
def self.tasks_in_module(pup_module)
|
202
206
|
task_files = Dir.glob(File.join(pup_module.tasks_directory, '*'))
|
203
|
-
.keep_if { |f|
|
207
|
+
.keep_if { |f| is_tasks_file?(f) }
|
204
208
|
|
205
209
|
module_executables = task_files.reject(&method(:is_tasks_metadata_filename?)).map.to_a
|
206
210
|
|
data/lib/puppet/version.rb
CHANGED
data/man/man5/puppet.conf.5
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPETCONF" "5" "
|
4
|
+
.TH "PUPPETCONF" "5" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
\fBThis page is autogenerated; any changes will get overwritten\fR
|
6
6
|
.
|
7
7
|
.SH "Configuration settings"
|
@@ -929,7 +929,7 @@ The time to wait for data to be read from an HTTP connection\. If nothing is rea
|
|
929
929
|
The HTTP User\-Agent string to send when making network requests\.
|
930
930
|
.
|
931
931
|
.IP "\(bu" 4
|
932
|
-
\fIDefault\fR: \fBPuppet/7\.
|
932
|
+
\fIDefault\fR: \fBPuppet/7\.18\.0 Ruby/2\.7\.5\-p203 (x86_64\-linux)\fR
|
933
933
|
.
|
934
934
|
.IP "" 0
|
935
935
|
.
|
data/man/man8/puppet-agent.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-AGENT" "8" "
|
4
|
+
.TH "PUPPET\-AGENT" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-agent\fR \- The puppet agent daemon
|
data/man/man8/puppet-apply.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-APPLY" "8" "
|
4
|
+
.TH "PUPPET\-APPLY" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-apply\fR \- Apply Puppet manifests locally
|
data/man/man8/puppet-catalog.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-CATALOG" "8" "
|
4
|
+
.TH "PUPPET\-CATALOG" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-catalog\fR \- Compile, save, view, and convert catalogs\.
|
data/man/man8/puppet-config.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-CONFIG" "8" "
|
4
|
+
.TH "PUPPET\-CONFIG" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-config\fR \- Interact with Puppet\'s settings\.
|
data/man/man8/puppet-describe.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-DESCRIBE" "8" "
|
4
|
+
.TH "PUPPET\-DESCRIBE" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-describe\fR \- Display help about resource types
|
data/man/man8/puppet-device.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-DEVICE" "8" "
|
4
|
+
.TH "PUPPET\-DEVICE" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-device\fR \- Manage remote network devices
|
data/man/man8/puppet-doc.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-DOC" "8" "
|
4
|
+
.TH "PUPPET\-DOC" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-doc\fR \- Generate Puppet references
|
data/man/man8/puppet-epp.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-EPP" "8" "
|
4
|
+
.TH "PUPPET\-EPP" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-epp\fR \- Interact directly with the EPP template parser/renderer\.
|
data/man/man8/puppet-facts.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-FACTS" "8" "
|
4
|
+
.TH "PUPPET\-FACTS" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-facts\fR \- Retrieve and store facts\.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-FILEBUCKET" "8" "
|
4
|
+
.TH "PUPPET\-FILEBUCKET" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-filebucket\fR \- Store and retrieve files in a filebucket
|
data/man/man8/puppet-generate.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-GENERATE" "8" "
|
4
|
+
.TH "PUPPET\-GENERATE" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-generate\fR \- Generates Puppet code from Ruby definitions\.
|
data/man/man8/puppet-help.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-HELP" "8" "
|
4
|
+
.TH "PUPPET\-HELP" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-help\fR \- Display Puppet help\.
|
data/man/man8/puppet-lookup.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-LOOKUP" "8" "
|
4
|
+
.TH "PUPPET\-LOOKUP" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-lookup\fR \- Interactive Hiera lookup
|
data/man/man8/puppet-module.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-MODULE" "8" "
|
4
|
+
.TH "PUPPET\-MODULE" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-module\fR \- Creates, installs and searches for modules on the Puppet Forge\.
|
data/man/man8/puppet-node.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-NODE" "8" "
|
4
|
+
.TH "PUPPET\-NODE" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-node\fR \- View and manage node definitions\.
|
data/man/man8/puppet-parser.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-PARSER" "8" "
|
4
|
+
.TH "PUPPET\-PARSER" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-parser\fR \- Interact directly with the parser\.
|
data/man/man8/puppet-plugin.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-PLUGIN" "8" "
|
4
|
+
.TH "PUPPET\-PLUGIN" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-plugin\fR \- Interact with the Puppet plugin system\.
|
data/man/man8/puppet-report.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-REPORT" "8" "
|
4
|
+
.TH "PUPPET\-REPORT" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-report\fR \- Create, display, and submit reports\.
|
data/man/man8/puppet-resource.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-RESOURCE" "8" "
|
4
|
+
.TH "PUPPET\-RESOURCE" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-resource\fR \- The resource abstraction layer shell
|
data/man/man8/puppet-script.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-SCRIPT" "8" "
|
4
|
+
.TH "PUPPET\-SCRIPT" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-script\fR \- Run a puppet manifests as a script without compiling a catalog
|
data/man/man8/puppet-ssl.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET\-SSL" "8" "
|
4
|
+
.TH "PUPPET\-SSL" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-ssl\fR \- Manage SSL keys and certificates for puppet SSL clients
|
data/man/man8/puppet.8
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "PUPPET" "8" "
|
4
|
+
.TH "PUPPET" "8" "July 2022" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\fR
|
@@ -25,4 +25,4 @@ Specialized:
|
|
25
25
|
catalog Compile, save, view, and convert catalogs\. describe Display help about resource types device Manage remote network devices doc Generate Puppet references epp Interact directly with the EPP template parser/renderer\. facts Retrieve and store facts\. filebucket Store and retrieve files in a filebucket generate Generates Puppet code from Ruby definitions\. node View and manage node definitions\. parser Interact directly with the parser\. plugin Interact with the Puppet plugin system\. script Run a puppet manifests as a script without compiling a catalog ssl Manage SSL keys and certificates for puppet SSL clients
|
26
26
|
.
|
27
27
|
.P
|
28
|
-
See \'puppet help \fIsubcommand\fR \fIaction\fR\' for help on a specific subcommand action\. See \'puppet help \fIsubcommand\fR\' for help on a specific subcommand\. Puppet v7\.
|
28
|
+
See \'puppet help \fIsubcommand\fR \fIaction\fR\' for help on a specific subcommand action\. See \'puppet help \fIsubcommand\fR\' for help on a specific subcommand\. Puppet v7\.18\.0
|
data/spec/unit/agent_spec.rb
CHANGED
@@ -101,6 +101,8 @@ describe Puppet::Agent do
|
|
101
101
|
end
|
102
102
|
|
103
103
|
it "should splay" do
|
104
|
+
Puppet[:splay] = true
|
105
|
+
|
104
106
|
expect(@agent).to receive(:splay)
|
105
107
|
|
106
108
|
@agent.run
|
@@ -183,6 +185,26 @@ describe Puppet::Agent do
|
|
183
185
|
expect(@agent.run).to eq(:result)
|
184
186
|
end
|
185
187
|
|
188
|
+
it "should check if it's disabled after splaying and log a message" do
|
189
|
+
Puppet[:splay] = true
|
190
|
+
Puppet[:splaylimit] = '5s'
|
191
|
+
Puppet[:onetime] = true
|
192
|
+
|
193
|
+
expect(@agent).to receive(:disabled?).and_return(false, true)
|
194
|
+
|
195
|
+
allow(Puppet).to receive(:notice).and_call_original
|
196
|
+
expect(Puppet).to receive(:notice).with(/Skipping run of .*; administratively disabled.*/)
|
197
|
+
@agent.run
|
198
|
+
end
|
199
|
+
|
200
|
+
it "should check if it's disabled after acquiring the lock and log a message" do
|
201
|
+
expect(@agent).to receive(:disabled?).and_return(false, true)
|
202
|
+
|
203
|
+
allow(Puppet).to receive(:notice).and_call_original
|
204
|
+
expect(Puppet).to receive(:notice).with(/Skipping run of .*; administratively disabled.*/)
|
205
|
+
@agent.run
|
206
|
+
end
|
207
|
+
|
186
208
|
describe "and a puppet agent is already running" do
|
187
209
|
before(:each) do
|
188
210
|
allow_any_instance_of(Object).to receive(:sleep)
|
@@ -11,6 +11,9 @@ describe "Puppet::InfoService" do
|
|
11
11
|
|
12
12
|
context 'task information service' do
|
13
13
|
let(:mod_name) { 'test1' }
|
14
|
+
let(:metadata) {
|
15
|
+
{ "private" => true,
|
16
|
+
"description" => "a task that does a thing" } }
|
14
17
|
let(:task_name) { "#{mod_name}::thingtask" }
|
15
18
|
let(:modpath) { tmpdir('modpath') }
|
16
19
|
let(:env_name) { 'testing' }
|
@@ -20,8 +23,13 @@ describe "Puppet::InfoService" do
|
|
20
23
|
context 'tasks_per_environment method' do
|
21
24
|
it "returns task data for the tasks in an environment" do
|
22
25
|
Puppet.override(:environments => env_loader) do
|
23
|
-
PuppetSpec::Modules.create(mod_name, modpath, {:environment => env,
|
24
|
-
|
26
|
+
PuppetSpec::Modules.create(mod_name, modpath, {:environment => env,
|
27
|
+
:tasks => [['thingtask',
|
28
|
+
{:name => 'thingtask.json',
|
29
|
+
:content => metadata.to_json}]]})
|
30
|
+
expect(Puppet::InfoService.tasks_per_environment(env_name)).to eq([{:name => task_name,
|
31
|
+
:module => {:name => mod_name},
|
32
|
+
:metadata => metadata} ])
|
25
33
|
end
|
26
34
|
end
|
27
35
|
|
@@ -207,7 +215,7 @@ describe "Puppet::InfoService" do
|
|
207
215
|
end
|
208
216
|
end
|
209
217
|
end
|
210
|
-
|
218
|
+
|
211
219
|
context 'plan information service' do
|
212
220
|
let(:mod_name) { 'test1' }
|
213
221
|
let(:plan_name) { "#{mod_name}::thingplan" }
|
data/spec/unit/task_spec.rb
CHANGED
@@ -24,6 +24,7 @@ describe Puppet::Module::Task do
|
|
24
24
|
it "constructs tasks as expected when every task has a metadata file with the same name (besides extension)" do
|
25
25
|
task_files = %w{task1.json task1 task2.json task2.exe task3.json task3.sh}.map { |bn| "#{tasks_path}/#{bn}" }
|
26
26
|
expect(Dir).to receive(:glob).with(tasks_glob).and_return(task_files)
|
27
|
+
task_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
27
28
|
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
28
29
|
allow_any_instance_of(Puppet::Module::Task).to receive(:metadata).and_return({})
|
29
30
|
|
@@ -52,6 +53,7 @@ describe Puppet::Module::Task do
|
|
52
53
|
it "constructs tasks as expected when some tasks don't have a metadata file" do
|
53
54
|
task_files = %w{task1 task2.exe task3.json task3.sh}.map { |bn| "#{tasks_path}/#{bn}" }
|
54
55
|
expect(Dir).to receive(:glob).with(tasks_glob).and_return(task_files)
|
56
|
+
task_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
55
57
|
allow_any_instance_of(Puppet::Module::Task).to receive(:metadata).and_return({})
|
56
58
|
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
57
59
|
|
@@ -66,6 +68,7 @@ describe Puppet::Module::Task do
|
|
66
68
|
it "constructs a task as expected when a task has implementations" do
|
67
69
|
task_files = %w{task1.elf task1.sh task1.json}.map { |bn| "#{tasks_path}/#{bn}" }
|
68
70
|
expect(Dir).to receive(:glob).with(tasks_glob).and_return(task_files)
|
71
|
+
task_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
69
72
|
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
70
73
|
allow_any_instance_of(Puppet::Module::Task).to receive(:metadata).and_return({'implementations' => [{"name" => "task1.sh"}]})
|
71
74
|
|
@@ -78,6 +81,7 @@ describe Puppet::Module::Task do
|
|
78
81
|
it "constructs a task as expected when task metadata declares additional files" do
|
79
82
|
task_files = %w{task1.sh task1.json}.map { |bn| "#{tasks_path}/#{bn}" }
|
80
83
|
expect(Dir).to receive(:glob).with(tasks_glob).and_return(task_files)
|
84
|
+
task_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
81
85
|
expect(Puppet::Module::Task).to receive(:find_extra_files).and_return([{'name' => 'mymod/lib/file0.elf', 'path' => "/path/to/file0.elf"}])
|
82
86
|
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
83
87
|
allow_any_instance_of(Puppet::Module::Task).to receive(:metadata).and_return({'files' => ["mymod/lib/file0.elf"]})
|
@@ -91,6 +95,7 @@ describe Puppet::Module::Task do
|
|
91
95
|
it "constructs a task as expected when a task implementation declares additional files" do
|
92
96
|
task_files = %w{task1.sh task1.json}.map { |bn| "#{tasks_path}/#{bn}" }
|
93
97
|
expect(Dir).to receive(:glob).with(tasks_glob).and_return(task_files)
|
98
|
+
task_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
94
99
|
expect(Puppet::Module::Task).to receive(:find_extra_files).and_return([{'name' => 'mymod/lib/file0.elf', 'path' => "/path/to/file0.elf"}])
|
95
100
|
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
96
101
|
allow_any_instance_of(Puppet::Module::Task).to receive(:metadata).and_return({'implementations' => [{"name" => "task1.sh", "files" => ["mymod/lib/file0.elf"]}]})
|
@@ -104,6 +109,7 @@ describe Puppet::Module::Task do
|
|
104
109
|
it "constructs a task as expected when task metadata and a task implementation both declare additional files" do
|
105
110
|
task_files = %w{task1.sh task1.json}.map { |bn| "#{tasks_path}/#{bn}" }
|
106
111
|
expect(Dir).to receive(:glob).with(tasks_glob).and_return(task_files)
|
112
|
+
task_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
107
113
|
expect(Puppet::Module::Task).to receive(:find_extra_files).and_return([
|
108
114
|
{'name' => 'mymod/lib/file0.elf', 'path' => "/path/to/file0.elf"},
|
109
115
|
{'name' => 'yourmod/files/file1.txt', 'path' => "/other/path/to/file1.txt"}
|
@@ -124,6 +130,7 @@ describe Puppet::Module::Task do
|
|
124
130
|
it "constructs a task as expected when a task has files" do
|
125
131
|
og_files = %w{task1.sh task1.json}.map { |bn| "#{tasks_path}/#{bn}" }
|
126
132
|
expect(Dir).to receive(:glob).with(tasks_glob).and_return(og_files)
|
133
|
+
og_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
127
134
|
expect(File).to receive(:exist?).with(any_args).and_return(true).at_least(:once)
|
128
135
|
|
129
136
|
expect(Puppet::Module).to receive(:find).with(othermod.name, "production").and_return(othermod).at_least(:once)
|
@@ -139,6 +146,7 @@ describe Puppet::Module::Task do
|
|
139
146
|
it "fails to load a task if its metadata specifies a non-existent file" do
|
140
147
|
og_files = %w{task1.sh task1.json}.map { |bn| "#{tasks_path}/#{bn}" }
|
141
148
|
allow(Dir).to receive(:glob).with(tasks_glob).and_return(og_files)
|
149
|
+
og_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
142
150
|
allow(File).to receive(:exist?).with(any_args).and_return(true)
|
143
151
|
|
144
152
|
expect(Puppet::Module).to receive(:find).with(othermod.name, "production").and_return(nil).at_least(:once)
|
@@ -149,7 +157,9 @@ describe Puppet::Module::Task do
|
|
149
157
|
end
|
150
158
|
|
151
159
|
it "finds files whose names (besides extensions) are valid task names" do
|
152
|
-
|
160
|
+
og_files = %w{task task_1 xx_t_a_s_k_2_xx}.map { |bn| "#{tasks_path}/#{bn}" }
|
161
|
+
expect(Dir).to receive(:glob).with(tasks_glob).and_return(og_files)
|
162
|
+
og_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
153
163
|
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
154
164
|
|
155
165
|
expect(tasks.count).to eq(3)
|
@@ -157,7 +167,9 @@ describe Puppet::Module::Task do
|
|
157
167
|
end
|
158
168
|
|
159
169
|
it "ignores files that have names (besides extensions) that are not valid task names" do
|
160
|
-
|
170
|
+
og_files = %w{.nottask.exe .wat !runme _task 2task2furious def_a_task_PSYCH Fake_task not-a-task realtask}.map { |bn| "#{tasks_path}/#{bn}" }
|
171
|
+
expect(Dir).to receive(:glob).with(tasks_glob).and_return(og_files)
|
172
|
+
og_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
161
173
|
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
162
174
|
|
163
175
|
expect(tasks.count).to eq(1)
|
@@ -165,13 +177,24 @@ describe Puppet::Module::Task do
|
|
165
177
|
end
|
166
178
|
|
167
179
|
it "ignores files that have names ending in .conf and .md" do
|
168
|
-
|
180
|
+
og_files = %w{ginuwine_task task.conf readme.md other_task.md}.map { |bn| "#{tasks_path}/#{bn}" }
|
181
|
+
expect(Dir).to receive(:glob).with(tasks_glob).and_return(og_files)
|
182
|
+
og_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
169
183
|
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
170
184
|
|
171
185
|
expect(tasks.count).to eq(1)
|
172
186
|
expect(tasks.map{|t| t.name}).to eq(%w{mymod::ginuwine_task})
|
173
187
|
end
|
174
188
|
|
189
|
+
it "ignores files which are not regular files" do
|
190
|
+
og_files = %w{foo}.map { |bn| "#{tasks_path}/#{bn}" }
|
191
|
+
expect(Dir).to receive(:glob).with(tasks_glob).and_return(og_files)
|
192
|
+
og_files.each { |f| expect(File).to receive(:file?).with(f).and_return(false) }
|
193
|
+
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
194
|
+
|
195
|
+
expect(tasks.count).to eq(0)
|
196
|
+
end
|
197
|
+
|
175
198
|
it "gives the 'init' task a name that is just the module's name" do
|
176
199
|
expect(Puppet::Module::Task.new(mymod, 'init', ["#{tasks_path}/init.sh"]).name).to eq('mymod')
|
177
200
|
end
|
@@ -179,7 +202,9 @@ describe Puppet::Module::Task do
|
|
179
202
|
describe :metadata do
|
180
203
|
it "loads metadata for a task" do
|
181
204
|
metadata = {'desciption': 'some info'}
|
182
|
-
|
205
|
+
og_files = %w{task1.exe task1.json}.map { |bn| "#{tasks_path}/#{bn}" }
|
206
|
+
expect(Dir).to receive(:glob).with(tasks_glob).and_return(og_files)
|
207
|
+
og_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
183
208
|
allow(Puppet::Module::Task).to receive(:read_metadata).and_return(metadata)
|
184
209
|
|
185
210
|
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
@@ -189,7 +214,9 @@ describe Puppet::Module::Task do
|
|
189
214
|
end
|
190
215
|
|
191
216
|
it 'returns nil for metadata if no file is present' do
|
192
|
-
|
217
|
+
og_files = %w{task1.exe}.map { |bn| "#{tasks_path}/#{bn}" }
|
218
|
+
expect(Dir).to receive(:glob).with(tasks_glob).and_return(og_files)
|
219
|
+
og_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
193
220
|
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
194
221
|
|
195
222
|
expect(tasks.count).to eq(1)
|
@@ -212,7 +239,9 @@ describe Puppet::Module::Task do
|
|
212
239
|
|
213
240
|
describe :validate do
|
214
241
|
it "validates when there is no metadata" do
|
215
|
-
|
242
|
+
og_files = %w{task1.exe}.map { |bn| "#{tasks_path}/#{bn}" }
|
243
|
+
expect(Dir).to receive(:glob).with(tasks_glob).and_return(og_files)
|
244
|
+
og_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
216
245
|
|
217
246
|
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
218
247
|
|
@@ -223,7 +252,9 @@ describe Puppet::Module::Task do
|
|
223
252
|
it "validates when an implementation isn't used" do
|
224
253
|
metadata = {'desciption' => 'some info',
|
225
254
|
'implementations' => [ {"name" => "task1.exe"}, ] }
|
226
|
-
|
255
|
+
og_files = %w{task1.exe task1.sh task1.json}.map { |bn| "#{tasks_path}/#{bn}" }
|
256
|
+
expect(Dir).to receive(:glob).with(tasks_glob).and_return(og_files)
|
257
|
+
og_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
227
258
|
allow(Puppet::Module::Task).to receive(:read_metadata).and_return(metadata)
|
228
259
|
|
229
260
|
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
@@ -235,7 +266,9 @@ describe Puppet::Module::Task do
|
|
235
266
|
it "validates when an implementation is another task" do
|
236
267
|
metadata = {'desciption' => 'some info',
|
237
268
|
'implementations' => [ {"name" => "task2.sh"}, ] }
|
238
|
-
|
269
|
+
og_files = %w{task1.exe task2.sh task1.json}.map { |bn| "#{tasks_path}/#{bn}" }
|
270
|
+
expect(Dir).to receive(:glob).with(tasks_glob).and_return(og_files)
|
271
|
+
og_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
239
272
|
allow(Puppet::Module::Task).to receive(:read_metadata).and_return(metadata)
|
240
273
|
|
241
274
|
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
@@ -245,7 +278,9 @@ describe Puppet::Module::Task do
|
|
245
278
|
end
|
246
279
|
|
247
280
|
it "fails validation when there is no metadata and multiple task files" do
|
248
|
-
|
281
|
+
og_files = %w{task1.elf task1.exe task1.json task2.ps1 task2.sh}.map { |bn| "#{tasks_path}/#{bn}" }
|
282
|
+
expect(Dir).to receive(:glob).with(tasks_glob).and_return(og_files)
|
283
|
+
og_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
249
284
|
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
250
285
|
allow_any_instance_of(Puppet::Module::Task).to receive(:metadata).and_return({})
|
251
286
|
|
@@ -255,7 +290,9 @@ describe Puppet::Module::Task do
|
|
255
290
|
end
|
256
291
|
|
257
292
|
it "fails validation when an implementation references a non-existant file" do
|
258
|
-
|
293
|
+
og_files = %w{task1.elf task1.exe task1.json}.map { |bn| "#{tasks_path}/#{bn}" }
|
294
|
+
expect(Dir).to receive(:glob).with(tasks_glob).and_return(og_files)
|
295
|
+
og_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
259
296
|
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
260
297
|
allow_any_instance_of(Puppet::Module::Task).to receive(:metadata).and_return({'implementations' => [ { 'name' => 'task1.sh' } ] })
|
261
298
|
|
@@ -265,7 +302,9 @@ describe Puppet::Module::Task do
|
|
265
302
|
end
|
266
303
|
|
267
304
|
it 'fails validation when there is metadata but no executable' do
|
268
|
-
|
305
|
+
og_files = %w{task1.json task2.sh}.map { |bn| "#{tasks_path}/#{bn}" }
|
306
|
+
expect(Dir).to receive(:glob).with(tasks_glob).and_return(og_files)
|
307
|
+
og_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
269
308
|
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
270
309
|
allow_any_instance_of(Puppet::Module::Task).to receive(:metadata).and_return({})
|
271
310
|
|
@@ -273,7 +312,9 @@ describe Puppet::Module::Task do
|
|
273
312
|
end
|
274
313
|
|
275
314
|
it 'fails validation when the implementations are not an array' do
|
276
|
-
|
315
|
+
og_files = %w{task1.json task2.sh}.map { |bn| "#{tasks_path}/#{bn}" }
|
316
|
+
expect(Dir).to receive(:glob).with(tasks_glob).and_return(og_files)
|
317
|
+
og_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
277
318
|
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
278
319
|
allow_any_instance_of(Puppet::Module::Task).to receive(:metadata).and_return({"implemenations" => {}})
|
279
320
|
|
@@ -281,7 +322,9 @@ describe Puppet::Module::Task do
|
|
281
322
|
end
|
282
323
|
|
283
324
|
it 'fails validation when the implementation is json' do
|
284
|
-
|
325
|
+
og_files = %w{task1.json task1.sh}.map { |bn| "#{tasks_path}/#{bn}" }
|
326
|
+
expect(Dir).to receive(:glob).with(tasks_glob).and_return(og_files)
|
327
|
+
og_files.each { |f| expect(File).to receive(:file?).with(f).and_return(true) }
|
285
328
|
tasks = Puppet::Module::Task.tasks_in_module(mymod)
|
286
329
|
allow_any_instance_of(Puppet::Module::Task).to receive(:metadata).and_return({'implementations' => [ { 'name' => 'task1.json' } ] })
|
287
330
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.
|
4
|
+
version: 7.18.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet Labs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: facter
|