puppet 5.5.16-x86-mingw32 → 5.5.21-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 +10 -10
- data/Gemfile +2 -3
- data/Gemfile.lock +57 -52
- data/ext/build_defaults.yaml +1 -0
- data/ext/cert_inspector +3 -3
- data/ext/project_data.yaml +2 -2
- 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 -24
- 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 +15 -1
- data/lib/puppet/application/apply.rb +2 -2
- data/lib/puppet/application/describe.rb +3 -9
- data/lib/puppet/application/device.rb +4 -4
- 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/resource.rb +4 -4
- data/lib/puppet/application/script.rb +2 -2
- data/lib/puppet/configurer.rb +86 -28
- data/lib/puppet/configurer/downloader.rb +2 -6
- data/lib/puppet/daemon.rb +1 -1
- data/lib/puppet/defaults.rb +82 -38
- 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/config.rb +10 -48
- data/lib/puppet/face/facts.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/face/plugin.rb +9 -2
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- 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/reduce.rb +2 -4
- 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 +2 -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 +12 -2
- 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/factory.rb +1 -11
- 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 +4 -2
- data/lib/puppet/parameter.rb +8 -0
- 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 +1 -1
- 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/evaluator/access_operator.rb +2 -2
- 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/p_sensitive_type.rb +1 -1
- 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 +10 -0
- 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/file/posix.rb +5 -0
- 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.rb +10 -3
- 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/dnf.rb +1 -1
- 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/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/rpm.rb +57 -19
- data/lib/puppet/provider/package/windows/package.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +35 -24
- 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/launchd.rb +20 -5
- 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 +35 -22
- data/lib/puppet/provider/service/windows.rb +8 -0
- data/lib/puppet/provider/user/directoryservice.rb +31 -6
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/pw.rb +12 -3
- data/lib/puppet/provider/user/user_role_add.rb +5 -1
- data/lib/puppet/provider/user/useradd.rb +62 -27
- 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 +18 -1
- data/lib/puppet/resource/catalog.rb +1 -1
- data/lib/puppet/resource/type.rb +8 -0
- data/lib/puppet/settings.rb +43 -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 +15 -10
- data/lib/puppet/transaction/report.rb +1 -1
- data/lib/puppet/transaction/resource_harness.rb +1 -1
- data/lib/puppet/type.rb +15 -4
- data/lib/puppet/type/cron.rb +1 -1
- data/lib/puppet/type/exec.rb +21 -9
- 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 +107 -8
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/selboolean.rb +17 -3
- data/lib/puppet/type/service.rb +9 -10
- data/lib/puppet/type/user.rb +6 -24
- data/lib/puppet/type/yumrepo.rb +3 -7
- data/lib/puppet/util.rb +47 -25
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/execution.rb +4 -3
- data/lib/puppet/util/http_proxy.rb +24 -16
- 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 +8 -2
- 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 +3 -0
- data/lib/puppet/util/windows/service.rb +149 -4
- data/lib/puppet/util/windows/sid.rb +4 -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 +479 -443
- data/man/man5/puppet.conf.5 +38 -8
- 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 +52 -0
- data/spec/integration/defaults_spec.rb +1 -2
- data/spec/integration/indirector/facts/facter_spec.rb +4 -0
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/provider/service/systemd_spec.rb +8 -5
- data/spec/integration/type/file_spec.rb +28 -0
- data/spec/integration/type/notify_spec.rb +46 -0
- data/spec/integration/util/execution_spec.rb +27 -0
- data/spec/integration/util/windows/adsi_spec.rb +6 -1
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/unit/agent_spec.rb +34 -26
- data/spec/unit/application/agent_spec.rb +18 -0
- data/spec/unit/application/apply_spec.rb +2 -12
- data/spec/unit/application/device_spec.rb +1 -1
- data/spec/unit/configurer/fact_handler_spec.rb +0 -4
- data/spec/unit/configurer_spec.rb +377 -397
- data/spec/unit/daemon_spec.rb +0 -1
- data/spec/unit/face/facts_spec.rb +9 -0
- data/spec/unit/face/plugin_spec.rb +8 -0
- 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/module_tool/tar/mini_spec.rb +1 -1
- data/spec/unit/network/http/api/indirected_routes_spec.rb +28 -11
- data/spec/unit/network/http/connection_spec.rb +43 -1
- data/spec/unit/network/http/factory_spec.rb +27 -5
- 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/pops/validator/validator_spec.rb +7 -0
- 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/aptrpm_spec.rb +1 -1
- data/spec/unit/provider/package/dnf_spec.rb +7 -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/rpm_spec.rb +150 -16
- data/spec/unit/provider/package/yum_spec.rb +66 -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/launchd_spec.rb +28 -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/service/windows_spec.rb +20 -0
- 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/pw_spec.rb +37 -0
- data/spec/unit/provider/user/useradd_spec.rb +122 -15
- data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
- data/spec/unit/puppet_pal_2pec.rb +3 -0
- data/spec/unit/resource_spec.rb +26 -1
- data/spec/unit/ssl/certificate_authority_spec.rb +2 -3
- data/spec/unit/ssl/certificate_spec.rb +7 -0
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/transaction_spec.rb +18 -0
- data/spec/unit/type/exec_spec.rb +15 -12
- data/spec/unit/type/file/content_spec.rb +9 -3
- data/spec/unit/type/file/source_spec.rb +4 -4
- data/spec/unit/type/file_spec.rb +9 -4
- data/spec/unit/type/package_spec.rb +8 -0
- data/spec/unit/type/schedule_spec.rb +3 -1
- data/spec/unit/type/selboolean_spec.rb +4 -6
- data/spec/unit/type/service_spec.rb +25 -8
- data/spec/unit/type/user_spec.rb +32 -26
- data/spec/unit/type/yumrepo_spec.rb +30 -0
- data/spec/unit/type_spec.rb +40 -0
- data/spec/unit/util/execution_spec.rb +16 -0
- data/spec/unit/util/http_proxy_spec.rb +121 -1
- data/spec/unit/util/log/destinations_spec.rb +2 -26
- data/spec/unit/util/log_spec.rb +0 -112
- 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/service_spec.rb +9 -0
- data/spec/unit/util/windows/sid_spec.rb +2 -2
- data/tasks/manpages.rake +1 -0
- metadata +18 -13
- data/ext/windows/eventlog/Rakefile +0 -32
- data/ext/windows/eventlog/puppetres.dll +0 -0
- data/ext/windows/eventlog/puppetres.mc +0 -18
- 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
data/lib/puppet/util/metric.rb
CHANGED
@@ -54,11 +54,11 @@ class Puppet::Util::Metric
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def values
|
57
|
-
@values.
|
57
|
+
@values.sort_by { |a| a[1] }
|
58
58
|
end
|
59
59
|
|
60
60
|
# Convert a name into a label.
|
61
61
|
def self.labelize(name)
|
62
|
-
name.to_s.capitalize.
|
62
|
+
name.to_s.capitalize.tr("_", " ")
|
63
63
|
end
|
64
64
|
end
|
@@ -65,11 +65,11 @@ module Puppet::Util::NagiosMaker
|
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
|
-
target = "/etc/nagios/#{full_name
|
68
|
+
target = "/etc/nagios/#{full_name}.cfg"
|
69
69
|
provider = type.provide(:naginator, :parent => Puppet::Provider::Naginator, :default_target => target) {}
|
70
70
|
provider.nagios_type
|
71
71
|
|
72
|
-
type.desc "The Nagios type #{name
|
72
|
+
type.desc "The Nagios type #{name}. This resource type is autogenerated using the
|
73
73
|
model developed in Naginator, and all of the Nagios types are generated using the
|
74
74
|
same code and the same library.
|
75
75
|
|
@@ -103,7 +103,7 @@ class Puppet::Util::NetworkDevice::Cisco::Device < Puppet::Util::NetworkDevice::
|
|
103
103
|
IF.each do |k,ifnames|
|
104
104
|
if found = ifnames.find { |ifname| interface =~ /^#{ifname}\s*\d/i }
|
105
105
|
found = /^#{found}(.+)\Z/i.match(interface)
|
106
|
-
return "#{k
|
106
|
+
return "#{k}#{found[1]}".gsub(/\s+/,'')
|
107
107
|
end
|
108
108
|
end
|
109
109
|
interface
|
@@ -27,8 +27,8 @@ class Puppet::Util::NetworkDevice::Cisco::Interface
|
|
27
27
|
:etherchannel => [9, ["channel-group %s", "port group %s"]],
|
28
28
|
:ipaddress => [10,
|
29
29
|
lambda do |prefix,ip,option|
|
30
|
-
ip.ipv6? ? "ipv6 address #{ip
|
31
|
-
"ip address #{ip
|
30
|
+
ip.ipv6? ? "ipv6 address #{ip}/#{prefix} #{option}" :
|
31
|
+
"ip address #{ip} #{netmask(Socket::AF_INET,prefix)}"
|
32
32
|
end],
|
33
33
|
:ensure => [11, lambda { |value| value == :present ? "no shutdown" : "shutdown" } ]
|
34
34
|
}
|
@@ -59,7 +59,7 @@ class Puppet::Util::NetworkDevice::Transport::Ssh < Puppet::Util::NetworkDevice:
|
|
59
59
|
# the ssh loop there while still having the ssh connection up
|
60
60
|
# otherwise we wouldn't be able to return ssh stdout/stderr
|
61
61
|
# for a given call of command.
|
62
|
-
return
|
62
|
+
return # rubocop:disable Lint/NonLocalExitFromIterator
|
63
63
|
end
|
64
64
|
|
65
65
|
end
|
data/lib/puppet/util/pidlock.rb
CHANGED
@@ -44,7 +44,9 @@ class Puppet::Util::Pidlock
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def clear_if_stale
|
47
|
-
|
47
|
+
pid = lock_pid
|
48
|
+
return @lockfile.unlock if pid == nil
|
49
|
+
return if Process.pid == pid
|
48
50
|
|
49
51
|
errors = [Errno::ESRCH]
|
50
52
|
# Win32::Process now throws SystemCallError. Since this could be
|
@@ -52,7 +54,7 @@ class Puppet::Util::Pidlock
|
|
52
54
|
errors << SystemCallError if Puppet::Util::Platform.windows?
|
53
55
|
|
54
56
|
begin
|
55
|
-
Process.kill(0,
|
57
|
+
Process.kill(0, pid)
|
56
58
|
rescue *errors
|
57
59
|
return @lockfile.unlock
|
58
60
|
end
|
@@ -61,14 +63,18 @@ class Puppet::Util::Pidlock
|
|
61
63
|
# not, we can unlock the lockfile. For now this is only done on
|
62
64
|
# POSIX and Windows platforms (PUP-9247).
|
63
65
|
if Puppet.features.posix?
|
64
|
-
procname = Puppet::Util::Execution.execute(["ps", "-p",
|
65
|
-
args = Puppet::Util::Execution.execute(["ps", "-p",
|
66
|
+
procname = Puppet::Util::Execution.execute(["ps", "-p", pid, "-o", "comm="]).strip
|
67
|
+
args = Puppet::Util::Execution.execute(["ps", "-p", pid, "-o", "args="]).strip
|
66
68
|
@lockfile.unlock unless procname =~ /ruby/ && args =~ /puppet/ || procname =~ /puppet(-.*)?$/
|
67
69
|
elsif Puppet.features.microsoft_windows?
|
68
70
|
# On Windows, we're checking if the filesystem path name of the running
|
69
71
|
# process is our vendored ruby:
|
70
|
-
|
71
|
-
|
72
|
+
begin
|
73
|
+
exe_path = Puppet::Util::Windows::Process::get_process_image_name_by_pid(pid)
|
74
|
+
@lockfile.unlock unless exe_path =~ /\\bin\\ruby.exe$/
|
75
|
+
rescue Puppet::Util::Windows::Error => e
|
76
|
+
Puppet.debug("Failed to read pidfile #{file_path}: #{e.message}")
|
77
|
+
end
|
72
78
|
end
|
73
79
|
end
|
74
80
|
private :clear_if_stale
|
data/lib/puppet/util/plist.rb
CHANGED
@@ -56,6 +56,12 @@ module Puppet::Util::Plist
|
|
56
56
|
# Read plist text using the CFPropertyList gem.
|
57
57
|
def parse_plist(plist_data, file_path = '')
|
58
58
|
bad_xml_doctype = /^.*<!DOCTYPE plist PUBLIC -\/\/Apple Computer.*$/
|
59
|
+
# Depending on where parse_plist is called from, plist_data can be either XML or binary.
|
60
|
+
# If we get XML, make sure ruby knows it's UTF-8 so we avoid invalid byte sequence errors.
|
61
|
+
if plist_data.include?('encoding="UTF-8"') && plist_data.encoding != Encoding::UTF_8
|
62
|
+
plist_data.force_encoding(Encoding::UTF_8)
|
63
|
+
end
|
64
|
+
|
59
65
|
begin
|
60
66
|
if plist_data =~ bad_xml_doctype
|
61
67
|
plist_data.gsub!( bad_xml_doctype, plist_xml_doctype )
|
@@ -81,7 +81,7 @@ module Puppet::Util::ProviderFeatures
|
|
81
81
|
str = ""
|
82
82
|
@features ||= {}
|
83
83
|
return nil if @features.empty?
|
84
|
-
names = @features.keys.
|
84
|
+
names = @features.keys.sort_by(&:to_s)
|
85
85
|
names.each do |name|
|
86
86
|
doc = @features[name].docs.gsub(/\n\s+/, " ")
|
87
87
|
str << "- *#{name}*: #{doc}\n"
|
@@ -130,9 +130,7 @@ module Puppet::Util::ProviderFeatures
|
|
130
130
|
# Create a method that will list all functional features.
|
131
131
|
@feature_module.send(:define_method, :features) do
|
132
132
|
return false unless defined?(features)
|
133
|
-
features.keys.find_all { |n| feature?(n) }.
|
134
|
-
a.to_s <=> b.to_s
|
135
|
-
}
|
133
|
+
features.keys.find_all { |n| feature?(n) }.sort_by(&:to_s)
|
136
134
|
end
|
137
135
|
|
138
136
|
# Create a method that will determine if a provided list of
|
data/lib/puppet/util/rdoc.rb
CHANGED
@@ -31,7 +31,7 @@ module Puppet::Util::RDoc
|
|
31
31
|
# uses relative_path_from that will generate errors when the slashes don't
|
32
32
|
# properly match. This is a workaround for that issue.
|
33
33
|
if Puppet.features.microsoft_windows? && RDoc::VERSION !~ /^[0-3]\./
|
34
|
-
options += [ "--root", Dir.pwd.
|
34
|
+
options += [ "--root", Dir.pwd.tr('\\', '/')]
|
35
35
|
end
|
36
36
|
options += files
|
37
37
|
|
@@ -60,7 +60,7 @@ class Puppet::Util::Reference
|
|
60
60
|
|
61
61
|
def self.references
|
62
62
|
instance_loader(:reference).loadall
|
63
|
-
loaded_instances(:reference).
|
63
|
+
loaded_instances(:reference).sort_by(&:to_s)
|
64
64
|
end
|
65
65
|
|
66
66
|
attr_accessor :page, :depth, :header, :title, :dynamic
|
data/lib/puppet/util/selinux.rb
CHANGED
@@ -13,7 +13,7 @@ require 'pathname'
|
|
13
13
|
|
14
14
|
module Puppet::Util::SELinux
|
15
15
|
|
16
|
-
def selinux_support?
|
16
|
+
def self.selinux_support?
|
17
17
|
return false unless defined?(Selinux)
|
18
18
|
if Selinux.is_selinux_enabled == 1
|
19
19
|
return true
|
@@ -21,6 +21,10 @@ module Puppet::Util::SELinux
|
|
21
21
|
false
|
22
22
|
end
|
23
23
|
|
24
|
+
def selinux_support?
|
25
|
+
Puppet::Util::SELinux.selinux_support?
|
26
|
+
end
|
27
|
+
|
24
28
|
# Retrieve and return the full context of the file. If we don't have
|
25
29
|
# SELinux support or if the SELinux call fails then return nil.
|
26
30
|
def get_selinux_current_context(file)
|
@@ -202,7 +206,9 @@ module Puppet::Util::SELinux
|
|
202
206
|
# If possible we use read_nonblock in a loop rather than read to work-
|
203
207
|
# a linux kernel bug. See ticket #1963 for details.
|
204
208
|
mountfh = File.open("/proc/mounts")
|
205
|
-
|
209
|
+
loop do
|
210
|
+
mounts += mountfh.read_nonblock(1024)
|
211
|
+
end
|
206
212
|
else
|
207
213
|
# Otherwise we shell out and let cat do it for us
|
208
214
|
mountfh = IO.popen("/bin/cat /proc/mounts")
|
@@ -1,6 +1,23 @@
|
|
1
1
|
module Puppet::Util::Windows::ADSI
|
2
2
|
require 'ffi'
|
3
3
|
|
4
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/dsrole/ne-dsrole-dsrole_machine_role
|
5
|
+
STANDALONE_WORKSTATION = 0
|
6
|
+
MEMBER_WORKSTATION = 1
|
7
|
+
STANDALONE_SERVER = 2
|
8
|
+
MEMBER_SERVER = 3
|
9
|
+
BACKUP_DOMAIN_CONTROLLER = 4
|
10
|
+
PRIMARY_DOMAIN_CONTROLLER = 5
|
11
|
+
|
12
|
+
DOMAIN_ROLES = {
|
13
|
+
STANDALONE_WORKSTATION => :STANDALONE_WORKSTATION,
|
14
|
+
MEMBER_WORKSTATION => :MEMBER_WORKSTATION,
|
15
|
+
STANDALONE_SERVER => :STANDALONE_SERVER,
|
16
|
+
MEMBER_SERVER => :MEMBER_SERVER,
|
17
|
+
BACKUP_DOMAIN_CONTROLLER => :BACKUP_DOMAIN_CONTROLLER,
|
18
|
+
PRIMARY_DOMAIN_CONTROLLER => :PRIMARY_DOMAIN_CONTROLLER,
|
19
|
+
}
|
20
|
+
|
4
21
|
class << self
|
5
22
|
extend FFI::Library
|
6
23
|
|
@@ -94,6 +111,14 @@ module Puppet::Util::Windows::ADSI
|
|
94
111
|
wmi_connection.execquery(query)
|
95
112
|
end
|
96
113
|
|
114
|
+
def domain_role
|
115
|
+
unless @domain_role
|
116
|
+
query_result = Puppet::Util::Windows::ADSI.execquery('select DomainRole from Win32_ComputerSystem').to_enum.first
|
117
|
+
@domain_role = DOMAIN_ROLES[query_result.DomainRole] if query_result
|
118
|
+
end
|
119
|
+
@domain_role
|
120
|
+
end
|
121
|
+
|
97
122
|
ffi_convention :stdcall
|
98
123
|
|
99
124
|
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms724295(v=vs.85).aspx
|
@@ -126,24 +151,24 @@ module Puppet::Util::Windows::ADSI
|
|
126
151
|
Puppet::Util::Windows::SID.name_to_principal('SYSTEM').domain.upcase
|
127
152
|
]
|
128
153
|
end
|
129
|
-
|
154
|
+
|
130
155
|
def uri(name, host = '.')
|
131
156
|
host = '.' if (localized_domains << Socket.gethostname.upcase).include?(host.upcase)
|
132
157
|
Puppet::Util::Windows::ADSI.uri(name, @object_class, host)
|
133
158
|
end
|
134
|
-
|
159
|
+
|
135
160
|
def parse_name(name)
|
136
161
|
if name =~ /\//
|
137
162
|
raise Puppet::Error.new( _("Value must be in DOMAIN\\%{object_class} style syntax") % { object_class: @object_class } )
|
138
163
|
end
|
139
|
-
|
164
|
+
|
140
165
|
matches = name.scan(/((.*)\\)?(.*)/)
|
141
166
|
domain = matches[0][1] || '.'
|
142
167
|
account = matches[0][2]
|
143
|
-
|
168
|
+
|
144
169
|
return account, domain
|
145
170
|
end
|
146
|
-
|
171
|
+
|
147
172
|
# returns Puppet::Util::Windows::SID::Principal[]
|
148
173
|
# may contain objects that represent unresolvable SIDs
|
149
174
|
def get_sids(adsi_child_collection)
|
@@ -151,19 +176,19 @@ module Puppet::Util::Windows::ADSI
|
|
151
176
|
adsi_child_collection.each do |m|
|
152
177
|
sids << Puppet::Util::Windows::SID.ads_to_principal(m)
|
153
178
|
end
|
154
|
-
|
179
|
+
|
155
180
|
sids
|
156
181
|
end
|
157
|
-
|
158
|
-
def name_sid_hash(names)
|
182
|
+
|
183
|
+
def name_sid_hash(names, allow_unresolved = false)
|
159
184
|
return {} if names.nil? || names.empty?
|
160
|
-
|
185
|
+
|
161
186
|
sids = names.map do |name|
|
162
|
-
sid = Puppet::Util::Windows::SID.name_to_principal(name)
|
187
|
+
sid = Puppet::Util::Windows::SID.name_to_principal(name, allow_unresolved)
|
163
188
|
raise Puppet::Error.new( _("Could not resolve name: %{name}") % { name: name } ) if !sid
|
164
189
|
[sid.sid, sid]
|
165
190
|
end
|
166
|
-
|
191
|
+
|
167
192
|
Hash[ sids ]
|
168
193
|
end
|
169
194
|
|
@@ -176,8 +201,13 @@ module Puppet::Util::Windows::ADSI
|
|
176
201
|
well_known = false
|
177
202
|
if (sid = Puppet::Util::Windows::SID.name_to_principal(name_or_sid))
|
178
203
|
# Examples of SidType include SidTypeUser, SidTypeGroup
|
179
|
-
|
180
|
-
|
204
|
+
if sid.account_type == "SidType#{@object_class.capitalize}".to_sym
|
205
|
+
# Check if we're getting back a local user when domain-joined
|
206
|
+
return true unless [:MEMBER_WORKSTATION, :MEMBER_SERVER].include?(Puppet::Util::Windows::ADSI.domain_role)
|
207
|
+
# The resource domain and the computer name are not always case-matching
|
208
|
+
return sid.domain.casecmp(Puppet::Util::Windows::ADSI.computer_name) == 0
|
209
|
+
end
|
210
|
+
|
181
211
|
# 'well known group' is special as it can be a group like Everyone OR a user like SYSTEM
|
182
212
|
# so try to resolve it
|
183
213
|
# https://msdn.microsoft.com/en-us/library/cc234477.aspx
|
@@ -388,23 +418,23 @@ module Puppet::Util::Windows::ADSI
|
|
388
418
|
ADS_UF_SCRIPT: 0x0001,
|
389
419
|
ADS_UF_ACCOUNTDISABLE: 0x0002,
|
390
420
|
ADS_UF_HOMEDIR_REQUIRED: 0x0008,
|
391
|
-
ADS_UF_LOCKOUT: 0x0010,
|
392
|
-
ADS_UF_PASSWD_NOTREQD: 0x0020,
|
393
|
-
ADS_UF_PASSWD_CANT_CHANGE: 0x0040,
|
394
|
-
ADS_UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED: 0x0080,
|
395
|
-
ADS_UF_TEMP_DUPLICATE_ACCOUNT: 0x0100,
|
396
|
-
ADS_UF_NORMAL_ACCOUNT: 0x0200,
|
397
|
-
ADS_UF_INTERDOMAIN_TRUST_ACCOUNT: 0x0800,
|
398
|
-
ADS_UF_WORKSTATION_TRUST_ACCOUNT: 0x1000,
|
399
|
-
ADS_UF_SERVER_TRUST_ACCOUNT: 0x2000,
|
400
|
-
ADS_UF_DONT_EXPIRE_PASSWD: 0x10000,
|
401
|
-
ADS_UF_MNS_LOGON_ACCOUNT: 0x20000,
|
402
|
-
ADS_UF_SMARTCARD_REQUIRED: 0x40000,
|
403
|
-
ADS_UF_TRUSTED_FOR_DELEGATION: 0x80000,
|
404
|
-
ADS_UF_NOT_DELEGATED: 0x100000,
|
405
|
-
ADS_UF_USE_DES_KEY_ONLY: 0x200000,
|
406
|
-
ADS_UF_DONT_REQUIRE_PREAUTH: 0x400000,
|
407
|
-
ADS_UF_PASSWORD_EXPIRED: 0x800000,
|
421
|
+
ADS_UF_LOCKOUT: 0x0010,
|
422
|
+
ADS_UF_PASSWD_NOTREQD: 0x0020,
|
423
|
+
ADS_UF_PASSWD_CANT_CHANGE: 0x0040,
|
424
|
+
ADS_UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED: 0x0080,
|
425
|
+
ADS_UF_TEMP_DUPLICATE_ACCOUNT: 0x0100,
|
426
|
+
ADS_UF_NORMAL_ACCOUNT: 0x0200,
|
427
|
+
ADS_UF_INTERDOMAIN_TRUST_ACCOUNT: 0x0800,
|
428
|
+
ADS_UF_WORKSTATION_TRUST_ACCOUNT: 0x1000,
|
429
|
+
ADS_UF_SERVER_TRUST_ACCOUNT: 0x2000,
|
430
|
+
ADS_UF_DONT_EXPIRE_PASSWD: 0x10000,
|
431
|
+
ADS_UF_MNS_LOGON_ACCOUNT: 0x20000,
|
432
|
+
ADS_UF_SMARTCARD_REQUIRED: 0x40000,
|
433
|
+
ADS_UF_TRUSTED_FOR_DELEGATION: 0x80000,
|
434
|
+
ADS_UF_NOT_DELEGATED: 0x100000,
|
435
|
+
ADS_UF_USE_DES_KEY_ONLY: 0x200000,
|
436
|
+
ADS_UF_DONT_REQUIRE_PREAUTH: 0x400000,
|
437
|
+
ADS_UF_PASSWORD_EXPIRED: 0x800000,
|
408
438
|
ADS_UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION: 0x1000000
|
409
439
|
}
|
410
440
|
|
@@ -19,15 +19,11 @@ module Puppet::Util::Windows::APITypes
|
|
19
19
|
|
20
20
|
class ::FFI::Pointer
|
21
21
|
NULL_HANDLE = 0
|
22
|
+
WCHAR_NULL = "\0\0".encode('UTF-16LE').freeze
|
22
23
|
|
23
24
|
def self.from_string_to_wide_string(str, &block)
|
24
25
|
str = Puppet::Util::Windows::String.wide_string(str)
|
25
|
-
FFI::MemoryPointer.
|
26
|
-
# uchar here is synonymous with byte
|
27
|
-
ptr.put_array_of_uchar(0, str.bytes.to_a)
|
28
|
-
|
29
|
-
yield ptr
|
30
|
-
end
|
26
|
+
FFI::MemoryPointer.from_wide_string(str, &block)
|
31
27
|
|
32
28
|
# ptr has already had free called, so nothing to return
|
33
29
|
nil
|
@@ -53,11 +49,17 @@ module Puppet::Util::Windows::APITypes
|
|
53
49
|
alias_method :read_word, :read_uint16
|
54
50
|
alias_method :read_array_of_wchar, :read_array_of_uint16
|
55
51
|
|
56
|
-
def read_wide_string(char_length, dst_encoding = Encoding::UTF_8, encode_options = {})
|
52
|
+
def read_wide_string(char_length, dst_encoding = Encoding::UTF_8, strip = false, encode_options = {})
|
57
53
|
# char_length is number of wide chars (typically excluding NULLs), *not* bytes
|
58
54
|
str = get_bytes(0, char_length * 2).force_encoding('UTF-16LE')
|
55
|
+
|
56
|
+
if strip
|
57
|
+
i = str.index(WCHAR_NULL)
|
58
|
+
str = str[0, i] if i
|
59
|
+
end
|
60
|
+
|
59
61
|
str.encode(dst_encoding, str.encoding, encode_options)
|
60
|
-
rescue
|
62
|
+
rescue EncodingError => e
|
61
63
|
Puppet.debug "Unable to convert value #{str.nil? ? 'nil' : str.dump} to encoding #{dst_encoding} due to #{e.inspect}"
|
62
64
|
raise
|
63
65
|
end
|
@@ -68,32 +70,31 @@ module Puppet::Util::Windows::APITypes
|
|
68
70
|
# null_terminator = :double_null, then the terminating sequence is four bytes of zero. This is UNIT32 = 0
|
69
71
|
# @param encode_options [Hash] Accepts the same option hash that may be passed to String#encode in Ruby
|
70
72
|
def read_arbitrary_wide_string_up_to(max_char_length = 512, null_terminator = :single_null, encode_options = {})
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
73
|
+
idx = case null_terminator
|
74
|
+
when :single_null
|
75
|
+
# find index of wide null between 0 and max (exclusive)
|
76
|
+
(0...max_char_length).find do |i|
|
77
|
+
get_uint16(i * 2) == 0
|
78
|
+
end
|
79
|
+
when :double_null
|
80
|
+
# find index of double-wide null between 0 and max - 1 (exclusive)
|
81
|
+
(0...max_char_length - 1).find do |i|
|
82
|
+
get_uint32(i * 2) == 0
|
83
|
+
end
|
84
|
+
else
|
85
|
+
raise _("Unable to read wide strings with %{null_terminator} terminal nulls") % { null_terminator: null_terminator }
|
86
|
+
end
|
87
|
+
|
88
|
+
read_wide_string(idx || max_char_length, Encoding::UTF_8, false, encode_options)
|
85
89
|
end
|
86
90
|
|
87
91
|
def read_win32_local_pointer(&block)
|
88
|
-
ptr =
|
92
|
+
ptr = read_pointer
|
89
93
|
begin
|
90
|
-
ptr = read_pointer
|
91
94
|
yield ptr
|
92
95
|
ensure
|
93
|
-
if ptr &&
|
94
|
-
|
95
|
-
Puppet.debug "LocalFree memory leak"
|
96
|
-
end
|
96
|
+
if !ptr.null? && FFI::WIN32::LocalFree(ptr.address) != FFI::Pointer::NULL_HANDLE
|
97
|
+
Puppet.debug "LocalFree memory leak"
|
97
98
|
end
|
98
99
|
end
|
99
100
|
|
@@ -102,23 +103,35 @@ module Puppet::Util::Windows::APITypes
|
|
102
103
|
end
|
103
104
|
|
104
105
|
def read_com_memory_pointer(&block)
|
105
|
-
ptr =
|
106
|
+
ptr = read_pointer
|
106
107
|
begin
|
107
|
-
ptr = read_pointer
|
108
108
|
yield ptr
|
109
109
|
ensure
|
110
|
-
FFI::WIN32::CoTaskMemFree(ptr)
|
110
|
+
FFI::WIN32::CoTaskMemFree(ptr) unless ptr.null?
|
111
111
|
end
|
112
112
|
|
113
113
|
# ptr has already had CoTaskMemFree called, so nothing to return
|
114
114
|
nil
|
115
115
|
end
|
116
116
|
|
117
|
-
|
118
117
|
alias_method :write_dword, :write_uint32
|
119
118
|
alias_method :write_word, :write_uint16
|
120
119
|
end
|
121
120
|
|
121
|
+
class FFI::MemoryPointer
|
122
|
+
# Return a MemoryPointer that points to wide string. This is analogous to the
|
123
|
+
# FFI::MemoryPointer.from_string method.
|
124
|
+
def self.from_wide_string(wstr)
|
125
|
+
ptr = FFI::MemoryPointer.new(:uchar, wstr.bytesize + 2)
|
126
|
+
ptr.put_array_of_uchar(0, wstr.bytes.to_a)
|
127
|
+
ptr.put_uint16(wstr.bytesize, 0)
|
128
|
+
|
129
|
+
yield ptr if block_given?
|
130
|
+
|
131
|
+
ptr
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
122
135
|
# FFI Types
|
123
136
|
# https://github.com/ffi/ffi/wiki/Types
|
124
137
|
|