puppet 5.5.17-x64-mingw32 → 5.5.22-x64-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 +1 -1
- data/Gemfile +4 -5
- data/Gemfile.lock +59 -55
- data/ext/build_defaults.yaml +1 -0
- data/ext/cert_inspector +3 -3
- data/ext/puppet-test +2 -2
- data/ext/regexp_nodes/regexp_nodes.rb +4 -4
- data/ext/windows/service/daemon.rb +54 -8
- data/install.rb +6 -6
- data/lib/puppet.rb +5 -2
- data/lib/puppet/agent.rb +5 -13
- data/lib/puppet/application.rb +1 -1
- data/lib/puppet/application/agent.rb +3 -1
- data/lib/puppet/application/apply.rb +2 -2
- data/lib/puppet/application/describe.rb +3 -9
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +13 -0
- data/lib/puppet/application/lookup.rb +1 -1
- data/lib/puppet/application/script.rb +2 -2
- data/lib/puppet/configurer.rb +106 -31
- data/lib/puppet/configurer/downloader.rb +33 -16
- data/lib/puppet/daemon.rb +1 -1
- data/lib/puppet/defaults.rb +86 -40
- data/lib/puppet/error.rb +9 -1
- data/lib/puppet/external/nagios/base.rb +1 -1
- data/lib/puppet/face/ca.rb +1 -1
- data/lib/puppet/face/module/list.rb +5 -5
- data/lib/puppet/face/module/search.rb +1 -1
- data/lib/puppet/face/module/uninstall.rb +1 -1
- data/lib/puppet/face/module/upgrade.rb +1 -1
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- data/lib/puppet/file_system.rb +0 -8
- data/lib/puppet/file_system/memory_file.rb +1 -1
- data/lib/puppet/file_system/posix.rb +3 -2
- data/lib/puppet/file_system/uniquefile.rb +4 -0
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/functions/epp.rb +4 -4
- data/lib/puppet/functions/inline_epp.rb +5 -5
- data/lib/puppet/functions/new.rb +8 -3
- data/lib/puppet/functions/reduce.rb +2 -4
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/gettext/module_translations.rb +1 -1
- data/lib/puppet/graph/rb_tree_map.rb +2 -2
- data/lib/puppet/graph/simple_graph.rb +6 -5
- data/lib/puppet/indirector/catalog/compiler.rb +8 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
- data/lib/puppet/indirector/hiera.rb +6 -0
- data/lib/puppet/indirector/resource/ral.rb +1 -3
- data/lib/puppet/indirector/resource/validator.rb +1 -1
- data/lib/puppet/interface.rb +2 -1
- data/lib/puppet/loaders.rb +0 -1
- data/lib/puppet/metatype/manager.rb +1 -1
- data/lib/puppet/module.rb +1 -1
- data/lib/puppet/module_tool/applications/builder.rb +1 -1
- data/lib/puppet/module_tool/applications/installer.rb +1 -1
- data/lib/puppet/module_tool/applications/uninstaller.rb +3 -3
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/module_tool/shared_behaviors.rb +4 -4
- data/lib/puppet/module_tool/tar/mini.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +13 -12
- data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
- data/lib/puppet/network/http/connection.rb +14 -12
- data/lib/puppet/network/http/pool.rb +7 -1
- data/lib/puppet/network/http/rack/rest.rb +2 -2
- data/lib/puppet/network/http/site.rb +1 -1
- data/lib/puppet/network/resolver.rb +2 -2
- data/lib/puppet/node/environment.rb +11 -3
- data/lib/puppet/parser/ast.rb +1 -1
- data/lib/puppet/parser/ast/resourceparam.rb +1 -1
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
- data/lib/puppet/parser/environment_compiler.rb +3 -0
- data/lib/puppet/parser/functions.rb +14 -10
- data/lib/puppet/parser/functions/epp.rb +3 -3
- data/lib/puppet/parser/functions/inline_epp.rb +5 -5
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
- data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -2
- data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
- data/lib/puppet/pops/issues.rb +5 -0
- data/lib/puppet/pops/loaders.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +1 -0
- data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
- data/lib/puppet/pops/merge_strategy.rb +22 -18
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
- data/lib/puppet/pops/parser/locator.rb +1 -1
- data/lib/puppet/pops/parser/pn_parser.rb +17 -16
- data/lib/puppet/pops/puppet_stack.rb +51 -48
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
- data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
- data/lib/puppet/pops/types/string_converter.rb +10 -10
- data/lib/puppet/pops/types/type_calculator.rb +24 -0
- data/lib/puppet/pops/types/types.rb +3 -3
- data/lib/puppet/pops/validation/checker4_0.rb +29 -15
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/ensure.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +1 -1
- data/lib/puppet/provider/exec.rb +6 -2
- data/lib/puppet/provider/group/groupadd.rb +19 -19
- data/lib/puppet/provider/group/windows_adsi.rb +3 -3
- data/lib/puppet/provider/mailalias/aliases.rb +1 -1
- data/lib/puppet/provider/mount.rb +1 -1
- data/lib/puppet/provider/mount/parsed.rb +8 -8
- data/lib/puppet/provider/nameservice/directoryservice.rb +1 -1
- data/lib/puppet/provider/nameservice/pw.rb +2 -2
- data/lib/puppet/provider/package/aix.rb +17 -2
- data/lib/puppet/provider/package/apt.rb +14 -3
- data/lib/puppet/provider/package/dnfmodule.rb +141 -0
- data/lib/puppet/provider/package/dpkg.rb +16 -18
- data/lib/puppet/provider/package/fink.rb +20 -3
- data/lib/puppet/provider/package/gem.rb +4 -2
- data/lib/puppet/provider/package/openbsd.rb +14 -2
- data/lib/puppet/provider/package/pip.rb +37 -10
- data/lib/puppet/provider/package/pkg.rb +18 -5
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +16 -4
- data/lib/puppet/provider/package/portage.rb +4 -4
- data/lib/puppet/provider/package/puppet_gem.rb +5 -0
- data/lib/puppet/provider/package/rpm.rb +6 -6
- data/lib/puppet/provider/package/windows/package.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +28 -20
- data/lib/puppet/provider/package/zypper.rb +1 -0
- data/lib/puppet/provider/package_targetable.rb +5 -4
- data/lib/puppet/provider/parsedfile.rb +1 -1
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +3 -3
- data/lib/puppet/provider/selmodule/semodule.rb +43 -26
- data/lib/puppet/provider/service/daemontools.rb +9 -9
- data/lib/puppet/provider/service/openbsd.rb +1 -1
- data/lib/puppet/provider/service/rcng.rb +2 -2
- data/lib/puppet/provider/service/runit.rb +2 -8
- data/lib/puppet/provider/service/systemd.rb +31 -13
- data/lib/puppet/provider/user/directoryservice.rb +31 -6
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +39 -20
- data/lib/puppet/provider/user/windows_adsi.rb +4 -5
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
- data/lib/puppet/reference/indirection.rb +2 -2
- data/lib/puppet/reference/metaparameter.rb +1 -3
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/reference/type.rb +3 -9
- data/lib/puppet/reports.rb +1 -1
- data/lib/puppet/resource.rb +1 -1
- data/lib/puppet/resource/catalog.rb +1 -1
- data/lib/puppet/resource/type.rb +10 -1
- data/lib/puppet/settings.rb +3 -3
- data/lib/puppet/settings/environment_conf.rb +1 -0
- data/lib/puppet/ssl/certificate.rb +2 -1
- data/lib/puppet/ssl/certificate_authority.rb +6 -5
- data/lib/puppet/ssl/certificate_authority/interface.rb +1 -1
- data/lib/puppet/ssl/certificate_factory.rb +2 -2
- data/lib/puppet/ssl/host.rb +3 -3
- data/lib/puppet/ssl/oids.rb +1 -1
- data/lib/puppet/test/test_helper.rb +20 -12
- data/lib/puppet/transaction/report.rb +1 -1
- data/lib/puppet/transaction/resource_harness.rb +1 -1
- data/lib/puppet/type.rb +8 -4
- data/lib/puppet/type/cron.rb +1 -1
- data/lib/puppet/type/exec.rb +7 -3
- data/lib/puppet/type/file.rb +14 -2
- data/lib/puppet/type/file/data_sync.rb +5 -1
- data/lib/puppet/type/group.rb +4 -2
- data/lib/puppet/type/interface.rb +1 -1
- data/lib/puppet/type/notify.rb +3 -2
- data/lib/puppet/type/package.rb +97 -8
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/selboolean.rb +17 -3
- data/lib/puppet/type/service.rb +2 -8
- data/lib/puppet/type/user.rb +5 -9
- data/lib/puppet/util.rb +35 -12
- data/lib/puppet/util/autoload.rb +9 -7
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +8 -14
- data/lib/puppet/util/instance_loader.rb +1 -1
- data/lib/puppet/util/log.rb +1 -1
- data/lib/puppet/util/log/destinations.rb +3 -12
- data/lib/puppet/util/logging.rb +30 -18
- data/lib/puppet/util/metric.rb +2 -2
- data/lib/puppet/util/monkey_patches.rb +1 -1
- data/lib/puppet/util/nagios_maker.rb +2 -2
- data/lib/puppet/util/network_device/cisco/device.rb +1 -1
- data/lib/puppet/util/network_device/cisco/interface.rb +2 -2
- data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
- data/lib/puppet/util/pidlock.rb +12 -6
- data/lib/puppet/util/plist.rb +6 -0
- data/lib/puppet/util/provider_features.rb +2 -4
- data/lib/puppet/util/rdoc.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/selinux.rb +3 -1
- data/lib/puppet/util/windows/adsi.rb +60 -30
- data/lib/puppet/util/windows/api_types.rb +45 -32
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/process.rb +16 -15
- data/lib/puppet/util/windows/registry.rb +17 -15
- data/lib/puppet/util/windows/security.rb +1 -0
- data/lib/puppet/util/windows/sid.rb +3 -3
- data/lib/puppet/vendor.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_pal.rb +2 -2
- data/locales/puppet.pot +362 -318
- data/man/man5/puppet.conf.5 +39 -9
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-ca.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-cert.8 +1 -1
- data/man/man8/puppet-certificate.8 +1 -1
- data/man/man8/puppet-certificate_request.8 +1 -1
- data/man/man8/puppet-certificate_revocation_list.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +16 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-master.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/provider/mailalias/aliases/test1 +1 -0
- data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +19 -0
- data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
- data/spec/integration/configurer_spec.rb +66 -0
- data/spec/integration/data_binding_spec.rb +1 -0
- data/spec/integration/defaults_spec.rb +1 -2
- data/spec/integration/faces/plugin_spec.rb +29 -47
- data/spec/integration/indirector/facts/facter_spec.rb +4 -0
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/type/notify_spec.rb +46 -0
- data/spec/integration/util/windows/adsi_spec.rb +6 -1
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/unit/agent_spec.rb +34 -26
- data/spec/unit/application/apply_spec.rb +2 -12
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer/fact_handler_spec.rb +0 -4
- data/spec/unit/configurer_spec.rb +430 -415
- data/spec/unit/daemon_spec.rb +0 -1
- data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_system/uniquefile_spec.rb +11 -0
- data/spec/unit/forge/forge_spec.rb +1 -3
- data/spec/unit/forge/repository_spec.rb +1 -3
- data/spec/unit/indirector/catalog/compiler_spec.rb +45 -26
- data/spec/unit/indirector/resource/ral_spec.rb +4 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/connection_spec.rb +43 -1
- data/spec/unit/network/http/pool_spec.rb +32 -0
- data/spec/unit/node_spec.rb +7 -4
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -3
- data/spec/unit/provider/exec_spec.rb +209 -0
- data/spec/unit/provider/group/groupadd_spec.rb +30 -1
- data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
- data/spec/unit/provider/package/aix_spec.rb +29 -0
- data/spec/unit/provider/package/apt_spec.rb +13 -2
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +247 -0
- data/spec/unit/provider/package/dpkg_spec.rb +35 -7
- data/spec/unit/provider/package/openbsd_spec.rb +17 -0
- data/spec/unit/provider/package/pip_spec.rb +93 -22
- data/spec/unit/provider/package/pkg_spec.rb +13 -1
- data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
- data/spec/unit/provider/package/pkgng_spec.rb +36 -0
- data/spec/unit/provider/package/portage_spec.rb +4 -4
- data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
- data/spec/unit/provider/package/yum_spec.rb +90 -0
- data/spec/unit/provider/package/zypper_spec.rb +13 -0
- data/spec/unit/provider/package_targetable_spec.rb +60 -0
- data/spec/unit/provider/selmodule_spec.rb +118 -47
- data/spec/unit/provider/service/daemontools_spec.rb +24 -0
- data/spec/unit/provider/service/runit_spec.rb +24 -0
- data/spec/unit/provider/service/systemd_spec.rb +109 -36
- data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
- data/spec/unit/provider/user/hpux_spec.rb +2 -2
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +81 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
- data/spec/unit/puppet_pal_2pec.rb +3 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +2 -3
- data/spec/unit/ssl/certificate_spec.rb +7 -0
- data/spec/unit/ssl/host_spec.rb +2 -0
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/type/exec_spec.rb +6 -12
- data/spec/unit/type/file/content_spec.rb +9 -3
- data/spec/unit/type/file_spec.rb +9 -4
- data/spec/unit/type/package_spec.rb +8 -0
- data/spec/unit/type/selboolean_spec.rb +4 -6
- data/spec/unit/type/service_spec.rb +9 -8
- data/spec/unit/type/user_spec.rb +19 -13
- data/spec/unit/util/execution_spec.rb +16 -0
- data/spec/unit/util/http_proxy_spec.rb +97 -0
- data/spec/unit/util/log/destinations_spec.rb +2 -26
- data/spec/unit/util/log_spec.rb +0 -138
- data/spec/unit/util/logging_spec.rb +200 -0
- data/spec/unit/util/pidlock_spec.rb +67 -40
- data/spec/unit/util/plist_spec.rb +20 -0
- data/spec/unit/util/windows/adsi_spec.rb +55 -4
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/sid_spec.rb +2 -2
- data/tasks/manpages.rake +1 -0
- metadata +16 -7
- data/lib/puppet/pops/loader/null_loader.rb +0 -60
- data/locales/ja/puppet.po +0 -12114
- data/spec/integration/test/test_helper_spec.rb +0 -31
@@ -48,11 +48,13 @@ Puppet::Type.type(:package).provide :gem, :parent => Puppet::Provider::Package::
|
|
48
48
|
#
|
49
49
|
# In this case, causing the puppet_gem provider to inherit the parent gem provider's convenience gemcmd() methods, with the wrong path.
|
50
50
|
|
51
|
-
def self.execute_gem_command(command, command_options)
|
51
|
+
def self.execute_gem_command(command, command_options, custom_environment = {})
|
52
52
|
validate_command(command)
|
53
53
|
cmd = [command] << command_options
|
54
54
|
|
55
|
-
|
55
|
+
custom_environment = {'HOME'=>Puppet::Util.get_env('HOME')}.merge(custom_environment)
|
56
|
+
|
57
|
+
execute(cmd, {:failonfail => true, :combine => true, :custom_environment => custom_environment})
|
56
58
|
end
|
57
59
|
|
58
60
|
def self.instances(target_command = nil)
|
@@ -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
|
@@ -102,7 +102,7 @@ Puppet::Type.type(:package).provide :pkgdmg, :parent => Puppet::Provider::Packag
|
|
102
102
|
if source =~ /\.dmg$/i
|
103
103
|
# If you fix this to use open-uri again, you must update the docs above. -NF
|
104
104
|
File.open(cached_source) do |dmg|
|
105
|
-
xml_str = hdiutil "mount", "-plist", "-nobrowse", "-readonly", "-
|
105
|
+
xml_str = hdiutil "mount", "-plist", "-nobrowse", "-readonly", "-mountrandom", "/tmp", dmg.path
|
106
106
|
hdiutil_info = Puppet::Util::Plist.parse_plist(xml_str)
|
107
107
|
raise Puppet::Error.new(_("No disk entities returned by mount at %{path}") % { path: dmg.path }) unless hdiutil_info.has_key?("system-entities")
|
108
108
|
mounts = hdiutil_info["system-entities"].collect { |entity|
|
@@ -11,6 +11,7 @@ Puppet::Type.type(:package).provide :pkgng, :parent => Puppet::Provider::Package
|
|
11
11
|
|
12
12
|
has_feature :versionable
|
13
13
|
has_feature :upgradeable
|
14
|
+
has_feature :install_options
|
14
15
|
|
15
16
|
def self.get_query
|
16
17
|
pkg(['query', '-a', '%n %v %o'])
|
@@ -22,7 +23,11 @@ Puppet::Type.type(:package).provide :pkgng, :parent => Puppet::Provider::Package
|
|
22
23
|
|
23
24
|
def self.get_latest_version(origin, version_list)
|
24
25
|
if latest_version = version_list.lines.find { |l| l =~ /^#{origin} / }
|
25
|
-
|
26
|
+
_name, compare, status = latest_version.chomp.split(' ', 3)
|
27
|
+
if ['!', '?'].include?(compare)
|
28
|
+
return nil
|
29
|
+
end
|
30
|
+
latest_version = status.split(' ').last.split(')').first
|
26
31
|
return latest_version
|
27
32
|
end
|
28
33
|
nil
|
@@ -97,13 +102,16 @@ Puppet::Type.type(:package).provide :pkgng, :parent => Puppet::Provider::Package
|
|
97
102
|
end
|
98
103
|
|
99
104
|
if not source # install using default repo logic
|
100
|
-
args = ['install', '-qy'
|
105
|
+
args = ['install', '-qy']
|
101
106
|
elsif source.scheme == 'urn' # install from repo named in URN
|
102
107
|
tag = repo_tag_from_urn(source.to_s)
|
103
|
-
args = ['install', '-qy', '-r', tag
|
108
|
+
args = ['install', '-qy', '-r', tag]
|
104
109
|
else # add package located at URL
|
105
|
-
args = ['add', '-q'
|
110
|
+
args = ['add', '-q']
|
111
|
+
installname = source.to_s
|
106
112
|
end
|
113
|
+
args += install_options if @resource[:install_options]
|
114
|
+
args << installname
|
107
115
|
|
108
116
|
pkg(args)
|
109
117
|
end
|
@@ -140,4 +148,8 @@ Puppet::Type.type(:package).provide :pkgng, :parent => Puppet::Provider::Package
|
|
140
148
|
@property_hash[:origin]
|
141
149
|
end
|
142
150
|
|
151
|
+
def install_options
|
152
|
+
join_options(@resource[:install_options])
|
153
|
+
end
|
154
|
+
|
143
155
|
end
|
@@ -70,7 +70,7 @@ Puppet::Type.type(:package).provide :portage, :parent => Puppet::Provider::Packa
|
|
70
70
|
name = qatom[:pfx] + name if qatom[:pfx]
|
71
71
|
name = name + '-' + qatom[:pv] if qatom[:pv]
|
72
72
|
name = name + '-' + qatom[:pr] if qatom[:pr]
|
73
|
-
name = name + qatom[:slot] if qatom[:slot]
|
73
|
+
name = name + ':' + qatom[:slot] if qatom[:slot]
|
74
74
|
cmd << '--update' if [:latest].include?(should)
|
75
75
|
cmd += install_options if @resource[:install_options]
|
76
76
|
cmd << name
|
@@ -84,7 +84,7 @@ Puppet::Type.type(:package).provide :portage, :parent => Puppet::Provider::Packa
|
|
84
84
|
name = qatom[:pfx] + name if qatom[:pfx]
|
85
85
|
name = name + '-' + qatom[:pv] if qatom[:pv]
|
86
86
|
name = name + '-' + qatom[:pr] if qatom[:pr]
|
87
|
-
name = name + qatom[:slot] if qatom[:slot]
|
87
|
+
name = name + ':' + qatom[:slot] if qatom[:slot]
|
88
88
|
cmd += uninstall_options if @resource[:uninstall_options]
|
89
89
|
cmd << name
|
90
90
|
if [:purged].include?(should)
|
@@ -169,7 +169,7 @@ Puppet::Type.type(:package).provide :portage, :parent => Puppet::Provider::Packa
|
|
169
169
|
package_sets << package_set.to_s.strip
|
170
170
|
end
|
171
171
|
|
172
|
-
if @resource[:name]
|
172
|
+
if @resource[:name] =~ /^@/
|
173
173
|
if package_sets.include?(@resource[:name][1..-1].to_s)
|
174
174
|
return({:name => "#{@resource[:name]}", :ensure => '9999', :version_available => nil, :installed_versions => nil, :installable_versions => "9999,"})
|
175
175
|
end
|
@@ -247,7 +247,7 @@ Puppet::Type.type(:package).provide :portage, :parent => Puppet::Provider::Packa
|
|
247
247
|
# [2.7.12: 2.7
|
248
248
|
# 3.4.5: 3.4
|
249
249
|
# 3.5.2: 3.5]
|
250
|
-
version_for_slot = versions_and_slots.find { |version_and_slot| version_and_slot.last == slot
|
250
|
+
version_for_slot = versions_and_slots.find { |version_and_slot| version_and_slot.last == slot }
|
251
251
|
# [3.5.2: 3.5]
|
252
252
|
version_for_slot.first if version_for_slot
|
253
253
|
# 3.5.2
|
@@ -14,4 +14,9 @@ Puppet::Type.type(:package).provide :puppet_gem, :parent => :gem do
|
|
14
14
|
else
|
15
15
|
commands :gemcmd => "/opt/puppetlabs/puppet/bin/gem"
|
16
16
|
end
|
17
|
+
|
18
|
+
def self.execute_gem_command(command, command_options, custom_environment = {})
|
19
|
+
custom_environment['PKG_CONFIG_PATH'] = '/opt/puppetlabs/puppet/lib/pkgconfig' unless Puppet::Util::Platform.windows?
|
20
|
+
super(command, command_options, custom_environment)
|
21
|
+
end
|
17
22
|
end
|
@@ -229,14 +229,14 @@ Puppet::Type.type(:package).provide :rpm, :source => :rpm, :parent => Puppet::Pr
|
|
229
229
|
str2 = str2.gsub(front_strip_re, '')
|
230
230
|
|
231
231
|
# "handle the tilde separator, it sorts before everything else"
|
232
|
-
if
|
232
|
+
if str1 =~ /^~/ && str2 =~ /^~/
|
233
233
|
# if they both have ~, strip it
|
234
234
|
str1 = str1[1..-1]
|
235
235
|
str2 = str2[1..-1]
|
236
236
|
next
|
237
|
-
elsif
|
237
|
+
elsif str1 =~ /^~/
|
238
238
|
return -1
|
239
|
-
elsif
|
239
|
+
elsif str2 =~ /^~/
|
240
240
|
return 1
|
241
241
|
end
|
242
242
|
|
@@ -245,7 +245,7 @@ Puppet::Type.type(:package).provide :rpm, :source => :rpm, :parent => Puppet::Pr
|
|
245
245
|
# "grab first completely alpha or completely numeric segment"
|
246
246
|
isnum = false
|
247
247
|
# if the first char of str1 is a digit, grab the chunk of continuous digits from each string
|
248
|
-
if /^[0-9]
|
248
|
+
if str1 =~ /^[0-9]+/
|
249
249
|
if str1 =~ /^[0-9]+/
|
250
250
|
segment1 = $~.to_s
|
251
251
|
str1 = $~.post_match
|
@@ -340,8 +340,8 @@ Puppet::Type.type(:package).provide :rpm, :source => :rpm, :parent => Puppet::Pr
|
|
340
340
|
v = s[0,ri]
|
341
341
|
r = s[ri+1,s.length]
|
342
342
|
if arch = r.scan(ARCH_REGEX)[0]
|
343
|
-
a = arch.
|
344
|
-
|
343
|
+
a = arch.delete('.')
|
344
|
+
r.gsub!(ARCH_REGEX, '')
|
345
345
|
end
|
346
346
|
else
|
347
347
|
v = s
|
@@ -25,6 +25,8 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do
|
|
25
25
|
|
26
26
|
defaultfor :osfamily => :redhat
|
27
27
|
|
28
|
+
VERSION_REGEX = /^(?:(\d+):)?(\S+)-(\S+)$/
|
29
|
+
|
28
30
|
def self.prefetch(packages)
|
29
31
|
raise Puppet::Error, _("The yum provider can only be used as root") if Process.euid != 0
|
30
32
|
super
|
@@ -86,23 +88,24 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do
|
|
86
88
|
end
|
87
89
|
|
88
90
|
def self.parse_updates(str)
|
89
|
-
# Strip off all content
|
90
|
-
body = str.partition(
|
91
|
+
# Strip off all content that contains Obsoleting, Security: or Update
|
92
|
+
body = str.partition(/^(Obsoleting|Security:|Update)/).first
|
91
93
|
|
92
94
|
updates = Hash.new { |h, k| h[k] = [] }
|
93
|
-
body.split.each_slice(3) do |tuple|
|
94
|
-
break if tuple[0] =~ /^(Obsoleting|Security:|Update)/
|
95
|
-
break unless tuple[1].match(/^(?:(\d+):)?(\S+)-(\S+)$/)
|
96
|
-
hash = update_to_hash(*tuple[0..1])
|
97
|
-
# Create entries for both the package name without a version and a
|
98
|
-
# version since yum considers those as mostly interchangeable.
|
99
|
-
short_name = hash[:name]
|
100
|
-
long_name = "#{hash[:name]}.#{hash[:arch]}"
|
101
|
-
|
102
|
-
updates[short_name] << hash
|
103
|
-
updates[long_name] << hash
|
104
|
-
end
|
105
95
|
|
96
|
+
body.split(/^\s*\n/).each do |line|
|
97
|
+
line.split.each_slice(3) do |tuple|
|
98
|
+
next unless tuple[0].include?('.') && tuple[1] =~ VERSION_REGEX
|
99
|
+
|
100
|
+
hash = update_to_hash(*tuple[0..1])
|
101
|
+
# Create entries for both the package name without a version and a
|
102
|
+
# version since yum considers those as mostly interchangeable.
|
103
|
+
short_name = hash[:name]
|
104
|
+
long_name = "#{hash[:name]}.#{hash[:arch]}"
|
105
|
+
updates[short_name] << hash
|
106
|
+
updates[long_name] << hash
|
107
|
+
end
|
108
|
+
end
|
106
109
|
updates
|
107
110
|
end
|
108
111
|
|
@@ -117,7 +120,7 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do
|
|
117
120
|
raise _("Failed to parse package name and architecture from '%{pkgname}'") % { pkgname: pkgname }
|
118
121
|
end
|
119
122
|
|
120
|
-
match = pkgversion.match(
|
123
|
+
match = pkgversion.match(VERSION_REGEX)
|
121
124
|
epoch = match[1] || '0'
|
122
125
|
version = match[2]
|
123
126
|
release = match[3]
|
@@ -248,6 +251,7 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do
|
|
248
251
|
return "#{upd[:epoch]}:#{upd[:version]}-#{upd[:release]}"
|
249
252
|
else
|
250
253
|
# Yum didn't find updates, pretend the current version is the latest
|
254
|
+
self.debug "Yum didn't find updates, current version (#{properties[:ensure]}) is the latest"
|
251
255
|
version = properties[:ensure]
|
252
256
|
raise Puppet::DevError, _("Tried to get latest on a missing package") if version == :absent || version == :purged
|
253
257
|
return version
|
@@ -286,12 +290,16 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do
|
|
286
290
|
# @param key [String] The key to look for in all contained hashes
|
287
291
|
# @return [Array<String>] All hash values with the given key.
|
288
292
|
def scan_options(options, key)
|
289
|
-
return []
|
290
|
-
options.
|
291
|
-
if
|
292
|
-
|
293
|
+
return [] unless options.is_a?(Enumerable)
|
294
|
+
values = options.map do | repo |
|
295
|
+
value = if repo.is_a?(String)
|
296
|
+
next unless repo.include?('=')
|
297
|
+
Hash[*repo.strip.split('=')] # make it a hash
|
298
|
+
else
|
299
|
+
repo
|
293
300
|
end
|
294
|
-
|
301
|
+
value[key]
|
295
302
|
end
|
303
|
+
values.compact.uniq
|
296
304
|
end
|
297
305
|
end
|