puppet 4.5.3-x86-mingw32 → 4.6.1-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/Gemfile +10 -1
- data/ext/debian/control +2 -4
- data/ext/project_data.yaml +4 -4
- data/install.rb +6 -2
- data/lib/puppet.rb +3 -1
- data/lib/puppet/agent/locker.rb +1 -1
- data/lib/puppet/application.rb +6 -4
- data/lib/puppet/application/agent.rb +2 -1
- data/lib/puppet/application/cert.rb +35 -2
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/generate.rb +5 -0
- data/lib/puppet/application/lookup.rb +3 -3
- data/lib/puppet/application_support.rb +1 -1
- data/lib/puppet/compilable_resource_type.rb +15 -0
- data/lib/puppet/configurer.rb +67 -10
- data/lib/puppet/configurer/plugin_handler.rb +2 -4
- data/lib/puppet/data_providers/hiera_config.rb +1 -1
- data/lib/puppet/defaults.rb +34 -7
- data/lib/puppet/environments.rb +4 -2
- data/lib/puppet/error.rb +1 -1
- data/lib/puppet/external/dot.rb +1 -1
- data/lib/puppet/face/ca.rb +4 -1
- data/lib/puppet/face/certificate.rb +7 -1
- data/lib/puppet/face/epp.rb +5 -5
- data/lib/puppet/face/generate.rb +64 -0
- data/lib/puppet/face/help.rb +19 -13
- data/lib/puppet/face/man.rb +1 -1
- data/lib/puppet/feature/external_facts.rb +1 -1
- data/lib/puppet/file_system.rb +16 -0
- data/lib/puppet/file_system/file_impl.rb +5 -0
- data/lib/puppet/file_system/memory_impl.rb +4 -0
- data/lib/puppet/file_system/path_pattern.rb +1 -0
- data/lib/puppet/file_system/windows.rb +19 -0
- data/lib/puppet/functions.rb +3 -5
- data/lib/puppet/functions/assert_type.rb +1 -1
- data/lib/puppet/functions/defined.rb +7 -5
- data/lib/puppet/functions/dig.rb +2 -18
- data/lib/puppet/functions/hiera.rb +1 -1
- data/lib/puppet/functions/lest.rb +1 -37
- data/lib/puppet/functions/new.rb +2 -473
- data/lib/puppet/functions/reverse_each.rb +2 -59
- data/lib/puppet/functions/scanf.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -63
- data/lib/puppet/functions/then.rb +1 -61
- data/lib/puppet/functions/type.rb +1 -40
- data/lib/puppet/functions/unwrap.rb +40 -0
- data/lib/puppet/generate/models/type/property.rb +70 -0
- data/lib/puppet/generate/models/type/type.rb +57 -0
- data/lib/puppet/generate/templates/type/pcore.erb +41 -0
- data/lib/puppet/generate/type.rb +239 -0
- data/lib/puppet/graph/simple_graph.rb +2 -6
- data/lib/puppet/indirector/catalog/static_compiler.rb +5 -2
- data/lib/puppet/indirector/facts/facter.rb +1 -1
- data/lib/puppet/indirector/key/ca.rb +2 -2
- data/lib/puppet/indirector/request.rb +25 -4
- data/lib/puppet/indirector/rest.rb +73 -3
- data/lib/puppet/info_service/class_information_service.rb +1 -2
- data/lib/puppet/interface/documentation.rb +1 -1
- data/lib/puppet/loaders.rb +2 -0
- data/lib/puppet/metatype/manager.rb +6 -6
- data/lib/puppet/module.rb +8 -1
- data/lib/puppet/module_tool.rb +2 -2
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/errors/installer.rb +2 -2
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +23 -32
- data/lib/puppet/network/http/rack/rest.rb +15 -1
- data/lib/puppet/network/rights.rb +1 -11
- data/lib/puppet/node/environment.rb +7 -3
- data/lib/puppet/node/facts.rb +1 -1
- data/lib/puppet/parameter.rb +23 -3
- data/lib/puppet/parameter/boolean.rb +1 -1
- data/lib/puppet/parameter/value.rb +1 -1
- data/lib/puppet/parser.rb +0 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +1 -1
- data/lib/puppet/parser/ast/resource.rb +5 -0
- data/lib/puppet/parser/ast/resource_instance.rb +5 -1
- data/lib/puppet/parser/ast/resourceparam.rb +5 -0
- data/lib/puppet/parser/compiler.rb +14 -17
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +1 -1
- data/lib/puppet/parser/environment_compiler.rb +10 -0
- data/lib/puppet/parser/functions/create_resources.rb +39 -24
- data/lib/puppet/parser/functions/defined.rb +2 -26
- data/lib/puppet/parser/functions/dig.rb +29 -0
- data/lib/puppet/parser/functions/lest.rb +49 -0
- data/lib/puppet/parser/functions/new.rb +530 -0
- data/lib/puppet/parser/functions/require.rb +1 -1
- data/lib/puppet/parser/functions/reverse_each.rb +83 -0
- data/lib/puppet/parser/functions/scanf.rb +4 -4
- data/lib/puppet/parser/functions/step.rb +84 -0
- data/lib/puppet/parser/functions/then.rb +73 -0
- data/lib/puppet/parser/functions/type.rb +53 -0
- data/lib/puppet/parser/resource.rb +16 -7
- data/lib/puppet/parser/scope.rb +36 -28
- data/lib/puppet/parser/type_loader.rb +1 -1
- data/lib/puppet/plugins/data_providers/data_provider.rb +1 -1
- data/lib/puppet/pops.rb +13 -0
- data/lib/puppet/pops/adapters.rb +49 -49
- data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +1 -1
- data/lib/puppet/pops/evaluator/access_operator.rb +39 -2
- data/lib/puppet/pops/evaluator/closure.rb +39 -13
- data/lib/puppet/pops/evaluator/collector_transformer.rb +10 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +16 -11
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +0 -1
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +0 -1
- data/lib/puppet/pops/evaluator/relationship_operator.rb +1 -2
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +119 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +19 -45
- data/lib/puppet/pops/functions/function.rb +5 -0
- data/lib/puppet/pops/issues.rb +1 -1
- data/lib/puppet/pops/label_provider.rb +2 -2
- data/lib/puppet/pops/loader/base_loader.rb +12 -15
- data/lib/puppet/pops/loader/loader.rb +15 -50
- data/lib/puppet/pops/loader/loader_paths.rb +28 -2
- data/lib/puppet/pops/loader/module_loaders.rb +16 -1
- data/lib/puppet/pops/loader/null_loader.rb +17 -1
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +12 -11
- data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +80 -0
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +2 -3
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +52 -13
- data/lib/puppet/pops/loader/static_loader.rb +55 -0
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +30 -14
- data/lib/puppet/pops/loader/typed_name.rb +50 -0
- data/lib/puppet/pops/loaders.rb +64 -19
- data/lib/puppet/pops/merge_strategy.rb +7 -7
- data/lib/puppet/pops/migration/migration_checker.rb +4 -0
- data/lib/puppet/pops/model/model_label_provider.rb +2 -0
- data/lib/puppet/pops/parser/egrammar.ra +8 -5
- data/lib/puppet/pops/parser/eparser.rb +1550 -1498
- data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +7 -0
- data/lib/puppet/pops/parser/lexer2.rb +14 -1
- data/lib/puppet/pops/parser/locator.rb +30 -1
- data/lib/puppet/pops/parser/parser_support.rb +0 -3
- data/lib/puppet/pops/parser/slurp_support.rb +3 -3
- data/lib/puppet/pops/patterns.rb +9 -1
- data/lib/puppet/pops/pcore.rb +67 -11
- data/lib/puppet/pops/puppet_stack.rb +43 -0
- data/lib/puppet/pops/resource/param.rb +51 -0
- data/lib/puppet/pops/resource/resource_type_impl.rb +301 -0
- data/lib/puppet/pops/resource/resource_type_set.pcore +21 -0
- data/lib/puppet/pops/serialization.rb +17 -0
- data/lib/puppet/pops/serialization/abstract_reader.rb +149 -0
- data/lib/puppet/pops/serialization/abstract_writer.rb +179 -0
- data/lib/puppet/pops/serialization/deserializer.rb +60 -0
- data/lib/puppet/pops/serialization/extension.rb +126 -0
- data/lib/puppet/pops/serialization/instance_reader.rb +19 -0
- data/lib/puppet/pops/serialization/instance_writer.rb +14 -0
- data/lib/puppet/pops/serialization/json.rb +247 -0
- data/lib/puppet/pops/serialization/object.rb +63 -0
- data/lib/puppet/pops/serialization/rgen.rb +151 -0
- data/lib/puppet/pops/serialization/serializer.rb +91 -0
- data/lib/puppet/pops/serialization/time_factory.rb +66 -0
- data/lib/puppet/pops/types/annotatable.rb +36 -0
- data/lib/puppet/pops/types/implementation_registry.rb +3 -8
- data/lib/puppet/pops/types/p_meta_type.rb +83 -0
- data/lib/puppet/pops/types/p_object_type.rb +110 -117
- data/lib/puppet/pops/types/p_runtime_type.rb +13 -0
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +23 -0
- data/lib/puppet/pops/types/p_sem_ver_type.rb +30 -2
- data/lib/puppet/pops/types/p_sensitive_type.rb +69 -0
- data/lib/puppet/pops/types/p_type_set_type.rb +361 -0
- data/lib/puppet/pops/types/puppet_object.rb +0 -5
- data/lib/puppet/pops/types/ruby_generator.rb +9 -2
- data/lib/puppet/pops/types/type_calculator.rb +6 -1
- data/lib/puppet/pops/types/type_factory.rb +14 -12
- data/lib/puppet/pops/types/type_formatter.rb +78 -33
- data/lib/puppet/pops/types/type_mismatch_describer.rb +0 -2
- data/lib/puppet/pops/types/type_parser.rb +27 -2
- data/lib/puppet/pops/types/type_set_reference.rb +59 -0
- data/lib/puppet/pops/types/types.rb +366 -13
- data/lib/puppet/pops/validation.rb +4 -4
- data/lib/puppet/pops/validation/checker4_0.rb +5 -2
- data/lib/puppet/pops/visitor.rb +2 -2
- data/lib/puppet/property.rb +64 -5
- data/lib/puppet/provider.rb +1 -1
- data/lib/puppet/provider/aixobject.rb +3 -3
- data/lib/puppet/provider/group/aix.rb +4 -4
- data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
- data/lib/puppet/provider/mailalias/aliases.rb +1 -1
- data/lib/puppet/provider/mcx/mcxcontent.rb +2 -2
- data/lib/puppet/provider/mount/parsed.rb +1 -1
- data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
- data/lib/puppet/provider/package/appdmg.rb +3 -3
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/dnf.rb +5 -0
- data/lib/puppet/provider/package/nim.rb +1 -1
- data/lib/puppet/provider/package/pacman.rb +2 -2
- data/lib/puppet/provider/package/pip.rb +5 -3
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +5 -5
- data/lib/puppet/provider/package/pkgdmg.rb +4 -4
- data/lib/puppet/provider/package/pkgin.rb +1 -1
- data/lib/puppet/provider/package/pkgutil.rb +1 -1
- data/lib/puppet/provider/package/portage.rb +48 -8
- data/lib/puppet/provider/package/sun.rb +1 -1
- data/lib/puppet/provider/package/tdnf.rb +28 -0
- data/lib/puppet/provider/package/yum.rb +22 -4
- data/lib/puppet/provider/parsedfile.rb +2 -2
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/bsd.rb +1 -1
- data/lib/puppet/provider/service/daemontools.rb +2 -2
- data/lib/puppet/provider/service/debian.rb +3 -3
- data/lib/puppet/provider/service/init.rb +5 -3
- data/lib/puppet/provider/service/launchd.rb +16 -2
- data/lib/puppet/provider/service/runit.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +8 -1
- data/lib/puppet/provider/service/systemd.rb +39 -6
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +3 -2
- data/lib/puppet/provider/user/directoryservice.rb +4 -3
- 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/windows_adsi.rb +3 -0
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/reference/type.rb +1 -1
- data/lib/puppet/resource.rb +33 -7
- data/lib/puppet/resource/capability_finder.rb +74 -54
- data/lib/puppet/resource/status.rb +11 -2
- data/lib/puppet/settings.rb +17 -6
- data/lib/puppet/settings/environment_conf.rb +1 -1
- data/lib/puppet/settings/server_list_setting.rb +20 -0
- data/lib/puppet/ssl/certificate_authority.rb +32 -9
- data/lib/puppet/ssl/certificate_authority/interface.rb +164 -24
- data/lib/puppet/ssl/host.rb +3 -3
- data/lib/puppet/ssl/oids.rb +10 -0
- data/lib/puppet/ssl/validator/default_validator.rb +2 -2
- data/lib/puppet/test/test_helper.rb +2 -2
- data/lib/puppet/transaction.rb +12 -0
- data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/event.rb +29 -2
- data/lib/puppet/transaction/event_manager.rb +1 -1
- data/lib/puppet/transaction/persistence.rb +84 -0
- data/lib/puppet/transaction/report.rb +49 -2
- data/lib/puppet/transaction/resource_harness.rb +98 -18
- data/lib/puppet/type.rb +63 -21
- data/lib/puppet/type/augeas.rb +3 -3
- data/lib/puppet/type/cron.rb +1 -1
- data/lib/puppet/type/file.rb +39 -2
- data/lib/puppet/type/file/data_sync.rb +13 -5
- data/lib/puppet/type/host.rb +1 -1
- data/lib/puppet/type/mount.rb +2 -6
- data/lib/puppet/type/notify.rb +1 -1
- data/lib/puppet/type/package.rb +1 -1
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/scheduled_task.rb +1 -1
- data/lib/puppet/type/ssh_authorized_key.rb +2 -2
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/yumrepo.rb +3 -3
- data/lib/puppet/type/zone.rb +1 -1
- data/lib/puppet/util.rb +2 -2
- data/lib/puppet/util/classgen.rb +1 -1
- data/lib/puppet/util/command_line.rb +6 -2
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/http_proxy.rb +1 -1
- data/lib/puppet/util/inifile.rb +1 -1
- data/lib/puppet/util/instance_loader.rb +1 -1
- data/lib/puppet/util/logging.rb +1 -1
- data/lib/puppet/util/multi_match.rb +1 -1
- data/lib/puppet/util/plist.rb +15 -5
- data/lib/puppet/util/profiler.rb +1 -1
- data/lib/puppet/util/profiler/around_profiler.rb +1 -1
- data/lib/puppet/util/psych_support.rb +1 -1
- data/lib/puppet/util/rdoc.rb +2 -2
- data/lib/puppet/util/rubygems.rb +1 -1
- data/lib/puppet/util/watcher/periodic_watcher.rb +2 -2
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/adsi.rb +30 -8
- data/lib/puppet/util/windows/api_types.rb +1 -1
- data/lib/puppet/util/windows/file.rb +59 -0
- data/lib/puppet/util/windows/process.rb +10 -0
- data/lib/puppet/util/windows/security.rb +1 -1
- data/lib/puppet/util/windows/user.rb +22 -4
- data/lib/puppet/util/yaml.rb +15 -3
- data/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +1 -1
- data/lib/puppet/vendor/rgen_patch.rb +1 -1
- data/lib/puppet/version.rb +2 -2
- data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +10 -0
- data/spec/integration/agent/logging_spec.rb +15 -14
- data/spec/integration/application/apply_spec.rb +1 -0
- data/spec/integration/directory_environments_spec.rb +16 -0
- data/spec/integration/environments/settings_spec.rb +32 -4
- data/spec/integration/faces/documentation_spec.rb +1 -1
- data/spec/integration/network/http/api/indirected_routes_spec.rb +33 -0
- data/spec/integration/node/environment_spec.rb +21 -0
- data/spec/integration/parser/collection_spec.rb +10 -0
- data/spec/integration/parser/compiler_spec.rb +76 -840
- data/spec/integration/parser/functions/require_spec.rb +3 -3
- data/spec/integration/parser/parameter_defaults_spec.rb +6 -2
- data/spec/integration/parser/pcore_resource_spec.rb +208 -0
- data/spec/integration/parser/resource_expressions_spec.rb +4 -2
- data/spec/integration/provider/yumrepo_spec.rb +4 -1
- data/spec/integration/transaction/report_spec.rb +666 -0
- data/spec/integration/type/file_spec.rb +11 -12
- data/spec/integration/util/windows/adsi_spec.rb +99 -0
- data/spec/integration/util/windows/principal_spec.rb +109 -60
- data/spec/integration/util/windows/process_spec.rb +4 -2
- data/spec/integration/util/windows/security_spec.rb +34 -8
- data/spec/integration/util/windows/user_spec.rb +26 -4
- data/spec/lib/puppet_spec/files.rb +2 -2
- data/spec/lib/puppet_spec/network.rb +12 -8
- data/spec/shared_examples/rhel_package_provider.rb +341 -0
- data/spec/spec_helper.rb +8 -2
- data/spec/unit/application/cert_spec.rb +20 -0
- data/spec/unit/configurer/plugin_handler_spec.rb +0 -26
- data/spec/unit/configurer_spec.rb +46 -0
- data/spec/unit/defaults_spec.rb +14 -0
- data/spec/unit/face/generate_spec.rb +230 -0
- data/spec/unit/face/help_spec.rb +53 -0
- data/spec/unit/face/parser_spec.rb +6 -0
- data/spec/unit/face/plugin_spec.rb +0 -4
- data/spec/unit/file_system_spec.rb +85 -0
- data/spec/unit/functions/lookup_spec.rb +4 -4
- data/spec/unit/functions/match_spec.rb +2 -2
- data/spec/unit/functions/regsubst_spec.rb +1 -1
- data/spec/unit/functions/split_spec.rb +1 -1
- data/spec/unit/functions/unwrap_spec.rb +29 -0
- data/spec/unit/functions/versioncmp_spec.rb +1 -1
- data/spec/unit/functions4_spec.rb +8 -8
- data/spec/unit/indirector/facts/facter_spec.rb +1 -9
- data/spec/unit/indirector/rest_spec.rb +95 -9
- data/spec/unit/module_spec.rb +43 -7
- data/spec/unit/module_tool/applications/installer_spec.rb +10 -1
- data/spec/unit/module_tool/applications/unpacker_spec.rb +2 -1
- data/spec/unit/module_tool/applications/upgrader_spec.rb +8 -0
- data/spec/unit/module_tool/tar/mini_spec.rb +3 -3
- data/spec/unit/network/http/api/indirected_routes_spec.rb +49 -58
- data/spec/unit/network/http/api/master/v3_spec.rb +7 -4
- data/spec/unit/network/rights_spec.rb +1 -1
- data/spec/unit/parameter_spec.rb +11 -0
- data/spec/unit/parser/compiler_spec.rb +19 -33
- data/spec/unit/{appmgmt_spec.rb → parser/environment_compiler_spec.rb} +12 -1
- data/spec/unit/parser/functions/create_resources_spec.rb +76 -4
- data/spec/unit/parser/functions/require_spec.rb +2 -2
- data/spec/unit/parser/resource_spec.rb +21 -11
- data/spec/unit/parser/scope_spec.rb +1 -5
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1 -1
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +1 -1
- data/spec/unit/pops/loaders/loader_paths_spec.rb +1 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +63 -5
- data/spec/unit/pops/loaders/module_loaders_spec.rb +2 -2
- data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +27 -3
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +8 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +9 -0
- data/spec/unit/pops/puppet_stack_spec.rb +79 -0
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +37 -0
- data/spec/unit/pops/serialization/packer_spec.rb +153 -0
- data/spec/unit/pops/serialization/rgen_spec.rb +88 -0
- data/spec/unit/pops/serialization/serialization_spec.rb +228 -0
- data/spec/unit/pops/types/p_object_type_spec.rb +44 -2
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +42 -0
- data/spec/unit/pops/types/p_sensitive_type_spec.rb +139 -0
- data/spec/unit/pops/types/p_type_set_type_spec.rb +424 -0
- data/spec/unit/pops/types/ruby_generator_spec.rb +497 -181
- data/spec/unit/pops/types/type_calculator_spec.rb +10 -4
- data/spec/unit/pops/types/type_formatter_spec.rb +1 -1
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +2 -2
- data/spec/unit/pops/types/type_parser_spec.rb +1 -1
- data/spec/unit/pops/types/types_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +18 -1
- data/spec/unit/property_spec.rb +48 -11
- data/spec/unit/provider/group/windows_adsi_spec.rb +11 -1
- data/spec/unit/provider/package/dnf_spec.rb +1 -99
- data/spec/unit/provider/package/pacman_spec.rb +4 -4
- data/spec/unit/provider/package/pip_spec.rb +14 -0
- data/spec/unit/provider/package/pkg_spec.rb +6 -0
- data/spec/unit/provider/package/pkgdmg_spec.rb +0 -3
- data/spec/unit/provider/package/portage_spec.rb +64 -8
- data/spec/unit/provider/package/tdnf_spec.rb +18 -0
- data/spec/unit/provider/package/windows/package_spec.rb +4 -1
- data/spec/unit/provider/package/windows_spec.rb +8 -2
- data/spec/unit/provider/package/yum_spec.rb +6 -377
- data/spec/unit/provider/service/base_spec.rb +6 -0
- data/spec/unit/provider/service/debian_spec.rb +16 -7
- data/spec/unit/provider/service/gentoo_spec.rb +6 -0
- data/spec/unit/provider/service/init_spec.rb +7 -0
- data/spec/unit/provider/service/launchd_spec.rb +35 -4
- data/spec/unit/provider/service/openrc_spec.rb +6 -0
- data/spec/unit/provider/service/smf_spec.rb +31 -6
- data/spec/unit/provider/service/src_spec.rb +6 -0
- data/spec/unit/provider/service/systemd_spec.rb +70 -20
- data/spec/unit/provider/service/upstart_spec.rb +6 -0
- data/spec/unit/provider/user/aix_spec.rb +7 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +30 -1
- data/spec/unit/provider/user/windows_adsi_spec.rb +19 -0
- data/spec/unit/resource/capability_finder_spec.rb +51 -3
- data/spec/unit/resource/catalog_spec.rb +5 -0
- data/spec/unit/resource/type_spec.rb +2 -2
- data/spec/unit/resource_spec.rb +19 -0
- data/spec/unit/settings_spec.rb +13 -0
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +176 -10
- data/spec/unit/ssl/certificate_authority_spec.rb +63 -22
- data/spec/unit/ssl/host_spec.rb +1 -1
- data/spec/unit/ssl/oids_spec.rb +24 -21
- data/spec/unit/transaction/event_spec.rb +3 -1
- data/spec/unit/transaction/persistence_spec.rb +173 -0
- data/spec/unit/transaction/report_spec.rb +64 -1
- data/spec/unit/transaction/resource_harness_spec.rb +91 -0
- data/spec/unit/type/file/content_spec.rb +47 -15
- data/spec/unit/type/file_spec.rb +28 -0
- data/spec/unit/type/mount_spec.rb +5 -12
- data/spec/unit/type/yumrepo_spec.rb +1 -5
- data/spec/unit/type_spec.rb +32 -0
- data/spec/unit/util/command_line_spec.rb +11 -0
- data/spec/unit/util/execution_spec.rb +1 -1
- data/spec/unit/util/plist_spec.rb +16 -3
- data/spec/unit/util/storage_spec.rb +4 -1
- data/spec/unit/util/windows/adsi_spec.rb +23 -2
- data/spec/unit/util/windows/file_spec.rb +56 -1
- data/spec/unit/util/windows/sid_spec.rb +31 -7
- data/spec/unit/util/yaml_spec.rb +12 -0
- data/spec/unit/util_spec.rb +87 -20
- metadata +91 -48
- data/ext/puppetlisten/puppetlisten.rb +0 -77
- data/ext/puppetlisten/puppetrun.rb +0 -38
- data/lib/puppet/resource/type_collection_helper.rb +0 -7
- data/spec/unit/parser/functions/defined_spec.rb +0 -120
- data/spec/unit/resource/type_collection_helper_spec.rb +0 -24
@@ -17,7 +17,7 @@ module Validation
|
|
17
17
|
# validation configuration depending on the context/type of validation that should be performed (static, vs. runtime, etc.).
|
18
18
|
#
|
19
19
|
# This class is abstract and must be subclassed. The subclass must implement the methods
|
20
|
-
# {#label_provider} and {#checker}. It is also expected that the
|
20
|
+
# {#label_provider} and {#checker}. It is also expected that the subclass will override
|
21
21
|
# the severity_producer and configure the issues that should be reported as errors (i.e. if they should be ignored, produce
|
22
22
|
# a warning, or a deprecation warning).
|
23
23
|
#
|
@@ -384,12 +384,12 @@ module Validation
|
|
384
384
|
errors? || warnings?
|
385
385
|
end
|
386
386
|
|
387
|
-
# Returns the diagnosed errors in the order
|
387
|
+
# Returns the diagnosed errors in the order they were reported.
|
388
388
|
def errors
|
389
389
|
@diagnostics.select {|d| d.severity == :error }
|
390
390
|
end
|
391
391
|
|
392
|
-
# Returns the diagnosed warnings in the order
|
392
|
+
# Returns the diagnosed warnings in the order they were reported.
|
393
393
|
# (This includes :warning and :deprecation severity)
|
394
394
|
def warnings
|
395
395
|
@diagnostics.select {|d| d.severity == :warning || d.severity == :deprecation }
|
@@ -399,7 +399,7 @@ module Validation
|
|
399
399
|
@diagnostics.select {|d| d.severity != :ignore }
|
400
400
|
end
|
401
401
|
|
402
|
-
# Returns the ignored diagnostics in the order
|
402
|
+
# Returns the ignored diagnostics in the order they were reported (if reported at all)
|
403
403
|
def ignored
|
404
404
|
@diagnostics.select {|d| d.severity == :ignore }
|
405
405
|
end
|
@@ -310,7 +310,7 @@ class Checker4_0 < Evaluator::LiteralEvaluator
|
|
310
310
|
end
|
311
311
|
|
312
312
|
# Only used for function names, grammar should not be able to produce something faulty, but
|
313
|
-
# check anyway if model is created
|
313
|
+
# check anyway if model is created programmatically (it will fail in transformation to AST for sure).
|
314
314
|
def check_NamedAccessExpression(o)
|
315
315
|
name = o.right_expr
|
316
316
|
unless name.is_a? Model::QualifiedName
|
@@ -349,7 +349,7 @@ class Checker4_0 < Evaluator::LiteralEvaluator
|
|
349
349
|
# for 'class', 'define', and function
|
350
350
|
def check_NamedDefinition(o)
|
351
351
|
top(o.eContainer, o)
|
352
|
-
if o.name !~ Patterns::
|
352
|
+
if o.name !~ Patterns::CLASSREF_DECL
|
353
353
|
acceptor.accept(Issues::ILLEGAL_DEFINITION_NAME, o, {:name=>o.name})
|
354
354
|
end
|
355
355
|
internal_check_reserved_type_name(o, o.name)
|
@@ -358,6 +358,9 @@ class Checker4_0 < Evaluator::LiteralEvaluator
|
|
358
358
|
|
359
359
|
def check_TypeAlias(o)
|
360
360
|
top(o.eContainer, o)
|
361
|
+
if o.name !~ Patterns::CLASSREF_EXT_DECL
|
362
|
+
acceptor.accept(Issues::ILLEGAL_DEFINITION_NAME, o, {:name=>o.name})
|
363
|
+
end
|
361
364
|
internal_check_reserved_type_name(o, o.name)
|
362
365
|
internal_check_type_ref(o, o.type_expr)
|
363
366
|
end
|
data/lib/puppet/pops/visitor.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# A Visitor performs delegation to a given receiver based on the configuration of the Visitor.
|
2
2
|
# A new visitor is created with a given receiver, a method prefix, min, and max argument counts.
|
3
3
|
# e.g.
|
4
|
-
#
|
4
|
+
# visitor = Visitor.new(self, "visit_from", 1, 1)
|
5
5
|
# will make the visitor call "self.visit_from_CLASS(x)" where CLASS is resolved to the given
|
6
6
|
# objects class, or one of is ancestors, the first class for which there is an implementation of
|
7
7
|
# a method will be selected.
|
@@ -72,7 +72,7 @@ class Puppet::Pops::Visitor
|
|
72
72
|
end
|
73
73
|
|
74
74
|
# Visit an explicit receiver with 2 args
|
75
|
-
# (This is ~30% faster than calling
|
75
|
+
# (This is ~30% faster than calling the general method)
|
76
76
|
#
|
77
77
|
def visit_this_2(receiver, thing, arg1, arg2)
|
78
78
|
if method_name = @cache[thing.class]
|
data/lib/puppet/property.rb
CHANGED
@@ -98,6 +98,22 @@ class Puppet::Property < Puppet::Parameter
|
|
98
98
|
raise ArgumentError, "Supported values for Property#array_matching are 'first' and 'all'" unless [:first, :all].include?(value)
|
99
99
|
@array_matching = value
|
100
100
|
end
|
101
|
+
|
102
|
+
# Used to mark a type property as having or lacking idempotency (on purpose
|
103
|
+
# generally). This is used to avoid marking the property as a
|
104
|
+
# corrective_change when there is known idempotency issues with the property
|
105
|
+
# rendering a corrective_change flag as useless.
|
106
|
+
# @return [Boolean] true if the property is marked as idempotent
|
107
|
+
def idempotent
|
108
|
+
@idempotent.nil? ? @idempotent = true : @idempotent
|
109
|
+
end
|
110
|
+
|
111
|
+
# Attribute setter for the idempotent attribute.
|
112
|
+
# @param [bool] value boolean indicating if the property is idempotent.
|
113
|
+
# @see idempotent
|
114
|
+
def idempotent=(value)
|
115
|
+
@idempotent = value
|
116
|
+
end
|
101
117
|
end
|
102
118
|
|
103
119
|
# Looks up a value's name among valid values, to enable option lookup with result as a key.
|
@@ -228,18 +244,20 @@ class Puppet::Property < Puppet::Parameter
|
|
228
244
|
# * `:name` - the event_name
|
229
245
|
# * `:desired_value` - a.k.a _should_ or _wanted value_
|
230
246
|
# * `:property` - reference to this property
|
231
|
-
# * `:source_description` -
|
247
|
+
# * `:source_description` - The containment path of this property, indicating what resource this
|
248
|
+
# property is associated with and in what stage and class that resource
|
249
|
+
# was declared, e.g. "/Stage[main]/Myclass/File[/tmp/example]/ensure"
|
232
250
|
# * `:invalidate_refreshes` - if scheduled refreshes should be invalidated
|
251
|
+
# * `:redacted` - if the event will be redacted (due to this property being sensitive)
|
233
252
|
#
|
234
|
-
# @todo What is the intent of this method? What is the meaning of the :source_description passed in the
|
235
|
-
# options to the created event?
|
236
253
|
# @return [Puppet::Transaction::Event] the created event
|
237
254
|
# @see Puppet::Type#event
|
238
|
-
def event
|
239
|
-
attrs = { :name => event_name, :desired_value => should, :property => self, :source_description => path }
|
255
|
+
def event(options = {})
|
256
|
+
attrs = { :name => event_name, :desired_value => should, :property => self, :source_description => path }.merge(options)
|
240
257
|
if should and value = self.class.value_collection.match?(should)
|
241
258
|
attrs[:invalidate_refreshes] = true if value.invalidate_refreshes
|
242
259
|
end
|
260
|
+
attrs[:redacted] = @sensitive
|
243
261
|
resource.event attrs
|
244
262
|
end
|
245
263
|
|
@@ -324,6 +342,41 @@ class Puppet::Property < Puppet::Parameter
|
|
324
342
|
end
|
325
343
|
end
|
326
344
|
|
345
|
+
# This method tests if two values are insync? outside of the properties current
|
346
|
+
# should value. This works around the requirement for corrective_change analysis
|
347
|
+
# that requires two older values to be compared with the properties potentially
|
348
|
+
# custom insync? code.
|
349
|
+
#
|
350
|
+
# @param [Object] should the value it should be
|
351
|
+
# @param [Object] is the value it is
|
352
|
+
# @return [Boolean] whether or not the values are in sync or not
|
353
|
+
# @api private
|
354
|
+
def insync_values?(should, is)
|
355
|
+
# Here be dragons. We're setting the should value of a property purely just to
|
356
|
+
# call its insync? method, as it lacks a way to pass in a should.
|
357
|
+
# Unfortunately there isn't an API compatible way of avoiding this, as both should
|
358
|
+
# an insync? behaviours are part of the public API. Future API work should factor
|
359
|
+
# this kind of arbitrary comparisons into the API to remove this complexity. -ken
|
360
|
+
|
361
|
+
# Backup old should, set it to the new value, then call insync? on the property.
|
362
|
+
old_should = @should
|
363
|
+
|
364
|
+
begin
|
365
|
+
@should = should
|
366
|
+
insync?(is)
|
367
|
+
rescue => detail
|
368
|
+
# Certain operations may fail, but we don't want to fail the transaction if we can
|
369
|
+
# avoid it
|
370
|
+
Puppet.log_exception(detail, "Unknown failure comparing values #{should} and #{is} using insync? on type: #{self.resource.ref} property: #{self.name}", { :level => :info })
|
371
|
+
|
372
|
+
# Return nil, ie. unknown
|
373
|
+
nil
|
374
|
+
ensure
|
375
|
+
# Always restore old should
|
376
|
+
@should = old_should
|
377
|
+
end
|
378
|
+
end
|
379
|
+
|
327
380
|
# Checks if the given current and desired values are equal.
|
328
381
|
# This default implementation performs this check in a backwards compatible way where
|
329
382
|
# the equality of the two values is checked, and then the equality of current with desired
|
@@ -368,6 +421,12 @@ class Puppet::Property < Puppet::Parameter
|
|
368
421
|
self.class.array_matching == :all
|
369
422
|
end
|
370
423
|
|
424
|
+
# @return [Boolean] whether the property is marked as idempotent for the purposes
|
425
|
+
# of calculating corrective change.
|
426
|
+
def idempotent?
|
427
|
+
self.class.idempotent
|
428
|
+
end
|
429
|
+
|
371
430
|
# @return [Symbol] the name of the property as stated when the property was created.
|
372
431
|
# @note A property class (just like a parameter class) describes one specific property and
|
373
432
|
# can only be used once within one type's inheritance chain.
|
data/lib/puppet/provider.rb
CHANGED
@@ -505,7 +505,7 @@ class Puppet::Provider
|
|
505
505
|
# structure of the provider - this hash holds the current state property values of system entities
|
506
506
|
# as they are being discovered by querying or other operations (typically getters).
|
507
507
|
#
|
508
|
-
# @todo The use of a hash as a parameter needs a better
|
508
|
+
# @todo The use of a hash as a parameter needs a better explanation; why is this done? What is the intent?
|
509
509
|
# @param resource [Puppet::Resource, Hash] optional resource or hash
|
510
510
|
#
|
511
511
|
def initialize(resource = nil)
|
@@ -26,7 +26,7 @@ class Puppet::Provider::AixObject < Puppet::Provider
|
|
26
26
|
# Valid attributes to be managed by this provider.
|
27
27
|
# It is a list of hashes
|
28
28
|
# :aix_attr AIX command attribute name
|
29
|
-
# :puppet_prop Puppet
|
29
|
+
# :puppet_prop Puppet property name
|
30
30
|
# :to Optional. Method name that adapts puppet property to aix command value.
|
31
31
|
# :from Optional. Method to adapt aix command line value to puppet property. Optional
|
32
32
|
class << self
|
@@ -226,7 +226,7 @@ class Puppet::Provider::AixObject < Puppet::Provider
|
|
226
226
|
begin
|
227
227
|
output = execute(self.lscmd)
|
228
228
|
@objectinfo = self.parse_command_output(output)
|
229
|
-
# All
|
229
|
+
# All attributes without translation
|
230
230
|
@objectosinfo = self.parse_command_output(output, nil)
|
231
231
|
rescue Puppet::ExecutionFailure => detail
|
232
232
|
# Print error if needed. FIXME: Do not check the user here.
|
@@ -237,7 +237,7 @@ class Puppet::Provider::AixObject < Puppet::Provider
|
|
237
237
|
end
|
238
238
|
|
239
239
|
# Like getinfo, but it will not use the mapping to translate the keys and values.
|
240
|
-
# It might be
|
240
|
+
# It might be useful to retrieve some raw information.
|
241
241
|
def getosinfo(refresh = false)
|
242
242
|
if @objectosinfo.nil? or refresh == true
|
243
243
|
getinfo(refresh)
|
@@ -33,7 +33,7 @@ Puppet::Type.type(:group).provide :aix, :parent => Puppet::Provider::AixObject d
|
|
33
33
|
# Valid attributes to be managed by this provider.
|
34
34
|
# It is a list with of hash
|
35
35
|
# :aix_attr AIX command attribute name
|
36
|
-
# :puppet_prop Puppet
|
36
|
+
# :puppet_prop Puppet property name
|
37
37
|
# :to Method to adapt puppet property to aix command value. Optional.
|
38
38
|
# :from Method to adapt aix command value to puppet property. Optional
|
39
39
|
self.attribute_mapping = [
|
@@ -94,9 +94,9 @@ Puppet::Type.type(:group).provide :aix, :parent => Puppet::Provider::AixObject d
|
|
94
94
|
|
95
95
|
|
96
96
|
#--------------
|
97
|
-
# Overwrite get_arguments to add the attributes arguments
|
97
|
+
# Overwrite get_arguments to add the attributes' arguments
|
98
98
|
def get_arguments(key, value, mapping, objectinfo)
|
99
|
-
# In the case of attributes, return a list of key=
|
99
|
+
# In the case of attributes, return a list of key=value
|
100
100
|
if key == :attributes
|
101
101
|
raise Puppet::Error, "Attributes must be a list of pairs key=value on #{@resource.class.name}[#{@resource.name}]" \
|
102
102
|
unless value and value.is_a? Hash
|
@@ -106,7 +106,7 @@ Puppet::Type.type(:group).provide :aix, :parent => Puppet::Provider::AixObject d
|
|
106
106
|
end
|
107
107
|
|
108
108
|
def filter_attributes(hash)
|
109
|
-
# Return only not managed
|
109
|
+
# Return only not managed attributes.
|
110
110
|
hash.select {
|
111
111
|
|k,v| !self.class.attribute_mapping_from.include?(k) and
|
112
112
|
!self.class.attribute_ignore.include?(k)
|
@@ -141,7 +141,7 @@ Puppet::Type.type(:macauthorization).provide :macauthorization, :parent => Puppe
|
|
141
141
|
# first we re-read the right just to make sure we're in sync for
|
142
142
|
# values that weren't specified in the manifest. As we're supplying
|
143
143
|
# the whole plist when specifying the right it seems safest to be
|
144
|
-
# paranoid given the low cost of
|
144
|
+
# paranoid given the low cost of querying the db once more.
|
145
145
|
cmds = []
|
146
146
|
cmds << :security << "authorizationdb" << "read" << resource[:name]
|
147
147
|
output = execute(cmds, :failonfail => false, :combine => false)
|
@@ -133,13 +133,13 @@ Puppet::Type.type(:mcx).provide :mcxcontent, :parent => Puppet::Provider do
|
|
133
133
|
ds_type = name.split('/')[1]
|
134
134
|
unless ds_type
|
135
135
|
raise MCXContentProviderException,
|
136
|
-
"
|
136
|
+
"Could not parse ds_type from resource name '#{name}'. Specify with ds_type parameter."
|
137
137
|
end
|
138
138
|
# De-pluralize and downcase.
|
139
139
|
ds_type = ds_type.chop.downcase.to_sym
|
140
140
|
unless TypeMap.key? ds_type
|
141
141
|
raise MCXContentProviderException,
|
142
|
-
"
|
142
|
+
"Could not parse ds_type from resource name '#{name}'. Specify with ds_type parameter."
|
143
143
|
end
|
144
144
|
ds_type
|
145
145
|
end
|
@@ -61,7 +61,7 @@ Puppet::Type.type(:mount).provide(
|
|
61
61
|
ret[filesystem_index] = filesystem_stanza.join("\n") if filesystem_stanza
|
62
62
|
filesystem_stanza = Array(line)
|
63
63
|
filesystem_index = i
|
64
|
-
# Eat the
|
64
|
+
# Eat the preceding blank line
|
65
65
|
ret[i-1] = nil if i > 0 and ret[i-1] and ret[i-1].match(%r{^\s*$})
|
66
66
|
nil
|
67
67
|
elsif line.match(%r{^(\s*\*.*|\s*)$})
|
@@ -63,7 +63,7 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
|
|
63
63
|
def self.instances
|
64
64
|
# JJM Class method that provides an array of instance objects of this
|
65
65
|
# type.
|
66
|
-
# JJM: Properties are dependent on the Puppet::Type we're
|
66
|
+
# JJM: Properties are dependent on the Puppet::Type we're managing.
|
67
67
|
type_property_array = [:name] + @resource_type.validproperties
|
68
68
|
|
69
69
|
# Create a new instance of this Puppet::Type for each object present
|
@@ -126,7 +126,7 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
|
|
126
126
|
|
127
127
|
# NBK: need to read the existing password here as it's not actually
|
128
128
|
# stored in the user record. It is stored at a path that involves the
|
129
|
-
# UUID of the user record for non-Mobile local
|
129
|
+
# UUID of the user record for non-Mobile local accounts.
|
130
130
|
# Mobile Accounts are out of scope for this provider for now
|
131
131
|
attribute_hash[:password] = self.get_password(attribute_hash[:guid], attribute_hash[:name]) if @resource_type.validproperties.include?(:password) and Puppet.features.root?
|
132
132
|
attribute_hash
|
@@ -167,8 +167,8 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
|
|
167
167
|
|
168
168
|
command_vector = [ command(:dscl), "-plist", "." ]
|
169
169
|
|
170
|
-
# JJM: The actual action to perform.
|
171
|
-
# Common
|
170
|
+
# JJM: The actual action to perform. See "man dscl".
|
171
|
+
# Common actions: -create, -delete, -merge, -append, -passwd
|
172
172
|
command_vector << ds_action
|
173
173
|
# JJM: get_ds_path will spit back "Users" or "Groups",
|
174
174
|
# etc... Depending on the Puppet::Type of our self.
|
@@ -186,7 +186,7 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
|
|
186
186
|
# 10.7 uses salted SHA512 password hashes which are 128 characters plus
|
187
187
|
# an 8 character salt. Previous versions used a SHA1 hash padded with
|
188
188
|
# zeroes. If someone attempts to use a password hash that worked with
|
189
|
-
# a previous version of
|
189
|
+
# a previous version of OS X, we will fail early and warn them.
|
190
190
|
if password_hash.length != 136
|
191
191
|
fail("OS X 10.7 requires a Salted SHA512 hash password of 136 characters. \
|
192
192
|
Please check your password and try again.")
|
@@ -7,7 +7,7 @@
|
|
7
7
|
# and are easier to manage.
|
8
8
|
#
|
9
9
|
# Note: the 'apple' Provider checks for the package name
|
10
|
-
# in /L/Receipts. Since we possibly install multiple apps
|
10
|
+
# in /L/Receipts. Since we possibly install multiple apps from
|
11
11
|
# a single source, we treat the source .app.dmg file as the package name.
|
12
12
|
# As a result, we store installed .app.dmg file names
|
13
13
|
# in /var/db/.puppet_appdmg_installed_<name>
|
@@ -100,10 +100,10 @@ Puppet::Type.type(:package).provide(:appdmg, :parent => Puppet::Provider::Packag
|
|
100
100
|
def install
|
101
101
|
source = nil
|
102
102
|
unless source = @resource[:source]
|
103
|
-
self.fail "Mac OS X PKG
|
103
|
+
self.fail "Mac OS X PKG DMGs must specify a package source."
|
104
104
|
end
|
105
105
|
unless name = @resource[:name]
|
106
|
-
self.fail "Mac OS X PKG
|
106
|
+
self.fail "Mac OS X PKG DMGs must specify a package name."
|
107
107
|
end
|
108
108
|
self.class.installpkgdmg(source,name)
|
109
109
|
end
|
@@ -2,7 +2,7 @@ require 'puppet/provider/package'
|
|
2
2
|
|
3
3
|
# OS X Packaging sucks. We can install packages, but that's about it.
|
4
4
|
Puppet::Type.type(:package).provide :apple, :parent => Puppet::Provider::Package do
|
5
|
-
desc "Package management based on OS X's
|
5
|
+
desc "Package management based on OS X's built-in packaging system. This is
|
6
6
|
essentially the simplest and least functional package system in existence --
|
7
7
|
it only supports installation; no deletion or upgrades. The provider will
|
8
8
|
automatically add the `.pkg` extension, so leave that off when specifying
|
@@ -30,6 +30,11 @@ Puppet::Type.type(:package).provide :dnf, :parent => :yum do
|
|
30
30
|
|
31
31
|
defaultfor :operatingsystem => :fedora, :operatingsystemmajrelease => ['22', '23', '24']
|
32
32
|
|
33
|
+
def self.update_command
|
34
|
+
# In DNF, update is deprecated for upgrade
|
35
|
+
'upgrade'
|
36
|
+
end
|
37
|
+
|
33
38
|
# The value to pass to DNF as its error output level.
|
34
39
|
# DNF differs from Yum slightly with regards to error outputting.
|
35
40
|
#
|
@@ -114,7 +114,7 @@ Puppet::Type.type(:package).provide :nim, :parent => :aix, :source => :aix do
|
|
114
114
|
# Now we know if the package type is RPM or not, and we can adjust our
|
115
115
|
# `pkg` string for passing to the install command accordingly.
|
116
116
|
if (package_type == :rpm)
|
117
|
-
#
|
117
|
+
# RPMs expect a hyphen between the package name and the version number
|
118
118
|
version_separator = "-"
|
119
119
|
else
|
120
120
|
# installp/BFF packages expect a space between the package name and the
|
@@ -36,7 +36,7 @@ Puppet::Type.type(:package).provide :pacman, :parent => Puppet::Provider::Packag
|
|
36
36
|
end
|
37
37
|
|
38
38
|
# Install a package using 'pacman', or 'yaourt' if available.
|
39
|
-
# Installs quietly, without confirmation or
|
39
|
+
# Installs quietly, without confirmation or progress bar, updates package
|
40
40
|
# list from servers defined in pacman.conf.
|
41
41
|
def install
|
42
42
|
if @resource[:source]
|
@@ -163,7 +163,7 @@ Puppet::Type.type(:package).provide :pacman, :parent => Puppet::Provider::Packag
|
|
163
163
|
end
|
164
164
|
end
|
165
165
|
|
166
|
-
#
|
166
|
+
# Queries information for a package or package group
|
167
167
|
def query
|
168
168
|
installed_packages = self.class.get_installed_packages
|
169
169
|
resource_name = @resource[:name]
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Puppet package provider for Python's `pip` package management frontend.
|
2
|
-
# <http://pip.
|
2
|
+
# <http://pip.pypa.io/>
|
3
3
|
|
4
4
|
require 'puppet/provider/package'
|
5
5
|
require 'xmlrpc/client'
|
@@ -153,8 +153,10 @@ Puppet::Type.type(:package).provide :pip,
|
|
153
153
|
process.collect do |line|
|
154
154
|
# PIP OUTPUT: Could not find a version that satisfies the requirement Django==versionplease (from versions: 1.1.3, 1.8rc1)
|
155
155
|
if line =~ /from versions: /
|
156
|
-
textAfterLastMatch = $'
|
157
|
-
versionList = textAfterLastMatch.
|
156
|
+
textAfterLastMatch = $'.chomp(")\n")
|
157
|
+
versionList = textAfterLastMatch.split(', ').sort do |x,y|
|
158
|
+
Puppet::Util::Package.versioncmp(x, y)
|
159
|
+
end
|
158
160
|
return versionList.last
|
159
161
|
end
|
160
162
|
end
|
@@ -1,16 +1,16 @@
|
|
1
1
|
require 'puppet/provider/package'
|
2
2
|
|
3
3
|
Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package do
|
4
|
-
desc "OpenSolaris image packaging system. See pkg(5) for more information"
|
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
|
-
# A few notes before we start
|
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
9
|
# The latest one is what you get when you update package.
|
10
10
|
# To make things more interesting, pkg version just returns a sha sum.
|
11
11
|
# dvd: pkg version => 052adf36c3f4
|
12
12
|
# updated: pkg version => 630e1ffc7a19
|
13
|
-
# Thankfully,
|
13
|
+
# Thankfully, Solaris has not changed the commands to be used.
|
14
14
|
# TODO: We still have to allow packages to specify a preferred publisher.
|
15
15
|
|
16
16
|
has_feature :versionable
|
@@ -29,11 +29,11 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
|
|
29
29
|
pkg(:list, '-Hv').split("\n").map{|l| new(parse_line(l))}
|
30
30
|
end
|
31
31
|
|
32
|
-
# The IFO flag field is just what it names, the first field can have
|
32
|
+
# The IFO flag field is just what it names, the first field can have either
|
33
33
|
# i_nstalled or -, and second field f_rozen or -, and last
|
34
34
|
# o_bsolate or r_rename or -
|
35
35
|
# so this checks if the installed field is present, and also verifies that
|
36
|
-
# if not the field is -, else we
|
36
|
+
# if not the field is -, else we don't know what we are doing and exit with
|
37
37
|
# out doing more damage.
|
38
38
|
def self.ifo_flag(flags)
|
39
39
|
(
|