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
@@ -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
|