puppet 5.5.16-x64-mingw32 → 5.5.21-x64-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
| @@ -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
         | 
| @@ -850,6 +856,10 @@ class Checker4_0 < Evaluator::LiteralEvaluator | |
| 850 856 | 
             
                rvalue(o.matching_expr)
         | 
| 851 857 | 
             
              end
         | 
| 852 858 |  | 
| 859 | 
            +
              def check_SiteDefinition(o)
         | 
| 860 | 
            +
                acceptor.accept(Issues::DEPRECATED_APP_ORCHESTRATION, o, {:klass => o})
         | 
| 861 | 
            +
              end
         | 
| 862 | 
            +
             | 
| 853 863 | 
             
              def check_UnaryExpression(o)
         | 
| 854 864 | 
             
                rvalue(o.expr)
         | 
| 855 865 | 
             
              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
         | 
| @@ -8,6 +8,11 @@ Puppet::Type.type(:file).provide :posix do | |
| 8 8 | 
             
              include Puppet::Util::Warnings
         | 
| 9 9 |  | 
| 10 10 | 
             
              require 'etc'
         | 
| 11 | 
            +
              require 'puppet/util/selinux'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              def self.post_resource_eval
         | 
| 14 | 
            +
                Selinux.matchpathcon_fini if Puppet::Util::SELinux.selinux_support?
         | 
| 15 | 
            +
              end
         | 
| 11 16 |  | 
| 12 17 | 
             
              def uid2name(id)
         | 
| 13 18 | 
             
                return id.to_s if id.is_a?(Symbol) or id.is_a?(String)
         | 
| @@ -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
         | 
| @@ -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
         | 
| @@ -172,9 +172,10 @@ class Puppet::Provider::NameService < Puppet::Provider | |
| 172 172 | 
             
                end
         | 
| 173 173 |  | 
| 174 174 | 
             
                begin
         | 
| 175 | 
            -
                   | 
| 175 | 
            +
                  sensitive = has_sensitive_data?
         | 
| 176 | 
            +
                  execute(self.addcmd, {:failonfail => true, :combine => true, :custom_environment => @custom_environment, :sensitive => sensitive})
         | 
| 176 177 | 
             
                  if feature?(:manages_password_age) && (cmd = passcmd)
         | 
| 177 | 
            -
                    execute(cmd, {:failonfail => true, :combine => true, :custom_environment => @custom_environment})
         | 
| 178 | 
            +
                    execute(cmd, {:failonfail => true, :combine => true, :custom_environment => @custom_environment, :sensitive => sensitive})
         | 
| 178 179 | 
             
                  end
         | 
| 179 180 | 
             
                rescue Puppet::ExecutionFailure => detail
         | 
| 180 181 | 
             
                  raise Puppet::Error, _("Could not create %{resource} %{name}: %{detail}") % { resource: @resource.class.name, name: @resource.name, detail: detail }, detail.backtrace
         | 
| @@ -276,13 +277,19 @@ class Puppet::Provider::NameService < Puppet::Provider | |
| 276 277 | 
             
                self.class.validate(param, value)
         | 
| 277 278 | 
             
                cmd = modifycmd(param, munge(param, value))
         | 
| 278 279 | 
             
                raise Puppet::DevError, _("Nameservice command must be an array") unless cmd.is_a?(Array)
         | 
| 280 | 
            +
                sensitive = has_sensitive_data?(param)
         | 
| 279 281 | 
             
                begin
         | 
| 280 | 
            -
                  execute(cmd, {:failonfail => true, :combine => true, :custom_environment => @custom_environment})
         | 
| 282 | 
            +
                  execute(cmd, {:failonfail => true, :combine => true, :custom_environment => @custom_environment, :sensitive => sensitive})
         | 
| 281 283 | 
             
                rescue Puppet::ExecutionFailure => detail
         | 
| 282 284 | 
             
                  raise Puppet::Error, _("Could not set %{param} on %{resource}[%{name}]: %{detail}") % { param: param, resource: @resource.class.name, name: @resource.name, detail: detail }, detail.backtrace
         | 
| 283 285 | 
             
                end
         | 
| 284 286 | 
             
              end
         | 
| 285 287 |  | 
| 288 | 
            +
              #Derived classes can override to declare sensitive data so a flag can be passed to execute
         | 
| 289 | 
            +
              def has_sensitive_data?(property = nil)
         | 
| 290 | 
            +
                false
         | 
| 291 | 
            +
              end
         | 
| 292 | 
            +
             | 
| 286 293 | 
             
              # From overriding Puppet::Property#insync? Ruby Etc::getpwnam < 2.1.0 always
         | 
| 287 294 | 
             
              # returns a struct with binary encoded string values, and >= 2.1.0 will return
         | 
| 288 295 | 
             
              # binary encoded strings for values incompatible with current locale charset,
         | 
| @@ -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
         |