puppet 7.10.0 → 7.11.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +2 -2
- data/Gemfile.lock +9 -9
- data/lib/puppet/application/agent.rb +4 -0
- data/lib/puppet/application/apply.rb +20 -2
- data/lib/puppet/application/resource.rb +15 -13
- data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
- data/lib/puppet/configurer.rb +14 -4
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/defaults.rb +9 -3
- data/lib/puppet/facter_impl.rb +96 -0
- data/lib/puppet/file_serving/mount/file.rb +4 -4
- data/lib/puppet/file_system/file_impl.rb +3 -1
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +3 -3
- data/lib/puppet/indirector/facts/facter.rb +6 -6
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
- data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
- data/lib/puppet/pal/pal_impl.rb +1 -1
- data/lib/puppet/parser/scope.rb +8 -7
- data/lib/puppet/parser/templatewrapper.rb +1 -0
- data/lib/puppet/pops/lookup/lookup_adapter.rb +3 -2
- data/lib/puppet/pops/model/ast.rb +1 -0
- data/lib/puppet/pops/model/factory.rb +14 -13
- data/lib/puppet/pops/parser/egrammar.ra +2 -2
- data/lib/puppet/pops/parser/eparser.rb +752 -753
- data/lib/puppet/pops/parser/lexer2.rb +69 -68
- data/lib/puppet/pops/parser/slurp_support.rb +1 -0
- data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
- data/lib/puppet/pops/types/type_formatter.rb +7 -6
- data/lib/puppet/pops/types/types.rb +1 -1
- data/lib/puppet/provider/aix_object.rb +1 -1
- data/lib/puppet/provider/group/groupadd.rb +5 -2
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +1 -1
- data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/init.rb +5 -5
- data/lib/puppet/provider/service/launchd.rb +1 -1
- data/lib/puppet/provider/service/redhat.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +3 -3
- data/lib/puppet/provider/service/systemd.rb +1 -1
- data/lib/puppet/provider/service/upstart.rb +5 -5
- data/lib/puppet/provider/user/aix.rb +44 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +10 -7
- data/lib/puppet/provider.rb +1 -1
- data/lib/puppet/reference/providers.rb +2 -2
- data/lib/puppet/resource/type_collection.rb +2 -1
- data/lib/puppet/runtime.rb +11 -1
- data/lib/puppet/settings/file_setting.rb +3 -8
- data/lib/puppet/settings.rb +2 -2
- data/lib/puppet/test/test_helper.rb +4 -1
- data/lib/puppet/type/exec.rb +9 -1
- data/lib/puppet/type/group.rb +0 -1
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/user.rb +0 -1
- data/lib/puppet/util/command_line.rb +1 -1
- data/lib/puppet/util/filetype.rb +2 -2
- data/lib/puppet/util/log.rb +1 -2
- data/lib/puppet/util/logging.rb +1 -25
- data/lib/puppet/util/pidlock.rb +1 -1
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
- data/lib/puppet/util/suidmanager.rb +1 -2
- data/lib/puppet/util/tagging.rb +1 -0
- data/lib/puppet/util/windows/user.rb +0 -1
- data/lib/puppet/util.rb +4 -3
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +2 -6
- data/man/man5/puppet.conf.5 +10 -2
- data/man/man8/puppet-agent.8 +4 -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/integration/application/agent_spec.rb +16 -0
- data/spec/integration/configurer_spec.rb +1 -1
- data/spec/integration/indirector/facts/facter_spec.rb +3 -3
- data/spec/integration/transaction/report_spec.rb +1 -1
- data/spec/integration/type/file_spec.rb +2 -2
- data/spec/integration/type/package_spec.rb +6 -6
- data/spec/integration/util/rdoc/parser_spec.rb +1 -1
- data/spec/integration/util/windows/process_spec.rb +1 -9
- data/spec/unit/application/apply_spec.rb +76 -56
- data/spec/unit/application/resource_spec.rb +29 -0
- data/spec/unit/configurer_spec.rb +13 -3
- data/spec/unit/facter_impl_spec.rb +31 -0
- data/spec/unit/file_bucket/dipper_spec.rb +2 -2
- data/spec/unit/file_system_spec.rb +7 -0
- data/spec/unit/functions/lookup_spec.rb +64 -0
- data/spec/unit/indirector/indirection_spec.rb +10 -3
- data/spec/unit/pops/serialization/to_stringified_spec.rb +5 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +6 -0
- data/spec/unit/provider/package/gem_spec.rb +1 -1
- data/spec/unit/provider/package/pip2_spec.rb +1 -1
- data/spec/unit/provider/package/pip3_spec.rb +1 -1
- data/spec/unit/provider/package/pip_spec.rb +1 -1
- data/spec/unit/provider/package/puppet_gem_spec.rb +1 -1
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
- data/spec/unit/provider/user/aix_spec.rb +100 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +1 -1
- data/spec/unit/provider_spec.rb +4 -4
- data/spec/unit/puppet_spec.rb +12 -4
- data/spec/unit/settings/file_setting_spec.rb +10 -7
- data/spec/unit/type_spec.rb +2 -2
- data/spec/unit/util/logging_spec.rb +2 -0
- data/tasks/parallel.rake +3 -3
- metadata +5 -2
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" "September 2021" "Puppet, Inc." "Puppet manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBpuppet\-agent\fR \- The puppet agent daemon
|
@@ -164,6 +164,9 @@ A path ending with \'\.jsonl\' will receive structured output in JSON Lines form
|
|
164
164
|
.IP "\(bu" 4
|
165
165
|
\-\-waitforcert: This option only matters for daemons that do not yet have certificates and it is enabled by default, with a value of 120 (seconds)\. This causes \'puppet agent\' to connect to the server every 2 minutes and ask it to sign a certificate request\. This is useful for the initial setup of a puppet client\. You can turn off waiting for certificates by specifying a time of 0\. (This is a Puppet setting, and can go in puppet\.conf\.)
|
166
166
|
.
|
167
|
+
.IP "\(bu" 4
|
168
|
+
\-\-write_catalog_summary After compiling the catalog saves the resource list and classes list to the node in the state directory named classes\.txt and resources\.txt (This is a Puppet setting, and can go in puppet\.conf\.)
|
169
|
+
.
|
167
170
|
.IP "" 0
|
168
171
|
.
|
169
172
|
.SH "EXAMPLE"
|
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" "September 2021" "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" "September 2021" "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" "September 2021" "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" "September 2021" "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" "September 2021" "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" "September 2021" "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" "September 2021" "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" "September 2021" "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" "September 2021" "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" "September 2021" "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" "September 2021" "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" "September 2021" "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" "September 2021" "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" "September 2021" "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" "September 2021" "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" "September 2021" "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" "September 2021" "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" "September 2021" "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" "September 2021" "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" "September 2021" "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" "September 2021" "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\.11\.0
|
@@ -626,6 +626,22 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
|
|
626
626
|
expect(report.metrics).to_not be_empty
|
627
627
|
end
|
628
628
|
end
|
629
|
+
|
630
|
+
it "caches a report even if the REST request fails" do
|
631
|
+
server.start_server do |port|
|
632
|
+
Puppet[:serverport] = port
|
633
|
+
Puppet[:report_port] = "-1"
|
634
|
+
expect {
|
635
|
+
agent.command_line.args << '--test'
|
636
|
+
agent.run
|
637
|
+
}.to exit_with(0)
|
638
|
+
.and output(%r{Applied catalog}).to_stdout
|
639
|
+
.and output(%r{Could not send report}).to_stderr
|
640
|
+
|
641
|
+
report = Puppet::Transaction::Report.convert_from(:yaml, File.read(Puppet[:lastrunreport]))
|
642
|
+
expect(report).to be
|
643
|
+
end
|
644
|
+
end
|
629
645
|
end
|
630
646
|
|
631
647
|
context "environment convergence" do
|
@@ -13,7 +13,7 @@ describe Puppet::Node::Facts::Facter do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it "preserves case in fact values" do
|
16
|
-
|
16
|
+
Puppet.runtime[:facter].add(:downcase_test) do
|
17
17
|
setcode do
|
18
18
|
"AaBbCc"
|
19
19
|
end
|
@@ -34,9 +34,9 @@ describe Puppet::Node::Facts::Facter do
|
|
34
34
|
FileUtils.mkdir_p(test_module)
|
35
35
|
|
36
36
|
File.open(File.join(test_module, 'custom.rb'), 'wb') { |file| file.write(<<-EOF)}
|
37
|
-
|
37
|
+
Puppet.runtime[:facter].add(:custom) do
|
38
38
|
setcode do
|
39
|
-
|
39
|
+
Puppet.runtime[:facter].value('puppetversion')
|
40
40
|
end
|
41
41
|
end
|
42
42
|
EOF
|
@@ -1710,11 +1710,11 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
1710
1710
|
|
1711
1711
|
describe "when using validate_cmd" do
|
1712
1712
|
test_cmd = '/bin/test'
|
1713
|
-
if
|
1713
|
+
if Puppet.runtime[:facter].value(:osfamily) == 'Debian'
|
1714
1714
|
test_cmd = '/usr/bin/test'
|
1715
1715
|
end
|
1716
1716
|
|
1717
|
-
if
|
1717
|
+
if Puppet.runtime[:facter].value(:operatingsystem) == 'Darwin'
|
1718
1718
|
stat_cmd = "stat -f '%Lp'"
|
1719
1719
|
else
|
1720
1720
|
stat_cmd = "stat --format=%a"
|
@@ -9,7 +9,7 @@ describe Puppet::Type.type(:package), "when choosing a default package provider"
|
|
9
9
|
def provider_name(os)
|
10
10
|
case os
|
11
11
|
when 'Solaris'
|
12
|
-
if Puppet::Util::Package.versioncmp(
|
12
|
+
if Puppet::Util::Package.versioncmp(Puppet.runtime[:facter].value(:kernelrelease), '5.11') >= 0
|
13
13
|
:pkg
|
14
14
|
else
|
15
15
|
:sun
|
@@ -21,19 +21,19 @@ describe Puppet::Type.type(:package), "when choosing a default package provider"
|
|
21
21
|
when 'Darwin'
|
22
22
|
:pkgdmg
|
23
23
|
when 'RedHat'
|
24
|
-
if ['2.1', '3', '4'].include?(
|
24
|
+
if ['2.1', '3', '4'].include?(Puppet.runtime[:facter].value(:lsbdistrelease))
|
25
25
|
:up2date
|
26
26
|
else
|
27
27
|
:yum
|
28
28
|
end
|
29
29
|
when 'Fedora'
|
30
|
-
if Puppet::Util::Package.versioncmp(
|
30
|
+
if Puppet::Util::Package.versioncmp(Puppet.runtime[:facter].value(:operatingsystemmajrelease), '22') >= 0
|
31
31
|
:dnf
|
32
32
|
else
|
33
33
|
:yum
|
34
34
|
end
|
35
35
|
when 'Suse'
|
36
|
-
if Puppet::Util::Package.versioncmp(
|
36
|
+
if Puppet::Util::Package.versioncmp(Puppet.runtime[:facter].value(:operatingsystemmajrelease), '10') >= 0
|
37
37
|
:zypper
|
38
38
|
else
|
39
39
|
:rug
|
@@ -54,8 +54,8 @@ describe Puppet::Type.type(:package), "when choosing a default package provider"
|
|
54
54
|
end
|
55
55
|
|
56
56
|
it "should choose the correct provider each platform" do
|
57
|
-
unless default_provider = provider_name(
|
58
|
-
pending("No default provider specified in this test for #{
|
57
|
+
unless default_provider = provider_name(Puppet.runtime[:facter].value(:operatingsystem))
|
58
|
+
pending("No default provider specified in this test for #{Puppet.runtime[:facter].value(:operatingsystem)}")
|
59
59
|
end
|
60
60
|
expect(Puppet::Type.type(:package).defaultprovider.name).to eq(default_provider)
|
61
61
|
end
|
@@ -1,22 +1,14 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'facter'
|
3
2
|
|
4
3
|
describe "Puppet::Util::Windows::Process", :if => Puppet::Util::Platform.windows? do
|
5
4
|
describe "as an admin" do
|
6
|
-
it "should have the SeCreateSymbolicLinkPrivilege necessary to create symlinks
|
7
|
-
:if => Facter.value(:kernelmajversion).to_f >= 6.0 && Puppet::Util::Platform.windows? do
|
5
|
+
it "should have the SeCreateSymbolicLinkPrivilege necessary to create symlinks" do
|
8
6
|
# this is a bit of a lame duck test since it requires running user to be admin
|
9
7
|
# a better integration test would create a new user with the privilege and verify
|
10
8
|
expect(Puppet::Util::Windows::User).to be_admin
|
11
9
|
expect(Puppet::Util::Windows::Process.process_privilege_symlink?).to be_truthy
|
12
10
|
end
|
13
11
|
|
14
|
-
it "should not have the SeCreateSymbolicLinkPrivilege necessary to create symlinks on 2003 and earlier",
|
15
|
-
:if => Facter.value(:kernelmajversion).to_f < 6.0 && Puppet::Util::Platform.windows? do
|
16
|
-
expect(Puppet::Util::Windows::User).to be_admin
|
17
|
-
expect(Puppet::Util::Windows::Process.process_privilege_symlink?).to be_falsey
|
18
|
-
end
|
19
|
-
|
20
12
|
it "should be able to lookup a standard Windows process privilege" do
|
21
13
|
Puppet::Util::Windows::Process.lookup_privilege_value('SeShutdownPrivilege') do |luid|
|
22
14
|
expect(luid).not_to be_nil
|
@@ -10,21 +10,22 @@ describe Puppet::Application::Apply do
|
|
10
10
|
|
11
11
|
before :each do
|
12
12
|
@apply = Puppet::Application[:apply]
|
13
|
-
allow(Puppet::Util::Log).to receive(:newdestination)
|
14
13
|
Puppet[:reports] = "none"
|
15
14
|
end
|
16
15
|
|
17
|
-
[:debug,:loadclasses,:test,:verbose,:use_nodes,:detailed_exitcodes,:catalog
|
18
|
-
it "should declare handle_#{option} method" do
|
19
|
-
expect(@apply).to respond_to("handle_#{option}".to_sym)
|
20
|
-
end
|
21
|
-
|
16
|
+
[:debug,:loadclasses,:test,:verbose,:use_nodes,:detailed_exitcodes,:catalog].each do |option|
|
22
17
|
it "should store argument value when calling handle_#{option}" do
|
23
18
|
expect(@apply.options).to receive(:[]=).with(option, 'arg')
|
24
19
|
@apply.send("handle_#{option}".to_sym, 'arg')
|
25
20
|
end
|
26
21
|
end
|
27
22
|
|
23
|
+
it "should handle write_catalog_summary" do
|
24
|
+
@apply.send(:handle_write_catalog_summary, true)
|
25
|
+
|
26
|
+
expect(Puppet[:write_catalog_summary]).to eq(true)
|
27
|
+
end
|
28
|
+
|
28
29
|
it "should set the code to the provided code when :execute is used" do
|
29
30
|
expect(@apply.options).to receive(:[]=).with(:code, 'arg')
|
30
31
|
@apply.send("handle_execute".to_sym, 'arg')
|
@@ -53,23 +54,18 @@ describe Puppet::Application::Apply do
|
|
53
54
|
end
|
54
55
|
|
55
56
|
describe "with --test" do
|
56
|
-
it "should call setup_test" do
|
57
|
-
@apply.options[:test] = true
|
58
|
-
expect(@apply).to receive(:setup_test)
|
59
|
-
|
60
|
-
@apply.setup
|
61
|
-
end
|
62
|
-
|
63
57
|
it "should set options[:verbose] to true" do
|
64
58
|
@apply.setup_test
|
65
59
|
|
66
60
|
expect(@apply.options[:verbose]).to eq(true)
|
67
61
|
end
|
62
|
+
|
68
63
|
it "should set options[:show_diff] to true" do
|
69
64
|
Puppet.settings.override_default(:show_diff, false)
|
70
65
|
@apply.setup_test
|
71
66
|
expect(Puppet[:show_diff]).to eq(true)
|
72
67
|
end
|
68
|
+
|
73
69
|
it "should set options[:detailed_exitcodes] to true" do
|
74
70
|
@apply.setup_test
|
75
71
|
|
@@ -155,7 +151,7 @@ describe Puppet::Application::Apply do
|
|
155
151
|
end
|
156
152
|
|
157
153
|
describe "when executing" do
|
158
|
-
it "should dispatch to 'apply' if it was called with
|
154
|
+
it "should dispatch to 'apply' if it was called with a catalog" do
|
159
155
|
@apply.options[:catalog] = "foo"
|
160
156
|
|
161
157
|
expect(@apply).to receive(:apply)
|
@@ -213,47 +209,52 @@ describe Puppet::Application::Apply do
|
|
213
209
|
@apply.options[:code] = "code to run"
|
214
210
|
expect(Puppet).to receive(:[]=).with(:code,"code to run")
|
215
211
|
|
216
|
-
expect { @apply.
|
212
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
217
213
|
end
|
218
214
|
|
219
215
|
it "should set the code to run from STDIN if no arguments" do
|
220
|
-
|
216
|
+
@apply.command_line.args = []
|
221
217
|
allow(STDIN).to receive(:read).and_return("code to run")
|
222
218
|
|
223
219
|
expect(Puppet).to receive(:[]=).with(:code,"code to run")
|
224
220
|
|
225
|
-
expect { @apply.
|
221
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
226
222
|
end
|
227
223
|
|
228
224
|
it "should raise an error if a file is passed on command line and the file does not exist" do
|
229
225
|
noexist = tmpfile('noexist.pp')
|
230
|
-
|
231
|
-
expect {
|
226
|
+
@apply.command_line.args << noexist
|
227
|
+
expect {
|
228
|
+
@apply.run
|
229
|
+
}.to exit_with(1)
|
230
|
+
.and output(anything).to_stdout
|
231
|
+
.and output(/Could not find file #{noexist}/).to_stderr
|
232
232
|
end
|
233
233
|
|
234
234
|
it "should set the manifest to the first file and warn other files will be skipped" do
|
235
235
|
manifest = tmpfile('starwarsIV')
|
236
236
|
FileUtils.touch(manifest)
|
237
237
|
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
expect(msg.level).to eq(:warning)
|
238
|
+
@apply.command_line.args << manifest << 'starwarsI' << 'starwarsII'
|
239
|
+
expect {
|
240
|
+
@apply.run
|
241
|
+
}.to exit_with(0)
|
242
|
+
.and output(anything).to_stdout
|
243
|
+
.and output(/Warning: Only one file can be applied per run. Skipping starwarsI, starwarsII/).to_stderr
|
245
244
|
end
|
246
245
|
|
247
246
|
it "should splay" do
|
248
247
|
expect(@apply).to receive(:splay)
|
249
248
|
|
250
|
-
expect {
|
249
|
+
expect {
|
250
|
+
@apply.run
|
251
|
+
}.to exit_with(0).and output(anything).to_stdout
|
251
252
|
end
|
252
253
|
|
253
|
-
it "should
|
254
|
+
it "should exit with 1 if we can't find the node" do
|
254
255
|
expect(Puppet::Node.indirection).to receive(:find).and_return(nil)
|
255
256
|
|
256
|
-
expect { @apply.
|
257
|
+
expect { @apply.run }.to exit_with(1).and output(/Could not find node/).to_stderr
|
257
258
|
end
|
258
259
|
|
259
260
|
it "should load custom classes if loadclasses" do
|
@@ -264,18 +265,18 @@ describe Puppet::Application::Apply do
|
|
264
265
|
|
265
266
|
expect(@node).to receive(:classes=).with(['class'])
|
266
267
|
|
267
|
-
expect { @apply.
|
268
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
268
269
|
end
|
269
270
|
|
270
271
|
it "should compile the catalog" do
|
271
272
|
expect(Puppet::Resource::Catalog.indirection).to receive(:find).and_return(@catalog)
|
272
273
|
|
273
|
-
expect { @apply.
|
274
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
274
275
|
end
|
275
276
|
|
276
277
|
it 'should called the DeferredResolver to resolve any Deferred values' do
|
277
278
|
expect(Puppet::Pops::Evaluator::DeferredResolver).to receive(:resolve_and_replace).with(any_args)
|
278
|
-
expect { @apply.
|
279
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
279
280
|
end
|
280
281
|
|
281
282
|
it 'should make the Puppet::Pops::Loaders available when applying the compiled catalog' do
|
@@ -285,47 +286,67 @@ describe Puppet::Application::Apply do
|
|
285
286
|
fail('Loaders not found') unless Puppet.lookup(:loaders) { nil }.is_a?(Puppet::Pops::Loaders)
|
286
287
|
true
|
287
288
|
end.and_return(0)
|
288
|
-
expect { @apply.
|
289
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
289
290
|
end
|
290
291
|
|
291
292
|
it "should transform the catalog to ral" do
|
292
293
|
expect(@catalog).to receive(:to_ral).and_return(@catalog)
|
293
294
|
|
294
|
-
expect { @apply.
|
295
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
295
296
|
end
|
296
297
|
|
297
298
|
it "should finalize the catalog" do
|
298
299
|
expect(@catalog).to receive(:finalize)
|
299
300
|
|
300
|
-
expect { @apply.
|
301
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
301
302
|
end
|
302
303
|
|
303
304
|
it "should not save the classes or resource file by default" do
|
304
305
|
expect(@catalog).not_to receive(:write_class_file)
|
305
306
|
expect(@catalog).not_to receive(:write_resource_file)
|
306
|
-
|
307
|
+
|
308
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
307
309
|
end
|
308
310
|
|
309
|
-
it "should save the classes and resources files when requested" do
|
310
|
-
@
|
311
|
+
it "should save the classes and resources files when requested on the command line using dashes" do
|
312
|
+
expect(@catalog).to receive(:write_class_file).once
|
313
|
+
expect(@catalog).to receive(:write_resource_file).once
|
314
|
+
|
315
|
+
# dashes are parsed by the application's OptionParser
|
316
|
+
@apply.command_line.args = ['--write-catalog-summary']
|
317
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
318
|
+
end
|
319
|
+
|
320
|
+
it "should save the classes and resources files when requested on the command line using underscores" do
|
321
|
+
expect(@catalog).to receive(:write_class_file).once
|
322
|
+
expect(@catalog).to receive(:write_resource_file).once
|
323
|
+
|
324
|
+
# underscores are parsed by the settings PuppetOptionParser
|
325
|
+
@apply.command_line.args = ['--write_catalog_summary']
|
326
|
+
Puppet.initialize_settings(['--write_catalog_summary'])
|
327
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
328
|
+
end
|
329
|
+
|
330
|
+
it "should save the classes and resources files when specified as a setting" do
|
331
|
+
Puppet[:write_catalog_summary] = true
|
311
332
|
|
312
333
|
expect(@catalog).to receive(:write_class_file).once
|
313
334
|
expect(@catalog).to receive(:write_resource_file).once
|
314
335
|
|
315
|
-
expect { @apply.
|
336
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
316
337
|
end
|
317
338
|
|
318
339
|
it "should call the prerun and postrun commands on a Configurer instance" do
|
319
340
|
expect_any_instance_of(Puppet::Configurer).to receive(:execute_prerun_command).and_return(true)
|
320
341
|
expect_any_instance_of(Puppet::Configurer).to receive(:execute_postrun_command).and_return(true)
|
321
342
|
|
322
|
-
expect { @apply.
|
343
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
323
344
|
end
|
324
345
|
|
325
346
|
it "should apply the catalog" do
|
326
347
|
expect(@catalog).to receive(:apply).and_return(double('transaction'))
|
327
348
|
|
328
|
-
expect { @apply.
|
349
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
329
350
|
end
|
330
351
|
|
331
352
|
it "should save the last run summary" do
|
@@ -334,7 +355,7 @@ describe Puppet::Application::Apply do
|
|
334
355
|
allow(Puppet::Transaction::Report).to receive(:new).and_return(report)
|
335
356
|
|
336
357
|
expect_any_instance_of(Puppet::Configurer).to receive(:save_last_run_summary).with(report)
|
337
|
-
expect { @apply.
|
358
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
338
359
|
end
|
339
360
|
|
340
361
|
describe "when using node_name_fact" do
|
@@ -347,27 +368,27 @@ describe Puppet::Application::Apply do
|
|
347
368
|
end
|
348
369
|
|
349
370
|
it "should set the facts name based on the node_name_fact" do
|
350
|
-
expect { @apply.
|
371
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
351
372
|
expect(@facts.name).to eq('other_node_name')
|
352
373
|
end
|
353
374
|
|
354
375
|
it "should set the node_name_value based on the node_name_fact" do
|
355
|
-
expect { @apply.
|
376
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
356
377
|
expect(Puppet[:node_name_value]).to eq('other_node_name')
|
357
378
|
end
|
358
379
|
|
359
380
|
it "should merge in our node the loaded facts" do
|
360
381
|
@facts.values.merge!('key' => 'value')
|
361
382
|
|
362
|
-
expect { @apply.
|
383
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
363
384
|
|
364
385
|
expect(@node.parameters['key']).to eq('value')
|
365
386
|
end
|
366
387
|
|
367
|
-
it "should
|
388
|
+
it "should exit if we can't find the facts" do
|
368
389
|
expect(Puppet::Node::Facts.indirection).to receive(:find).and_return(nil)
|
369
390
|
|
370
|
-
expect { @apply.
|
391
|
+
expect { @apply.run }.to exit_with(1).and output(/Could not find facts/).to_stderr
|
371
392
|
end
|
372
393
|
end
|
373
394
|
|
@@ -380,14 +401,14 @@ describe Puppet::Application::Apply do
|
|
380
401
|
Puppet[:noop] = false
|
381
402
|
allow_any_instance_of(Puppet::Transaction::Report).to receive(:exit_status).and_return(666)
|
382
403
|
|
383
|
-
expect { @apply.
|
404
|
+
expect { @apply.run }.to exit_with(666).and output(anything).to_stdout
|
384
405
|
end
|
385
406
|
|
386
407
|
it "should exit with report's computed exit status, even if --noop is set" do
|
387
408
|
Puppet[:noop] = true
|
388
409
|
allow_any_instance_of(Puppet::Transaction::Report).to receive(:exit_status).and_return(666)
|
389
410
|
|
390
|
-
expect { @apply.
|
411
|
+
expect { @apply.run }.to exit_with(666).and output(anything).to_stdout
|
391
412
|
end
|
392
413
|
|
393
414
|
it "should always exit with 0 if option is disabled" do
|
@@ -395,7 +416,7 @@ describe Puppet::Application::Apply do
|
|
395
416
|
report = double('report', :exit_status => 666)
|
396
417
|
allow(@transaction).to receive(:report).and_return(report)
|
397
418
|
|
398
|
-
expect { @apply.
|
419
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
399
420
|
end
|
400
421
|
|
401
422
|
it "should always exit with 0 if --noop" do
|
@@ -403,7 +424,7 @@ describe Puppet::Application::Apply do
|
|
403
424
|
report = double('report', :exit_status => 666)
|
404
425
|
allow(@transaction).to receive(:report).and_return(report)
|
405
426
|
|
406
|
-
expect { @apply.
|
427
|
+
expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
|
407
428
|
end
|
408
429
|
end
|
409
430
|
end
|
@@ -503,16 +524,15 @@ describe Puppet::Application::Apply do
|
|
503
524
|
}
|
504
525
|
CODE
|
505
526
|
|
506
|
-
|
507
|
-
|
527
|
+
Puppet.settings[:write_catalog_summary] = true
|
508
528
|
Puppet.settings[:resourcefile] = resourcefile
|
509
529
|
Puppet.settings[:classfile] = classfile
|
510
530
|
|
511
531
|
#We don't actually need the resource to do anything, we are using it's properties in other parts of the workflow.
|
512
|
-
|
513
|
-
|
514
|
-
expect { @apply.main }.to exit_with 0
|
532
|
+
allow_any_instance_of(Puppet::Type.type(:exec).defaultprovider).to receive(:which).and_return('cat')
|
533
|
+
allow(Puppet::Util::Execution).to receive(:execute).and_return(double(exitstatus: 0, output: ''))
|
515
534
|
|
535
|
+
expect { @apply.run }.to exit_with(0).and output(%r{Exec\[do it\]/returns: executed successfully}).to_stdout
|
516
536
|
result = File.read(resourcefile)
|
517
537
|
|
518
538
|
expect(result).not_to match(/secret_file_name/)
|