puppet 6.13.0-x64-mingw32 → 6.18.0-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 +2 -7
- data/CONTRIBUTING.md +7 -13
- data/Gemfile +4 -2
- data/Gemfile.lock +36 -32
- data/README.md +17 -24
- data/ext/windows/service/daemon.rb +3 -3
- data/lib/puppet.rb +33 -9
- data/lib/puppet/agent.rb +20 -14
- data/lib/puppet/application/agent.rb +26 -17
- data/lib/puppet/application/apply.rb +18 -20
- data/lib/puppet/application/describe.rb +7 -5
- data/lib/puppet/application/device.rb +2 -2
- data/lib/puppet/application/filebucket.rb +19 -15
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/plugin.rb +1 -0
- data/lib/puppet/application/ssl.rb +4 -4
- data/lib/puppet/configurer.rb +58 -57
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/configurer/plugin_handler.rb +10 -1
- data/lib/puppet/confine.rb +2 -2
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/context/trusted_information.rb +14 -8
- data/lib/puppet/daemon.rb +13 -27
- data/lib/puppet/defaults.rb +92 -12
- data/lib/puppet/environments.rb +4 -5
- data/lib/puppet/face/facts.rb +1 -1
- data/lib/puppet/face/help.rb +29 -3
- data/lib/puppet/face/module/search.rb +5 -0
- data/lib/puppet/face/plugin.rb +2 -2
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/file_serving/http_metadata.rb +14 -2
- data/lib/puppet/file_serving/metadata.rb +4 -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_serving/terminus_selector.rb +7 -8
- data/lib/puppet/file_system/file_impl.rb +17 -13
- data/lib/puppet/file_system/uniquefile.rb +12 -16
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +4 -7
- data/lib/puppet/functions/call.rb +1 -1
- data/lib/puppet/functions/eyaml_lookup_key.rb +13 -8
- data/lib/puppet/functions/filter.rb +1 -0
- data/lib/puppet/functions/lstrip.rb +4 -4
- data/lib/puppet/functions/reduce.rb +2 -4
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/rstrip.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/functions/strip.rb +4 -4
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/http.rb +3 -0
- data/lib/puppet/http/client.rb +263 -73
- data/lib/puppet/http/external_client.rb +90 -0
- data/lib/puppet/http/redirector.rb +43 -7
- data/lib/puppet/http/resolver.rb +46 -3
- data/lib/puppet/http/resolver/server_list.rb +76 -16
- data/lib/puppet/http/resolver/settings.rb +23 -3
- data/lib/puppet/http/resolver/srv.rb +29 -3
- data/lib/puppet/http/response.rb +87 -1
- data/lib/puppet/http/retry_after_handler.rb +39 -0
- data/lib/puppet/http/service.rb +97 -12
- data/lib/puppet/http/service/ca.rb +76 -14
- data/lib/puppet/http/service/compiler.rb +249 -16
- data/lib/puppet/http/service/file_server.rb +141 -20
- data/lib/puppet/http/service/report.rb +47 -17
- data/lib/puppet/http/session.rb +96 -7
- data/lib/puppet/indirector.rb +1 -1
- data/lib/puppet/indirector/catalog/rest.rb +34 -0
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +3 -3
- data/lib/puppet/indirector/facts/rest.rb +42 -0
- data/lib/puppet/indirector/file_bucket_file/rest.rb +48 -0
- data/lib/puppet/indirector/file_content/http.rb +5 -0
- data/lib/puppet/indirector/file_content/rest.rb +30 -0
- data/lib/puppet/indirector/file_metadata/http.rb +28 -8
- data/lib/puppet/indirector/file_metadata/rest.rb +52 -0
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/node/rest.rb +24 -0
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/report/rest.rb +19 -0
- data/lib/puppet/indirector/report/yaml.rb +23 -0
- data/lib/puppet/indirector/request.rb +1 -1
- data/lib/puppet/indirector/rest.rb +12 -0
- data/lib/puppet/indirector/status/rest.rb +18 -0
- data/lib/puppet/loaders.rb +6 -0
- data/lib/puppet/metatype/manager.rb +80 -80
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/network/format_support.rb +2 -2
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
- data/lib/puppet/network/http/base_pool.rb +7 -2
- data/lib/puppet/network/http/compression.rb +7 -0
- data/lib/puppet/network/http/connection.rb +2 -0
- data/lib/puppet/network/http/connection_adapter.rb +184 -0
- data/lib/puppet/network/http/nocache_pool.rb +1 -0
- data/lib/puppet/network/http/pool.rb +8 -5
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/network/http_pool.rb +2 -1
- data/lib/puppet/node/environment.rb +22 -5
- data/lib/puppet/pal/catalog_compiler.rb +5 -0
- data/lib/puppet/pal/pal_impl.rb +30 -31
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast/leaf.rb +5 -5
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
- data/lib/puppet/parser/compiler.rb +43 -33
- 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 +4 -1
- data/lib/puppet/parser/functions.rb +18 -9
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/functions/filter.rb +1 -0
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/parser/type_loader.rb +2 -2
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
- data/lib/puppet/pops/issues.rb +5 -0
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
- data/lib/puppet/pops/loaders.rb +24 -15
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
- data/lib/puppet/pops/types/iterable.rb +34 -8
- 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/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/group/groupadd.rb +9 -4
- data/lib/puppet/provider/group/windows_adsi.rb +3 -3
- data/lib/puppet/provider/package/aix.rb +17 -2
- data/lib/puppet/provider/package/apt.rb +98 -1
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/dnfmodule.rb +61 -14
- data/lib/puppet/provider/package/gem.rb +45 -9
- data/lib/puppet/provider/package/pacman.rb +2 -5
- data/lib/puppet/provider/package/pip.rb +143 -48
- data/lib/puppet/provider/package/pip3.rb +0 -2
- 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 +2 -2
- data/lib/puppet/provider/package/puppet_gem.rb +11 -2
- data/lib/puppet/provider/package/rpm.rb +6 -213
- data/lib/puppet/provider/package/yum.rb +100 -20
- data/lib/puppet/provider/package/zypper.rb +62 -1
- data/lib/puppet/provider/service/systemd.rb +22 -4
- data/lib/puppet/provider/service/windows.rb +23 -7
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +16 -5
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reports/http.rb +15 -9
- data/lib/puppet/resource.rb +2 -1
- data/lib/puppet/resource/type.rb +8 -0
- data/lib/puppet/resource/type_collection.rb +20 -16
- data/lib/puppet/runtime.rb +31 -1
- data/lib/puppet/settings.rb +3 -1
- data/lib/puppet/settings/http_extra_headers_setting.rb +25 -0
- data/lib/puppet/ssl.rb +1 -0
- data/lib/puppet/ssl/host.rb +4 -4
- data/lib/puppet/ssl/oids.rb +1 -0
- data/lib/puppet/ssl/ssl_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +20 -1
- data/lib/puppet/ssl/state_machine.rb +81 -35
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/ssl/verifier_adapter.rb +9 -1
- data/lib/puppet/test/test_helper.rb +21 -14
- data/lib/puppet/transaction.rb +2 -2
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +3 -3
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +21 -8
- data/lib/puppet/type/file.rb +51 -13
- data/lib/puppet/type/file/checksum.rb +4 -4
- data/lib/puppet/type/file/source.rb +75 -64
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +41 -3
- data/lib/puppet/type/service.rb +59 -8
- data/lib/puppet/type/user.rb +19 -29
- data/lib/puppet/util.rb +41 -3
- data/lib/puppet/util/at_fork.rb +1 -1
- data/lib/puppet/util/autoload.rb +13 -25
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/instance_loader.rb +14 -10
- data/lib/puppet/util/log/destinations.rb +1 -10
- data/lib/puppet/util/package/version/debian.rb +175 -0
- data/lib/puppet/util/package/version/gem.rb +15 -0
- data/lib/puppet/util/package/version/pip.rb +167 -0
- data/lib/puppet/util/package/version/range.rb +53 -0
- data/lib/puppet/util/package/version/range/eq.rb +14 -0
- data/lib/puppet/util/package/version/range/gt.rb +14 -0
- data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/lt.rb +14 -0
- data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/min_max.rb +21 -0
- data/lib/puppet/util/package/version/range/simple.rb +11 -0
- data/lib/puppet/util/package/version/rpm.rb +73 -0
- data/lib/puppet/util/pidlock.rb +13 -7
- data/lib/puppet/util/platform.rb +5 -0
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/rpm_compare.rb +193 -0
- data/lib/puppet/util/windows.rb +1 -0
- data/lib/puppet/util/windows/adsi.rb +2 -2
- data/lib/puppet/util/windows/api_types.rb +60 -33
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/process.rb +15 -14
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/security.rb +5 -4
- data/lib/puppet/util/windows/service.rb +43 -26
- data/lib/puppet/util/windows/sid.rb +3 -3
- data/lib/puppet/util/windows/user.rb +242 -8
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +641 -511
- data/man/man5/puppet.conf.5 +75 -10
- data/man/man8/puppet-agent.8 +7 -7
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.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 +2 -2
- 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 +17 -2
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +6 -3
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +2 -2
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +4 -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-ssl.8 +2 -2
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -0
- data/spec/fixtures/ssl/unknown-ca-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-ca.pem +59 -0
- data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
- data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
- data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-installed.txt → dnf-module-list.txt} +8 -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/package/zypper/zypper-search-uninstalled.out +13 -0
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +1 -67
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +1 -69
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +1 -69
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +1 -67
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +1 -65
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +1 -67
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +1 -67
- data/spec/integration/application/agent_spec.rb +475 -0
- data/spec/integration/application/apply_spec.rb +279 -150
- data/spec/integration/application/config_spec.rb +74 -0
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +239 -0
- data/spec/integration/application/help_spec.rb +42 -0
- data/spec/integration/application/lookup_spec.rb +13 -0
- data/spec/integration/application/module_spec.rb +68 -0
- data/spec/integration/application/plugin_spec.rb +123 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +1 -2
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/http/client_spec.rb +47 -37
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/indirector/report/yaml.rb +83 -0
- data/spec/integration/network/http_pool_spec.rb +93 -20
- data/spec/integration/node/environment_spec.rb +15 -0
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +1 -1
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +6 -1
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
- data/spec/integration/util/windows/process_spec.rb +26 -32
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/integration/util/windows/user_spec.rb +47 -5
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet/test_ca.rb +2 -2
- data/spec/lib/puppet_spec/https.rb +16 -7
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +127 -0
- data/spec/shared_contexts/https.rb +29 -0
- data/spec/unit/agent_spec.rb +80 -26
- data/spec/unit/application/agent_spec.rb +12 -9
- data/spec/unit/application/describe_spec.rb +88 -50
- data/spec/unit/application/device_spec.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +6 -4
- data/spec/unit/application/facts_spec.rb +39 -10
- data/spec/unit/application/filebucket_spec.rb +22 -2
- data/spec/unit/application/man_spec.rb +52 -0
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +15 -2
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer/fact_handler_spec.rb +4 -4
- data/spec/unit/configurer/plugin_handler_spec.rb +36 -19
- data/spec/unit/configurer_spec.rb +64 -46
- data/spec/unit/confine_spec.rb +2 -1
- data/spec/unit/context/trusted_information_spec.rb +25 -2
- data/spec/unit/daemon_spec.rb +5 -64
- data/spec/unit/defaults_spec.rb +24 -1
- data/spec/unit/environments_spec.rb +8 -0
- data/spec/unit/face/config_spec.rb +3 -1
- data/spec/unit/face/module/search_spec.rb +17 -0
- data/spec/unit/face/plugin_spec.rb +12 -10
- data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
- 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_serving/terminus_selector_spec.rb +45 -26
- data/spec/unit/file_system/uniquefile_spec.rb +29 -0
- data/spec/unit/file_system_spec.rb +10 -0
- data/spec/unit/functions/lookup_spec.rb +13 -0
- data/spec/unit/http/client_spec.rb +321 -36
- data/spec/unit/http/external_client_spec.rb +201 -0
- data/spec/unit/http/resolver_spec.rb +34 -3
- data/spec/unit/http/response_spec.rb +75 -0
- data/spec/unit/http/service/ca_spec.rb +53 -12
- data/spec/unit/http/service/compiler_spec.rb +332 -28
- data/spec/unit/http/service/file_server_spec.rb +100 -12
- data/spec/unit/http/service/report_spec.rb +19 -9
- data/spec/unit/http/service_spec.rb +94 -6
- data/spec/unit/http/session_spec.rb +159 -8
- data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
- data/spec/unit/indirector/catalog/rest_spec.rb +59 -2
- data/spec/unit/indirector/facts/rest_spec.rb +79 -24
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -2
- data/spec/unit/indirector/file_content/rest_spec.rb +53 -2
- data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +110 -2
- data/spec/unit/indirector/node/rest_spec.rb +57 -2
- data/spec/unit/indirector/report/rest_spec.rb +58 -51
- data/spec/unit/indirector/request_spec.rb +1 -1
- data/spec/unit/indirector/resource/ral_spec.rb +7 -8
- data/spec/unit/indirector/rest_spec.rb +13 -0
- data/spec/unit/indirector/status/rest_spec.rb +43 -2
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/connection_spec.rb +552 -190
- data/spec/unit/network/http/nocache_pool_spec.rb +22 -0
- data/spec/unit/network/http/pool_spec.rb +59 -13
- data/spec/unit/network/http_pool_spec.rb +63 -57
- data/spec/unit/network/http_spec.rb +1 -1
- data/spec/unit/node/environment_spec.rb +33 -0
- data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/parser/scope_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
- data/spec/unit/provider/group/groupadd_spec.rb +22 -8
- 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 +107 -0
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +54 -15
- data/spec/unit/provider/package/gem_spec.rb +40 -0
- data/spec/unit/provider/package/pacman_spec.rb +6 -21
- data/spec/unit/provider/package/pip_spec.rb +68 -19
- data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
- data/spec/unit/provider/package/pkgng_spec.rb +38 -0
- data/spec/unit/provider/package/portage_spec.rb +5 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +12 -1
- data/spec/unit/provider/package/rpm_spec.rb +0 -212
- data/spec/unit/provider/package/yum_spec.rb +243 -1
- data/spec/unit/provider/package/zypper_spec.rb +98 -0
- data/spec/unit/provider/service/init_spec.rb +42 -0
- data/spec/unit/provider/service/openbsd_spec.rb +9 -0
- data/spec/unit/provider/service/openwrt_spec.rb +1 -0
- data/spec/unit/provider/service/redhat_spec.rb +9 -0
- data/spec/unit/provider/service/systemd_spec.rb +93 -18
- data/spec/unit/provider/service/windows_spec.rb +50 -14
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +30 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +85 -3
- data/spec/unit/puppet_pal_2pec.rb +11 -0
- data/spec/unit/puppet_pal_catalog_spec.rb +43 -0
- data/spec/unit/puppet_spec.rb +33 -0
- data/spec/unit/reports/http_spec.rb +70 -52
- data/spec/unit/reports/store_spec.rb +17 -13
- data/spec/unit/resource_spec.rb +3 -3
- data/spec/unit/settings/autosign_setting_spec.rb +1 -1
- data/spec/unit/settings/http_extra_headers_spec.rb +64 -0
- data/spec/unit/ssl/host_spec.rb +4 -2
- data/spec/unit/ssl/oids_spec.rb +1 -0
- data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
- data/spec/unit/ssl/state_machine_spec.rb +99 -13
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/transaction/persistence_spec.rb +15 -0
- data/spec/unit/transaction/report_spec.rb +5 -1
- data/spec/unit/transaction_spec.rb +0 -2
- data/spec/unit/type/file/ensure_spec.rb +1 -2
- data/spec/unit/type/file/source_spec.rb +89 -38
- data/spec/unit/type/file_spec.rb +122 -96
- data/spec/unit/type/service_spec.rb +218 -8
- data/spec/unit/type/user_spec.rb +32 -3
- data/spec/unit/type_spec.rb +50 -0
- data/spec/unit/util/at_fork_spec.rb +3 -2
- data/spec/unit/util/autoload_spec.rb +2 -1
- data/spec/unit/util/character_encoding_spec.rb +4 -4
- data/spec/unit/util/checksums_spec.rb +16 -0
- data/spec/unit/util/command_line_spec.rb +11 -6
- data/spec/unit/util/log/destinations_spec.rb +1 -29
- data/spec/unit/util/package/version/debian_spec.rb +83 -0
- data/spec/unit/util/package/version/pip_spec.rb +464 -0
- data/spec/unit/util/package/version/range_spec.rb +175 -0
- data/spec/unit/util/package/version/rpm_spec.rb +121 -0
- data/spec/unit/util/pidlock_spec.rb +102 -54
- data/spec/unit/util/rpm_compare_spec.rb +196 -0
- data/spec/unit/util/windows/adsi_spec.rb +4 -4
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/service_spec.rb +4 -4
- data/spec/unit/util/windows/sid_spec.rb +2 -2
- data/spec/unit/util_spec.rb +3 -3
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- data/tasks/generate_cert_fixtures.rake +15 -1
- data/tasks/manpages.rake +5 -35
- metadata +84 -52
- data/COMMITTERS.md +0 -244
- data/spec/integration/faces/config_spec.rb +0 -91
- data/spec/integration/faces/documentation_spec.rb +0 -57
- data/spec/integration/faces/plugin_spec.rb +0 -61
- data/spec/integration/file_bucket/file_spec.rb +0 -50
- data/spec/integration/file_serving/content_spec.rb +0 -7
- data/spec/integration/file_serving/fileset_spec.rb +0 -12
- data/spec/integration/file_serving/metadata_spec.rb +0 -8
- data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
- data/spec/integration/file_system/uniquefile_spec.rb +0 -26
- data/spec/integration/module_tool/forge_spec.rb +0 -64
- data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
- data/spec/integration/provider/service/init_spec.rb +0 -48
- data/spec/integration/provider/service/systemd_spec.rb +0 -25
- data/spec/integration/provider/service/windows_spec.rb +0 -50
- data/spec/integration/reference/providers_spec.rb +0 -21
- data/spec/integration/reports_spec.rb +0 -13
- data/spec/integration/ssl/certificate_request_spec.rb +0 -44
- data/spec/integration/ssl/host_spec.rb +0 -72
- data/spec/integration/ssl/key_spec.rb +0 -99
- data/spec/integration/test/test_helper_spec.rb +0 -31
- data/spec/shared_behaviours/file_serving_model.rb +0 -51
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/man_spec.rb +0 -31
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'puppet/util/package/version/gem'
|
2
|
+
require 'puppet/util/package/version/range'
|
1
3
|
require 'puppet/provider/package_targetable'
|
2
4
|
require 'uri'
|
3
5
|
|
@@ -15,7 +17,10 @@ Puppet::Type.type(:package).provide :gem, :parent => Puppet::Provider::Package::
|
|
15
17
|
These options should be specified as an array where each element is either a
|
16
18
|
string or a hash."
|
17
19
|
|
18
|
-
has_feature :versionable, :install_options, :uninstall_options, :targetable
|
20
|
+
has_feature :versionable, :install_options, :uninstall_options, :targetable, :version_ranges
|
21
|
+
|
22
|
+
GEM_VERSION = Puppet::Util::Package::Version::Gem
|
23
|
+
GEM_VERSION_RANGE = Puppet::Util::Package::Version::Range
|
19
24
|
|
20
25
|
# Override the specificity method to return 1 if gem is not set as default provider
|
21
26
|
def self.specificity
|
@@ -48,11 +53,13 @@ Puppet::Type.type(:package).provide :gem, :parent => Puppet::Provider::Package::
|
|
48
53
|
#
|
49
54
|
# In this case, causing the puppet_gem provider to inherit the parent gem provider's convenience gemcmd() methods, with the wrong path.
|
50
55
|
|
51
|
-
def self.execute_gem_command(command, command_options)
|
56
|
+
def self.execute_gem_command(command, command_options, custom_environment = {})
|
52
57
|
validate_command(command)
|
53
58
|
cmd = [command] << command_options
|
54
59
|
|
55
|
-
|
60
|
+
custom_environment = {'HOME'=>Puppet::Util.get_env('HOME')}.merge(custom_environment)
|
61
|
+
|
62
|
+
execute(cmd, {:failonfail => true, :combine => true, :custom_environment => custom_environment})
|
56
63
|
end
|
57
64
|
|
58
65
|
def self.instances(target_command = nil)
|
@@ -125,16 +132,35 @@ Puppet::Type.type(:package).provide :gem, :parent => Puppet::Provider::Package::
|
|
125
132
|
|
126
133
|
def insync?(is)
|
127
134
|
return false unless is && is != :absent
|
135
|
+
is = [is] unless is.is_a? Array
|
136
|
+
should = @resource[:ensure]
|
137
|
+
|
138
|
+
unless should =~ Regexp.union(/,/, Gem::Requirement::PATTERN)
|
139
|
+
begin
|
140
|
+
should_range = GEM_VERSION_RANGE.parse(should, GEM_VERSION)
|
141
|
+
rescue GEM_VERSION_RANGE::ValidationFailure, GEM_VERSION::ValidationFailure
|
142
|
+
Puppet.debug("Cannot parse #{should} as a ruby gem version range")
|
143
|
+
return false
|
144
|
+
end
|
128
145
|
|
146
|
+
return is.any? do |version|
|
147
|
+
begin
|
148
|
+
should_range.include?(GEM_VERSION.parse(version))
|
149
|
+
rescue GEM_VERSION::ValidationFailure
|
150
|
+
Puppet.debug("Cannot parse #{version} as a ruby gem version")
|
151
|
+
false
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
129
156
|
begin
|
130
|
-
|
157
|
+
# Range intersections are not supported by Gem::Requirement, so just split by comma.
|
158
|
+
dependency = Gem::Dependency.new('', should.split(','))
|
131
159
|
rescue ArgumentError
|
132
160
|
# Bad requirements will cause an error during gem command invocation, so just return not in sync
|
133
161
|
return false
|
134
162
|
end
|
135
163
|
|
136
|
-
is = [is] unless is.is_a? Array
|
137
|
-
|
138
164
|
# Check if any version matches the dependency
|
139
165
|
is.any? { |version| dependency.match?('', version) }
|
140
166
|
end
|
@@ -148,12 +174,22 @@ Puppet::Type.type(:package).provide :gem, :parent => Puppet::Provider::Package::
|
|
148
174
|
command = resource_or_provider_command
|
149
175
|
command_options = ["install"]
|
150
176
|
command_options += install_options if resource[:install_options]
|
177
|
+
should = resource[:ensure]
|
178
|
+
|
179
|
+
unless should =~ Regexp.union(/,/, Gem::Requirement::PATTERN)
|
180
|
+
begin
|
181
|
+
should_range = GEM_VERSION_RANGE.parse(should, GEM_VERSION)
|
182
|
+
should = should_range.to_gem_version
|
183
|
+
useversion = true
|
184
|
+
rescue GEM_VERSION_RANGE::ValidationFailure, GEM_VERSION::ValidationFailure
|
185
|
+
Puppet.debug("Cannot parse #{should} as a ruby gem version range. Falling through.")
|
186
|
+
end
|
187
|
+
end
|
151
188
|
|
152
189
|
if Puppet::Util::Platform.windows?
|
153
|
-
|
154
|
-
command_options << "-v" << %Q["#{version}"] if (! resource[:ensure].is_a? Symbol) and useversion
|
190
|
+
command_options << "-v" << %Q["#{should}"] if useversion && !should.is_a?(Symbol)
|
155
191
|
else
|
156
|
-
command_options << "-v" <<
|
192
|
+
command_options << "-v" << should if useversion && !should.is_a?(Symbol)
|
157
193
|
end
|
158
194
|
|
159
195
|
if Puppet::Util::Package.versioncmp(rubygem_version(command), '2.0.0') == -1
|
@@ -132,9 +132,6 @@ Puppet::Type.type(:package).provide :pacman, :parent => Puppet::Provider::Packag
|
|
132
132
|
|
133
133
|
# We rescue the main check from Pacman with a check on the AUR using yaourt, if installed
|
134
134
|
def latest
|
135
|
-
# Synchronize the database
|
136
|
-
pacman "-Sy"
|
137
|
-
|
138
135
|
resource_name = @resource[:name]
|
139
136
|
|
140
137
|
# If target is a group, construct the group version
|
@@ -243,7 +240,7 @@ Puppet::Type.type(:package).provide :pacman, :parent => Puppet::Provider::Packag
|
|
243
240
|
else
|
244
241
|
fail _("Source %{source} is not supported by pacman") % { source: source }
|
245
242
|
end
|
246
|
-
pacman "--noconfirm", "--noprogressbar", "-
|
243
|
+
pacman "--noconfirm", "--noprogressbar", "-S"
|
247
244
|
pacman "--noconfirm", "--noprogressbar", "-U", source
|
248
245
|
end
|
249
246
|
|
@@ -255,7 +252,7 @@ Puppet::Type.type(:package).provide :pacman, :parent => Puppet::Provider::Packag
|
|
255
252
|
|
256
253
|
cmd = %w{--noconfirm --needed --noprogressbar}
|
257
254
|
cmd += install_options if @resource[:install_options]
|
258
|
-
cmd << "-
|
255
|
+
cmd << "-S" << resource_name
|
259
256
|
|
260
257
|
if self.class.yaourt?
|
261
258
|
yaourt(*cmd)
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# Puppet package provider for Python's `pip` package management frontend.
|
2
2
|
# <http://pip.pypa.io/>
|
3
3
|
|
4
|
+
require 'puppet/util/package/version/pip'
|
5
|
+
require 'puppet/util/package/version/range'
|
4
6
|
require 'puppet/provider/package_targetable'
|
5
7
|
require 'puppet/util/http_proxy'
|
6
8
|
|
@@ -11,7 +13,10 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
|
|
11
13
|
This provider supports the `install_options` attribute, which allows command-line flags to be passed to pip.
|
12
14
|
These options should be specified as an array where each element is either a string or a hash."
|
13
15
|
|
14
|
-
has_feature :installable, :uninstallable, :upgradeable, :versionable, :install_options, :targetable
|
16
|
+
has_feature :installable, :uninstallable, :upgradeable, :versionable, :version_ranges, :install_options, :targetable
|
17
|
+
|
18
|
+
PIP_VERSION = Puppet::Util::Package::Version::Pip
|
19
|
+
PIP_VERSION_RANGE = Puppet::Util::Package::Version::Range
|
15
20
|
|
16
21
|
# Override the specificity method to return 1 if pip is not set as default provider
|
17
22
|
def self.specificity
|
@@ -25,7 +30,6 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
|
|
25
30
|
|
26
31
|
# Define the default provider package command name when the provider is targetable.
|
27
32
|
# Required by Puppet::Provider::Package::Targetable::resource_or_provider_command
|
28
|
-
|
29
33
|
def self.provider_command
|
30
34
|
# Ensure pip can upgrade pip, which usually puts pip into a new path /usr/local/bin/pip (compared to /usr/bin/pip)
|
31
35
|
self.cmd.map { |c| which(c) }.find { |c| c != nil }
|
@@ -58,7 +62,6 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
|
|
58
62
|
|
59
63
|
# Return an array of structured information about every installed package
|
60
64
|
# that's managed by `pip` or an empty array if `pip` is not available.
|
61
|
-
|
62
65
|
def self.instances(target_command = nil)
|
63
66
|
if target_command
|
64
67
|
command = target_command
|
@@ -72,11 +75,11 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
|
|
72
75
|
|
73
76
|
command_options = ['freeze']
|
74
77
|
command_version = self.pip_version(command)
|
75
|
-
if
|
78
|
+
if compare_pip_versions(command_version, '8.1.0') >= 0
|
76
79
|
command_options << '--all'
|
77
80
|
end
|
78
81
|
|
79
|
-
execpipe [command, command_options] do |process|
|
82
|
+
execpipe [quote(command), command_options] do |process|
|
80
83
|
process.collect do |line|
|
81
84
|
pkg = parse(line)
|
82
85
|
next unless pkg
|
@@ -88,7 +91,7 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
|
|
88
91
|
# Pip can also upgrade pip, but it's not listed in freeze so need to special case it
|
89
92
|
# Pip list would also show pip installed version, but "pip list" doesn't exist for older versions of pip (E.G v1.0)
|
90
93
|
# Not needed when "pip freeze --all" is available.
|
91
|
-
if
|
94
|
+
if compare_pip_versions(command_version, '8.1.0') == -1
|
92
95
|
packages << new({:ensure => command_version, :name => File.basename(command), :provider => name, :command => command})
|
93
96
|
end
|
94
97
|
|
@@ -105,7 +108,6 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
|
|
105
108
|
|
106
109
|
# Return structured information about a particular package or `nil`
|
107
110
|
# if the package is not installed or `pip` itself is not available.
|
108
|
-
|
109
111
|
def query
|
110
112
|
command = resource_or_provider_command
|
111
113
|
self.class.validate_command(command)
|
@@ -116,99 +118,171 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
|
|
116
118
|
return nil
|
117
119
|
end
|
118
120
|
|
119
|
-
#
|
120
|
-
# honoring local pip config such as custom repositories.
|
121
|
-
|
121
|
+
# Return latest version available for current package
|
122
122
|
def latest
|
123
123
|
command = resource_or_provider_command
|
124
124
|
self.class.validate_command(command)
|
125
125
|
|
126
126
|
command_version = self.class.pip_version(command)
|
127
|
-
if
|
128
|
-
|
127
|
+
if self.class.compare_pip_versions(command_version, '1.5.4') == -1
|
128
|
+
available_versions_with_old_pip.last
|
129
129
|
else
|
130
|
-
|
130
|
+
available_versions_with_new_pip.last
|
131
131
|
end
|
132
132
|
end
|
133
133
|
|
134
|
-
|
134
|
+
def self.compare_pip_versions(x, y)
|
135
|
+
begin
|
136
|
+
Puppet::Util::Package::Version::Pip.compare(x, y)
|
137
|
+
rescue PIP_VERSION::ValidationFailure => ex
|
138
|
+
Puppet.debug("Cannot compare #{x} and #{y}. #{ex.message} Falling through default comparison mechanism.")
|
139
|
+
Puppet::Util::Package.versioncmp(x, y)
|
140
|
+
end
|
141
|
+
end
|
135
142
|
|
136
|
-
|
143
|
+
# Use pip CLI to look up versions from PyPI repositories,
|
144
|
+
# honoring local pip config such as custom repositories.
|
145
|
+
def available_versions
|
137
146
|
command = resource_or_provider_command
|
138
147
|
self.class.validate_command(command)
|
139
148
|
|
140
|
-
|
149
|
+
command_version = self.class.pip_version(command)
|
150
|
+
if self.class.compare_pip_versions(command_version, '1.5.4') == -1
|
151
|
+
available_versions_with_old_pip
|
152
|
+
else
|
153
|
+
available_versions_with_new_pip
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
def available_versions_with_new_pip
|
158
|
+
command = resource_or_provider_command
|
159
|
+
self.class.validate_command(command)
|
160
|
+
|
161
|
+
command_and_options = [self.class.quote(command), 'install', "#{@resource[:name]}==versionplease"]
|
141
162
|
command_and_options << install_options if @resource[:install_options]
|
142
163
|
execpipe command_and_options do |process|
|
143
164
|
process.collect do |line|
|
144
165
|
# PIP OUTPUT: Could not find a version that satisfies the requirement example==versionplease (from versions: 1.2.3, 4.5.6)
|
145
|
-
if line =~ /from versions: /
|
146
|
-
|
147
|
-
|
148
|
-
Puppet::Util::Package.versioncmp(x, y)
|
166
|
+
if line =~ /from versions: (.+)\)/
|
167
|
+
versionList = $1.split(', ').sort do |x,y|
|
168
|
+
self.class.compare_pip_versions(x, y)
|
149
169
|
end
|
150
|
-
return versionList
|
170
|
+
return versionList
|
151
171
|
end
|
152
172
|
end
|
153
|
-
return nil
|
154
173
|
end
|
174
|
+
[]
|
155
175
|
end
|
156
176
|
|
157
|
-
|
158
|
-
|
159
|
-
def latest_with_old_pip
|
177
|
+
def available_versions_with_old_pip
|
160
178
|
command = resource_or_provider_command
|
161
179
|
self.class.validate_command(command)
|
162
180
|
|
163
181
|
Dir.mktmpdir("puppet_pip") do |dir|
|
164
|
-
command_and_options = [command, 'install', "#{@resource[:name]}", '-d', "#{dir}", '-v']
|
182
|
+
command_and_options = [self.class.quote(command), 'install', "#{@resource[:name]}", '-d', "#{dir}", '-v']
|
165
183
|
command_and_options << install_options if @resource[:install_options]
|
166
184
|
execpipe command_and_options do |process|
|
167
185
|
process.collect do |line|
|
168
186
|
# PIP OUTPUT: Using version 0.10.1 (newest of versions: 1.2.3, 4.5.6)
|
169
|
-
if line =~ /Using version
|
170
|
-
|
187
|
+
if line =~ /Using version .+? \(newest of versions: (.+?)\)/
|
188
|
+
versionList = $1.split(', ').sort do |x,y|
|
189
|
+
self.class.compare_pip_versions(x, y)
|
190
|
+
end
|
191
|
+
return versionList
|
171
192
|
end
|
172
193
|
end
|
173
|
-
return nil
|
174
194
|
end
|
195
|
+
return []
|
175
196
|
end
|
176
197
|
end
|
177
198
|
|
178
|
-
#
|
179
|
-
|
180
|
-
|
181
|
-
|
199
|
+
# Finds the most suitable version available in a given range
|
200
|
+
def best_version(should_range)
|
201
|
+
included_available_versions = []
|
202
|
+
available_versions.each do |version|
|
203
|
+
version = PIP_VERSION.parse(version)
|
204
|
+
included_available_versions.push(version) if should_range.include?(version)
|
205
|
+
end
|
182
206
|
|
183
|
-
|
184
|
-
|
185
|
-
|
207
|
+
included_available_versions.sort!
|
208
|
+
return included_available_versions.last unless included_available_versions.empty?
|
209
|
+
|
210
|
+
Puppet.debug("No available version for package #{@resource[:name]} is included in range #{should_range}")
|
211
|
+
should_range
|
212
|
+
end
|
186
213
|
|
214
|
+
def get_install_command_options()
|
215
|
+
should = @resource[:ensure]
|
187
216
|
command_options = %w{install -q}
|
188
|
-
command_options +=
|
217
|
+
command_options += install_options if @resource[:install_options]
|
218
|
+
|
189
219
|
if @resource[:source]
|
190
|
-
if String ===
|
191
|
-
command_options << "#{@resource[:source]}@#{
|
220
|
+
if String === should
|
221
|
+
command_options << "#{@resource[:source]}@#{should}#egg=#{@resource[:name]}"
|
192
222
|
else
|
193
223
|
command_options << "#{@resource[:source]}#egg=#{@resource[:name]}"
|
194
224
|
end
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
225
|
+
|
226
|
+
return command_options
|
227
|
+
end
|
228
|
+
|
229
|
+
if should == :latest
|
230
|
+
command_options << "--upgrade" << @resource[:name]
|
231
|
+
|
232
|
+
return command_options
|
233
|
+
end
|
234
|
+
|
235
|
+
unless String === should
|
236
|
+
command_options << @resource[:name]
|
237
|
+
|
238
|
+
return command_options
|
239
|
+
end
|
240
|
+
|
241
|
+
begin
|
242
|
+
should_range = PIP_VERSION_RANGE.parse(should, PIP_VERSION)
|
243
|
+
rescue PIP_VERSION_RANGE::ValidationFailure, PIP_VERSION::ValidationFailure
|
244
|
+
Puppet.debug("Cannot parse #{should} as a pip version range, falling through.")
|
245
|
+
command_options << "#{@resource[:name]}==#{should}"
|
246
|
+
|
247
|
+
return command_options
|
248
|
+
end
|
249
|
+
|
250
|
+
if should_range.is_a?(PIP_VERSION_RANGE::Eq)
|
251
|
+
command_options << "#{@resource[:name]}==#{should}"
|
252
|
+
|
253
|
+
return command_options
|
254
|
+
end
|
255
|
+
|
256
|
+
should = best_version(should_range)
|
257
|
+
|
258
|
+
if should == should_range
|
259
|
+
# when no suitable version for the given range was found, let pip handle
|
260
|
+
if should.is_a?(PIP_VERSION_RANGE::MinMax)
|
261
|
+
command_options << "#{@resource[:name]} #{should.split.join(',')}"
|
201
262
|
else
|
202
|
-
command_options << @resource[:name]
|
263
|
+
command_options << "#{@resource[:name]} #{should}"
|
203
264
|
end
|
265
|
+
else
|
266
|
+
command_options << "#{@resource[:name]}==#{should}"
|
204
267
|
end
|
205
268
|
|
269
|
+
command_options
|
270
|
+
end
|
271
|
+
|
272
|
+
# Install a package. The ensure parameter may specify installed,
|
273
|
+
# latest, a version number, or, in conjunction with the source
|
274
|
+
# parameter, an SCM revision. In that case, the source parameter
|
275
|
+
# gives the fully-qualified URL to the repository.
|
276
|
+
def install
|
277
|
+
command = resource_or_provider_command
|
278
|
+
self.class.validate_command(command)
|
279
|
+
|
280
|
+
command_options = get_install_command_options
|
206
281
|
execute([command, command_options])
|
207
282
|
end
|
208
283
|
|
209
284
|
# Uninstall a package. Uninstall won't work reliably on Debian/Ubuntu unless this issue gets fixed.
|
210
285
|
# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=562544
|
211
|
-
|
212
286
|
def uninstall
|
213
287
|
command = resource_or_provider_command
|
214
288
|
self.class.validate_command(command)
|
@@ -226,6 +300,28 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
|
|
226
300
|
join_options(@resource[:install_options])
|
227
301
|
end
|
228
302
|
|
303
|
+
def insync?(is)
|
304
|
+
return false unless is && is != :absent
|
305
|
+
begin
|
306
|
+
should = @resource[:ensure]
|
307
|
+
should_range = PIP_VERSION_RANGE.parse(should, PIP_VERSION)
|
308
|
+
rescue PIP_VERSION_RANGE::ValidationFailure, PIP_VERSION::ValidationFailure
|
309
|
+
Puppet.debug("Cannot parse #{should} as a pip version range")
|
310
|
+
return false
|
311
|
+
end
|
312
|
+
|
313
|
+
begin
|
314
|
+
is_version = PIP_VERSION.parse(is)
|
315
|
+
rescue PIP_VERSION::ValidationFailure
|
316
|
+
Puppet.debug("Cannot parse #{is} as a pip version")
|
317
|
+
return false
|
318
|
+
end
|
319
|
+
|
320
|
+
should_range.include?(is_version)
|
321
|
+
end
|
322
|
+
|
323
|
+
# Quoting is required if the path to the pip command contains spaces.
|
324
|
+
# Required for execpipe() but not execute(), as execute() already does this.
|
229
325
|
def self.quote(path)
|
230
326
|
if path.include?(" ")
|
231
327
|
"\"#{path}\""
|
@@ -233,5 +329,4 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
|
|
233
329
|
path
|
234
330
|
end
|
235
331
|
end
|
236
|
-
private_class_method :quote
|
237
332
|
end
|
@@ -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|
|