puppet 5.5.16-universal-darwin → 5.5.21-universal-darwin
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +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 +16 -11
- 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
@@ -9,7 +9,7 @@ Puppet::Type.type(:package).provide :dnf, :parent => :yum do
|
|
9
9
|
These options should be specified as a string (e.g. '--flag'), a hash (e.g. {'--flag' => 'value'}),
|
10
10
|
or an array where each element is either a string or a hash."
|
11
11
|
|
12
|
-
has_feature :install_options, :versionable, :virtual_packages
|
12
|
+
has_feature :install_options, :versionable, :virtual_packages, :install_only
|
13
13
|
|
14
14
|
commands :cmd => "dnf", :rpm => "rpm"
|
15
15
|
|
@@ -0,0 +1,141 @@
|
|
1
|
+
# dnfmodule - A puppet package provider for DNF modules
|
2
|
+
#
|
3
|
+
# Installing a module:
|
4
|
+
# package { 'postgresql':
|
5
|
+
# provider => 'dnfmodule',
|
6
|
+
# ensure => '9.6', # install a specific stream
|
7
|
+
# flavor => 'client', # install a specific profile
|
8
|
+
# }
|
9
|
+
|
10
|
+
|
11
|
+
require 'puppet/provider/package'
|
12
|
+
|
13
|
+
Puppet::Type.type(:package).provide :dnfmodule, :parent => :dnf do
|
14
|
+
|
15
|
+
has_feature :installable, :uninstallable, :versionable, :supports_flavors, :disableable
|
16
|
+
#has_feature :upgradeable
|
17
|
+
# it's not (yet) feasible to make this upgradeable since module streams don't
|
18
|
+
# always have matching version types (i.e. idm has streams DL1 and client,
|
19
|
+
# other modules have semver streams, others have string streams... we cannot
|
20
|
+
# programatically determine a latest version for ensure => 'latest'
|
21
|
+
|
22
|
+
commands :dnf => '/usr/bin/dnf'
|
23
|
+
|
24
|
+
def self.current_version
|
25
|
+
@current_version ||= dnf('--version').split.first
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.prefetch(packages)
|
29
|
+
if Puppet::Util::Package.versioncmp(current_version, '3.0.1') < 0
|
30
|
+
raise Puppet::Error, _("Modules are not supported on DNF versions lower than 3.0.1")
|
31
|
+
end
|
32
|
+
super
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.instances
|
36
|
+
packages = []
|
37
|
+
cmd = "#{command(:dnf)} module list -d 0 -e #{error_level}"
|
38
|
+
execute(cmd).each_line do |line|
|
39
|
+
# select only lines with actual packages since DNF clutters the output
|
40
|
+
next unless line =~ /\[[eix]\][, ]/
|
41
|
+
line.gsub!(/\[d\]/, '') # we don't care about the default flag
|
42
|
+
|
43
|
+
flavor = if line.include?('[i]')
|
44
|
+
line.split('[i]').first.split.last
|
45
|
+
else
|
46
|
+
:absent
|
47
|
+
end
|
48
|
+
|
49
|
+
packages << new(
|
50
|
+
name: line.split[0],
|
51
|
+
ensure: if line.include?('[x]')
|
52
|
+
:disabled
|
53
|
+
else
|
54
|
+
line.split[1]
|
55
|
+
end,
|
56
|
+
flavor: flavor,
|
57
|
+
provider: name
|
58
|
+
)
|
59
|
+
end
|
60
|
+
packages
|
61
|
+
end
|
62
|
+
|
63
|
+
def query
|
64
|
+
pkg = self.class.instances.find do |package|
|
65
|
+
@resource[:name] == package.name
|
66
|
+
end
|
67
|
+
pkg ? pkg.properties : nil
|
68
|
+
end
|
69
|
+
|
70
|
+
# to install specific streams and profiles:
|
71
|
+
# $ dnf module install module-name:stream/profile
|
72
|
+
# $ dnf module install perl:5.24/minimal
|
73
|
+
# if unspecified, they will be defaulted (see [d] param in dnf module list output)
|
74
|
+
def install
|
75
|
+
# ensure we start fresh (remove existing stream)
|
76
|
+
uninstall unless [:absent, :purged].include?(@property_hash[:ensure])
|
77
|
+
|
78
|
+
args = @resource[:name].dup
|
79
|
+
case @resource[:ensure]
|
80
|
+
when true, false, Symbol
|
81
|
+
# pass
|
82
|
+
else
|
83
|
+
args << ":#{@resource[:ensure]}"
|
84
|
+
end
|
85
|
+
args << "/#{@resource[:flavor]}" if @resource[:flavor]
|
86
|
+
|
87
|
+
if @resource[:enable_only] == true
|
88
|
+
enable(args)
|
89
|
+
else
|
90
|
+
begin
|
91
|
+
execute([command(:dnf), 'module', 'install', '-d', '0', '-e', self.class.error_level, '-y', args])
|
92
|
+
rescue Puppet::ExecutionFailure => e
|
93
|
+
# module has no default profile and no profile was requested, so just enable the stream
|
94
|
+
# DNF versions prior to 4.2.8 do not need this workaround
|
95
|
+
# see https://bugzilla.redhat.com/show_bug.cgi?id=1669527
|
96
|
+
if @resource[:flavor] == nil && e.message =~ /^missing groups or modules: #{Regexp.quote(@resource[:name])}$/
|
97
|
+
enable(args)
|
98
|
+
else
|
99
|
+
raise
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
# should only get here when @resource[ensure] is :disabled
|
106
|
+
def insync?(is)
|
107
|
+
if resource[:ensure] == :disabled
|
108
|
+
# in sync only if package is already disabled
|
109
|
+
pkg = self.class.instances.find do |package|
|
110
|
+
@resource[:name] == package.name && package.properties[:ensure] == :disabled
|
111
|
+
end
|
112
|
+
return true if pkg
|
113
|
+
end
|
114
|
+
return false
|
115
|
+
end
|
116
|
+
|
117
|
+
def enable(args = @resource[:name])
|
118
|
+
execute([command(:dnf), 'module', 'enable', '-d', '0', '-e', self.class.error_level, '-y', args])
|
119
|
+
end
|
120
|
+
|
121
|
+
def uninstall
|
122
|
+
execute([command(:dnf), 'module', 'remove', '-d', '0', '-e', self.class.error_level, '-y', @resource[:name]])
|
123
|
+
reset # reset module to the default stream
|
124
|
+
end
|
125
|
+
|
126
|
+
def disable(args = @resource[:name])
|
127
|
+
execute([command(:dnf), 'module', 'disable', '-d', '0', '-e', self.class.error_level, '-y', args])
|
128
|
+
end
|
129
|
+
|
130
|
+
def reset
|
131
|
+
execute([command(:dnf), 'module', 'reset', '-d', '0', '-e', self.class.error_level, '-y', @resource[:name]])
|
132
|
+
end
|
133
|
+
|
134
|
+
def flavor
|
135
|
+
@property_hash[:flavor]
|
136
|
+
end
|
137
|
+
|
138
|
+
def flavor=(value)
|
139
|
+
install if flavor != @resource.should(:flavor)
|
140
|
+
end
|
141
|
+
end
|
@@ -44,7 +44,7 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
|
|
44
44
|
# Note: self:: is required here to keep these constants in the context of what will
|
45
45
|
# eventually become this Puppet::Type::Package::ProviderDpkg class.
|
46
46
|
self::DPKG_QUERY_FORMAT_STRING = %Q{'${Status} ${Package} ${Version}\\n'}
|
47
|
-
self::FIELDS_REGEX = %r{^(\S+) +(\S+) +(\S+) (\S+) (\S*)$}
|
47
|
+
self::FIELDS_REGEX = %r{^'?(\S+) +(\S+) +(\S+) (\S+) (\S*)$}
|
48
48
|
self::FIELDS= [:desired, :error, :status, :name, :ensure]
|
49
49
|
|
50
50
|
# @param line [String] one line of dpkg-query output
|
@@ -67,7 +67,7 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
|
|
67
67
|
elsif ['config-files', 'half-installed', 'unpacked', 'half-configured'].include?(hash[:status])
|
68
68
|
hash[:ensure] = :absent
|
69
69
|
end
|
70
|
-
hash[:
|
70
|
+
hash[:mark] = :hold if hash[:desired] == 'hold'
|
71
71
|
else
|
72
72
|
Puppet.debug("Failed to match dpkg-query line #{line.inspect}")
|
73
73
|
end
|
@@ -83,8 +83,6 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
|
|
83
83
|
end
|
84
84
|
args = []
|
85
85
|
|
86
|
-
# We always unhold when installing to remove any prior hold.
|
87
|
-
self.unhold
|
88
86
|
|
89
87
|
if @resource[:configfiles] == :keep
|
90
88
|
args << '--force-confold'
|
@@ -93,7 +91,12 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
|
|
93
91
|
end
|
94
92
|
args << '-i' << file
|
95
93
|
|
96
|
-
|
94
|
+
self.unhold if self.properties[:mark] == :hold
|
95
|
+
begin
|
96
|
+
dpkg(*args)
|
97
|
+
ensure
|
98
|
+
self.hold if @resource[:mark] == :hold
|
99
|
+
end
|
97
100
|
end
|
98
101
|
|
99
102
|
def update
|
@@ -144,10 +147,14 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
|
|
144
147
|
dpkg "--purge", @resource[:name]
|
145
148
|
end
|
146
149
|
|
147
|
-
def
|
148
|
-
if package_not_installed?
|
150
|
+
def deprecated_hold
|
151
|
+
if package_not_installed?
|
149
152
|
self.install
|
150
153
|
end
|
154
|
+
hold
|
155
|
+
end
|
156
|
+
|
157
|
+
def hold
|
151
158
|
Tempfile.open('puppet_dpkg_set_selection') do |tmpfile|
|
152
159
|
tmpfile.write("#{@resource[:name]} hold\n")
|
153
160
|
tmpfile.flush
|
@@ -163,16 +170,7 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
|
|
163
170
|
end
|
164
171
|
end
|
165
172
|
|
166
|
-
def package_not_installed?
|
167
|
-
|
168
|
-
begin
|
169
|
-
dpkgquery("-W", "--showformat", self.class::DPKG_QUERY_FORMAT_STRING, name)
|
170
|
-
rescue Puppet::ExecutionFailure
|
171
|
-
# return true if exception is generated because package is not found
|
172
|
-
return true
|
173
|
-
end
|
174
|
-
return false
|
175
|
-
end
|
176
|
-
raise ArgumentError.new("Package name is nil or empty")
|
173
|
+
def package_not_installed?
|
174
|
+
query[:status] != "installed"
|
177
175
|
end
|
178
176
|
end
|
@@ -37,7 +37,12 @@ Puppet::Type.type(:package).provide :fink, :parent => :dpkg, :source => :dpkg do
|
|
37
37
|
|
38
38
|
cmd << :install << str
|
39
39
|
|
40
|
-
|
40
|
+
self.unhold if self.properties[:mark] == :hold
|
41
|
+
begin
|
42
|
+
finkcmd(cmd)
|
43
|
+
ensure
|
44
|
+
self.hold if @resource[:mark] == :hold
|
45
|
+
end
|
41
46
|
end
|
42
47
|
|
43
48
|
# What's the latest package version available?
|
@@ -70,10 +75,22 @@ Puppet::Type.type(:package).provide :fink, :parent => :dpkg, :source => :dpkg do
|
|
70
75
|
end
|
71
76
|
|
72
77
|
def uninstall
|
73
|
-
|
78
|
+
self.unhold if self.properties[:mark] == :hold
|
79
|
+
begin
|
80
|
+
finkcmd "-y", "-q", :remove, @model[:name]
|
81
|
+
rescue StandardError, LoadError => e
|
82
|
+
self.hold if self.properties[:mark] == :hold
|
83
|
+
raise e
|
84
|
+
end
|
74
85
|
end
|
75
86
|
|
76
87
|
def purge
|
77
|
-
|
88
|
+
self.unhold if self.properties[:mark] == :hold
|
89
|
+
begin
|
90
|
+
aptget '-y', '-q', 'remove', '--purge', @resource[:name]
|
91
|
+
rescue StandardError, LoadError => e
|
92
|
+
self.hold if self.properties[:mark] == :hold
|
93
|
+
raise e
|
94
|
+
end
|
78
95
|
end
|
79
96
|
end
|
@@ -20,6 +20,7 @@ Puppet::Type.type(:package).provide :openbsd, :parent => Puppet::Provider::Packa
|
|
20
20
|
has_feature :install_options
|
21
21
|
has_feature :uninstall_options
|
22
22
|
has_feature :upgradeable
|
23
|
+
has_feature :supports_flavors
|
23
24
|
|
24
25
|
def self.instances
|
25
26
|
packages = []
|
@@ -27,7 +28,7 @@ Puppet::Type.type(:package).provide :openbsd, :parent => Puppet::Provider::Packa
|
|
27
28
|
begin
|
28
29
|
execpipe(listcmd) do |process|
|
29
30
|
# our regex for matching pkg_info output
|
30
|
-
regex = /^(.*)-(\d[^-]*)[-]?(\w*)(.*)$/
|
31
|
+
regex = /^(.*)-(\d[^-]*)[-]?([\w-]*)(.*)$/
|
31
32
|
fields = [:name, :ensure, :flavor ]
|
32
33
|
hash = {}
|
33
34
|
|
@@ -180,7 +181,7 @@ Puppet::Type.type(:package).provide :openbsd, :parent => Puppet::Provider::Packa
|
|
180
181
|
# If :ensure contains a version, use that instead of looking it up.
|
181
182
|
# This allows for installing packages with the same stem, but multiple
|
182
183
|
# version such as openldap-server.
|
183
|
-
if /(\d[^-]*)
|
184
|
+
if @resource[:ensure].to_s =~ /(\d[^-]*)$/
|
184
185
|
use_version = @resource[:ensure]
|
185
186
|
else
|
186
187
|
use_version = get_version
|
@@ -239,4 +240,15 @@ Puppet::Type.type(:package).provide :openbsd, :parent => Puppet::Provider::Packa
|
|
239
240
|
def purge
|
240
241
|
pkgdelete "-c", "-q", @resource[:name]
|
241
242
|
end
|
243
|
+
|
244
|
+
def flavor
|
245
|
+
@property_hash[:flavor]
|
246
|
+
end
|
247
|
+
|
248
|
+
def flavor=(value)
|
249
|
+
if flavor != @resource.should(:flavor)
|
250
|
+
uninstall
|
251
|
+
install
|
252
|
+
end
|
253
|
+
end
|
242
254
|
end
|
@@ -36,16 +36,25 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
|
|
36
36
|
if Puppet.features.microsoft_windows?
|
37
37
|
["pip.exe"]
|
38
38
|
else
|
39
|
-
["pip", "pip-python"]
|
39
|
+
["pip", "pip-python", "pip2", "pip-2"]
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
43
|
def self.pip_version(command)
|
44
|
-
|
44
|
+
version = nil
|
45
|
+
execpipe [quote(command), '--version'] do |process|
|
45
46
|
process.collect do |line|
|
46
|
-
|
47
|
+
md = line.strip.match(/^pip (\d+\.\d+\.?\d*).*$/)
|
48
|
+
if md
|
49
|
+
version = md[1]
|
50
|
+
break
|
51
|
+
end
|
47
52
|
end
|
48
53
|
end
|
54
|
+
|
55
|
+
raise Puppet::Error, _("Cannot resolve pip version") unless version
|
56
|
+
|
57
|
+
version
|
49
58
|
end
|
50
59
|
|
51
60
|
# Return an array of structured information about every installed package
|
@@ -68,7 +77,7 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
|
|
68
77
|
command_options << '--all'
|
69
78
|
end
|
70
79
|
|
71
|
-
execpipe [command, command_options] do |process|
|
80
|
+
execpipe [quote(command), command_options] do |process|
|
72
81
|
process.collect do |line|
|
73
82
|
next unless pkg = parse(line)
|
74
83
|
pkg[:command] = command
|
@@ -103,7 +112,7 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
|
|
103
112
|
self.class.validate_command(command)
|
104
113
|
|
105
114
|
self.class.instances(command).each do |pkg|
|
106
|
-
return pkg.properties if @resource[:name].
|
115
|
+
return pkg.properties if @resource[:name].casecmp(pkg.name).zero?
|
107
116
|
end
|
108
117
|
return nil
|
109
118
|
end
|
@@ -123,14 +132,17 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
|
|
123
132
|
end
|
124
133
|
end
|
125
134
|
|
135
|
+
# Less resource-intensive approach for pip version 1.5.4 and newer.
|
136
|
+
|
126
137
|
def latest_with_new_pip
|
127
138
|
command = resource_or_provider_command
|
128
139
|
self.class.validate_command(command)
|
129
140
|
|
130
|
-
|
131
|
-
|
141
|
+
command_and_options = [self.class.quote(command), 'install', "#{@resource[:name]}==versionplease"]
|
142
|
+
command_and_options << install_options if @resource[:install_options]
|
143
|
+
execpipe command_and_options do |process|
|
132
144
|
process.collect do |line|
|
133
|
-
# PIP OUTPUT: Could not find a version that satisfies the requirement
|
145
|
+
# PIP OUTPUT: Could not find a version that satisfies the requirement example==versionplease (from versions: 1.2.3, 4.5.6)
|
134
146
|
if line =~ /from versions: /
|
135
147
|
textAfterLastMatch = $'.chomp(")\n")
|
136
148
|
versionList = textAfterLastMatch.split(', ').sort do |x,y|
|
@@ -143,14 +155,18 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
|
|
143
155
|
end
|
144
156
|
end
|
145
157
|
|
158
|
+
# More resource-intensive approach for pip version 1.5.3 and older.
|
159
|
+
|
146
160
|
def latest_with_old_pip
|
147
161
|
command = resource_or_provider_command
|
148
162
|
self.class.validate_command(command)
|
149
163
|
|
150
164
|
Dir.mktmpdir("puppet_pip") do |dir|
|
151
|
-
|
165
|
+
command_and_options = [self.class.quote(command), 'install', "#{@resource[:name]}", '-d', "#{dir}", '-v']
|
166
|
+
command_and_options << install_options if @resource[:install_options]
|
167
|
+
execpipe command_and_options do |process|
|
152
168
|
process.collect do |line|
|
153
|
-
# PIP OUTPUT: Using version 0.10.1 (newest of versions:
|
169
|
+
# PIP OUTPUT: Using version 0.10.1 (newest of versions: 1.2.3, 4.5.6)
|
154
170
|
if line =~ /Using version (.+?) \(newest of versions/
|
155
171
|
return $1
|
156
172
|
end
|
@@ -210,4 +226,15 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
|
|
210
226
|
def install_options
|
211
227
|
join_options(@resource[:install_options])
|
212
228
|
end
|
229
|
+
|
230
|
+
# Quoting is required if the path to the pip command contains spaces.
|
231
|
+
# Required for execpipe() but not execute(), as execute() already does this.
|
232
|
+
|
233
|
+
def self.quote(path)
|
234
|
+
if path.include?(" ")
|
235
|
+
"\"#{path}\""
|
236
|
+
else
|
237
|
+
path
|
238
|
+
end
|
239
|
+
end
|
213
240
|
end
|
@@ -49,7 +49,7 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
|
|
49
49
|
).merge(
|
50
50
|
case flags[1..1]
|
51
51
|
when 'f'
|
52
|
-
{:
|
52
|
+
{:mark => :hold}
|
53
53
|
when '-'
|
54
54
|
{}
|
55
55
|
else
|
@@ -107,6 +107,10 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
|
|
107
107
|
end).merge({:provider => self.name})
|
108
108
|
end
|
109
109
|
|
110
|
+
def deprecated_hold
|
111
|
+
hold
|
112
|
+
end
|
113
|
+
|
110
114
|
def hold
|
111
115
|
pkg(:freeze, @resource[:name])
|
112
116
|
end
|
@@ -201,8 +205,6 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
|
|
201
205
|
def install(nofail = false)
|
202
206
|
name = @resource[:name]
|
203
207
|
should = @resource[:ensure]
|
204
|
-
# always unhold if explicitly told to install/update
|
205
|
-
self.unhold
|
206
208
|
is = self.query
|
207
209
|
if is[:ensure].to_sym == :absent
|
208
210
|
command = 'install'
|
@@ -216,7 +218,12 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
|
|
216
218
|
unless should.is_a? Symbol
|
217
219
|
name += "@#{should}"
|
218
220
|
end
|
219
|
-
|
221
|
+
self.unhold if self.properties[:mark] == :hold
|
222
|
+
begin
|
223
|
+
r = exec_cmd(command(:pkg), command, *args, name)
|
224
|
+
ensure
|
225
|
+
self.hold if @resource[:mark] == :hold
|
226
|
+
end
|
220
227
|
return r if nofail
|
221
228
|
raise Puppet::Error, _("Unable to update %{package}") % { package: r[:out] } if r[:exit] != 0
|
222
229
|
end
|
@@ -230,7 +237,13 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
|
|
230
237
|
cmd << '-r'
|
231
238
|
end
|
232
239
|
cmd << @resource[:name]
|
233
|
-
|
240
|
+
self.unhold if self.properties[:mark] == :hold
|
241
|
+
begin
|
242
|
+
pkg cmd
|
243
|
+
rescue StandardError, LoadError => e
|
244
|
+
self.hold if self.properties[:mark] == :hold
|
245
|
+
raise e
|
246
|
+
end
|
234
247
|
end
|
235
248
|
|
236
249
|
# update the package to the latest version available
|