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
@@ -23,13 +23,16 @@ module Puppet::Pops::Types
|
|
23
23
|
#
|
24
24
|
# An `ArgumentError` is raised for all other objects.
|
25
25
|
#
|
26
|
-
# @param
|
26
|
+
# @param my_caller [Object] The calling object to reference in errors
|
27
|
+
# @param obj [Object] The object to produce an `Iterable` for
|
28
|
+
# @param infer_elements [Boolean] Whether or not to recursively infer all elements of obj. Optional
|
29
|
+
#
|
27
30
|
# @return [Iterable,nil] The produced `Iterable`
|
28
31
|
# @raise [ArgumentError] In case an `Iterable` cannot be produced
|
29
32
|
# @api public
|
30
|
-
def self.asserted_iterable(
|
31
|
-
iter = self.on(obj)
|
32
|
-
raise ArgumentError, "#{
|
33
|
+
def self.asserted_iterable(my_caller, obj, infer_elements = false)
|
34
|
+
iter = self.on(obj, nil, infer_elements)
|
35
|
+
raise ArgumentError, "#{my_caller.class}(): wrong argument type (#{obj.class}; is not Iterable." if iter.nil?
|
33
36
|
iter
|
34
37
|
end
|
35
38
|
|
@@ -48,11 +51,14 @@ module Puppet::Pops::Types
|
|
48
51
|
# The value `nil` is returned for all other objects.
|
49
52
|
#
|
50
53
|
# @param o [Object] The object to produce an `Iterable` for
|
51
|
-
# @param element_type [PAnyType] the element type for the iterator. Optional
|
54
|
+
# @param element_type [PAnyType] the element type for the iterator. Optional
|
55
|
+
# @param infer_elements [Boolean] if element_type is nil, whether or not to recursively
|
56
|
+
# infer types for the entire collection. Optional
|
57
|
+
#
|
52
58
|
# @return [Iterable,nil] The produced `Iterable` or `nil` if it couldn't be produced
|
53
59
|
#
|
54
60
|
# @api public
|
55
|
-
def self.on(o, element_type = nil)
|
61
|
+
def self.on(o, element_type = nil, infer_elements = true)
|
56
62
|
case o
|
57
63
|
when IteratorProducer
|
58
64
|
o.iterator
|
@@ -64,7 +70,7 @@ module Puppet::Pops::Types
|
|
64
70
|
if o.empty?
|
65
71
|
Iterator.new(PUnitType::DEFAULT, o.each)
|
66
72
|
else
|
67
|
-
if element_type.nil?
|
73
|
+
if element_type.nil? && infer_elements
|
68
74
|
tc = TypeCalculator.singleton
|
69
75
|
element_type = PVariantType.maybe_create(o.map {|e| tc.infer_set(e) })
|
70
76
|
end
|
@@ -75,7 +81,7 @@ module Puppet::Pops::Types
|
|
75
81
|
if o.empty?
|
76
82
|
HashIterator.new(PHashType::DEFAULT_KEY_PAIR_TUPLE, o.each)
|
77
83
|
else
|
78
|
-
if element_type.nil?
|
84
|
+
if element_type.nil? && infer_elements
|
79
85
|
tc = TypeCalculator.singleton
|
80
86
|
element_type = PTupleType.new([
|
81
87
|
PVariantType.maybe_create(o.keys.map {|e| tc.infer_set(e) }),
|
@@ -202,6 +208,26 @@ module Puppet::Pops::Types
|
|
202
208
|
@enumeration.send(name, *arguments, &block)
|
203
209
|
end
|
204
210
|
|
211
|
+
def next
|
212
|
+
@enumeration.next
|
213
|
+
end
|
214
|
+
|
215
|
+
def map(*args, &block)
|
216
|
+
@enumeration.map(*args, &block)
|
217
|
+
end
|
218
|
+
|
219
|
+
def reduce(*args, &block)
|
220
|
+
@enumeration.reduce(*args, &block)
|
221
|
+
end
|
222
|
+
|
223
|
+
def all?(&block)
|
224
|
+
@enumeration.all?(&block)
|
225
|
+
end
|
226
|
+
|
227
|
+
def any?(&block)
|
228
|
+
@enumeration.any?(&block)
|
229
|
+
end
|
230
|
+
|
205
231
|
def step(step, &block)
|
206
232
|
raise ArgumentError if step <= 0
|
207
233
|
r = self
|
@@ -22,7 +22,7 @@ class PMetaType < PAnyType
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def instance?(o, guard = nil)
|
25
|
-
|
25
|
+
raise NotImplementedError, "Subclass of PMetaType should implement 'instance?'"
|
26
26
|
end
|
27
27
|
|
28
28
|
# Called from the TypeParser once it has found a type using the Loader. The TypeParser will
|
@@ -349,6 +349,10 @@ class PTypeSetType < PMetaType
|
|
349
349
|
self.class == o.class && @name_authority == o.name_authority && @name == o.name && @version == o.version
|
350
350
|
end
|
351
351
|
|
352
|
+
def instance?(o, guard = nil)
|
353
|
+
o.is_a?(PTypeSetType)
|
354
|
+
end
|
355
|
+
|
352
356
|
DEFAULT = self.new({
|
353
357
|
KEY_NAME => 'DefaultTypeSet',
|
354
358
|
KEY_NAME_AUTHORITY => Pcore::RUNTIME_NAME_AUTHORITY,
|
@@ -728,7 +728,7 @@ class StringConverter
|
|
728
728
|
when :c
|
729
729
|
char = [val].pack("U")
|
730
730
|
char = f.alt? ? "\"#{char}\"" : char
|
731
|
-
Kernel.format(f.orig_fmt.
|
731
|
+
Kernel.format(f.orig_fmt.tr('c','s'), char)
|
732
732
|
|
733
733
|
when :s
|
734
734
|
fmt = f.alt? ? 'p' : 's'
|
@@ -781,7 +781,7 @@ class StringConverter
|
|
781
781
|
|
782
782
|
when :p
|
783
783
|
# width & precision applied to string, not the the name of the type
|
784
|
-
"Binary(\"#{Kernel.format(f.orig_fmt.
|
784
|
+
"Binary(\"#{Kernel.format(f.orig_fmt.tr('p', 's'), val.to_s)}\")"
|
785
785
|
|
786
786
|
when :b
|
787
787
|
Kernel.format(f.orig_fmt.gsub('b', substitute), val.relaxed_to_s)
|
@@ -817,23 +817,23 @@ class StringConverter
|
|
817
817
|
|
818
818
|
when :c
|
819
819
|
c_val = val.capitalize
|
820
|
-
f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.
|
820
|
+
f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('c', 's'), c_val)
|
821
821
|
|
822
822
|
when :C
|
823
823
|
c_val = val.split('::').map {|s| s.capitalize }.join('::')
|
824
|
-
f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.
|
824
|
+
f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('C', 's'), c_val)
|
825
825
|
|
826
826
|
when :u
|
827
827
|
c_val = val.upcase
|
828
|
-
f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.
|
828
|
+
f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('u', 's'), c_val)
|
829
829
|
|
830
830
|
when :d
|
831
831
|
c_val = val.downcase
|
832
|
-
f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.
|
832
|
+
f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('d', 's'), c_val)
|
833
833
|
|
834
834
|
when :t # trim
|
835
835
|
c_val = val.strip
|
836
|
-
f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.
|
836
|
+
f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('t', 's'), c_val)
|
837
837
|
|
838
838
|
else
|
839
839
|
raise FormatError.new('String', f.format, 'cCudspt')
|
@@ -916,7 +916,7 @@ class StringConverter
|
|
916
916
|
case f.format
|
917
917
|
when :p
|
918
918
|
str_regexp = PRegexpType.regexp_to_s_with_delimiters(val)
|
919
|
-
f.orig_fmt == '%p' ? str_regexp : Kernel.format(f.orig_fmt.
|
919
|
+
f.orig_fmt == '%p' ? str_regexp : Kernel.format(f.orig_fmt.tr('p', 's'), str_regexp)
|
920
920
|
when :s
|
921
921
|
str_regexp = PRegexpType.regexp_to_s(val)
|
922
922
|
str_regexp = puppet_quote(str_regexp) if f.alt?
|
@@ -1093,10 +1093,10 @@ class StringConverter
|
|
1093
1093
|
f = get_format(val_type, format_map)
|
1094
1094
|
case f.format
|
1095
1095
|
when :s
|
1096
|
-
str_val = f.alt? ? "\"#{val
|
1096
|
+
str_val = f.alt? ? "\"#{val}\"" : val.to_s
|
1097
1097
|
Kernel.format(f.orig_fmt, str_val)
|
1098
1098
|
when :p
|
1099
|
-
Kernel.format(f.orig_fmt.
|
1099
|
+
Kernel.format(f.orig_fmt.tr('p', 's'), val.to_s)
|
1100
1100
|
else
|
1101
1101
|
raise FormatError.new('Type', f.format, 'sp')
|
1102
1102
|
end
|
@@ -120,6 +120,30 @@ class TypeCalculator
|
|
120
120
|
singleton.infer(o)
|
121
121
|
end
|
122
122
|
|
123
|
+
# Infers a type if given object may have callable members, else returns nil.
|
124
|
+
# Caller must check for nil or if returned type supports members.
|
125
|
+
# This is a much cheaper call than doing a call to the general infer(o) method.
|
126
|
+
#
|
127
|
+
# @api private
|
128
|
+
def self.infer_callable_methods_t(o)
|
129
|
+
# If being a value that cannot have Pcore based methods callable from Puppet Language
|
130
|
+
if (o.is_a?(String) ||
|
131
|
+
o.is_a?(Numeric) ||
|
132
|
+
o.is_a?(TrueClass) ||
|
133
|
+
o.is_a?(FalseClass) ||
|
134
|
+
o.is_a?(Regexp) ||
|
135
|
+
o.instance_of?(Array) ||
|
136
|
+
o.instance_of?(Hash) ||
|
137
|
+
Types::PUndefType::DEFAULT.instance?(o)
|
138
|
+
)
|
139
|
+
return nil
|
140
|
+
end
|
141
|
+
# For other objects (e.g. PObjectType instances, and runtime types) full inference needed, since that will
|
142
|
+
# cover looking into the runtime type registry.
|
143
|
+
#
|
144
|
+
infer(o)
|
145
|
+
end
|
146
|
+
|
123
147
|
# @api public
|
124
148
|
def self.generalize(o)
|
125
149
|
singleton.generalize(o)
|
@@ -340,7 +340,7 @@ class PAnyType < TypedModelObject
|
|
340
340
|
# @raises ArgumentError
|
341
341
|
#
|
342
342
|
def self.new_function(type)
|
343
|
-
raise ArgumentError.new("Creation of new instance of type '#{type
|
343
|
+
raise ArgumentError.new("Creation of new instance of type '#{type}' is not supported")
|
344
344
|
end
|
345
345
|
|
346
346
|
# Answers the question if instances of this type can represent themselves as a string that
|
@@ -1268,7 +1268,7 @@ class PFloatType < PNumericType
|
|
1268
1268
|
else
|
1269
1269
|
begin
|
1270
1270
|
# support a binary as float
|
1271
|
-
if from[0] == '0' && from[1].
|
1271
|
+
if from[0] == '0' && from[1].casecmp('b').zero?
|
1272
1272
|
from = Integer(from)
|
1273
1273
|
end
|
1274
1274
|
Float(from)
|
@@ -1699,7 +1699,7 @@ class PRegexpType < PScalarType
|
|
1699
1699
|
# @param regexp [Regexp] the regular expression
|
1700
1700
|
# @return [String] the Regexp as a slash delimited string with slashes escaped
|
1701
1701
|
def self.regexp_to_s_with_delimiters(regexp)
|
1702
|
-
regexp.options == 0 ? regexp.inspect : "/#{regexp
|
1702
|
+
regexp.options == 0 ? regexp.inspect : "/#{regexp}/"
|
1703
1703
|
end
|
1704
1704
|
|
1705
1705
|
# @param regexp [Regexp] the regular expression
|
@@ -194,6 +194,11 @@ class Checker4_0 < Evaluator::LiteralEvaluator
|
|
194
194
|
end
|
195
195
|
end
|
196
196
|
|
197
|
+
def check_Application(o)
|
198
|
+
check_NamedDefinition(o)
|
199
|
+
acceptor.accept(Issues::DEPRECATED_APP_ORCHESTRATION, o, {:klass => o})
|
200
|
+
end
|
201
|
+
|
197
202
|
def check_AssignmentExpression(o)
|
198
203
|
case o.operator
|
199
204
|
when '='
|
@@ -291,6 +296,7 @@ class Checker4_0 < Evaluator::LiteralEvaluator
|
|
291
296
|
end
|
292
297
|
|
293
298
|
def check_CapabilityMapping(o)
|
299
|
+
acceptor.accept(Issues::DEPRECATED_APP_ORCHESTRATION, o, {:klass => o})
|
294
300
|
ok =
|
295
301
|
case o.component
|
296
302
|
when Model::QualifiedReference
|
@@ -575,36 +581,40 @@ class Checker4_0 < Evaluator::LiteralEvaluator
|
|
575
581
|
# @api private
|
576
582
|
class Puppet::Util::FileNamespaceAdapter < Puppet::Pops::Adaptable::Adapter
|
577
583
|
attr_accessor :file_to_namespace
|
584
|
+
|
585
|
+
def self.create_adapter(env)
|
586
|
+
adapter = super(env)
|
587
|
+
adapter.file_to_namespace = {}
|
588
|
+
adapter
|
589
|
+
end
|
578
590
|
end
|
579
591
|
|
580
592
|
def namespace_for_file(file)
|
581
593
|
env = Puppet.lookup(:current_environment)
|
582
594
|
return NO_NAMESPACE if env.nil?
|
583
595
|
|
584
|
-
Puppet::Util::FileNamespaceAdapter.adapt(env)
|
585
|
-
adapter.file_to_namespace ||= {}
|
596
|
+
adapter = Puppet::Util::FileNamespaceAdapter.adapt(env)
|
586
597
|
|
587
|
-
|
588
|
-
|
598
|
+
file_namespace = adapter.file_to_namespace[file]
|
599
|
+
return file_namespace unless file_namespace.nil? # No cache entry, so we do the calculation
|
589
600
|
|
590
|
-
|
601
|
+
path = Pathname.new(file)
|
591
602
|
|
592
|
-
|
603
|
+
return adapter.file_to_namespace[file] = NO_NAMESPACE if path.extname != ".pp"
|
593
604
|
|
594
|
-
|
605
|
+
path = path.expand_path
|
595
606
|
|
596
|
-
|
607
|
+
return adapter.file_to_namespace[file] = NO_NAMESPACE if initial_manifest?(path, env.manifest)
|
597
608
|
|
598
|
-
|
599
|
-
|
609
|
+
#All auto-loaded files from modules come from a module search path dir
|
610
|
+
relative_path = get_module_relative_path(path, env.full_modulepath)
|
600
611
|
|
601
|
-
|
612
|
+
return adapter.file_to_namespace[file] = NO_NAMESPACE if relative_path == NO_PATH
|
602
613
|
|
603
|
-
|
604
|
-
|
614
|
+
#If a file comes from a module, but isn't in the right place, always error
|
615
|
+
names = dir_to_names(relative_path)
|
605
616
|
|
606
|
-
|
607
|
-
end
|
617
|
+
return adapter.file_to_namespace[file] = (names == BAD_MODULE_FILE ? BAD_MODULE_FILE : names.join("::").freeze)
|
608
618
|
end
|
609
619
|
|
610
620
|
def initial_manifest?(path, manifest_setting)
|
@@ -850,6 +860,10 @@ class Checker4_0 < Evaluator::LiteralEvaluator
|
|
850
860
|
rvalue(o.matching_expr)
|
851
861
|
end
|
852
862
|
|
863
|
+
def check_SiteDefinition(o)
|
864
|
+
acceptor.accept(Issues::DEPRECATED_APP_ORCHESTRATION, o, {:klass => o})
|
865
|
+
end
|
866
|
+
|
853
867
|
def check_UnaryExpression(o)
|
854
868
|
rvalue(o.expr)
|
855
869
|
end
|
@@ -31,6 +31,7 @@ class ValidatorFactory_4_0 < Factory
|
|
31
31
|
p[Issues::RT_NO_STORECONFIGS] = Puppet[:storeconfigs] ? :ignore : :warning
|
32
32
|
|
33
33
|
p[Issues::FUTURE_RESERVED_WORD] = :deprecation
|
34
|
+
p[Issues::DEPRECATED_APP_ORCHESTRATION] = :deprecation
|
34
35
|
|
35
36
|
p[Issues::DUPLICATE_KEY] = Puppet[:strict] == :off ? :ignore : Puppet[:strict]
|
36
37
|
p[Issues::NAME_WITH_HYPHEN] = :error
|
data/lib/puppet/property.rb
CHANGED
@@ -209,7 +209,7 @@ class Puppet::Property < Puppet::Parameter
|
|
209
209
|
else
|
210
210
|
return "#{name} changed #{is_to_s(current_value)} to #{should_to_s(newvalue)}"
|
211
211
|
end
|
212
|
-
rescue Puppet::Error
|
212
|
+
rescue Puppet::Error
|
213
213
|
raise
|
214
214
|
rescue => detail
|
215
215
|
message = _("Could not convert change '%{name}' to string: %{detail}") % { name: name, detail: detail }
|
@@ -56,7 +56,7 @@ class Puppet::Property::Ensure < Puppet::Property
|
|
56
56
|
else
|
57
57
|
return _('%{name} changed %{is} to %{should}') % { name: name, is: is_to_s(currentvalue), should: should_to_s(newvalue) }
|
58
58
|
end
|
59
|
-
rescue Puppet::Error
|
59
|
+
rescue Puppet::Error
|
60
60
|
raise
|
61
61
|
rescue => detail
|
62
62
|
raise Puppet::DevError, _("Could not convert change %{name} to string: %{detail}") % { name: self.name, detail: detail }, detail.backtrace
|
@@ -103,7 +103,7 @@ Puppet::Type.type(:augeas).provide(:augeas) do
|
|
103
103
|
inSingleTick = !inSingleTick if ch == "'"
|
104
104
|
inDoubleTick = !inDoubleTick if ch == "\""
|
105
105
|
fail(_("unmatched [")) if nbracket < 0
|
106
|
-
end until ((nbracket == 0 && !inSingleTick && !inDoubleTick && (ch =~ /\s/)) || sc.eos?)
|
106
|
+
end until ((nbracket == 0 && !inSingleTick && !inDoubleTick && (ch =~ /\s/)) || sc.eos?) # rubocop:disable Lint/Loop
|
107
107
|
len = sc.pos - start
|
108
108
|
len -= 1 unless sc.eos?
|
109
109
|
unless p = sc.string[start, len]
|
@@ -212,7 +212,7 @@ Puppet::Type.type(:cron).provide(:crontab, :parent => Puppet::Provider::ParsedFi
|
|
212
212
|
else
|
213
213
|
cmd_string = record[:command].gsub(/\s+/, "_")
|
214
214
|
index = ( @name_index += 1 )
|
215
|
-
record[:name] = "unmanaged:#{cmd_string}-#{ index
|
215
|
+
record[:name] = "unmanaged:#{cmd_string}-#{ index }"
|
216
216
|
record[:unmanaged] = true
|
217
217
|
end
|
218
218
|
if envs.nil? or envs.empty?
|
data/lib/puppet/provider/exec.rb
CHANGED
@@ -47,7 +47,11 @@ class Puppet::Provider::Exec < Puppet::Provider
|
|
47
47
|
# This is backwards compatible all the way to Ruby 1.8.7.
|
48
48
|
Timeout::timeout(resource[:timeout], Timeout::Error) do
|
49
49
|
cwd = resource[:cwd]
|
50
|
-
cwd
|
50
|
+
# It's ok if cwd is nil. In that case Puppet::Util::Execution.execute() simply will not attempt to
|
51
|
+
# change the working directory, which is exactly the right behavior when no cwd parameter is
|
52
|
+
# expressed on the resource. Moreover, attempting to change to the directory that is already
|
53
|
+
# the working directory can fail under some circumstances, so avoiding the directory change attempt
|
54
|
+
# is preferable to defaulting cwd to that directory.
|
51
55
|
|
52
56
|
# note that we are passing "false" for the "override_locale" parameter, which ensures that the user's
|
53
57
|
# default/system locale will be respected. Callers may override this behavior by setting locale-related
|
@@ -88,6 +92,6 @@ class Puppet::Provider::Exec < Puppet::Provider
|
|
88
92
|
def validatecmd(command)
|
89
93
|
exe = extractexe(command)
|
90
94
|
# if we're not fully qualified, require a path
|
91
|
-
self.fail _("'%{
|
95
|
+
self.fail _("'%{exe}' is not qualified and no path was specified. Please qualify the command or specify a path.") % { exe: exe } if !absolute_path?(exe) and resource[:path].nil?
|
92
96
|
end
|
93
97
|
end
|
@@ -28,25 +28,9 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
|
|
28
28
|
get(:gid)
|
29
29
|
end
|
30
30
|
|
31
|
-
def findgroup(key, value)
|
32
|
-
group_file = "/etc/group"
|
33
|
-
group_keys = ['group_name', 'password', 'gid', 'user_list']
|
34
|
-
index = group_keys.index(key)
|
35
|
-
File.open(group_file) do |f|
|
36
|
-
f.each_line do |line|
|
37
|
-
group = line.split(":")
|
38
|
-
if group[index] == value
|
39
|
-
f.close
|
40
|
-
return group
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
false
|
45
|
-
end
|
46
|
-
|
47
31
|
def localgid
|
48
|
-
group = findgroup(
|
49
|
-
return group[
|
32
|
+
group = findgroup(:group_name, resource[:name])
|
33
|
+
return group[:gid] if group
|
50
34
|
false
|
51
35
|
end
|
52
36
|
|
@@ -56,7 +40,7 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
|
|
56
40
|
# to ensure consistent behaviour of the useradd provider when
|
57
41
|
# using both useradd and luseradd
|
58
42
|
if not @resource.allowdupe? and @resource.forcelocal?
|
59
|
-
if @resource.should(:gid) and findgroup(
|
43
|
+
if @resource.should(:gid) and findgroup(:gid, @resource.should(:gid).to_s)
|
60
44
|
raise(Puppet::Error, _("GID %{resource} already exists, use allowdupe to force group creation") % { resource: @resource.should(:gid).to_s })
|
61
45
|
end
|
62
46
|
elsif @resource.allowdupe? and not @resource.forcelocal?
|
@@ -108,4 +92,20 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
|
|
108
92
|
[command(:delete), @resource[:name]]
|
109
93
|
end
|
110
94
|
end
|
95
|
+
|
96
|
+
private
|
97
|
+
|
98
|
+
def findgroup(key, value)
|
99
|
+
group_file = "/etc/group"
|
100
|
+
group_keys = [:group_name, :password, :gid, :user_list]
|
101
|
+
index = group_keys.index(key)
|
102
|
+
@group_content ||= File.read(group_file)
|
103
|
+
@group_content.each_line do |line|
|
104
|
+
group = line.split(":")
|
105
|
+
if group[index] == value
|
106
|
+
return Hash[group_keys.zip(group)]
|
107
|
+
end
|
108
|
+
end
|
109
|
+
false
|
110
|
+
end
|
111
111
|
end
|