puppet 4.3.2 → 4.4.0
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/COMMITTERS.md +2 -2
- data/CONTRIBUTING.md +6 -6
- data/LICENSE +1 -1
- data/README.md +8 -9
- data/conf/auth.conf +2 -2
- data/ext/README.environment +1 -1
- data/ext/debian/README.source +1 -1
- data/ext/debian/control +1 -1
- data/ext/debian/copyright +4 -4
- data/ext/debian/puppetmaster.README.debian +11 -9
- data/ext/emacs/puppet-mode.el +1 -1
- data/ext/envpuppet +2 -2
- data/ext/ips/puppetagent.xml +1 -1
- data/ext/ips/puppetmaster.xml +1 -1
- data/ext/project_data.yaml +8 -0
- data/ext/puppet-test +3 -3
- data/ext/rack/example-passenger-vhost.conf +1 -1
- data/ext/redhat/puppet.spec.erb +2 -2
- data/ext/regexp_nodes/regexp_nodes.rb +1 -1
- data/ext/solaris/pkginfo +1 -1
- data/ext/solaris/smf/puppet.xml +1 -1
- data/ext/suse/puppet.spec +2 -2
- data/ext/upload_facts.rb +1 -1
- data/ext/windows/puppet_interactive.bat +6 -0
- data/ext/windows/puppet_shell.bat +9 -0
- data/ext/windows/run_puppet_interactive.bat +9 -0
- data/ext/yaml_nodes.rb +1 -1
- data/install.rb +30 -20
- data/lib/puppet/agent.rb +1 -1
- data/lib/puppet/application/agent.rb +4 -2
- data/lib/puppet/application/apply.rb +7 -4
- data/lib/puppet/application/cert.rb +1 -1
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/inspect.rb +1 -1
- data/lib/puppet/application/lookup.rb +4 -4
- data/lib/puppet/application/master.rb +2 -2
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/configurer.rb +100 -22
- data/lib/puppet/data_providers/hiera_config.rb +28 -3
- data/lib/puppet/data_providers/hiera_interpolate.rb +30 -15
- data/lib/puppet/data_providers/hiera_support.rb +1 -1
- data/lib/puppet/data_providers/json_data_provider_factory.rb +2 -2
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -2
- data/lib/puppet/defaults.rb +65 -19
- data/lib/puppet/environments.rb +3 -1
- data/lib/puppet/face/config.rb +1 -1
- data/lib/puppet/face/epp.rb +1 -1
- data/lib/puppet/face/help/man.erb +1 -1
- data/lib/puppet/face/module/install.rb +6 -6
- data/lib/puppet/face/parser.rb +12 -9
- data/lib/puppet/face/status.rb +2 -1
- data/lib/puppet/feature/cfpropertylist.rb +3 -0
- data/lib/puppet/feature/telnet.rb +9 -0
- data/lib/puppet/file_serving/http_metadata.rb +46 -0
- data/lib/puppet/file_serving/metadata.rb +18 -2
- data/lib/puppet/file_serving/terminus_selector.rb +2 -0
- data/lib/puppet/file_system.rb +2 -2
- data/lib/puppet/file_system/file_impl.rb +2 -2
- data/lib/puppet/file_system/memory_impl.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +1 -1
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/repository.rb +1 -31
- data/lib/puppet/functions.rb +45 -6
- data/lib/puppet/functions/assert_type.rb +9 -9
- data/lib/puppet/functions/each.rb +5 -13
- data/lib/puppet/functions/filter.rb +5 -14
- data/lib/puppet/functions/map.rb +6 -14
- data/lib/puppet/functions/reduce.rb +5 -13
- data/lib/puppet/functions/reverse_each.rb +82 -0
- data/lib/puppet/functions/scanf.rb +15 -18
- data/lib/puppet/functions/slice.rb +22 -36
- data/lib/puppet/functions/split.rb +2 -2
- data/lib/puppet/functions/step.rb +88 -0
- data/lib/puppet/functions/type.rb +70 -0
- data/lib/puppet/graph/rb_tree_map.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +188 -5
- data/lib/puppet/indirector/file_content/http.rb +15 -0
- data/lib/puppet/indirector/file_metadata/http.rb +27 -0
- data/lib/puppet/indirector/generic_http.rb +16 -0
- data/lib/puppet/indirector/node/exec.rb +1 -1
- data/lib/puppet/indirector/node/ldap.rb +1 -1
- data/lib/puppet/indirector/rest.rb +2 -1
- data/lib/puppet/info_service/class_information_service.rb +13 -12
- data/lib/puppet/loaders.rb +1 -0
- data/lib/puppet/module.rb +3 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +9 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +2 -2
- data/lib/puppet/module_tool/tar/mini.rb +3 -3
- data/lib/puppet/network/http/pool.rb +9 -0
- data/lib/puppet/node.rb +1 -1
- data/lib/puppet/node/environment.rb +11 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
- data/lib/puppet/parser/compiler.rb +3 -3
- data/lib/puppet/parser/environment_compiler.rb +0 -1
- data/lib/puppet/parser/functions.rb +28 -16
- data/lib/puppet/parser/functions/fqdn_rand.rb +1 -1
- data/lib/puppet/parser/functions/inline_template.rb +1 -1
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/scanf.rb +15 -26
- data/lib/puppet/parser/functions/slice.rb +17 -24
- data/lib/puppet/parser/functions/split.rb +1 -1
- data/lib/puppet/parser/resource.rb +19 -17
- data/lib/puppet/parser/scope.rb +176 -5
- data/lib/puppet/plugins/data_providers/data_provider.rb +54 -13
- data/lib/puppet/pops.rb +0 -8
- data/lib/puppet/pops/adaptable.rb +4 -1
- data/lib/puppet/pops/adapters.rb +38 -13
- data/lib/puppet/pops/binder/binder.rb +21 -17
- data/lib/puppet/pops/binder/binder_issues.rb +8 -6
- data/lib/puppet/pops/binder/bindings_checker.rb +12 -8
- data/lib/puppet/pops/binder/bindings_composer.rb +16 -12
- data/lib/puppet/pops/binder/bindings_factory.rb +108 -104
- data/lib/puppet/pops/binder/bindings_model.rb +49 -47
- data/lib/puppet/pops/binder/config/diagnostic_producer.rb +10 -6
- data/lib/puppet/pops/binder/injector.rb +53 -48
- data/lib/puppet/pops/binder/key_factory.rb +10 -6
- data/lib/puppet/pops/binder/producers.rb +67 -62
- data/lib/puppet/pops/evaluator/access_operator.rb +95 -93
- data/lib/puppet/pops/evaluator/closure.rb +84 -68
- data/lib/puppet/pops/evaluator/collector_transformer.rb +18 -14
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +0 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +13 -9
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +9 -8
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +78 -76
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +85 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +13 -11
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +5 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +41 -45
- data/lib/puppet/pops/issue_reporter.rb +6 -4
- data/lib/puppet/pops/issues.rb +34 -11
- data/lib/puppet/pops/loader/base_loader.rb +1 -1
- data/lib/puppet/pops/loader/loader.rb +1 -1
- data/lib/puppet/pops/loader/loader_paths.rb +15 -0
- data/lib/puppet/pops/loader/module_loaders.rb +17 -13
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +16 -12
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +16 -3
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +55 -0
- data/lib/puppet/pops/loaders.rb +51 -9
- data/lib/puppet/pops/lookup.rb +14 -12
- data/lib/puppet/pops/merge_strategy.rb +16 -19
- data/lib/puppet/pops/model/factory.rb +26 -2
- data/lib/puppet/pops/model/model.rb +8 -8
- data/lib/puppet/pops/model/model_label_provider.rb +13 -7
- data/lib/puppet/pops/model/model_meta.rb +17 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +8 -0
- data/lib/puppet/pops/parser/egrammar.ra +38 -14
- data/lib/puppet/pops/parser/eparser.rb +1353 -1276
- data/lib/puppet/pops/parser/epp_support.rb +11 -7
- data/lib/puppet/pops/parser/evaluating_parser.rb +14 -10
- data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
- data/lib/puppet/pops/parser/lexer2.rb +26 -19
- data/lib/puppet/pops/parser/lexer_support.rb +85 -7
- data/lib/puppet/pops/parser/locator.rb +21 -0
- data/lib/puppet/pops/parser/parser_support.rb +19 -16
- data/lib/puppet/pops/parser/slurp_support.rb +11 -7
- data/lib/puppet/pops/types/class_loader.rb +23 -19
- data/lib/puppet/pops/types/enumeration.rb +9 -26
- data/lib/puppet/pops/types/iterable.rb +308 -0
- data/lib/puppet/pops/types/recursion_guard.rb +82 -0
- data/lib/puppet/pops/types/type_acceptor.rb +25 -0
- data/lib/puppet/pops/types/type_asserter.rb +10 -9
- data/lib/puppet/pops/types/type_calculator.rb +138 -381
- data/lib/puppet/pops/types/type_factory.rb +91 -57
- data/lib/puppet/pops/types/type_formatter.rb +334 -0
- data/lib/puppet/pops/types/type_mismatch_describer.rb +226 -59
- data/lib/puppet/pops/types/type_parser.rb +159 -112
- data/lib/puppet/pops/types/types.rb +2057 -1247
- data/lib/puppet/pops/utils.rb +11 -10
- data/lib/puppet/pops/validation.rb +11 -9
- data/lib/puppet/pops/validation/checker4_0.rb +83 -55
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
- data/lib/puppet/provider/aixobject.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/windows.rb +1 -1
- data/lib/puppet/provider/macauthorization/macauthorization.rb +10 -9
- data/lib/puppet/provider/nameservice/directoryservice.rb +35 -50
- data/lib/puppet/provider/package/appdmg.rb +3 -2
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +5 -8
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +3 -2
- data/lib/puppet/provider/package/pkgng.rb +13 -4
- data/lib/puppet/provider/package/windows.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/package/zypper.rb +19 -0
- data/lib/puppet/provider/service/debian.rb +2 -2
- data/lib/puppet/provider/service/launchd.rb +6 -18
- data/lib/puppet/provider/service/systemd.rb +9 -2
- data/lib/puppet/provider/sshkey/parsed.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/directoryservice.rb +33 -58
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/provider/zpool/zpool.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/resource.rb +15 -12
- data/lib/puppet/resource/capability_finder.rb +20 -13
- data/lib/puppet/resource/catalog.rb +60 -3
- data/lib/puppet/resource/status.rb +11 -2
- data/lib/puppet/resource/type.rb +28 -38
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +13 -5
- data/lib/puppet/ssl/certificate_factory.rb +3 -3
- data/lib/puppet/ssl/certificate_request.rb +4 -4
- data/lib/puppet/ssl/certificate_signer.rb +1 -1
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/test/test_helper.rb +16 -4
- data/lib/puppet/transaction.rb +15 -2
- data/lib/puppet/transaction/additional_resource_generator.rb +6 -2
- data/lib/puppet/transaction/report.rb +31 -1
- data/lib/puppet/transaction/resource_harness.rb +0 -25
- data/lib/puppet/type.rb +11 -11
- data/lib/puppet/type/augeas.rb +1 -1
- data/lib/puppet/type/cron.rb +12 -12
- data/lib/puppet/type/file.rb +91 -39
- data/lib/puppet/type/file/checksum_value.rb +53 -0
- data/lib/puppet/type/file/content.rb +26 -111
- data/lib/puppet/type/file/data_sync.rb +84 -0
- data/lib/puppet/type/file/ensure.rb +17 -14
- data/lib/puppet/type/file/selcontext.rb +1 -1
- data/lib/puppet/type/file/source.rb +103 -18
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/interface.rb +8 -3
- data/lib/puppet/type/macauthorization.rb +1 -1
- data/lib/puppet/type/package.rb +6 -0
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/stage.rb +1 -1
- data/lib/puppet/type/user.rb +19 -17
- data/lib/puppet/type/yumrepo.rb +20 -0
- data/lib/puppet/util.rb +109 -22
- data/lib/puppet/util/autoload.rb +16 -11
- data/lib/puppet/util/checksums.rb +74 -31
- data/lib/puppet/util/execution.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +72 -0
- data/lib/puppet/util/log.rb +2 -0
- data/lib/puppet/util/logging.rb +43 -1
- data/lib/puppet/util/monkey_patches.rb +2 -2
- data/lib/puppet/util/multi_match.rb +51 -0
- data/lib/puppet/util/network_device/cisco/device.rb +10 -2
- data/lib/puppet/util/network_device/cisco/interface.rb +21 -8
- data/lib/puppet/util/network_device/transport/ssh.rb +7 -3
- data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
- data/lib/puppet/util/plist.rb +130 -0
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/run_mode.rb +2 -2
- data/lib/puppet/util/skip_tags.rb +9 -0
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/access_control_list.rb +3 -3
- data/lib/puppet/util/windows/adsi.rb +4 -4
- data/lib/puppet/util/windows/api_types.rb +24 -18
- data/lib/puppet/util/windows/com.rb +3 -3
- data/lib/puppet/util/windows/error.rb +1 -1
- data/lib/puppet/util/windows/file.rb +8 -8
- data/lib/puppet/util/windows/principal.rb +23 -14
- data/lib/puppet/util/windows/process.rb +78 -11
- data/lib/puppet/util/windows/registry.rb +1 -1
- data/lib/puppet/util/windows/root_certs.rb +5 -5
- data/lib/puppet/util/windows/security.rb +33 -35
- data/lib/puppet/util/windows/security_descriptor.rb +1 -1
- data/lib/puppet/util/windows/sid.rb +42 -4
- data/lib/puppet/util/windows/taskscheduler.rb +15 -15
- data/lib/puppet/util/windows/user.rb +10 -10
- data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
- data/lib/puppet/vendor/pathspec/LICENSE +2 -2
- data/lib/puppet/vendor/pathspec/README.md +1 -1
- data/lib/puppet/vendor/rgen/README.rdoc +1 -1
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +14 -0
- data/lib/puppet/version.rb +1 -1
- data/lib/semver.rb +17 -1
- data/man/man5/puppet.conf.5 +12 -12
- data/man/man8/extlookup2hiera.8 +1 -1
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-ca.8 +2 -2
- data/man/man8/puppet-catalog.8 +2 -2
- data/man/man8/puppet-cert.8 +2 -2
- data/man/man8/puppet-certificate.8 +2 -2
- data/man/man8/puppet-certificate_request.8 +2 -2
- data/man/man8/puppet-certificate_revocation_list.8 +2 -2
- data/man/man8/puppet-config.8 +3 -3
- 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 +2 -2
- data/man/man8/puppet-facts.8 +2 -2
- data/man/man8/puppet-file.8 +2 -2
- data/man/man8/puppet-filebucket.8 +2 -2
- data/man/man8/puppet-help.8 +2 -2
- data/man/man8/puppet-inspect.8 +2 -2
- data/man/man8/puppet-key.8 +2 -2
- data/man/man8/puppet-man.8 +2 -2
- data/man/man8/puppet-master.8 +2 -2
- data/man/man8/puppet-module.8 +9 -9
- data/man/man8/puppet-node.8 +2 -2
- data/man/man8/puppet-parser.8 +2 -2
- data/man/man8/puppet-plugin.8 +2 -2
- data/man/man8/puppet-report.8 +2 -2
- data/man/man8/puppet-resource.8 +2 -2
- data/man/man8/puppet-resource_type.8 +2 -2
- data/man/man8/puppet-status.8 +3 -3
- data/man/man8/puppet.8 +1 -1
- data/spec/fixtures/module.tar.gz +0 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -1
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +2 -1
- data/spec/fixtures/unit/module/trailing-comma.json +1 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +3 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
- data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +205 -0
- 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 +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +205 -0
- data/spec/integration/defaults_spec.rb +14 -2
- data/spec/integration/file_system/uniquefile_spec.rb +29 -0
- data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
- data/spec/integration/node/environment_spec.rb +13 -0
- data/spec/integration/parser/dynamic_scoping_spec.rb +67 -0
- data/spec/integration/parser/parameter_defaults_spec.rb +336 -0
- data/spec/integration/parser/undef_param_spec.rb +8 -0
- data/spec/integration/provider/yumrepo_spec.rb +1 -1
- data/spec/integration/test/test_helper_spec.rb +28 -0
- data/spec/integration/transaction/report_spec.rb +16 -0
- data/spec/integration/transaction_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +194 -4
- data/spec/integration/type/package_spec.rb +5 -1
- data/spec/integration/type/tidy_spec.rb +21 -9
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/principal_spec.rb +90 -4
- data/spec/integration/util/windows/process_spec.rb +31 -0
- data/spec/integration/util/windows/security_spec.rb +6 -6
- data/spec/integration/util/windows/user_spec.rb +1 -1
- data/spec/integration/util_spec.rb +49 -27
- data/spec/lib/puppet_spec/compiler.rb +17 -0
- data/spec/lib/puppet_spec/files.rb +2 -2
- data/spec/lib/puppet_spec/pops.rb +13 -0
- data/spec/shared_behaviours/iterative_functions.rb +1 -1
- data/spec/shared_contexts/types_setup.rb +96 -0
- data/spec/unit/agent_spec.rb +1 -0
- data/spec/unit/application/agent_spec.rb +10 -0
- data/spec/unit/application/apply_spec.rb +9 -0
- data/spec/unit/configurer/downloader_spec.rb +5 -5
- data/spec/unit/configurer_spec.rb +271 -39
- data/spec/unit/data_providers/hiera_interpolation_spec.rb +57 -0
- data/spec/unit/defaults_spec.rb +15 -0
- data/spec/unit/environments_spec.rb +24 -4
- data/spec/unit/face/parser_spec.rb +43 -2
- data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
- data/spec/unit/file_serving/metadata_spec.rb +50 -0
- data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
- data/spec/unit/file_system_spec.rb +26 -0
- data/spec/unit/functions/assert_type_spec.rb +36 -2
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +11 -3
- data/spec/unit/functions/lookup_spec.rb +58 -13
- data/spec/unit/functions/regsubst_spec.rb +1 -1
- data/spec/unit/functions/reverse_each_spec.rb +108 -0
- data/spec/unit/functions/step_spec.rb +113 -0
- data/spec/unit/functions/type_spec.rb +35 -0
- data/spec/unit/functions4_spec.rb +61 -5
- data/spec/unit/indirector/catalog/compiler_spec.rb +705 -4
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +1 -1
- data/spec/unit/indirector/indirection_spec.rb +1 -1
- data/spec/unit/info_service_spec.rb +94 -32
- data/spec/unit/module_spec.rb +14 -0
- data/spec/unit/module_tool/applications/builder_spec.rb +4 -4
- data/spec/unit/network/authstore_spec.rb +1 -1
- data/spec/unit/network/http/connection_spec.rb +1 -0
- data/spec/unit/network/http/pool_spec.rb +30 -0
- data/spec/unit/node_spec.rb +1 -1
- data/spec/unit/parser/compiler_spec.rb +16 -0
- data/spec/unit/parser/scope_spec.rb +28 -11
- data/spec/unit/pops/evaluator/access_ops_spec.rb +3 -3
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +7 -1
- data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +4 -4
- data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +6 -0
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +53 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +44 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +112 -3
- data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
- data/spec/unit/pops/parser/parser_spec.rb +10 -0
- data/spec/unit/pops/parser/source_pos_adapter_spec.rb +26 -0
- data/spec/unit/pops/types/iterable_spec.rb +262 -0
- data/spec/unit/pops/types/recursion_guard_spec.rb +91 -0
- data/spec/unit/pops/types/type_acceptor_spec.rb +105 -0
- data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +275 -373
- data/spec/unit/pops/types/type_formatter_spec.rb +280 -0
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +152 -0
- data/spec/unit/pops/types/type_parser_spec.rb +58 -13
- data/spec/unit/pops/types/types_spec.rb +241 -0
- data/spec/unit/pops/validator/validator_spec.rb +100 -43
- data/spec/unit/provider/cron/parsed_spec.rb +1 -0
- data/spec/unit/provider/macauthorization_spec.rb +5 -2
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +14 -19
- data/spec/unit/provider/package/appdmg_spec.rb +3 -3
- data/spec/unit/provider/package/dnf_spec.rb +16 -0
- data/spec/unit/provider/package/pip3_spec.rb +60 -42
- data/spec/unit/provider/package/pip_spec.rb +47 -34
- data/spec/unit/provider/package/pkgdmg_spec.rb +18 -9
- data/spec/unit/provider/package/pkgng_spec.rb +4 -2
- data/spec/unit/provider/package/yum_spec.rb +11 -0
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/launchd_spec.rb +17 -35
- data/spec/unit/provider/service/systemd_spec.rb +7 -0
- data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
- data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
- data/spec/unit/resource/capability_finder_spec.rb +28 -15
- data/spec/unit/resource/catalog_spec.rb +33 -1
- data/spec/unit/resource/type_spec.rb +149 -7
- data/spec/unit/resource_spec.rb +96 -57
- data/spec/unit/settings/environment_conf_spec.rb +18 -1
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
- data/spec/unit/transaction/report_spec.rb +27 -0
- data/spec/unit/transaction/resource_harness_spec.rb +0 -47
- data/spec/unit/transaction_spec.rb +5 -0
- data/spec/unit/type/file/checksum_spec.rb +6 -0
- data/spec/unit/type/file/checksum_value_spec.rb +286 -0
- data/spec/unit/type/file/content_spec.rb +12 -193
- data/spec/unit/type/file/source_spec.rb +211 -119
- data/spec/unit/type/file_spec.rb +133 -34
- data/spec/unit/type/interface_spec.rb +32 -0
- data/spec/unit/type/macauthorization_spec.rb +4 -1
- data/spec/unit/type/yumrepo_spec.rb +2 -2
- data/spec/unit/util/filetype_spec.rb +1 -1
- data/spec/unit/util/http_proxy_spec.rb +2 -2
- data/spec/unit/util/log/destinations_spec.rb +0 -2
- data/spec/unit/util/logging_spec.rb +69 -0
- data/spec/unit/util/multi_match_spec.rb +39 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
- data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
- data/spec/unit/util/plist_spec.rb +110 -0
- data/spec/unit/util/resource_template_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -3
- data/spec/unit/util/windows/adsi_spec.rb +4 -4
- data/spec/unit/util/windows/api_types_spec.rb +42 -0
- data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
- data/spec/unit/util/windows/sid_spec.rb +1 -1
- data/spec/unit/util_spec.rb +123 -13
- data/tasks/cfpropertylist.rake +15 -0
- metadata +114 -26
- data/lib/puppet/vendor/load_plist.rb +0 -1
- data/lib/puppet/vendor/plist/CHANGELOG +0 -82
- data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
- data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/plist/README +0 -36
- data/lib/puppet/vendor/plist/Rakefile +0 -144
- data/lib/puppet/vendor/plist/docs/USAGE +0 -104
- data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
- data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
- data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
- data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
- data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
- data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
- data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
- data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
- data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
- data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
- data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
- data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
- data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
- data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
- data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
@@ -196,7 +196,7 @@ class Puppet::Provider::AixObject < Puppet::Provider
|
|
196
196
|
end
|
197
197
|
|
198
198
|
attrs.each { |val|
|
199
|
-
key = key_list.shift.
|
199
|
+
key = key_list.shift.to_sym
|
200
200
|
properties = self.load_attribute(key, val, mapping, properties)
|
201
201
|
}
|
202
202
|
properties.empty? ? nil : properties
|
@@ -5,7 +5,7 @@
|
|
5
5
|
# you may not use this file except in compliance with the License.
|
6
6
|
# You may obtain a copy of the License at
|
7
7
|
#
|
8
|
-
#
|
8
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
9
9
|
#
|
10
10
|
# Unless required by applicable law or agreed to in writing, software
|
11
11
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
@@ -9,7 +9,7 @@ Puppet::Type.type(:cron).provide(:crontab, :parent => Puppet::Provider::ParsedFi
|
|
9
9
|
|
10
10
|
text_line :blank, :match => %r{^\s*$}
|
11
11
|
|
12
|
-
text_line :environment, :match => %r{^\s*\w
|
12
|
+
text_line :environment, :match => %r{^\s*\w+\s*=}
|
13
13
|
|
14
14
|
def self.filetype
|
15
15
|
tabname = case Facter.value(:osfamily)
|
@@ -45,7 +45,7 @@ Puppet::Type.type(:exec).provide :windows, :parent => Puppet::Provider::Exec do
|
|
45
45
|
end
|
46
46
|
|
47
47
|
if resource[:path]
|
48
|
-
Puppet::Util.withenv
|
48
|
+
Puppet::Util.withenv( {'PATH' => resource[:path].join(File::PATH_SEPARATOR)}, :windows) do
|
49
49
|
return if which(exe)
|
50
50
|
end
|
51
51
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'facter'
|
2
|
-
require 'plist'
|
2
|
+
require 'puppet/util/plist' if Puppet.features.cfpropertylist?
|
3
3
|
require 'puppet'
|
4
4
|
require 'tempfile'
|
5
5
|
|
@@ -12,6 +12,7 @@ Puppet::Type.type(:macauthorization).provide :macauthorization, :parent => Puppe
|
|
12
12
|
commands :security => "/usr/bin/security"
|
13
13
|
|
14
14
|
confine :operatingsystem => :darwin
|
15
|
+
confine :feature => :cfpropertylist
|
15
16
|
|
16
17
|
defaultfor :operatingsystem => :darwin
|
17
18
|
|
@@ -50,7 +51,7 @@ Puppet::Type.type(:macauthorization).provide :macauthorization, :parent => Puppe
|
|
50
51
|
end
|
51
52
|
|
52
53
|
def populate_rules_rights
|
53
|
-
auth_plist = Plist
|
54
|
+
auth_plist = Puppet::Util::Plist.parse_plist(AuthDB)
|
54
55
|
raise Puppet::Error.new("Cannot parse: #{AuthDB}") if not auth_plist
|
55
56
|
self.rights = auth_plist["rights"].dup
|
56
57
|
self.rules = auth_plist["rules"].dup
|
@@ -124,12 +125,12 @@ Puppet::Type.type(:macauthorization).provide :macauthorization, :parent => Puppe
|
|
124
125
|
end
|
125
126
|
|
126
127
|
def destroy_rule
|
127
|
-
authdb = Plist
|
128
|
+
authdb = Puppet::Util::Plist.parse_plist(AuthDB)
|
128
129
|
authdb_rules = authdb["rules"].dup
|
129
130
|
if authdb_rules[resource[:name]]
|
130
131
|
begin
|
131
132
|
authdb["rules"].delete(resource[:name])
|
132
|
-
Plist
|
133
|
+
Puppet::Util::Plist.write_plist_file(authdb, AuthDB)
|
133
134
|
rescue Errno::EACCES => e
|
134
135
|
raise Puppet::Error.new("Error saving #{AuthDB}: #{e}", e)
|
135
136
|
end
|
@@ -144,7 +145,7 @@ Puppet::Type.type(:macauthorization).provide :macauthorization, :parent => Puppe
|
|
144
145
|
cmds = []
|
145
146
|
cmds << :security << "authorizationdb" << "read" << resource[:name]
|
146
147
|
output = execute(cmds, :failonfail => false, :combine => false)
|
147
|
-
current_values = Plist
|
148
|
+
current_values = Puppet::Util::Plist.parse_plist(output)
|
148
149
|
current_values ||= {}
|
149
150
|
specified_values = convert_plist_to_native_attributes(@property_hash)
|
150
151
|
|
@@ -155,7 +156,7 @@ Puppet::Type.type(:macauthorization).provide :macauthorization, :parent => Puppe
|
|
155
156
|
end
|
156
157
|
|
157
158
|
def flush_rule
|
158
|
-
authdb = Plist
|
159
|
+
authdb = Puppet::Util::Plist.parse_plist(AuthDB)
|
159
160
|
authdb_rules = authdb["rules"].dup
|
160
161
|
current_values = {}
|
161
162
|
current_values = authdb_rules[resource[:name]] if authdb_rules[resource[:name]]
|
@@ -171,7 +172,7 @@ Puppet::Type.type(:macauthorization).provide :macauthorization, :parent => Puppe
|
|
171
172
|
values = convert_plist_to_native_attributes(values)
|
172
173
|
tmp = Tempfile.new('puppet_macauthorization')
|
173
174
|
begin
|
174
|
-
Plist
|
175
|
+
Puppet::Util::Plist.write_plist_file(values, tmp.path)
|
175
176
|
cmds = []
|
176
177
|
cmds << :security << "authorizationdb" << "write" << name
|
177
178
|
execute(cmds, :failonfail => false, :combine => false, :stdinfile => tmp.path.to_s)
|
@@ -189,11 +190,11 @@ Puppet::Type.type(:macauthorization).provide :macauthorization, :parent => Puppe
|
|
189
190
|
# support modifying rules at all so we have to twiddle the whole
|
190
191
|
# plist... :( See Apple Bug #6386000
|
191
192
|
values = convert_plist_to_native_attributes(values)
|
192
|
-
authdb = Plist
|
193
|
+
authdb = Puppet::Util::Plist.parse_plist(AuthDB)
|
193
194
|
authdb["rules"][name] = values
|
194
195
|
|
195
196
|
begin
|
196
|
-
Plist
|
197
|
+
Puppet::Util::Plist.write_plist_file(authdb, AuthDB)
|
197
198
|
rescue
|
198
199
|
raise Puppet::Error.new("Error writing to: #{AuthDB}")
|
199
200
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'puppet'
|
2
2
|
require 'puppet/provider/nameservice'
|
3
|
-
require 'plist'
|
3
|
+
require 'puppet/util/plist' if Puppet.features.cfpropertylist?
|
4
4
|
require 'fileutils'
|
5
5
|
|
6
6
|
class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameService
|
@@ -18,8 +18,8 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
|
|
18
18
|
commands :dscl => "/usr/bin/dscl"
|
19
19
|
commands :dseditgroup => "/usr/sbin/dseditgroup"
|
20
20
|
commands :sw_vers => "/usr/bin/sw_vers"
|
21
|
-
commands :plutil => '/usr/bin/plutil'
|
22
21
|
confine :operatingsystem => :darwin
|
22
|
+
confine :feature => :cfpropertylist
|
23
23
|
defaultfor :operatingsystem => :darwin
|
24
24
|
|
25
25
|
|
@@ -97,7 +97,7 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
|
|
97
97
|
end
|
98
98
|
|
99
99
|
def self.parse_dscl_plist_data(dscl_output)
|
100
|
-
Plist.
|
100
|
+
Puppet::Util::Plist.parse_plist(dscl_output)
|
101
101
|
end
|
102
102
|
|
103
103
|
def self.generate_attribute_hash(input_hash, *type_properties)
|
@@ -160,7 +160,7 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
|
|
160
160
|
def self.get_exec_preamble(ds_action, resource_name = nil)
|
161
161
|
# JJM 2007-07-24
|
162
162
|
# DSCL commands are often repetitive and contain the same positional
|
163
|
-
# arguments over and over. See
|
163
|
+
# arguments over and over. See https://developer.apple.com/documentation/Porting/Conceptual/PortingUnix/additionalfeatures/chapter_10_section_9.html
|
164
164
|
# for an example of what I mean.
|
165
165
|
# This method spits out proper DSCL commands for us.
|
166
166
|
# We EXPECT name to be @resource[:name] when called from an instance object.
|
@@ -192,92 +192,77 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
|
|
192
192
|
Please check your password and try again.")
|
193
193
|
end
|
194
194
|
|
195
|
-
|
195
|
+
plist_file = "#{users_plist_dir}/#{resource_name}.plist"
|
196
|
+
if Puppet::FileSystem.exist?(plist_file)
|
196
197
|
# If a plist already exists in /var/db/dslocal/nodes/Default/users, then
|
197
198
|
# we will need to extract the binary plist from the 'ShadowHashData'
|
198
199
|
# key, log the new password into the resultant plist's 'SALTED-SHA512'
|
199
200
|
# key, and then save the entire structure back.
|
200
|
-
users_plist = Plist
|
201
|
-
"#{users_plist_dir}/#{resource_name}.plist"))
|
201
|
+
users_plist = Puppet::Util::Plist.read_plist_file(plist_file)
|
202
202
|
|
203
|
-
# users_plist['ShadowHashData'][0]
|
203
|
+
# users_plist['ShadowHashData'][0] is actually a binary plist
|
204
204
|
# that's nested INSIDE the user's plist (which itself is a binary
|
205
205
|
# plist). If we encounter a user plist that DOESN'T have a
|
206
206
|
# ShadowHashData field, create one.
|
207
207
|
if users_plist['ShadowHashData']
|
208
|
-
password_hash_plist = users_plist['ShadowHashData'][0]
|
209
|
-
converted_hash_plist =
|
208
|
+
password_hash_plist = users_plist['ShadowHashData'][0]
|
209
|
+
converted_hash_plist = convert_binary_to_hash(password_hash_plist)
|
210
210
|
else
|
211
|
-
users_plist['ShadowHashData'] =
|
212
|
-
converted_hash_plist = {'SALTED-SHA512' =>
|
211
|
+
users_plist['ShadowHashData'] = ''
|
212
|
+
converted_hash_plist = {'SALTED-SHA512' => ''}
|
213
213
|
end
|
214
214
|
|
215
|
-
# converted_hash_plist['SALTED-SHA512']
|
215
|
+
# converted_hash_plist['SALTED-SHA512'] expects a Base64 encoded
|
216
216
|
# string. The password_hash provided as a resource attribute is a
|
217
217
|
# hex value. We need to convert the provided hex value to a Base64
|
218
218
|
# encoded string to nest it in the converted hash plist.
|
219
|
-
converted_hash_plist['SALTED-SHA512']
|
219
|
+
converted_hash_plist['SALTED-SHA512'] = \
|
220
220
|
password_hash.unpack('a2'*(password_hash.size/2)).collect { |i| i.hex.chr }.join
|
221
221
|
|
222
222
|
# Finally, we can convert the nested plist back to binary, embed it
|
223
223
|
# into the user's plist, and convert the resultant plist back to
|
224
224
|
# a binary plist.
|
225
|
-
changed_plist =
|
226
|
-
users_plist['ShadowHashData'][0]
|
227
|
-
Plist
|
228
|
-
plutil('-convert', 'binary1', "#{users_plist_dir}/#{resource_name}.plist")
|
225
|
+
changed_plist = convert_hash_to_binary(converted_hash_plist)
|
226
|
+
users_plist['ShadowHashData'][0] = changed_plist
|
227
|
+
Puppet::Util::Plist.write_plist_file(users_plist, plist_file, :binary)
|
229
228
|
end
|
230
229
|
end
|
231
230
|
|
232
231
|
def self.get_password(guid, username)
|
233
|
-
|
232
|
+
plist_file = "#{users_plist_dir}/#{username}.plist"
|
233
|
+
if Puppet::FileSystem.exist?(plist_file)
|
234
234
|
# If a plist exists in /var/db/dslocal/nodes/Default/users, we will
|
235
235
|
# extract the binary plist from the 'ShadowHashData' key, decode the
|
236
236
|
# salted-SHA512 password hash, and then return it.
|
237
|
-
users_plist = Plist
|
237
|
+
users_plist = Puppet::Util::Plist.read_plist_file(plist_file)
|
238
|
+
|
238
239
|
if users_plist['ShadowHashData']
|
239
|
-
# users_plist['ShadowHashData'][0]
|
240
|
+
# users_plist['ShadowHashData'][0] is actually a binary plist
|
240
241
|
# that's nested INSIDE the user's plist (which itself is a binary
|
241
242
|
# plist).
|
242
|
-
password_hash_plist = users_plist['ShadowHashData'][0]
|
243
|
-
converted_hash_plist =
|
243
|
+
password_hash_plist = users_plist['ShadowHashData'][0]
|
244
|
+
converted_hash_plist = convert_binary_to_hash(password_hash_plist)
|
244
245
|
|
245
|
-
# converted_hash_plist['SALTED-SHA512']
|
246
|
+
# converted_hash_plist['SALTED-SHA512'] is a Base64 encoded
|
246
247
|
# string. The password_hash provided as a resource attribute is a
|
247
248
|
# hex value. We need to convert the Base64 encoded string to a
|
248
249
|
# hex value and provide it back to Puppet.
|
249
|
-
password_hash = converted_hash_plist['SALTED-SHA512'].
|
250
|
+
password_hash = converted_hash_plist['SALTED-SHA512'].unpack("H*")[0]
|
250
251
|
password_hash
|
251
252
|
end
|
252
253
|
end
|
253
254
|
end
|
254
255
|
|
255
|
-
# This method will accept a hash
|
256
|
-
|
257
|
-
|
258
|
-
Puppet.
|
259
|
-
Puppet.debug('Executing: \'plutil -convert binary1 -o - -\'')
|
260
|
-
IO.popen('plutil -convert binary1 -o - -', 'r+') do |io|
|
261
|
-
io.write plist_data.to_plist
|
262
|
-
io.close_write
|
263
|
-
@converted_plist = io.read
|
264
|
-
end
|
265
|
-
@converted_plist
|
256
|
+
# This method will accept a hash and convert it to a binary plist (string value).
|
257
|
+
def self.convert_hash_to_binary(plist_data)
|
258
|
+
Puppet.debug('Converting plist hash to binary')
|
259
|
+
Puppet::Util::Plist.dump_plist(plist_data, :binary)
|
266
260
|
end
|
267
261
|
|
268
|
-
# This method will accept a binary plist (as a string) and convert it to a
|
269
|
-
|
270
|
-
|
271
|
-
Puppet.
|
272
|
-
Puppet.debug('Executing: \'plutil -convert xml1 -o - -\'')
|
273
|
-
IO.popen('plutil -convert xml1 -o - -', 'r+') do |io|
|
274
|
-
io.write plist_data
|
275
|
-
io.close_write
|
276
|
-
@converted_plist = io.read
|
277
|
-
end
|
278
|
-
Puppet.debug('Converting XML values to a hash.')
|
279
|
-
@plist_hash = Plist::parse_xml(@converted_plist)
|
280
|
-
@plist_hash
|
262
|
+
# This method will accept a binary plist (as a string) and convert it to a hash.
|
263
|
+
def self.convert_binary_to_hash(plist_data)
|
264
|
+
Puppet.debug('Converting binary plist to hash')
|
265
|
+
Puppet::Util::Plist.parse_plist(plist_data)
|
281
266
|
end
|
282
267
|
|
283
268
|
# Unlike most other *nixes, OS X doesn't provide built in functionality
|
@@ -333,7 +318,7 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
|
|
333
318
|
exec_arg_vector << ns_to_ds_attribute_map[:guid]
|
334
319
|
begin
|
335
320
|
guid_output = execute(exec_arg_vector)
|
336
|
-
guid_plist = Plist.
|
321
|
+
guid_plist = Puppet::Util::Plist.parse_plist(guid_output)
|
337
322
|
# Although GeneratedUID like all DirectoryService values can be multi-valued
|
338
323
|
# according to the schema, in practice user accounts cannot have multiple UUIDs
|
339
324
|
# otherwise Bad Things Happen, so we just deal with the first value.
|
@@ -13,10 +13,12 @@
|
|
13
13
|
# in /var/db/.puppet_appdmg_installed_<name>
|
14
14
|
|
15
15
|
require 'puppet/provider/package'
|
16
|
+
require 'puppet/util/plist' if Puppet.features.cfpropertylist?
|
16
17
|
Puppet::Type.type(:package).provide(:appdmg, :parent => Puppet::Provider::Package) do
|
17
18
|
desc "Package management which copies application bundles to a target."
|
18
19
|
|
19
20
|
confine :operatingsystem => :darwin
|
21
|
+
confine :feature => :cfpropertylist
|
20
22
|
|
21
23
|
commands :hdiutil => "/usr/bin/hdiutil"
|
22
24
|
commands :curl => "/usr/bin/curl"
|
@@ -50,7 +52,6 @@ Puppet::Type.type(:package).provide(:appdmg, :parent => Puppet::Provider::Packag
|
|
50
52
|
|
51
53
|
def self.installpkgdmg(source, name)
|
52
54
|
require 'open-uri'
|
53
|
-
require 'plist'
|
54
55
|
cached_source = source
|
55
56
|
tmpdir = Dir.mktmpdir
|
56
57
|
begin
|
@@ -67,7 +68,7 @@ Puppet::Type.type(:package).provide(:appdmg, :parent => Puppet::Provider::Packag
|
|
67
68
|
|
68
69
|
open(cached_source) do |dmg|
|
69
70
|
xml_str = hdiutil "mount", "-plist", "-nobrowse", "-readonly", "-mountrandom", "/tmp", dmg.path
|
70
|
-
ptable = Plist::
|
71
|
+
ptable = Puppet::Util::Plist::parse_plist(xml_str)
|
71
72
|
# JJM Filter out all mount-paths into a single array, discard the rest.
|
72
73
|
mounts = ptable['system-entities'].collect { |entity|
|
73
74
|
entity['mount-point']
|
@@ -28,7 +28,7 @@ Puppet::Type.type(:package).provide :dnf, :parent => :yum do
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
defaultfor :operatingsystem => :fedora, :operatingsystemmajrelease => '22'
|
31
|
+
defaultfor :operatingsystem => :fedora, :operatingsystemmajrelease => ['22', '23']
|
32
32
|
|
33
33
|
# The value to pass to DNF as its error output level.
|
34
34
|
# DNF differs from Yum slightly with regards to error outputting.
|
@@ -30,7 +30,8 @@ Puppet::Type.type(:package).provide :pip,
|
|
30
30
|
# that's managed by `pip` or an empty array if `pip` is not available.
|
31
31
|
def self.instances
|
32
32
|
packages = []
|
33
|
-
pip_cmd = which(
|
33
|
+
pip_cmd = cmd.map { |c| which(c) }.find { |c| c != nil }
|
34
|
+
return [] unless pip_cmd
|
34
35
|
execpipe "#{pip_cmd} freeze" do |process|
|
35
36
|
process.collect do |line|
|
36
37
|
next unless options = parse(line)
|
@@ -41,11 +42,7 @@ Puppet::Type.type(:package).provide :pip,
|
|
41
42
|
end
|
42
43
|
|
43
44
|
def self.cmd
|
44
|
-
|
45
|
-
"pip-python"
|
46
|
-
else
|
47
|
-
"pip"
|
48
|
-
end
|
45
|
+
["pip", "pip-python"]
|
49
46
|
end
|
50
47
|
|
51
48
|
# Return structured information about a particular package or `nil` if
|
@@ -123,11 +120,11 @@ Puppet::Type.type(:package).provide :pip,
|
|
123
120
|
def lazy_pip(*args)
|
124
121
|
pip *args
|
125
122
|
rescue NoMethodError => e
|
126
|
-
if pathname =
|
123
|
+
if pathname = self.class.cmd.map { |c| which(c) }.find { |c| c != nil }
|
127
124
|
self.class.commands :pip => pathname
|
128
125
|
pip *args
|
129
126
|
else
|
130
|
-
raise e, "Could not locate
|
127
|
+
raise e, "Could not locate command #{self.class.cmd.join(' and ')}.", e.backtrace
|
131
128
|
end
|
132
129
|
end
|
133
130
|
|
@@ -2,7 +2,7 @@ require 'puppet/provider/package'
|
|
2
2
|
|
3
3
|
Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package do
|
4
4
|
desc "OpenSolaris image packaging system. See pkg(5) for more information"
|
5
|
-
#
|
5
|
+
# https://docs.oracle.com/cd/E19963-01/html/820-6572/managepkgs.html
|
6
6
|
# A few notes before we start :
|
7
7
|
# Opensolaris pkg has two slightly different formats (as of now.)
|
8
8
|
# The first one is what is distributed with the Solaris 11 Express 11/10 dvd
|
@@ -9,7 +9,7 @@
|
|
9
9
|
# in /var/db/.puppet_pkgdmg_installed_<name>
|
10
10
|
|
11
11
|
require 'puppet/provider/package'
|
12
|
-
require 'plist'
|
12
|
+
require 'puppet/util/plist' if Puppet.features.cfpropertylist?
|
13
13
|
require 'puppet/util/http_proxy'
|
14
14
|
|
15
15
|
Puppet::Type.type(:package).provide :pkgdmg, :parent => Puppet::Provider::Package do
|
@@ -36,6 +36,7 @@ Puppet::Type.type(:package).provide :pkgdmg, :parent => Puppet::Provider::Packag
|
|
36
36
|
package, you must create a new DMG with a different filename."
|
37
37
|
|
38
38
|
confine :operatingsystem => :darwin
|
39
|
+
confine :feature => :cfpropertylist
|
39
40
|
defaultfor :operatingsystem => :darwin
|
40
41
|
commands :installer => "/usr/sbin/installer"
|
41
42
|
commands :hdiutil => "/usr/bin/hdiutil"
|
@@ -102,7 +103,7 @@ Puppet::Type.type(:package).provide :pkgdmg, :parent => Puppet::Provider::Packag
|
|
102
103
|
# If you fix this to use open-uri again, you must update the docs above. -NF
|
103
104
|
File.open(cached_source) do |dmg|
|
104
105
|
xml_str = hdiutil "mount", "-plist", "-nobrowse", "-readonly", "-noidme", "-mountrandom", "/tmp", dmg.path
|
105
|
-
hdiutil_info = Plist
|
106
|
+
hdiutil_info = Puppet::Util::Plist.parse_plist(xml_str)
|
106
107
|
raise Puppet::Error.new("No disk entities returned by mount at #{dmg.path}") unless hdiutil_info.has_key?("system-entities")
|
107
108
|
mounts = hdiutil_info["system-entities"].collect { |entity|
|
108
109
|
entity["mount-point"]
|
@@ -20,8 +20,8 @@ Puppet::Type.type(:package).provide :pkgng, :parent => Puppet::Provider::Package
|
|
20
20
|
pkg(['version', '-voRL='])
|
21
21
|
end
|
22
22
|
|
23
|
-
def self.get_latest_version(origin)
|
24
|
-
if latest_version =
|
23
|
+
def self.get_latest_version(origin, version_list)
|
24
|
+
if latest_version = version_list.lines.find { |l| l =~ /^#{origin} / }
|
25
25
|
latest_version = latest_version.split(' ').last.split(')').first
|
26
26
|
return latest_version
|
27
27
|
end
|
@@ -32,6 +32,7 @@ Puppet::Type.type(:package).provide :pkgng, :parent => Puppet::Provider::Package
|
|
32
32
|
packages = []
|
33
33
|
begin
|
34
34
|
info = self.get_query
|
35
|
+
version_list = self.get_version_list
|
35
36
|
|
36
37
|
unless info
|
37
38
|
return packages
|
@@ -40,7 +41,7 @@ Puppet::Type.type(:package).provide :pkgng, :parent => Puppet::Provider::Package
|
|
40
41
|
info.lines.each do |line|
|
41
42
|
|
42
43
|
name, version, origin = line.chomp.split(" ", 3)
|
43
|
-
latest_version = get_latest_version(origin) || version
|
44
|
+
latest_version = get_latest_version(origin, version_list) || version
|
44
45
|
|
45
46
|
pkg = {
|
46
47
|
:ensure => version,
|
@@ -84,7 +85,15 @@ Puppet::Type.type(:package).provide :pkgng, :parent => Puppet::Provider::Package
|
|
84
85
|
when true, false, Symbol
|
85
86
|
installname = resource[:name]
|
86
87
|
else
|
87
|
-
|
88
|
+
# If resource[:name] is actually an origin (e.g. 'www/curl' instead of
|
89
|
+
# just 'curl'), drop the category prefix. pkgng doesn't support version
|
90
|
+
# pinning with the origin syntax (pkg install curl-1.2.3 is valid, but
|
91
|
+
# pkg install www/curl-1.2.3 is not).
|
92
|
+
if resource[:name] =~ /\//
|
93
|
+
installname = resource[:name].split('/')[1] + '-' + resource[:ensure]
|
94
|
+
else
|
95
|
+
installname = resource[:name] + '-' + resource[:ensure]
|
96
|
+
end
|
88
97
|
end
|
89
98
|
|
90
99
|
if not source # install using default repo logic
|
@@ -75,7 +75,7 @@ Puppet::Type.type(:package).provide(:windows, :parent => Puppet::Provider::Packa
|
|
75
75
|
check_result(output.exitstatus)
|
76
76
|
end
|
77
77
|
|
78
|
-
#
|
78
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa368542(v=vs.85).aspx
|
79
79
|
self::ERROR_SUCCESS = 0
|
80
80
|
self::ERROR_SUCCESS_REBOOT_INITIATED = 1641
|
81
81
|
self::ERROR_SUCCESS_REBOOT_REQUIRED = 3010
|