puppet 5.5.17-x86-mingw32 → 5.5.22-x86-mingw32
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
@@ -24,7 +24,7 @@ Puppet::Type.type(:group).provide :windows_adsi do
|
|
24
24
|
# since the default array_matching comparison is not commutative
|
25
25
|
|
26
26
|
# dupes automatically weeded out when hashes built
|
27
|
-
current_members = Puppet::Util::Windows::ADSI::Group.name_sid_hash(current)
|
27
|
+
current_members = Puppet::Util::Windows::ADSI::Group.name_sid_hash(current, true)
|
28
28
|
specified_members = Puppet::Util::Windows::ADSI::Group.name_sid_hash(should)
|
29
29
|
|
30
30
|
current_sids = current_members.keys.to_a
|
@@ -52,7 +52,7 @@ Puppet::Type.type(:group).provide :windows_adsi do
|
|
52
52
|
account = sid.account
|
53
53
|
end
|
54
54
|
resource.debug("#{sid.domain}\\#{account} (#{sid.sid})")
|
55
|
-
"#{sid.domain}\\#{account}"
|
55
|
+
sid.domain ? "#{sid.domain}\\#{account}" : account
|
56
56
|
end
|
57
57
|
return users.join(',')
|
58
58
|
end
|
@@ -66,7 +66,7 @@ Puppet::Type.type(:group).provide :windows_adsi do
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def members
|
69
|
-
@members ||= Puppet::Util::Windows::ADSI::Group.name_sid_hash(group.members)
|
69
|
+
@members ||= Puppet::Util::Windows::ADSI::Group.name_sid_hash(group.members, true)
|
70
70
|
|
71
71
|
# @members.keys returns an array of SIDs. We need to convert those SIDs into
|
72
72
|
# names so that `puppet resource` prints the right output.
|
@@ -12,7 +12,7 @@ Puppet::Type.type(:mailalias).provide(
|
|
12
12
|
record_line :aliases, :fields => %w{name recipient}, :separator => /\s*:\s*/, :block_eval => :instance do
|
13
13
|
def post_parse(record)
|
14
14
|
if record[:recipient]
|
15
|
-
|
15
|
+
record[:recipient] = record[:recipient].split(/\s*,\s*(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/).collect { |d| d.gsub(/^['"]|['"]$/, '') }
|
16
16
|
end
|
17
17
|
record
|
18
18
|
end
|
@@ -30,7 +30,7 @@ module Puppet::Provider::Mount
|
|
30
30
|
supports_remounts = (resource[:remounts] == :true)
|
31
31
|
if supports_remounts && os == 'AIX'
|
32
32
|
remount_with_option("remount")
|
33
|
-
elsif os
|
33
|
+
elsif os =~ /^(FreeBSD|DragonFly|OpenBSD)$/
|
34
34
|
remount_with_option("update")
|
35
35
|
elsif supports_remounts
|
36
36
|
mountcmd "-o", "remount", resource[:name]
|
@@ -56,15 +56,15 @@ Puppet::Type.type(:mount).provide(
|
|
56
56
|
filesystem_index = 0
|
57
57
|
ret = Array.new
|
58
58
|
lines.each_with_index do |line,i|
|
59
|
-
if line
|
59
|
+
if line =~ %r{^\S+:}
|
60
60
|
# Begin new filesystem stanza and save the index
|
61
61
|
ret[filesystem_index] = filesystem_stanza.join("\n") if filesystem_stanza
|
62
62
|
filesystem_stanza = Array(line)
|
63
63
|
filesystem_index = i
|
64
64
|
# Eat the preceding blank line
|
65
|
-
ret[i-1] = nil if i > 0 and ret[i-1] and ret[i-1]
|
65
|
+
ret[i-1] = nil if i > 0 and ret[i-1] and ret[i-1] =~ %r{^\s*$}
|
66
66
|
nil
|
67
|
-
elsif line
|
67
|
+
elsif line =~ %r{^(\s*\*.*|\s*)$}
|
68
68
|
# Just a comment or blank line; add in place
|
69
69
|
ret[i] = line
|
70
70
|
else
|
@@ -75,7 +75,7 @@ Puppet::Type.type(:mount).provide(
|
|
75
75
|
# Add the final stanza to the return
|
76
76
|
ret[filesystem_index] = filesystem_stanza.join("\n") if filesystem_stanza
|
77
77
|
ret = ret.compact.flatten
|
78
|
-
ret.reject { |line| line
|
78
|
+
ret.reject { |line| line =~ /^\* HEADER/ }
|
79
79
|
end
|
80
80
|
def self.header
|
81
81
|
super.gsub(/^#/,'*')
|
@@ -104,7 +104,7 @@ Puppet::Type.type(:mount).provide(
|
|
104
104
|
special_options = Array.new
|
105
105
|
result[:name] = memo[:name].sub(%r{:\s*$},'').strip
|
106
106
|
memo.each do |_,k_v|
|
107
|
-
if k_v and k_v.is_a?(String) and k_v.
|
107
|
+
if k_v and k_v.is_a?(String) and k_v.include?("=")
|
108
108
|
attr_name, attr_value = k_v.split("=",2).map(&:strip)
|
109
109
|
if attr_map_name = property_map[attr_name.to_sym]
|
110
110
|
# These are normal "options" options (see `man filesystems`)
|
@@ -135,10 +135,10 @@ Puppet::Type.type(:mount).provide(
|
|
135
135
|
def to_line(result)
|
136
136
|
output = Array.new
|
137
137
|
output << "#{result[:name]}:"
|
138
|
-
if result[:device] and result[:device]
|
138
|
+
if result[:device] and result[:device] =~ %r{^/}
|
139
139
|
output << "\tdev\t\t= #{result[:device]}"
|
140
140
|
elsif result[:device] and result[:device] != :absent
|
141
|
-
if ! result[:device]
|
141
|
+
if ! result[:device] =~ %{^.+:/}
|
142
142
|
# Just skip this entry; it was malformed to begin with
|
143
143
|
Puppet.err _("Mount[%{name}]: Field 'device' must be in the format of <absolute path> or <host>:<absolute path>") % { name: result[:name] }
|
144
144
|
return result[:line]
|
@@ -161,7 +161,7 @@ Puppet::Type.type(:mount).provide(
|
|
161
161
|
if result[:options]
|
162
162
|
options = result[:options].split(',')
|
163
163
|
special_options = options.select do |x|
|
164
|
-
x.
|
164
|
+
x.include?('=') and
|
165
165
|
["account", "boot", "check", "free", "mount", "size", "type",
|
166
166
|
"vol", "log", "quota"].include? x.split('=').first
|
167
167
|
end
|
@@ -289,7 +289,7 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
|
|
289
289
|
end
|
290
290
|
dscl_out = dscl(dscl_args)
|
291
291
|
# We're ok with throwing away negative uids here.
|
292
|
-
ids = dscl_out.split.compact.collect { |l| l.to_i if l
|
292
|
+
ids = dscl_out.split.compact.collect { |l| l.to_i if l =~ /^\d+$/ }
|
293
293
|
ids.compact!.sort! { |a,b| a.to_f <=> b.to_f }
|
294
294
|
# We're just looking for an unused id in our sorted array.
|
295
295
|
ids.each_index do |i|
|
@@ -3,13 +3,13 @@ require 'puppet/provider/nameservice/objectadd'
|
|
3
3
|
class Puppet::Provider::NameService
|
4
4
|
class PW < ObjectAdd
|
5
5
|
def deletecmd
|
6
|
-
[command(:pw), "#{@resource.class.name
|
6
|
+
[command(:pw), "#{@resource.class.name}del", @resource[:name]]
|
7
7
|
end
|
8
8
|
|
9
9
|
def modifycmd(param, value)
|
10
10
|
cmd = [
|
11
11
|
command(:pw),
|
12
|
-
"#{@resource.class.name
|
12
|
+
"#{@resource.class.name}mod",
|
13
13
|
@resource[:name],
|
14
14
|
flag(param),
|
15
15
|
munge(param, value)
|
@@ -29,6 +29,15 @@ Puppet::Type.type(:package).provide :aix, :parent => Puppet::Provider::Package d
|
|
29
29
|
|
30
30
|
attr_accessor :latest_info
|
31
31
|
|
32
|
+
STATE_CODE = {
|
33
|
+
'A' => :applied,
|
34
|
+
'B' => :broken,
|
35
|
+
'C' => :committed,
|
36
|
+
'E' => :efix_locked,
|
37
|
+
'O' => :obsolete,
|
38
|
+
'?' => :inconsistent,
|
39
|
+
}.freeze
|
40
|
+
|
32
41
|
def self.srclistcmd(source)
|
33
42
|
[ command(:installp), "-L", "-d", source ]
|
34
43
|
end
|
@@ -96,6 +105,11 @@ Puppet::Type.type(:package).provide :aix, :parent => Puppet::Provider::Package d
|
|
96
105
|
if output =~ /^#{Regexp.escape(@resource[:name])}\s+.*\s+Already superseded by.*$/
|
97
106
|
self.fail _("aix package provider is unable to downgrade packages")
|
98
107
|
end
|
108
|
+
|
109
|
+
pkg_info = query
|
110
|
+
if pkg_info && [:broken, :inconsistent].include?(pkg_info[:status])
|
111
|
+
self.fail _("Package '%{name}' is in a %{status} state and requires manual intervention") % { name: @resource[:name], status: pkg_info[:status] }
|
112
|
+
end
|
99
113
|
end
|
100
114
|
|
101
115
|
def self.pkglist(hash = {})
|
@@ -106,8 +120,9 @@ Puppet::Type.type(:package).provide :aix, :parent => Puppet::Provider::Package d
|
|
106
120
|
end
|
107
121
|
|
108
122
|
begin
|
109
|
-
list = execute(cmd).scan(/^[^#][^:]*:([^:]*):([^:]*)/).collect { |n,e|
|
110
|
-
|
123
|
+
list = execute(cmd).scan(/^[^#][^:]*:([^:]*):([^:]*):[^:]*:[^:]*:([^:])/).collect { |n,e,s|
|
124
|
+
e = :absent if [:broken, :inconsistent].include?(STATE_CODE[s])
|
125
|
+
{ :name => n, :ensure => e, :status => STATE_CODE[s], :provider => self.name }
|
111
126
|
}
|
112
127
|
rescue Puppet::ExecutionFailure => detail
|
113
128
|
if hash[:pkgname]
|
@@ -70,7 +70,12 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg, :source => :dpkg do
|
|
70
70
|
cmd += install_options if @resource[:install_options]
|
71
71
|
cmd << :install << str
|
72
72
|
|
73
|
-
|
73
|
+
self.unhold if self.properties[:mark] == :hold
|
74
|
+
begin
|
75
|
+
aptget(*cmd)
|
76
|
+
ensure
|
77
|
+
self.hold if @resource[:mark] == :hold
|
78
|
+
end
|
74
79
|
end
|
75
80
|
|
76
81
|
# What's the latest package version available?
|
@@ -100,12 +105,18 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg, :source => :dpkg do
|
|
100
105
|
|
101
106
|
def uninstall
|
102
107
|
self.run_preseed if @resource[:responsefile]
|
103
|
-
|
108
|
+
args = ['-y', '-q']
|
109
|
+
args << '--allow-change-held-packages' if self.properties[:mark] == :hold
|
110
|
+
args << :remove << @resource[:name]
|
111
|
+
aptget(*args)
|
104
112
|
end
|
105
113
|
|
106
114
|
def purge
|
107
115
|
self.run_preseed if @resource[:responsefile]
|
108
|
-
|
116
|
+
args = ['-y', '-q']
|
117
|
+
args << '--allow-change-held-packages' if self.properties[:mark] == :hold
|
118
|
+
args << :remove << '--purge' << @resource[:name]
|
119
|
+
aptget(*args)
|
109
120
|
# workaround a "bug" in apt, that already removed packages are not purged
|
110
121
|
super
|
111
122
|
end
|
@@ -0,0 +1,141 @@
|
|
1
|
+
# dnfmodule - A puppet package provider for DNF modules
|
2
|
+
#
|
3
|
+
# Installing a module:
|
4
|
+
# package { 'postgresql':
|
5
|
+
# provider => 'dnfmodule',
|
6
|
+
# ensure => '9.6', # install a specific stream
|
7
|
+
# flavor => 'client', # install a specific profile
|
8
|
+
# }
|
9
|
+
|
10
|
+
|
11
|
+
require 'puppet/provider/package'
|
12
|
+
|
13
|
+
Puppet::Type.type(:package).provide :dnfmodule, :parent => :dnf do
|
14
|
+
|
15
|
+
has_feature :installable, :uninstallable, :versionable, :supports_flavors, :disableable
|
16
|
+
#has_feature :upgradeable
|
17
|
+
# it's not (yet) feasible to make this upgradeable since module streams don't
|
18
|
+
# always have matching version types (i.e. idm has streams DL1 and client,
|
19
|
+
# other modules have semver streams, others have string streams... we cannot
|
20
|
+
# programatically determine a latest version for ensure => 'latest'
|
21
|
+
|
22
|
+
commands :dnf => '/usr/bin/dnf'
|
23
|
+
|
24
|
+
def self.current_version
|
25
|
+
@current_version ||= dnf('--version').split.first
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.prefetch(packages)
|
29
|
+
if Puppet::Util::Package.versioncmp(current_version, '3.0.1') < 0
|
30
|
+
raise Puppet::Error, _("Modules are not supported on DNF versions lower than 3.0.1")
|
31
|
+
end
|
32
|
+
super
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.instances
|
36
|
+
packages = []
|
37
|
+
cmd = "#{command(:dnf)} module list -d 0 -e #{error_level}"
|
38
|
+
execute(cmd).each_line do |line|
|
39
|
+
# select only lines with actual packages since DNF clutters the output
|
40
|
+
next unless line =~ /\[[eix]\][, ]/
|
41
|
+
line.gsub!(/\[d\]/, '') # we don't care about the default flag
|
42
|
+
|
43
|
+
flavor = if line.include?('[i]')
|
44
|
+
line.split('[i]').first.split.last
|
45
|
+
else
|
46
|
+
:absent
|
47
|
+
end
|
48
|
+
|
49
|
+
packages << new(
|
50
|
+
name: line.split[0],
|
51
|
+
ensure: if line.include?('[x]')
|
52
|
+
:disabled
|
53
|
+
else
|
54
|
+
line.split[1]
|
55
|
+
end,
|
56
|
+
flavor: flavor,
|
57
|
+
provider: name
|
58
|
+
)
|
59
|
+
end
|
60
|
+
packages
|
61
|
+
end
|
62
|
+
|
63
|
+
def query
|
64
|
+
pkg = self.class.instances.find do |package|
|
65
|
+
@resource[:name] == package.name
|
66
|
+
end
|
67
|
+
pkg ? pkg.properties : nil
|
68
|
+
end
|
69
|
+
|
70
|
+
# to install specific streams and profiles:
|
71
|
+
# $ dnf module install module-name:stream/profile
|
72
|
+
# $ dnf module install perl:5.24/minimal
|
73
|
+
# if unspecified, they will be defaulted (see [d] param in dnf module list output)
|
74
|
+
def install
|
75
|
+
# ensure we start fresh (remove existing stream)
|
76
|
+
uninstall unless [:absent, :purged].include?(@property_hash[:ensure])
|
77
|
+
|
78
|
+
args = @resource[:name].dup
|
79
|
+
case @resource[:ensure]
|
80
|
+
when true, false, Symbol
|
81
|
+
# pass
|
82
|
+
else
|
83
|
+
args << ":#{@resource[:ensure]}"
|
84
|
+
end
|
85
|
+
args << "/#{@resource[:flavor]}" if @resource[:flavor]
|
86
|
+
|
87
|
+
if @resource[:enable_only] == true
|
88
|
+
enable(args)
|
89
|
+
else
|
90
|
+
begin
|
91
|
+
execute([command(:dnf), 'module', 'install', '-d', '0', '-e', self.class.error_level, '-y', args])
|
92
|
+
rescue Puppet::ExecutionFailure => e
|
93
|
+
# module has no default profile and no profile was requested, so just enable the stream
|
94
|
+
# DNF versions prior to 4.2.8 do not need this workaround
|
95
|
+
# see https://bugzilla.redhat.com/show_bug.cgi?id=1669527
|
96
|
+
if @resource[:flavor] == nil && e.message =~ /^missing groups or modules: #{Regexp.quote(@resource[:name])}$/
|
97
|
+
enable(args)
|
98
|
+
else
|
99
|
+
raise
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
# should only get here when @resource[ensure] is :disabled
|
106
|
+
def insync?(is)
|
107
|
+
if resource[:ensure] == :disabled
|
108
|
+
# in sync only if package is already disabled
|
109
|
+
pkg = self.class.instances.find do |package|
|
110
|
+
@resource[:name] == package.name && package.properties[:ensure] == :disabled
|
111
|
+
end
|
112
|
+
return true if pkg
|
113
|
+
end
|
114
|
+
return false
|
115
|
+
end
|
116
|
+
|
117
|
+
def enable(args = @resource[:name])
|
118
|
+
execute([command(:dnf), 'module', 'enable', '-d', '0', '-e', self.class.error_level, '-y', args])
|
119
|
+
end
|
120
|
+
|
121
|
+
def uninstall
|
122
|
+
execute([command(:dnf), 'module', 'remove', '-d', '0', '-e', self.class.error_level, '-y', @resource[:name]])
|
123
|
+
reset # reset module to the default stream
|
124
|
+
end
|
125
|
+
|
126
|
+
def disable(args = @resource[:name])
|
127
|
+
execute([command(:dnf), 'module', 'disable', '-d', '0', '-e', self.class.error_level, '-y', args])
|
128
|
+
end
|
129
|
+
|
130
|
+
def reset
|
131
|
+
execute([command(:dnf), 'module', 'reset', '-d', '0', '-e', self.class.error_level, '-y', @resource[:name]])
|
132
|
+
end
|
133
|
+
|
134
|
+
def flavor
|
135
|
+
@property_hash[:flavor]
|
136
|
+
end
|
137
|
+
|
138
|
+
def flavor=(value)
|
139
|
+
install if flavor != @resource.should(:flavor)
|
140
|
+
end
|
141
|
+
end
|
@@ -44,7 +44,7 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
|
|
44
44
|
# Note: self:: is required here to keep these constants in the context of what will
|
45
45
|
# eventually become this Puppet::Type::Package::ProviderDpkg class.
|
46
46
|
self::DPKG_QUERY_FORMAT_STRING = %Q{'${Status} ${Package} ${Version}\\n'}
|
47
|
-
self::FIELDS_REGEX = %r{^(\S+) +(\S+) +(\S+) (\S+) (\S*)$}
|
47
|
+
self::FIELDS_REGEX = %r{^'?(\S+) +(\S+) +(\S+) (\S+) (\S*)$}
|
48
48
|
self::FIELDS= [:desired, :error, :status, :name, :ensure]
|
49
49
|
|
50
50
|
# @param line [String] one line of dpkg-query output
|
@@ -67,7 +67,7 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
|
|
67
67
|
elsif ['config-files', 'half-installed', 'unpacked', 'half-configured'].include?(hash[:status])
|
68
68
|
hash[:ensure] = :absent
|
69
69
|
end
|
70
|
-
hash[:
|
70
|
+
hash[:mark] = :hold if hash[:desired] == 'hold'
|
71
71
|
else
|
72
72
|
Puppet.debug("Failed to match dpkg-query line #{line.inspect}")
|
73
73
|
end
|
@@ -83,8 +83,6 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
|
|
83
83
|
end
|
84
84
|
args = []
|
85
85
|
|
86
|
-
# We always unhold when installing to remove any prior hold.
|
87
|
-
self.unhold
|
88
86
|
|
89
87
|
if @resource[:configfiles] == :keep
|
90
88
|
args << '--force-confold'
|
@@ -93,7 +91,12 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
|
|
93
91
|
end
|
94
92
|
args << '-i' << file
|
95
93
|
|
96
|
-
|
94
|
+
self.unhold if self.properties[:mark] == :hold
|
95
|
+
begin
|
96
|
+
dpkg(*args)
|
97
|
+
ensure
|
98
|
+
self.hold if @resource[:mark] == :hold
|
99
|
+
end
|
97
100
|
end
|
98
101
|
|
99
102
|
def update
|
@@ -144,10 +147,14 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
|
|
144
147
|
dpkg "--purge", @resource[:name]
|
145
148
|
end
|
146
149
|
|
147
|
-
def
|
148
|
-
if package_not_installed?
|
150
|
+
def deprecated_hold
|
151
|
+
if package_not_installed?
|
149
152
|
self.install
|
150
153
|
end
|
154
|
+
hold
|
155
|
+
end
|
156
|
+
|
157
|
+
def hold
|
151
158
|
Tempfile.open('puppet_dpkg_set_selection') do |tmpfile|
|
152
159
|
tmpfile.write("#{@resource[:name]} hold\n")
|
153
160
|
tmpfile.flush
|
@@ -163,16 +170,7 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
|
|
163
170
|
end
|
164
171
|
end
|
165
172
|
|
166
|
-
def package_not_installed?
|
167
|
-
|
168
|
-
begin
|
169
|
-
dpkgquery("-W", "--showformat", self.class::DPKG_QUERY_FORMAT_STRING, name)
|
170
|
-
rescue Puppet::ExecutionFailure
|
171
|
-
# return true if exception is generated because package is not found
|
172
|
-
return true
|
173
|
-
end
|
174
|
-
return false
|
175
|
-
end
|
176
|
-
raise ArgumentError.new("Package name is nil or empty")
|
173
|
+
def package_not_installed?
|
174
|
+
query[:status] != "installed"
|
177
175
|
end
|
178
176
|
end
|
@@ -37,7 +37,12 @@ Puppet::Type.type(:package).provide :fink, :parent => :dpkg, :source => :dpkg do
|
|
37
37
|
|
38
38
|
cmd << :install << str
|
39
39
|
|
40
|
-
|
40
|
+
self.unhold if self.properties[:mark] == :hold
|
41
|
+
begin
|
42
|
+
finkcmd(cmd)
|
43
|
+
ensure
|
44
|
+
self.hold if @resource[:mark] == :hold
|
45
|
+
end
|
41
46
|
end
|
42
47
|
|
43
48
|
# What's the latest package version available?
|
@@ -70,10 +75,22 @@ Puppet::Type.type(:package).provide :fink, :parent => :dpkg, :source => :dpkg do
|
|
70
75
|
end
|
71
76
|
|
72
77
|
def uninstall
|
73
|
-
|
78
|
+
self.unhold if self.properties[:mark] == :hold
|
79
|
+
begin
|
80
|
+
finkcmd "-y", "-q", :remove, @model[:name]
|
81
|
+
rescue StandardError, LoadError => e
|
82
|
+
self.hold if self.properties[:mark] == :hold
|
83
|
+
raise e
|
84
|
+
end
|
74
85
|
end
|
75
86
|
|
76
87
|
def purge
|
77
|
-
|
88
|
+
self.unhold if self.properties[:mark] == :hold
|
89
|
+
begin
|
90
|
+
aptget '-y', '-q', 'remove', '--purge', @resource[:name]
|
91
|
+
rescue StandardError, LoadError => e
|
92
|
+
self.hold if self.properties[:mark] == :hold
|
93
|
+
raise e
|
94
|
+
end
|
78
95
|
end
|
79
96
|
end
|