puppet 6.0.0 → 6.1.0
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/Gemfile +2 -2
- data/Gemfile.lock +20 -20
- data/Guardfile.example +76 -0
- data/LICENSE +189 -4
- data/README.md +3 -3
- data/Rakefile +5 -2
- data/ext/solaris/smf/svc-puppetd +8 -1
- data/ext/solaris/smf/svc-puppetmasterd +8 -1
- data/lib/puppet/application/apply.rb +100 -59
- data/lib/puppet/application/cert.rb +4 -114
- data/lib/puppet/application/device.rb +48 -32
- data/lib/puppet/application/script.rb +1 -1
- data/lib/puppet/application/ssl.rb +135 -51
- data/lib/puppet/application.rb +5 -0
- data/lib/puppet/configurer.rb +2 -3
- data/lib/puppet/defaults.rb +33 -49
- data/lib/puppet/etc.rb +20 -0
- data/lib/puppet/face/config.rb +3 -3
- data/lib/puppet/face/key.rb +1 -1
- data/lib/puppet/face/node/clean.rb +0 -1
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/fileset.rb +1 -1
- data/lib/puppet/functions/abs.rb +1 -1
- data/lib/puppet/functions/new.rb +1 -1
- data/lib/puppet/module/task.rb +29 -38
- data/lib/puppet/pal/catalog_compiler.rb +96 -0
- data/lib/puppet/pal/compiler.rb +221 -0
- data/lib/puppet/pal/function_signature.rb +52 -0
- data/lib/puppet/pal/json_catalog_encoder.rb +67 -0
- data/lib/puppet/pal/pal_api.rb +15 -0
- data/lib/puppet/pal/pal_impl.rb +523 -0
- data/lib/puppet/pal/plan_signature.rb +71 -0
- data/lib/puppet/pal/script_compiler.rb +71 -0
- data/lib/puppet/pal/task_signature.rb +58 -0
- data/lib/puppet/parser/catalog_compiler.rb +24 -0
- data/lib/puppet/parser/compiler.rb +3 -1
- data/lib/puppet/parser/functions/generate.rb +7 -6
- data/lib/puppet/plugins/configuration.rb +5 -1
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +3 -1
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -0
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -1
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +19 -10
- data/lib/puppet/pops/loader/task_instantiator.rb +13 -70
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -2
- data/lib/puppet/pops/parser/lexer2.rb +1 -1
- data/lib/puppet/pops/pcore.rb +10 -33
- data/lib/puppet/pops/serialization/to_data_converter.rb +9 -1
- data/lib/puppet/pops/serialization.rb +1 -0
- data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
- data/lib/puppet/pops/types/string_converter.rb +18 -4
- data/lib/puppet/pops/validation/checker4_0.rb +17 -2
- data/lib/puppet/provider/exec.rb +59 -57
- data/lib/puppet/provider/group/aix.rb +18 -2
- data/lib/puppet/provider/group/windows_adsi.rb +7 -3
- data/lib/puppet/provider/nameservice.rb +1 -25
- data/lib/puppet/provider/package/dnf.rb +2 -0
- data/lib/puppet/provider/package/pkgng.rb +37 -21
- data/lib/puppet/provider/package/portage.rb +2 -2
- data/lib/puppet/provider/package/windows/exe_package.rb +16 -10
- data/lib/puppet/provider/package/windows/msi_package.rb +8 -0
- data/lib/puppet/provider/package/windows/package.rb +9 -1
- data/lib/puppet/provider/package/windows.rb +2 -2
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +25 -4
- data/lib/puppet/provider/service/launchd.rb +19 -3
- data/lib/puppet/provider/service/smf.rb +54 -0
- data/lib/puppet/provider/service/systemd.rb +19 -0
- data/lib/puppet/provider/service/upstart.rb +1 -0
- data/lib/puppet/provider/service/windows.rb +22 -5
- data/lib/puppet/provider/user/aix.rb +48 -2
- data/lib/puppet/provider/user/useradd.rb +2 -10
- data/lib/puppet/provider/user/windows_adsi.rb +9 -1
- data/lib/puppet/resource/catalog.rb +1 -5
- data/lib/puppet/resource.rb +3 -1
- data/lib/puppet/ssl/host.rb +26 -16
- data/lib/puppet/syntax_checkers/epp.rb +34 -0
- data/lib/puppet/syntax_checkers/pp.rb +34 -0
- data/lib/puppet/transaction/event_manager.rb +13 -1
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/resource_harness.rb +3 -1
- data/lib/puppet/type/group.rb +29 -1
- data/lib/puppet/type/package.rb +5 -1
- data/lib/puppet/type/resources.rb +12 -2
- data/lib/puppet/type/schedule.rb +7 -0
- data/lib/puppet/type/service.rb +12 -0
- data/lib/puppet/type/user.rb +5 -2
- data/lib/puppet/type.rb +6 -0
- data/lib/puppet/util/command_line.rb +2 -3
- data/lib/puppet/util/execution.rb +15 -1
- data/lib/puppet/util/filetype.rb +56 -8
- data/lib/puppet/util/log/destinations.rb +3 -2
- data/lib/puppet/util/logging.rb +3 -2
- data/lib/puppet/util/posix.rb +15 -0
- data/lib/puppet/util/selinux.rb +1 -1
- data/lib/puppet/util/storage.rb +12 -0
- data/lib/puppet/util/windows/adsi.rb +79 -2
- data/lib/puppet/util/windows/api_types.rb +1 -1
- data/lib/puppet/util/windows/process.rb +23 -3
- data/lib/puppet/util/windows/registry.rb +29 -5
- data/lib/puppet/util/windows/security.rb +14 -0
- data/lib/puppet/util/windows/service.rb +294 -74
- data/lib/puppet/util/windows/user.rb +3 -5
- data/lib/puppet/util.rb +7 -3
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +1 -0
- data/lib/puppet_pal.rb +5 -1099
- data/locales/ja/puppet.po +952 -986
- data/locales/puppet.pot +592 -347
- data/man/man5/puppet.conf.5 +26 -31
- 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 +4 -4
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +23 -19
- 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-key.8 +2 -2
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.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 +26 -3
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load.rb +11 -0
- data/spec/fixtures/unit/provider/package/pkgng/pkg.query +7 -1
- data/spec/fixtures/unit/provider/package/pkgng/pkg.query.zsh +1 -0
- data/spec/fixtures/unit/provider/service/smf/svcs_fmri.out +6 -0
- data/spec/fixtures/unit/provider/service/smf/svcs_multiple_fmris.out +13 -0
- data/spec/integration/application/apply_spec.rb +4 -1
- data/spec/integration/parser/collection_spec.rb +4 -8
- data/spec/integration/provider/service/windows_spec.rb +5 -5
- data/spec/integration/ssl/key_spec.rb +0 -4
- data/spec/integration/transaction_spec.rb +559 -0
- data/spec/integration/type/file_spec.rb +6 -6
- data/spec/integration/util/windows/registry_spec.rb +39 -0
- data/spec/integration/util/windows/security_spec.rb +10 -7
- data/spec/integration/util/windows/user_spec.rb +37 -17
- data/spec/lib/puppet/test_ca.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/unit/agent_spec.rb +2 -2
- data/spec/unit/application/apply_spec.rb +55 -2
- data/spec/unit/application/device_spec.rb +10 -7
- data/spec/unit/application/face_base_spec.rb +1 -1
- data/spec/unit/application/lookup_spec.rb +2 -1
- data/spec/unit/application/ssl_spec.rb +178 -109
- data/spec/unit/application_spec.rb +29 -11
- data/spec/unit/configurer/downloader_spec.rb +1 -1
- data/spec/unit/configurer_spec.rb +16 -5
- data/spec/unit/etc_spec.rb +25 -0
- data/spec/unit/face/node_spec.rb +1 -3
- data/spec/unit/face/parser_spec.rb +15 -0
- data/spec/unit/file_serving/fileset_spec.rb +11 -11
- data/spec/unit/functions/logging_spec.rb +10 -3
- data/spec/unit/indirector/catalog/json_spec.rb +9 -3
- data/spec/unit/indirector/yaml_spec.rb +1 -1
- data/spec/unit/network/http/connection_spec.rb +2 -2
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +36 -0
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +22 -4
- data/spec/unit/pops/loaders/loader_spec.rb +9 -17
- data/spec/unit/pops/loaders/loaders_spec.rb +48 -0
- data/spec/unit/pops/loaders/module_loaders_spec.rb +7 -7
- data/spec/unit/pops/parser/parse_heredoc_spec.rb +16 -0
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +9 -0
- data/spec/unit/pops/types/p_timespan_type_spec.rb +22 -0
- data/spec/unit/pops/types/p_timestamp_type_spec.rb +19 -0
- data/spec/unit/pops/types/string_converter_spec.rb +25 -1
- data/spec/unit/pops/types/task_spec.rb +42 -116
- data/spec/unit/pops/validator/validator_spec.rb +24 -10
- data/spec/unit/provider/exec/posix_spec.rb +24 -0
- data/spec/unit/provider/group/aix_spec.rb +20 -6
- data/spec/unit/provider/group/ldap_spec.rb +22 -25
- data/spec/unit/provider/group/pw_spec.rb +7 -10
- data/spec/unit/provider/group/windows_adsi_spec.rb +42 -33
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +97 -103
- data/spec/unit/provider/package/aix_spec.rb +5 -8
- data/spec/unit/provider/package/apt_spec.rb +3 -6
- data/spec/unit/provider/package/dnf_spec.rb +38 -25
- data/spec/unit/provider/package/dpkg_spec.rb +18 -21
- data/spec/unit/provider/package/freebsd_spec.rb +4 -7
- data/spec/unit/provider/package/gem_spec.rb +41 -41
- data/spec/unit/provider/package/hpux_spec.rb +7 -10
- data/spec/unit/provider/package/macports_spec.rb +13 -15
- data/spec/unit/provider/package/nim_spec.rb +3 -10
- data/spec/unit/provider/package/openbsd_spec.rb +14 -17
- data/spec/unit/provider/package/pip3_spec.rb +3 -6
- data/spec/unit/provider/package/pip_spec.rb +45 -49
- data/spec/unit/provider/package/pkgin_spec.rb +13 -18
- data/spec/unit/provider/package/pkgng_spec.rb +32 -27
- data/spec/unit/provider/package/puppet_gem_spec.rb +6 -9
- data/spec/unit/provider/package/tdnf_spec.rb +9 -12
- data/spec/unit/provider/package/windows/exe_package_spec.rb +3 -3
- data/spec/unit/provider/package/windows_spec.rb +4 -4
- data/spec/unit/provider/package/yum_spec.rb +30 -16
- data/spec/unit/provider/package/zypper_spec.rb +17 -19
- data/spec/unit/provider/service/bsd_spec.rb +7 -9
- data/spec/unit/provider/service/daemontools_spec.rb +12 -16
- data/spec/unit/provider/service/debian_spec.rb +6 -10
- data/spec/unit/provider/service/freebsd_spec.rb +2 -2
- data/spec/unit/provider/service/launchd_spec.rb +19 -0
- data/spec/unit/provider/service/openbsd_spec.rb +13 -17
- data/spec/unit/provider/service/rcng_spec.rb +2 -4
- data/spec/unit/provider/service/redhat_spec.rb +12 -11
- data/spec/unit/provider/service/runit_spec.rb +7 -14
- data/spec/unit/provider/service/smf_spec.rb +77 -13
- data/spec/unit/provider/service/src_spec.rb +11 -16
- data/spec/unit/provider/service/systemd_spec.rb +39 -1
- data/spec/unit/provider/service/windows_spec.rb +39 -7
- data/spec/unit/provider/user/aix_spec.rb +43 -2
- data/spec/unit/provider/user/hpux_spec.rb +3 -5
- data/spec/unit/provider/user/ldap_spec.rb +29 -32
- data/spec/unit/provider/user/pw_spec.rb +10 -13
- data/spec/unit/provider/user/useradd_spec.rb +2 -2
- data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
- data/spec/unit/puppet_pal_2pec.rb +6 -6
- data/spec/unit/puppet_pal_catalog_spec.rb +58 -0
- data/spec/unit/resource/catalog_spec.rb +2 -2
- data/spec/unit/resource_spec.rb +31 -0
- data/spec/unit/ssl/host_spec.rb +22 -1
- data/spec/unit/ssl/key_spec.rb +2 -4
- data/spec/unit/task_spec.rb +50 -5
- data/spec/unit/transaction/event_manager_spec.rb +12 -1
- data/spec/unit/transaction/persistence_spec.rb +4 -4
- data/spec/unit/transaction/resource_harness_spec.rb +18 -0
- data/spec/unit/type/group_spec.rb +11 -3
- data/spec/unit/type/resources_spec.rb +18 -0
- data/spec/unit/type/service_spec.rb +27 -1
- data/spec/unit/util/execution_spec.rb +77 -0
- data/spec/unit/util/filetype_spec.rb +13 -5
- data/spec/unit/util/log/destinations_spec.rb +10 -0
- data/spec/unit/util/logging_spec.rb +58 -41
- data/spec/unit/util/monkey_patches_spec.rb +18 -5
- data/spec/unit/util/posix_spec.rb +28 -0
- data/spec/unit/util/selinux_spec.rb +4 -0
- data/spec/unit/util/storage_spec.rb +107 -0
- data/spec/unit/util/suidmanager_spec.rb +1 -3
- data/spec/unit/util/windows/adsi_spec.rb +95 -0
- data/spec/unit/util/windows/service_spec.rb +377 -131
- metadata +24 -11
- data/ext/autotest/Rakefile +0 -8
- data/ext/autotest/config +0 -43
- data/ext/autotest/readme.rst +0 -16
- data/spec/fixtures/unit/provider/package/pkgng/pkg.info +0 -7
- data/spec/fixtures/unit/provider/package/pkgng/pkg.query_absent +0 -1
- data/spec/watchr.rb +0 -137
|
@@ -285,10 +285,11 @@ describe "Puppet::Util::Windows::Security", :if => Puppet::Util::Platform.window
|
|
|
285
285
|
# access mask, and back to mode without loss of information
|
|
286
286
|
# (provided the owner and group are not the same)
|
|
287
287
|
next if ((u & g) != g) or ((g & o) != o)
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
288
|
+
applied_mode = (s << 9 | u << 6 | g << 3 | o << 0)
|
|
289
|
+
# SYSTEM must always be Full Control (7)
|
|
290
|
+
expected_mode = (s << 9 | u << 6 | 7 << 3 | o << 0)
|
|
291
|
+
winsec.set_mode(applied_mode, path)
|
|
292
|
+
expect(winsec.get_mode(path).to_s(8)).to eq(expected_mode.to_s(8))
|
|
292
293
|
end
|
|
293
294
|
end
|
|
294
295
|
end
|
|
@@ -634,9 +635,11 @@ describe "Puppet::Util::Windows::Security", :if => Puppet::Util::Platform.window
|
|
|
634
635
|
# access mask, and back to mode without loss of information
|
|
635
636
|
# (provided the owner and group are the same)
|
|
636
637
|
next if ((ug & o) != o)
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
638
|
+
applied_mode = (s << 9 | ug << 6 | ug << 3 | o << 0)
|
|
639
|
+
# SYSTEM must always be Full Control (7)
|
|
640
|
+
expected_mode = (s << 9 | 7 << 6 | 7 << 3 | o << 0)
|
|
641
|
+
winsec.set_mode(applied_mode, path)
|
|
642
|
+
expect(winsec.get_mode(path).to_s(8)).to eq(expected_mode.to_s(8))
|
|
640
643
|
end
|
|
641
644
|
end
|
|
642
645
|
end
|
|
@@ -6,54 +6,74 @@ describe "Puppet::Util::Windows::User", :if => Puppet::Util::Platform.windows? d
|
|
|
6
6
|
describe "2003 without UAC" do
|
|
7
7
|
before :each do
|
|
8
8
|
Puppet::Util::Windows::Process.stubs(:windows_major_version).returns(5)
|
|
9
|
+
Puppet::Util::Windows::Process.stubs(:supports_elevated_security?).returns(false)
|
|
9
10
|
end
|
|
10
11
|
|
|
11
12
|
it "should be an admin if user's token contains the Administrators SID" do
|
|
12
13
|
Puppet::Util::Windows::User.expects(:check_token_membership).returns(true)
|
|
13
|
-
Puppet::Util::Windows::Process.expects(:elevated_security?).never
|
|
14
14
|
|
|
15
15
|
expect(Puppet::Util::Windows::User).to be_admin
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
it "should not be an admin if user's token doesn't contain the Administrators SID" do
|
|
19
19
|
Puppet::Util::Windows::User.expects(:check_token_membership).returns(false)
|
|
20
|
-
Puppet::Util::Windows::Process.expects(:elevated_security?).never
|
|
21
20
|
|
|
22
21
|
expect(Puppet::Util::Windows::User).not_to be_admin
|
|
23
22
|
end
|
|
24
23
|
|
|
25
24
|
it "should raise an exception if we can't check token membership" do
|
|
26
25
|
Puppet::Util::Windows::User.expects(:check_token_membership).raises(Puppet::Util::Windows::Error, "Access denied.")
|
|
27
|
-
Puppet::Util::Windows::Process.expects(:elevated_security?).never
|
|
28
26
|
|
|
29
27
|
expect { Puppet::Util::Windows::User.admin? }.to raise_error(Puppet::Util::Windows::Error, /Access denied./)
|
|
30
28
|
end
|
|
31
29
|
end
|
|
32
30
|
|
|
33
|
-
|
|
31
|
+
context "2008 with UAC" do
|
|
34
32
|
before :each do
|
|
35
33
|
Puppet::Util::Windows::Process.stubs(:windows_major_version).returns(6)
|
|
34
|
+
Puppet::Util::Windows::Process.stubs(:supports_elevated_security?).returns(true)
|
|
36
35
|
end
|
|
37
36
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
describe "in local administrators group" do
|
|
38
|
+
before :each do
|
|
39
|
+
Puppet::Util::Windows::User.stubs(:check_token_membership).returns(true)
|
|
40
|
+
end
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
it "should be an admin if user is running with elevated privileges" do
|
|
43
|
+
Puppet::Util::Windows::Process.stubs(:elevated_security?).returns(true)
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
Puppet::Util::Windows::User.expects(:check_token_membership).never
|
|
45
|
+
expect(Puppet::Util::Windows::User).to be_admin
|
|
46
|
+
end
|
|
48
47
|
|
|
49
|
-
|
|
48
|
+
it "should not be an admin if user is not running with elevated privileges" do
|
|
49
|
+
Puppet::Util::Windows::Process.stubs(:elevated_security?).returns(false)
|
|
50
|
+
|
|
51
|
+
expect(Puppet::Util::Windows::User).not_to be_admin
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "should raise an exception if the process fails to open the process token" do
|
|
55
|
+
Puppet::Util::Windows::Process.stubs(:elevated_security?).raises(Puppet::Util::Windows::Error, "Access denied.")
|
|
56
|
+
|
|
57
|
+
expect { Puppet::Util::Windows::User.admin? }.to raise_error(Puppet::Util::Windows::Error, /Access denied./)
|
|
58
|
+
end
|
|
50
59
|
end
|
|
51
60
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
61
|
+
describe "not in local administrators group" do
|
|
62
|
+
before :each do
|
|
63
|
+
Puppet::Util::Windows::User.stubs(:check_token_membership).returns(false)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "should not be an admin if user is running with elevated privileges" do
|
|
67
|
+
Puppet::Util::Windows::Process.stubs(:elevated_security?).returns(true)
|
|
55
68
|
|
|
56
|
-
|
|
69
|
+
expect(Puppet::Util::Windows::User).not_to be_admin
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "should not be an admin if user is not running with elevated privileges" do
|
|
73
|
+
Puppet::Util::Windows::Process.stubs(:elevated_security?).returns(false)
|
|
74
|
+
|
|
75
|
+
expect(Puppet::Util::Windows::User).not_to be_admin
|
|
76
|
+
end
|
|
57
77
|
end
|
|
58
78
|
end
|
|
59
79
|
|
data/spec/lib/puppet/test_ca.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
data/spec/unit/agent_spec.rb
CHANGED
|
@@ -138,7 +138,7 @@ describe Puppet::Agent do
|
|
|
138
138
|
|
|
139
139
|
it "should not fail if a client class instance cannot be created" do
|
|
140
140
|
AgentTestClient.expects(:new).raises "eh"
|
|
141
|
-
Puppet.expects(:
|
|
141
|
+
Puppet.expects(:log_exception)
|
|
142
142
|
@agent.run
|
|
143
143
|
end
|
|
144
144
|
|
|
@@ -146,7 +146,7 @@ describe Puppet::Agent do
|
|
|
146
146
|
client = AgentTestClient.new
|
|
147
147
|
AgentTestClient.expects(:new).returns client
|
|
148
148
|
client.expects(:run).raises "eh"
|
|
149
|
-
Puppet.expects(:
|
|
149
|
+
Puppet.expects(:log_exception)
|
|
150
150
|
@agent.run
|
|
151
151
|
end
|
|
152
152
|
|
|
@@ -7,6 +7,8 @@ require 'puppet/configurer'
|
|
|
7
7
|
require 'fileutils'
|
|
8
8
|
|
|
9
9
|
describe Puppet::Application::Apply do
|
|
10
|
+
include PuppetSpec::Files
|
|
11
|
+
|
|
10
12
|
before :each do
|
|
11
13
|
@apply = Puppet::Application[:apply]
|
|
12
14
|
Puppet::Util::Log.stubs(:newdestination)
|
|
@@ -91,6 +93,13 @@ describe Puppet::Application::Apply do
|
|
|
91
93
|
@apply.setup
|
|
92
94
|
end
|
|
93
95
|
|
|
96
|
+
it "sets the log destination if logdest is provided via settings" do
|
|
97
|
+
Puppet::Log.expects(:newdestination).with("set_via_config")
|
|
98
|
+
Puppet[:logdest] = "set_via_config"
|
|
99
|
+
|
|
100
|
+
@apply.setup
|
|
101
|
+
end
|
|
102
|
+
|
|
94
103
|
it "should set INT trap" do
|
|
95
104
|
Signal.expects(:trap).with(:INT)
|
|
96
105
|
|
|
@@ -172,8 +181,6 @@ describe Puppet::Application::Apply do
|
|
|
172
181
|
end
|
|
173
182
|
|
|
174
183
|
describe "the main command" do
|
|
175
|
-
include PuppetSpec::Files
|
|
176
|
-
|
|
177
184
|
before :each do
|
|
178
185
|
Puppet[:prerun_command] = ''
|
|
179
186
|
Puppet[:postrun_command] = ''
|
|
@@ -279,6 +286,11 @@ describe Puppet::Application::Apply do
|
|
|
279
286
|
expect { @apply.main }.to exit_with 0
|
|
280
287
|
end
|
|
281
288
|
|
|
289
|
+
it 'should called the DeferredResolver to resolve any Deferred values' do
|
|
290
|
+
Puppet::Pops::Evaluator::DeferredResolver.expects(:resolve_and_replace).with(any_parameters)
|
|
291
|
+
expect { @apply.main }.to exit_with 0
|
|
292
|
+
end
|
|
293
|
+
|
|
282
294
|
it 'should make the Puppet::Pops::Loaders available when applying the compiled catalog' do
|
|
283
295
|
Puppet::Resource::Catalog.indirection.expects(:find).returns(@catalog)
|
|
284
296
|
@apply.expects(:apply_catalog).with(@catalog) do
|
|
@@ -475,6 +487,47 @@ describe Puppet::Application::Apply do
|
|
|
475
487
|
end
|
|
476
488
|
expect { @apply.apply }.not_to raise_error
|
|
477
489
|
end
|
|
490
|
+
|
|
491
|
+
it "should call the DeferredResolver to resolve Deferred values" do
|
|
492
|
+
@apply.options[:catalog] = temporary_catalog
|
|
493
|
+
Puppet::Resource::Catalog.stubs(:default_format).returns :rot13_piglatin
|
|
494
|
+
catalog = Puppet::Resource::Catalog.new("testing", Puppet::Node::Environment::NONE)
|
|
495
|
+
Puppet::Resource::Catalog.stubs(:convert_from).with(:rot13_piglatin,'"something"').returns(catalog)
|
|
496
|
+
Puppet::Pops::Evaluator::DeferredResolver.expects(:resolve_and_replace).with(any_parameters)
|
|
497
|
+
@apply.apply
|
|
498
|
+
end
|
|
499
|
+
end
|
|
500
|
+
end
|
|
501
|
+
|
|
502
|
+
describe "when really executing" do
|
|
503
|
+
let(:testfile) { tmpfile('secret_file_name') }
|
|
504
|
+
let(:resourcefile) { tmpfile('resourcefile') }
|
|
505
|
+
let(:classfile) { tmpfile('classfile') }
|
|
506
|
+
|
|
507
|
+
it "should not expose sensitive data in the relationship file" do
|
|
508
|
+
@apply.options[:code] = <<-CODE
|
|
509
|
+
$secret = Sensitive('cat #{testfile}')
|
|
510
|
+
|
|
511
|
+
exec { 'do it':
|
|
512
|
+
command => $secret,
|
|
513
|
+
path => '/bin/'
|
|
514
|
+
}
|
|
515
|
+
CODE
|
|
516
|
+
|
|
517
|
+
@apply.options[:write_catalog_summary] = true
|
|
518
|
+
|
|
519
|
+
Puppet.settings[:resourcefile] = resourcefile
|
|
520
|
+
Puppet.settings[:classfile] = classfile
|
|
521
|
+
|
|
522
|
+
#We don't actually need the resource to do anything, we are using it's properties in other parts of the workflow.
|
|
523
|
+
Puppet::Util::Execution.stubs(:execute)
|
|
524
|
+
|
|
525
|
+
expect { @apply.main }.to exit_with 0
|
|
526
|
+
|
|
527
|
+
result = File.read(resourcefile)
|
|
528
|
+
|
|
529
|
+
expect(result).not_to match(/secret_file_name/)
|
|
530
|
+
expect(result).to match(/do it/)
|
|
478
531
|
end
|
|
479
532
|
end
|
|
480
533
|
|
|
@@ -75,25 +75,25 @@ describe Puppet::Application::Device do
|
|
|
75
75
|
it "should set waitforcert to 0 with --onetime and if --waitforcert wasn't given" do
|
|
76
76
|
Puppet[:onetime] = true
|
|
77
77
|
Puppet::SSL::Host.any_instance.expects(:wait_for_cert).with(0)
|
|
78
|
-
@device.setup_host
|
|
78
|
+
@device.setup_host('device.example.com')
|
|
79
79
|
end
|
|
80
80
|
|
|
81
81
|
it "should use supplied waitforcert when --onetime is specified" do
|
|
82
82
|
Puppet[:onetime] = true
|
|
83
83
|
@device.handle_waitforcert(60)
|
|
84
84
|
Puppet::SSL::Host.any_instance.expects(:wait_for_cert).with(60)
|
|
85
|
-
@device.setup_host
|
|
85
|
+
@device.setup_host('device.example.com')
|
|
86
86
|
end
|
|
87
87
|
|
|
88
88
|
it "should use a default value for waitforcert when --onetime and --waitforcert are not specified" do
|
|
89
89
|
Puppet::SSL::Host.any_instance.expects(:wait_for_cert).with(120)
|
|
90
|
-
@device.setup_host
|
|
90
|
+
@device.setup_host('device.example.com')
|
|
91
91
|
end
|
|
92
92
|
|
|
93
93
|
it "should use the waitforcert setting when checking for a signed certificate" do
|
|
94
94
|
Puppet[:waitforcert] = 10
|
|
95
95
|
Puppet::SSL::Host.any_instance.expects(:wait_for_cert).with(10)
|
|
96
|
-
@device.setup_host
|
|
96
|
+
@device.setup_host('device.example.com')
|
|
97
97
|
end
|
|
98
98
|
|
|
99
99
|
it "should set the log destination with --logdest" do
|
|
@@ -271,14 +271,14 @@ describe Puppet::Application::Device do
|
|
|
271
271
|
|
|
272
272
|
it "should create a new ssl host" do
|
|
273
273
|
Puppet::SSL::Host.expects(:new).returns(@host)
|
|
274
|
-
@device.setup_host
|
|
274
|
+
@device.setup_host('device.example.com')
|
|
275
275
|
end
|
|
276
276
|
|
|
277
277
|
it "should wait for a certificate" do
|
|
278
278
|
@device.options.stubs(:[]).with(:waitforcert).returns(123)
|
|
279
279
|
@host.expects(:wait_for_cert).with(123)
|
|
280
280
|
|
|
281
|
-
@device.setup_host
|
|
281
|
+
@device.setup_host('device.example.com')
|
|
282
282
|
end
|
|
283
283
|
end
|
|
284
284
|
|
|
@@ -292,6 +292,7 @@ describe Puppet::Application::Device do
|
|
|
292
292
|
@device.options.stubs(:[]).with(:facts).returns(false)
|
|
293
293
|
@device.options.stubs(:[]).with(:resource).returns(false)
|
|
294
294
|
@device.options.stubs(:[]).with(:to_yaml).returns(false)
|
|
295
|
+
@device.options.stubs(:[]).with(:libdir).returns(nil)
|
|
295
296
|
@device.options.stubs(:[]).with(:client)
|
|
296
297
|
@device.command_line.stubs(:args).returns([])
|
|
297
298
|
Puppet::Util::NetworkDevice::Config.stubs(:devices).returns({})
|
|
@@ -497,7 +498,9 @@ describe Puppet::Application::Device do
|
|
|
497
498
|
expect { @device.main }.to exit_with 1
|
|
498
499
|
end
|
|
499
500
|
|
|
500
|
-
it "should print the device url scheme, host, and port" do
|
|
501
|
+
it "should retrieve plugins and print the device url scheme, host, and port" do
|
|
502
|
+
Puppet.stubs(:info)
|
|
503
|
+
Puppet.expects(:info).with "Retrieving pluginfacts"
|
|
501
504
|
Puppet.expects(:info).with "starting applying configuration to device1 at ssh://testhost"
|
|
502
505
|
Puppet.expects(:info).with "starting applying configuration to device2 at https://testhost:443/some/path"
|
|
503
506
|
expect { @device.main }.to exit_with 1
|
|
@@ -416,7 +416,7 @@ EOT
|
|
|
416
416
|
# it, but this helps us fail if that slips up and all. --daniel 2011-04-27
|
|
417
417
|
Puppet::Face[:help, :current].expects(:help).never
|
|
418
418
|
|
|
419
|
-
Puppet.expects(:
|
|
419
|
+
Puppet.expects(:send_log).with(:err, "Could not parse application options: I don't know how to render 'interpretive-dance'")
|
|
420
420
|
|
|
421
421
|
expect { app.run }.to exit_with(1)
|
|
422
422
|
end
|
|
@@ -13,7 +13,8 @@ describe Puppet::Application::Lookup do
|
|
|
13
13
|
ensure
|
|
14
14
|
$stdout = saved_stdout
|
|
15
15
|
end
|
|
16
|
-
|
|
16
|
+
# Drop end of line and an optional yaml end of document
|
|
17
|
+
capture.string.gsub(/\n(\.\.\.\n)?\Z/m, '')
|
|
17
18
|
end
|
|
18
19
|
|
|
19
20
|
context "when running with incorrect command line options" do
|