puppet 5.5.17-universal-darwin → 5.5.22-universal-darwin
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/CODEOWNERS +1 -1
- data/Gemfile +4 -5
- data/Gemfile.lock +59 -55
- data/ext/build_defaults.yaml +1 -0
- data/ext/cert_inspector +3 -3
- data/ext/puppet-test +2 -2
- data/ext/regexp_nodes/regexp_nodes.rb +4 -4
- data/ext/windows/service/daemon.rb +54 -8
- data/install.rb +6 -6
- data/lib/puppet.rb +5 -2
- data/lib/puppet/agent.rb +5 -13
- data/lib/puppet/application.rb +1 -1
- data/lib/puppet/application/agent.rb +3 -1
- data/lib/puppet/application/apply.rb +2 -2
- data/lib/puppet/application/describe.rb +3 -9
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +13 -0
- data/lib/puppet/application/lookup.rb +1 -1
- data/lib/puppet/application/script.rb +2 -2
- data/lib/puppet/configurer.rb +106 -31
- data/lib/puppet/configurer/downloader.rb +33 -16
- data/lib/puppet/daemon.rb +1 -1
- data/lib/puppet/defaults.rb +86 -40
- data/lib/puppet/error.rb +9 -1
- data/lib/puppet/external/nagios/base.rb +1 -1
- data/lib/puppet/face/ca.rb +1 -1
- data/lib/puppet/face/module/list.rb +5 -5
- data/lib/puppet/face/module/search.rb +1 -1
- data/lib/puppet/face/module/uninstall.rb +1 -1
- data/lib/puppet/face/module/upgrade.rb +1 -1
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- data/lib/puppet/file_system.rb +0 -8
- data/lib/puppet/file_system/memory_file.rb +1 -1
- data/lib/puppet/file_system/posix.rb +3 -2
- data/lib/puppet/file_system/uniquefile.rb +4 -0
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/functions/epp.rb +4 -4
- data/lib/puppet/functions/inline_epp.rb +5 -5
- data/lib/puppet/functions/new.rb +8 -3
- data/lib/puppet/functions/reduce.rb +2 -4
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/gettext/module_translations.rb +1 -1
- data/lib/puppet/graph/rb_tree_map.rb +2 -2
- data/lib/puppet/graph/simple_graph.rb +6 -5
- data/lib/puppet/indirector/catalog/compiler.rb +8 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
- data/lib/puppet/indirector/hiera.rb +6 -0
- data/lib/puppet/indirector/resource/ral.rb +1 -3
- data/lib/puppet/indirector/resource/validator.rb +1 -1
- data/lib/puppet/interface.rb +2 -1
- data/lib/puppet/loaders.rb +0 -1
- data/lib/puppet/metatype/manager.rb +1 -1
- data/lib/puppet/module.rb +1 -1
- data/lib/puppet/module_tool/applications/builder.rb +1 -1
- data/lib/puppet/module_tool/applications/installer.rb +1 -1
- data/lib/puppet/module_tool/applications/uninstaller.rb +3 -3
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/module_tool/shared_behaviors.rb +4 -4
- data/lib/puppet/module_tool/tar/mini.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +13 -12
- data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
- data/lib/puppet/network/http/connection.rb +14 -12
- data/lib/puppet/network/http/pool.rb +7 -1
- data/lib/puppet/network/http/rack/rest.rb +2 -2
- data/lib/puppet/network/http/site.rb +1 -1
- data/lib/puppet/network/resolver.rb +2 -2
- data/lib/puppet/node/environment.rb +11 -3
- data/lib/puppet/parser/ast.rb +1 -1
- data/lib/puppet/parser/ast/resourceparam.rb +1 -1
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
- data/lib/puppet/parser/environment_compiler.rb +3 -0
- data/lib/puppet/parser/functions.rb +14 -10
- data/lib/puppet/parser/functions/epp.rb +3 -3
- data/lib/puppet/parser/functions/inline_epp.rb +5 -5
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
- data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -2
- data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
- data/lib/puppet/pops/issues.rb +5 -0
- data/lib/puppet/pops/loaders.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +1 -0
- data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
- data/lib/puppet/pops/merge_strategy.rb +22 -18
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
- data/lib/puppet/pops/parser/locator.rb +1 -1
- data/lib/puppet/pops/parser/pn_parser.rb +17 -16
- data/lib/puppet/pops/puppet_stack.rb +51 -48
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
- data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
- data/lib/puppet/pops/types/string_converter.rb +10 -10
- data/lib/puppet/pops/types/type_calculator.rb +24 -0
- data/lib/puppet/pops/types/types.rb +3 -3
- data/lib/puppet/pops/validation/checker4_0.rb +29 -15
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/ensure.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +1 -1
- data/lib/puppet/provider/exec.rb +6 -2
- data/lib/puppet/provider/group/groupadd.rb +19 -19
- data/lib/puppet/provider/group/windows_adsi.rb +3 -3
- data/lib/puppet/provider/mailalias/aliases.rb +1 -1
- data/lib/puppet/provider/mount.rb +1 -1
- data/lib/puppet/provider/mount/parsed.rb +8 -8
- data/lib/puppet/provider/nameservice/directoryservice.rb +1 -1
- data/lib/puppet/provider/nameservice/pw.rb +2 -2
- data/lib/puppet/provider/package/aix.rb +17 -2
- data/lib/puppet/provider/package/apt.rb +14 -3
- data/lib/puppet/provider/package/dnfmodule.rb +141 -0
- data/lib/puppet/provider/package/dpkg.rb +16 -18
- data/lib/puppet/provider/package/fink.rb +20 -3
- data/lib/puppet/provider/package/gem.rb +4 -2
- data/lib/puppet/provider/package/openbsd.rb +14 -2
- data/lib/puppet/provider/package/pip.rb +37 -10
- data/lib/puppet/provider/package/pkg.rb +18 -5
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +16 -4
- data/lib/puppet/provider/package/portage.rb +4 -4
- data/lib/puppet/provider/package/puppet_gem.rb +5 -0
- data/lib/puppet/provider/package/rpm.rb +6 -6
- data/lib/puppet/provider/package/windows/package.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +28 -20
- data/lib/puppet/provider/package/zypper.rb +1 -0
- data/lib/puppet/provider/package_targetable.rb +5 -4
- data/lib/puppet/provider/parsedfile.rb +1 -1
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +3 -3
- data/lib/puppet/provider/selmodule/semodule.rb +43 -26
- data/lib/puppet/provider/service/daemontools.rb +9 -9
- data/lib/puppet/provider/service/openbsd.rb +1 -1
- data/lib/puppet/provider/service/rcng.rb +2 -2
- data/lib/puppet/provider/service/runit.rb +2 -8
- data/lib/puppet/provider/service/systemd.rb +31 -13
- data/lib/puppet/provider/user/directoryservice.rb +31 -6
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +39 -20
- data/lib/puppet/provider/user/windows_adsi.rb +4 -5
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
- data/lib/puppet/reference/indirection.rb +2 -2
- data/lib/puppet/reference/metaparameter.rb +1 -3
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/reference/type.rb +3 -9
- data/lib/puppet/reports.rb +1 -1
- data/lib/puppet/resource.rb +1 -1
- data/lib/puppet/resource/catalog.rb +1 -1
- data/lib/puppet/resource/type.rb +10 -1
- data/lib/puppet/settings.rb +3 -3
- data/lib/puppet/settings/environment_conf.rb +1 -0
- data/lib/puppet/ssl/certificate.rb +2 -1
- data/lib/puppet/ssl/certificate_authority.rb +6 -5
- data/lib/puppet/ssl/certificate_authority/interface.rb +1 -1
- data/lib/puppet/ssl/certificate_factory.rb +2 -2
- data/lib/puppet/ssl/host.rb +3 -3
- data/lib/puppet/ssl/oids.rb +1 -1
- data/lib/puppet/test/test_helper.rb +20 -12
- data/lib/puppet/transaction/report.rb +1 -1
- data/lib/puppet/transaction/resource_harness.rb +1 -1
- data/lib/puppet/type.rb +8 -4
- data/lib/puppet/type/cron.rb +1 -1
- data/lib/puppet/type/exec.rb +7 -3
- data/lib/puppet/type/file.rb +14 -2
- data/lib/puppet/type/file/data_sync.rb +5 -1
- data/lib/puppet/type/group.rb +4 -2
- data/lib/puppet/type/interface.rb +1 -1
- data/lib/puppet/type/notify.rb +3 -2
- data/lib/puppet/type/package.rb +97 -8
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/selboolean.rb +17 -3
- data/lib/puppet/type/service.rb +2 -8
- data/lib/puppet/type/user.rb +5 -9
- data/lib/puppet/util.rb +35 -12
- data/lib/puppet/util/autoload.rb +9 -7
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +8 -14
- data/lib/puppet/util/instance_loader.rb +1 -1
- data/lib/puppet/util/log.rb +1 -1
- data/lib/puppet/util/log/destinations.rb +3 -12
- data/lib/puppet/util/logging.rb +30 -18
- data/lib/puppet/util/metric.rb +2 -2
- data/lib/puppet/util/monkey_patches.rb +1 -1
- data/lib/puppet/util/nagios_maker.rb +2 -2
- data/lib/puppet/util/network_device/cisco/device.rb +1 -1
- data/lib/puppet/util/network_device/cisco/interface.rb +2 -2
- data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
- data/lib/puppet/util/pidlock.rb +12 -6
- data/lib/puppet/util/plist.rb +6 -0
- data/lib/puppet/util/provider_features.rb +2 -4
- data/lib/puppet/util/rdoc.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/selinux.rb +3 -1
- data/lib/puppet/util/windows/adsi.rb +60 -30
- data/lib/puppet/util/windows/api_types.rb +45 -32
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/process.rb +16 -15
- data/lib/puppet/util/windows/registry.rb +17 -15
- data/lib/puppet/util/windows/security.rb +1 -0
- data/lib/puppet/util/windows/sid.rb +3 -3
- data/lib/puppet/vendor.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_pal.rb +2 -2
- data/locales/puppet.pot +362 -318
- data/man/man5/puppet.conf.5 +39 -9
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-ca.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-cert.8 +1 -1
- data/man/man8/puppet-certificate.8 +1 -1
- data/man/man8/puppet-certificate_request.8 +1 -1
- data/man/man8/puppet-certificate_revocation_list.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 +16 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-master.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-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/provider/mailalias/aliases/test1 +1 -0
- data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +19 -0
- data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
- data/spec/integration/configurer_spec.rb +66 -0
- data/spec/integration/data_binding_spec.rb +1 -0
- data/spec/integration/defaults_spec.rb +1 -2
- data/spec/integration/faces/plugin_spec.rb +29 -47
- data/spec/integration/indirector/facts/facter_spec.rb +4 -0
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/type/notify_spec.rb +46 -0
- data/spec/integration/util/windows/adsi_spec.rb +6 -1
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/unit/agent_spec.rb +34 -26
- data/spec/unit/application/apply_spec.rb +2 -12
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer/fact_handler_spec.rb +0 -4
- data/spec/unit/configurer_spec.rb +430 -415
- data/spec/unit/daemon_spec.rb +0 -1
- data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_system/uniquefile_spec.rb +11 -0
- data/spec/unit/forge/forge_spec.rb +1 -3
- data/spec/unit/forge/repository_spec.rb +1 -3
- data/spec/unit/indirector/catalog/compiler_spec.rb +45 -26
- data/spec/unit/indirector/resource/ral_spec.rb +4 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/connection_spec.rb +43 -1
- data/spec/unit/network/http/pool_spec.rb +32 -0
- data/spec/unit/node_spec.rb +7 -4
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -3
- data/spec/unit/provider/exec_spec.rb +209 -0
- data/spec/unit/provider/group/groupadd_spec.rb +30 -1
- data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
- data/spec/unit/provider/package/aix_spec.rb +29 -0
- data/spec/unit/provider/package/apt_spec.rb +13 -2
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +247 -0
- data/spec/unit/provider/package/dpkg_spec.rb +35 -7
- data/spec/unit/provider/package/openbsd_spec.rb +17 -0
- data/spec/unit/provider/package/pip_spec.rb +93 -22
- data/spec/unit/provider/package/pkg_spec.rb +13 -1
- data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
- data/spec/unit/provider/package/pkgng_spec.rb +36 -0
- data/spec/unit/provider/package/portage_spec.rb +4 -4
- data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
- data/spec/unit/provider/package/yum_spec.rb +90 -0
- data/spec/unit/provider/package/zypper_spec.rb +13 -0
- data/spec/unit/provider/package_targetable_spec.rb +60 -0
- data/spec/unit/provider/selmodule_spec.rb +118 -47
- data/spec/unit/provider/service/daemontools_spec.rb +24 -0
- data/spec/unit/provider/service/runit_spec.rb +24 -0
- data/spec/unit/provider/service/systemd_spec.rb +109 -36
- data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
- data/spec/unit/provider/user/hpux_spec.rb +2 -2
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +81 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
- data/spec/unit/puppet_pal_2pec.rb +3 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +2 -3
- data/spec/unit/ssl/certificate_spec.rb +7 -0
- data/spec/unit/ssl/host_spec.rb +2 -0
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/type/exec_spec.rb +6 -12
- data/spec/unit/type/file/content_spec.rb +9 -3
- data/spec/unit/type/file_spec.rb +9 -4
- data/spec/unit/type/package_spec.rb +8 -0
- data/spec/unit/type/selboolean_spec.rb +4 -6
- data/spec/unit/type/service_spec.rb +9 -8
- data/spec/unit/type/user_spec.rb +19 -13
- data/spec/unit/util/execution_spec.rb +16 -0
- data/spec/unit/util/http_proxy_spec.rb +97 -0
- data/spec/unit/util/log/destinations_spec.rb +2 -26
- data/spec/unit/util/log_spec.rb +0 -138
- data/spec/unit/util/logging_spec.rb +200 -0
- data/spec/unit/util/pidlock_spec.rb +67 -40
- data/spec/unit/util/plist_spec.rb +20 -0
- data/spec/unit/util/windows/adsi_spec.rb +55 -4
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/sid_spec.rb +2 -2
- data/tasks/manpages.rake +1 -0
- metadata +16 -7
- data/lib/puppet/pops/loader/null_loader.rb +0 -60
- data/locales/ja/puppet.po +0 -12114
- data/spec/integration/test/test_helper_spec.rb +0 -31
@@ -32,12 +32,14 @@ describe Puppet::Type.type(:package).provider(:apt) do
|
|
32
32
|
|
33
33
|
it "should use 'apt-get remove' to uninstall" do
|
34
34
|
expect(provider).to receive(:aptget).with("-y", "-q", :remove, name)
|
35
|
+
expect(provider).to receive(:properties).and_return({:mark => :none})
|
35
36
|
provider.uninstall
|
36
37
|
end
|
37
38
|
|
38
39
|
it "should use 'apt-get purge' and 'dpkg purge' to purge" do
|
39
40
|
expect(provider).to receive(:aptget).with("-y", "-q", :remove, "--purge", name)
|
40
41
|
expect(provider).to receive(:dpkg).with("--purge", name)
|
42
|
+
expect(provider).to receive(:properties).and_return({:mark => :none})
|
41
43
|
provider.purge
|
42
44
|
end
|
43
45
|
|
@@ -88,14 +90,14 @@ Version table:
|
|
88
90
|
it "should preseed if a responsefile is provided" do
|
89
91
|
resource[:responsefile] = "/my/file"
|
90
92
|
expect(provider).to receive(:run_preseed)
|
91
|
-
|
93
|
+
expect(provider).to receive(:properties).and_return({:mark => :none})
|
92
94
|
allow(provider).to receive(:aptget)
|
93
95
|
provider.install
|
94
96
|
end
|
95
97
|
|
96
98
|
it "should check for a cdrom" do
|
97
99
|
expect(provider).to receive(:checkforcdrom)
|
98
|
-
|
100
|
+
expect(provider).to receive(:properties).and_return({:mark => :none})
|
99
101
|
allow(provider).to receive(:aptget)
|
100
102
|
provider.install
|
101
103
|
end
|
@@ -106,6 +108,7 @@ Version table:
|
|
106
108
|
expect(command[-1]).to eq(name)
|
107
109
|
expect(command[-2]).to eq(:install)
|
108
110
|
end
|
111
|
+
expect(provider).to receive(:properties).and_return({:mark => :none})
|
109
112
|
|
110
113
|
provider.install
|
111
114
|
end
|
@@ -115,6 +118,7 @@ Version table:
|
|
115
118
|
expect(provider).to receive(:aptget) do |*command|
|
116
119
|
expect(command[-1]).to eq("#{name}=1.0")
|
117
120
|
end
|
121
|
+
expect(provider).to receive(:properties).and_return({:mark => :none})
|
118
122
|
|
119
123
|
provider.install
|
120
124
|
end
|
@@ -124,6 +128,7 @@ Version table:
|
|
124
128
|
expect(provider).to receive(:aptget) do |*command|
|
125
129
|
expect(command).to include("--force-yes")
|
126
130
|
end
|
131
|
+
expect(provider).to receive(:properties).and_return({:mark => :none})
|
127
132
|
|
128
133
|
provider.install
|
129
134
|
end
|
@@ -132,6 +137,7 @@ Version table:
|
|
132
137
|
expect(provider).to receive(:aptget) do |*command|
|
133
138
|
expect(command).to include("-q")
|
134
139
|
end
|
140
|
+
expect(provider).to receive(:properties).and_return({:mark => :none})
|
135
141
|
|
136
142
|
provider.install
|
137
143
|
end
|
@@ -140,6 +146,7 @@ Version table:
|
|
140
146
|
expect(provider).to receive(:aptget) do |*command|
|
141
147
|
expect(command).to include("-y")
|
142
148
|
end
|
149
|
+
expect(provider).to receive(:properties).and_return({:mark => :none})
|
143
150
|
|
144
151
|
provider.install
|
145
152
|
end
|
@@ -149,6 +156,7 @@ Version table:
|
|
149
156
|
expect(provider).to receive(:aptget) do |*command|
|
150
157
|
expect(command).to include("DPkg::Options::=--force-confold")
|
151
158
|
end
|
159
|
+
expect(provider).to receive(:properties).and_return({:mark => :none})
|
152
160
|
|
153
161
|
provider.install
|
154
162
|
end
|
@@ -158,6 +166,7 @@ Version table:
|
|
158
166
|
expect(provider).to receive(:aptget) do |*command|
|
159
167
|
expect(command).to include("DPkg::Options::=--force-confnew")
|
160
168
|
end
|
169
|
+
expect(provider).to receive(:properties).and_return({:mark => :none})
|
161
170
|
|
162
171
|
provider.install
|
163
172
|
end
|
@@ -165,6 +174,7 @@ Version table:
|
|
165
174
|
it 'should support string install options' do
|
166
175
|
resource[:install_options] = ['--foo', '--bar']
|
167
176
|
expect(provider).to receive(:aptget).with('-q', '-y', '-o', 'DPkg::Options::=--force-confold', '--foo', '--bar', :install, name)
|
177
|
+
expect(provider).to receive(:properties).and_return({:mark => :none})
|
168
178
|
|
169
179
|
provider.install
|
170
180
|
end
|
@@ -172,6 +182,7 @@ Version table:
|
|
172
182
|
it 'should support hash install options' do
|
173
183
|
resource[:install_options] = ['--foo', { '--bar' => 'baz', '--baz' => 'foo' }]
|
174
184
|
expect(provider).to receive(:aptget).with('-q', '-y', '-o', 'DPkg::Options::=--force-confold', '--foo', '--bar=baz', '--baz=foo', :install, name)
|
185
|
+
expect(provider).to receive(:properties).and_return({:mark => :none})
|
175
186
|
|
176
187
|
provider.install
|
177
188
|
end
|
@@ -33,6 +33,7 @@ describe Puppet::Type.type(:package).provider(:aptitude) do
|
|
33
33
|
expect(pkg.provider).to receive(:aptitude).
|
34
34
|
with('-y', '-o', 'DPkg::Options::=--force-confold', :install, 'faff').
|
35
35
|
and_return(0)
|
36
|
+
expect(pkg.provider).to receive(:properties).and_return({:mark => :none})
|
36
37
|
|
37
38
|
pkg.provider.install
|
38
39
|
end
|
@@ -0,0 +1,247 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Puppet::Type.type(:package).provider(:dnfmodule) do
|
4
|
+
include PuppetSpec::Fixtures
|
5
|
+
|
6
|
+
let(:dnf_version) do
|
7
|
+
<<-DNF_OUTPUT
|
8
|
+
4.0.9
|
9
|
+
Installed: dnf-0:4.0.9.2-5.el8.noarch at Wed 29 May 2019 07:05:05 AM GMT
|
10
|
+
Built : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> at Thu 14 Feb 2019 12:04:07 PM GMT
|
11
|
+
|
12
|
+
Installed: rpm-0:4.14.2-9.el8.x86_64 at Wed 29 May 2019 07:04:33 AM GMT
|
13
|
+
Built : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> at Thu 20 Dec 2018 01:30:03 PM GMT
|
14
|
+
DNF_OUTPUT
|
15
|
+
end
|
16
|
+
|
17
|
+
let(:execute_options) do
|
18
|
+
{:failonfail => true, :combine => true, :custom_environment => {}}
|
19
|
+
end
|
20
|
+
|
21
|
+
let(:packages) { File.read(my_fixture("dnf-module-list.txt")) }
|
22
|
+
let(:dnf_path) { '/usr/bin/dnf' }
|
23
|
+
|
24
|
+
before(:each) { allow(Puppet::Util).to receive(:which).with('/usr/bin/dnf').and_return(dnf_path) }
|
25
|
+
|
26
|
+
it "should have lower specificity" do
|
27
|
+
allow(Facter).to receive(:value).with(:osfamily).and_return(:redhat)
|
28
|
+
allow(Facter).to receive(:value).with(:operatingsystem).and_return(:redhat)
|
29
|
+
allow(Facter).to receive(:value).with(:operatingsystemmajrelease).and_return('8')
|
30
|
+
expect(described_class.specificity).to be < 200
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "should be an opt-in provider" do
|
34
|
+
Array(4..8).each do |ver|
|
35
|
+
it "should not be default for redhat #{ver}" do
|
36
|
+
allow(Facter).to receive(:value).with(:operatingsystem).and_return('redhat')
|
37
|
+
allow(Facter).to receive(:value).with(:osfamily).and_return('redhat')
|
38
|
+
allow(Facter).to receive(:value).with(:operatingsystemmajrelease).and_return(ver.to_s)
|
39
|
+
expect(described_class).not_to be_default
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "handling dnf versions" do
|
45
|
+
before(:each) do
|
46
|
+
expect(Puppet::Type::Package::ProviderDnfmodule).to receive(:execute)
|
47
|
+
.with(["/usr/bin/dnf", "--version"])
|
48
|
+
.and_return(dnf_version).at_most(:once)
|
49
|
+
expect(Puppet::Util::Execution).to receive(:execute)
|
50
|
+
.with(["/usr/bin/dnf", "--version"], execute_options)
|
51
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new(dnf_version, 0))
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "with a supported dnf version" do
|
55
|
+
it "correctly parses the version" do
|
56
|
+
expect(described_class.current_version).to eq('4.0.9')
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "with an unsupported dnf version" do
|
61
|
+
let(:dnf_version) do
|
62
|
+
<<-DNF_OUTPUT
|
63
|
+
2.7.5
|
64
|
+
Installed: dnf-0:2.7.5-12.fc28.noarch at Mon 13 Aug 2018 11:05:27 PM GMT
|
65
|
+
Built : Fedora Project at Wed 18 Apr 2018 02:29:51 PM GMT
|
66
|
+
|
67
|
+
Installed: rpm-0:4.14.1-7.fc28.x86_64 at Mon 13 Aug 2018 11:05:25 PM GMT
|
68
|
+
Built : Fedora Project at Mon 19 Feb 2018 09:29:01 AM GMT
|
69
|
+
DNF_OUTPUT
|
70
|
+
end
|
71
|
+
|
72
|
+
before(:each) { described_class.instance_variable_set("@current_version", nil) }
|
73
|
+
|
74
|
+
it "correctly parses the version" do
|
75
|
+
expect(described_class.current_version).to eq('2.7.5')
|
76
|
+
end
|
77
|
+
|
78
|
+
it "raises an error when attempting prefetch" do
|
79
|
+
expect { described_class.prefetch('anything') }.to raise_error(Puppet::Error, "Modules are not supported on DNF versions lower than 3.0.1")
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe "when ensuring a module" do
|
85
|
+
let(:name) { 'baz' }
|
86
|
+
|
87
|
+
let(:resource) do
|
88
|
+
Puppet::Type.type(:package).new(
|
89
|
+
:name => name,
|
90
|
+
:provider => 'dnfmodule',
|
91
|
+
)
|
92
|
+
end
|
93
|
+
|
94
|
+
let(:provider) do
|
95
|
+
provider = described_class.new
|
96
|
+
provider.resource = resource
|
97
|
+
provider
|
98
|
+
end
|
99
|
+
|
100
|
+
describe 'provider features' do
|
101
|
+
it { is_expected.to be_versionable }
|
102
|
+
it { is_expected.to be_installable }
|
103
|
+
it { is_expected.to be_uninstallable }
|
104
|
+
end
|
105
|
+
|
106
|
+
context "when installing a new module" do
|
107
|
+
before do
|
108
|
+
provider.instance_variable_get('@property_hash')[:ensure] = :absent
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should not reset the module stream when package is absent" do
|
112
|
+
resource[:ensure] = :present
|
113
|
+
expect(provider).not_to receive(:uninstall)
|
114
|
+
expect(provider).to receive(:execute)
|
115
|
+
provider.install
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should not reset the module stream when package is purged" do
|
119
|
+
provider.instance_variable_get('@property_hash')[:ensure] = :purged
|
120
|
+
resource[:ensure] = :present
|
121
|
+
expect(provider).not_to receive(:uninstall)
|
122
|
+
expect(provider).to receive(:execute)
|
123
|
+
provider.install
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should just enable the module if it has no default profile" do
|
127
|
+
dnf_exception = Puppet::ExecutionFailure.new("Error: Problems in request:\nmissing groups or modules: #{resource[:name]}")
|
128
|
+
allow(provider).to receive(:execute).with(array_including('install')).and_raise(dnf_exception)
|
129
|
+
resource[:ensure] = :present
|
130
|
+
expect(provider).to receive(:execute).with(array_including('install')).ordered
|
131
|
+
expect(provider).to receive(:execute).with(array_including('enable')).ordered
|
132
|
+
provider.install
|
133
|
+
end
|
134
|
+
|
135
|
+
it "should just enable the module if enable_only = true" do
|
136
|
+
resource[:ensure] = :present
|
137
|
+
resource[:enable_only] = true
|
138
|
+
expect(provider).to receive(:execute).with(array_including('enable'))
|
139
|
+
expect(provider).not_to receive(:execute).with(array_including('install'))
|
140
|
+
provider.install
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should install the default stream and flavor" do
|
144
|
+
resource[:ensure] = :present
|
145
|
+
expect(provider).to receive(:execute).with(array_including('baz'))
|
146
|
+
provider.install
|
147
|
+
end
|
148
|
+
|
149
|
+
it "should install a specific stream" do
|
150
|
+
resource[:ensure] = '9.6'
|
151
|
+
expect(provider).to receive(:execute).with(array_including('baz:9.6'))
|
152
|
+
provider.install
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should install a specific flavor" do
|
156
|
+
resource[:ensure] = :present
|
157
|
+
resource[:flavor] = 'minimal'
|
158
|
+
expect(provider).to receive(:execute).with(array_including('baz/minimal'))
|
159
|
+
provider.install
|
160
|
+
end
|
161
|
+
|
162
|
+
it "should install a specific flavor and stream" do
|
163
|
+
resource[:ensure] = '9.6'
|
164
|
+
resource[:flavor] = 'minimal'
|
165
|
+
expect(provider).to receive(:execute).with(array_including('baz:9.6/minimal'))
|
166
|
+
provider.install
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
context "when ensuring a specific version on top of another stream" do
|
171
|
+
before do
|
172
|
+
provider.instance_variable_get('@property_hash')[:ensure] = '9.6'
|
173
|
+
end
|
174
|
+
|
175
|
+
it "should remove existing packages and reset the module stream before installing" do
|
176
|
+
resource[:ensure] = '10'
|
177
|
+
expect(provider).to receive(:execute).thrice.with(array_including(/remove|reset|install/))
|
178
|
+
provider.install
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
context "with an installed flavor" do
|
183
|
+
before do
|
184
|
+
provider.instance_variable_get('@property_hash')[:flavor] = 'minimal'
|
185
|
+
end
|
186
|
+
|
187
|
+
it "should remove existing packages and reset the module stream before installing another flavor" do
|
188
|
+
resource[:flavor] = 'common'
|
189
|
+
expect(provider).to receive(:execute).thrice.with(array_including(/remove|reset|install/))
|
190
|
+
provider.flavor = resource[:flavor]
|
191
|
+
end
|
192
|
+
|
193
|
+
it "should not do anything if the flavor doesn't change" do
|
194
|
+
resource[:flavor] = 'minimal'
|
195
|
+
expect(provider).not_to receive(:execute)
|
196
|
+
provider.flavor = resource[:flavor]
|
197
|
+
end
|
198
|
+
|
199
|
+
it "should return the existing flavor" do
|
200
|
+
expect(provider.flavor).to eq('minimal')
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
context "when disabling a module" do
|
205
|
+
|
206
|
+
it "executed the disable command" do
|
207
|
+
resource[:ensure] = :disabled
|
208
|
+
expect(provider).to receive(:execute).with(array_including('disable'))
|
209
|
+
provider.disable
|
210
|
+
end
|
211
|
+
|
212
|
+
it "does not try to disable if package is already disabled" do
|
213
|
+
allow(described_class).to receive(:command).with(:dnf).and_return(dnf_path)
|
214
|
+
allow(Puppet::Util::Execution).to receive(:execute)
|
215
|
+
.with("/usr/bin/dnf module list -d 0 -e 1")
|
216
|
+
.and_return("baz 1.2 [d][x] common [d], complete Package Description")
|
217
|
+
resource[:ensure] = :disabled
|
218
|
+
expect(provider).to be_insync(:disabled)
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
context "parsing the output of module list" do
|
224
|
+
before { allow(described_class).to receive(:command).with(:dnf).and_return(dnf_path) }
|
225
|
+
|
226
|
+
it "returns an array of enabled modules" do
|
227
|
+
allow(Puppet::Util::Execution).to receive(:execute)
|
228
|
+
.with("/usr/bin/dnf module list -d 0 -e 1")
|
229
|
+
.and_return(packages)
|
230
|
+
|
231
|
+
enabled_packages = described_class.instances.map { |package| package.properties }
|
232
|
+
expected_packages = [{name: "389-ds", ensure: "1.4", flavor: :absent, provider: :dnfmodule},
|
233
|
+
{name: "gimp", ensure: "2.8", flavor: "devel", provider: :dnfmodule},
|
234
|
+
{name: "mariadb", ensure: "10.3", flavor: "client", provider: :dnfmodule},
|
235
|
+
{name: "nodejs", ensure: "10", flavor: "minimal", provider: :dnfmodule},
|
236
|
+
{name: "perl", ensure: "5.26", flavor: "minimal", provider: :dnfmodule},
|
237
|
+
{name: "postgresql", ensure: "10", flavor: "server", provider: :dnfmodule},
|
238
|
+
{name: "ruby", ensure: "2.5", flavor: :absent, provider: :dnfmodule},
|
239
|
+
{name: "rust-toolset", ensure: "rhel8", flavor: "common", provider: :dnfmodule},
|
240
|
+
{name: "subversion", ensure: "1.10", flavor: "server", provider: :dnfmodule},
|
241
|
+
{name: "swig", ensure: :disabled, flavor: :absent, provider: :dnfmodule},
|
242
|
+
{name: "virt", ensure: :disabled, flavor: :absent, provider: :dnfmodule}]
|
243
|
+
|
244
|
+
expect(enabled_packages).to eql(expected_packages)
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
@@ -126,7 +126,10 @@ describe Puppet::Type.type(:package).provider(:dpkg) do
|
|
126
126
|
|
127
127
|
it "considers the package held if its state is 'hold'" do
|
128
128
|
dpkg_query_execution_returns(bash_installed_output.gsub("install","hold"))
|
129
|
-
|
129
|
+
query=provider.query
|
130
|
+
expect(query[:ensure]).to eq("4.2-5ubuntu3")
|
131
|
+
expect(query[:mark]).to eq(:hold)
|
132
|
+
|
130
133
|
end
|
131
134
|
|
132
135
|
context "parsing tests" do
|
@@ -184,14 +187,15 @@ describe Puppet::Type.type(:package).provider(:dpkg) do
|
|
184
187
|
|
185
188
|
it "uses 'dpkg -i' to install the package" do
|
186
189
|
expect(resource).to receive(:[]).with(:source).and_return("mypackagefile")
|
190
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
187
191
|
expect(provider).to receive(:unhold)
|
188
192
|
expect(provider).to receive(:dpkg).with(any_args, "-i", "mypackagefile")
|
189
|
-
|
190
193
|
provider.install
|
191
194
|
end
|
192
195
|
|
193
196
|
it "keeps old config files if told to do so" do
|
194
197
|
expect(resource).to receive(:[]).with(:configfiles).and_return(:keep)
|
198
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
195
199
|
expect(provider).to receive(:unhold)
|
196
200
|
expect(provider).to receive(:dpkg).with("--force-confold", any_args)
|
197
201
|
|
@@ -200,6 +204,7 @@ describe Puppet::Type.type(:package).provider(:dpkg) do
|
|
200
204
|
|
201
205
|
it "replaces old config files if told to do so" do
|
202
206
|
expect(resource).to receive(:[]).with(:configfiles).and_return(:replace)
|
207
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
203
208
|
expect(provider).to receive(:unhold)
|
204
209
|
expect(provider).to receive(:dpkg).with("--force-confnew", any_args)
|
205
210
|
|
@@ -207,6 +212,7 @@ describe Puppet::Type.type(:package).provider(:dpkg) do
|
|
207
212
|
end
|
208
213
|
|
209
214
|
it "ensures any hold is removed" do
|
215
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
210
216
|
expect(provider).to receive(:unhold).once
|
211
217
|
expect(provider).to receive(:dpkg)
|
212
218
|
provider.install
|
@@ -222,18 +228,28 @@ describe Puppet::Type.type(:package).provider(:dpkg) do
|
|
222
228
|
end
|
223
229
|
|
224
230
|
it "installs first if package is not present and ensure holding" do
|
231
|
+
allow(provider).to receive(:execute)
|
232
|
+
allow(provider).to receive(:package_not_installed?).and_return(true)
|
233
|
+
expect(provider).to receive(:install).once
|
234
|
+
expect(provider).to receive(:hold)
|
235
|
+
provider.deprecated_hold
|
236
|
+
end
|
237
|
+
|
225
238
|
|
239
|
+
it "skips install new package if hold is true" do
|
226
240
|
allow(provider).to receive(:execute)
|
227
241
|
allow(provider).to receive(:package_not_installed?).and_return(true)
|
228
242
|
expect(provider).to receive(:install).once
|
229
|
-
provider.hold
|
243
|
+
expect(provider).to receive(:hold)
|
244
|
+
provider.deprecated_hold
|
230
245
|
end
|
231
246
|
|
232
247
|
it "skips install new package if package is allready installed" do
|
233
248
|
allow(provider).to receive(:execute)
|
234
249
|
allow(provider).to receive(:package_not_installed?).and_return(false)
|
235
250
|
expect(provider).not_to receive(:install)
|
236
|
-
provider.hold
|
251
|
+
expect(provider).to receive(:hold)
|
252
|
+
provider.deprecated_hold
|
237
253
|
end
|
238
254
|
|
239
255
|
it "executes dpkg --set-selections when holding" do
|
@@ -287,9 +303,21 @@ describe Puppet::Type.type(:package).provider(:dpkg) do
|
|
287
303
|
provider.purge
|
288
304
|
end
|
289
305
|
|
290
|
-
|
291
|
-
|
292
|
-
|
306
|
+
context "package_not_installed?" do
|
307
|
+
it "returns true if package is not found" do
|
308
|
+
expect(provider).to receive(:dpkgquery).with("-W", "--showformat", "'${Status} ${Package} ${Version}\\n'", resource_name).and_raise(Puppet::ExecutionFailure.new("eh"))
|
309
|
+
expect(provider.package_not_installed?).to eq(true)
|
310
|
+
end
|
311
|
+
|
312
|
+
it "returns true if package is not installed" do
|
313
|
+
expect(provider).to receive(:dpkgquery).with("-W", "--showformat", "'${Status} ${Package} ${Version}\\n'", resource_name).and_return("unknown ok not-installed #{resource_name}")
|
314
|
+
expect(provider.package_not_installed?).to eq(true)
|
315
|
+
end
|
316
|
+
|
317
|
+
it "returns false if package is installed" do
|
318
|
+
expect(provider).to receive(:dpkgquery).with("-W", "--showformat", "'${Status} ${Package} ${Version}\\n'", resource_name).and_return("install ok installed resource_name 1.2.3")
|
319
|
+
expect(provider.package_not_installed?).to eq(false)
|
320
|
+
end
|
293
321
|
end
|
294
322
|
end
|
295
323
|
|