puppet 3.1.1 → 3.2.0.rc1
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.
- data/CONTRIBUTING.md +2 -2
- data/Gemfile +32 -19
- data/README_DEVELOPER.md +332 -14
- data/Rakefile +9 -5
- data/ext/build_defaults.yaml +2 -3
- data/ext/debian/changelog.erb +6 -0
- data/ext/debian/control +6 -6
- data/ext/envpuppet +4 -4
- data/ext/project_data.yaml +1 -0
- data/ext/puppet-nm-dispatcher +13 -0
- data/ext/redhat/puppet.spec.erb +17 -0
- data/ext/suse/client.init +1 -1
- data/ext/systemd/puppetagent.service +2 -2
- data/ext/systemd/puppetmaster.service +2 -2
- data/lib/hiera/scope.rb +29 -11
- data/lib/hiera_puppet.rb +1 -3
- data/lib/puppet/agent.rb +3 -3
- data/lib/puppet/application.rb +2 -2
- data/lib/puppet/application/agent.rb +27 -12
- data/lib/puppet/application/apply.rb +11 -1
- data/lib/puppet/application/describe.rb +1 -1
- data/lib/puppet/application/doc.rb +13 -9
- data/lib/puppet/application/filebucket.rb +0 -1
- data/lib/puppet/application/kick.rb +1 -0
- data/lib/puppet/application/master.rb +16 -8
- data/lib/puppet/daemon.rb +19 -64
- data/lib/puppet/defaults.rb +61 -5
- data/lib/puppet/error.rb +15 -4
- data/lib/puppet/external/nagios/grammar.ry +1 -1
- data/lib/puppet/external/nagios/makefile +1 -1
- data/lib/puppet/external/nagios/parser.rb +185 -618
- data/lib/puppet/external/pson/pure/parser.rb +47 -1
- data/lib/puppet/face/certificate.rb +3 -3
- data/lib/puppet/face/module.rb +1 -1
- data/lib/puppet/face/module/changes.rb +3 -1
- data/lib/puppet/face/module/uninstall.rb +1 -1
- data/lib/puppet/face/node/clean.rb +5 -5
- data/lib/puppet/feature/base.rb +3 -1
- data/lib/puppet/feature/libuser.rb +8 -0
- data/lib/puppet/file_serving/fileset.rb +9 -1
- data/lib/puppet/forge.rb +28 -5
- data/lib/puppet/forge/errors.rb +34 -0
- data/lib/puppet/forge/repository.rb +1 -1
- data/lib/puppet/indirector.rb +4 -1
- data/lib/puppet/indirector/catalog/compiler.rb +37 -30
- data/lib/puppet/indirector/facts/inventory_active_record.rb +1 -0
- data/lib/puppet/indirector/indirection.rb +28 -15
- data/lib/puppet/indirector/rest.rb +18 -10
- data/lib/puppet/interface.rb +11 -4
- data/lib/puppet/interface/action.rb +1 -3
- data/lib/puppet/interface/action_builder.rb +0 -3
- data/lib/puppet/interface/action_manager.rb +0 -3
- data/lib/puppet/interface/face_collection.rb +0 -2
- data/lib/puppet/interface/option.rb +0 -2
- data/lib/puppet/interface/option_builder.rb +0 -2
- data/lib/puppet/interface/option_manager.rb +0 -2
- data/lib/puppet/metatype/manager.rb +1 -1
- data/lib/puppet/module_tool.rb +1 -0
- data/lib/puppet/module_tool/applications/application.rb +0 -3
- data/lib/puppet/module_tool/applications/builder.rb +8 -20
- data/lib/puppet/module_tool/applications/checksummer.rb +1 -1
- data/lib/puppet/module_tool/applications/installer.rb +1 -0
- data/lib/puppet/module_tool/applications/unpacker.rb +3 -11
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/errors/installer.rb +18 -1
- data/lib/puppet/module_tool/modulefile.rb +2 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/Modulefile.erb +1 -1
- data/lib/puppet/module_tool/tar.rb +17 -0
- data/lib/puppet/module_tool/tar/gnu.rb +9 -0
- data/lib/puppet/module_tool/tar/mini.rb +39 -0
- data/lib/puppet/module_tool/tar/solaris.rb +5 -0
- data/lib/puppet/network/http.rb +1 -0
- data/lib/puppet/network/http/connection.rb +9 -23
- data/lib/puppet/network/http/handler.rb +38 -7
- data/lib/puppet/network/http/rack/rest.rb +14 -3
- data/lib/puppet/network/http/webrick.rb +3 -1
- data/lib/puppet/network/http/webrick/rest.rb +11 -2
- data/lib/puppet/node/environment.rb +3 -1
- data/lib/puppet/parameter.rb +32 -29
- data/lib/puppet/parameter/package_options.rb +1 -1
- data/lib/puppet/parameter/path.rb +1 -1
- data/lib/puppet/parameter/value.rb +1 -1
- data/lib/puppet/parameter/value_collection.rb +7 -3
- data/lib/puppet/parser/ast.rb +3 -1
- data/lib/puppet/parser/ast/arithmetic_operator.rb +56 -12
- data/lib/puppet/parser/ast/astarray.rb +1 -1
- data/lib/puppet/parser/ast/block_expression.rb +41 -0
- data/lib/puppet/parser/ast/function.rb +13 -2
- data/lib/puppet/parser/ast/lambda.rb +107 -0
- data/lib/puppet/parser/ast/leaf.rb +1 -2
- data/lib/puppet/parser/ast/method_call.rb +77 -0
- data/lib/puppet/parser/ast/vardef.rb +7 -0
- data/lib/puppet/parser/compiler.rb +27 -16
- data/lib/puppet/parser/e_parser_adapter.rb +120 -0
- data/lib/puppet/parser/files.rb +7 -6
- data/lib/puppet/parser/functions.rb +10 -8
- data/lib/puppet/parser/functions/collect.rb +43 -0
- data/lib/puppet/parser/functions/each.rb +96 -0
- data/lib/puppet/parser/functions/foreach.rb +96 -0
- data/lib/puppet/parser/functions/fqdn_rand.rb +2 -2
- data/lib/puppet/parser/functions/hiera.rb +20 -2
- data/lib/puppet/parser/functions/hiera_array.rb +21 -2
- data/lib/puppet/parser/functions/hiera_hash.rb +23 -2
- data/lib/puppet/parser/functions/hiera_include.rb +33 -2
- data/lib/puppet/parser/functions/inline_template.rb +4 -4
- data/lib/puppet/parser/functions/reduce.rb +74 -0
- data/lib/puppet/parser/functions/reject.rb +46 -0
- data/lib/puppet/parser/functions/select.rb +46 -0
- data/lib/puppet/parser/functions/slice.rb +96 -0
- data/lib/puppet/parser/functions/template.rb +2 -2
- data/lib/puppet/parser/grammar.ra +7 -4
- data/lib/puppet/parser/lexer.rb +10 -0
- data/lib/puppet/parser/methods.rb +69 -0
- data/lib/puppet/parser/parser.rb +855 -808
- data/lib/puppet/parser/parser_factory.rb +62 -0
- data/lib/puppet/parser/parser_support.rb +8 -2
- data/lib/puppet/parser/scope.rb +153 -47
- data/lib/puppet/parser/templatewrapper.rb +28 -21
- data/lib/puppet/parser/type_loader.rb +3 -1
- data/lib/puppet/pops.rb +40 -0
- data/lib/puppet/pops/adaptable.rb +190 -0
- data/lib/puppet/pops/adapters.rb +65 -0
- data/lib/puppet/pops/containment.rb +37 -0
- data/lib/puppet/pops/issues.rb +258 -0
- data/lib/puppet/pops/label_provider.rb +71 -0
- data/lib/puppet/pops/model/ast_transformer.rb +636 -0
- data/lib/puppet/pops/model/ast_tree_dumper.rb +378 -0
- data/lib/puppet/pops/model/factory.rb +804 -0
- data/lib/puppet/pops/model/model.rb +567 -0
- data/lib/puppet/pops/model/model_label_provider.rb +75 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +352 -0
- data/lib/puppet/pops/model/tree_dumper.rb +59 -0
- data/lib/puppet/pops/parser/egrammar.ra +723 -0
- data/lib/puppet/pops/parser/eparser.rb +2300 -0
- data/lib/puppet/pops/parser/grammar.ra +746 -0
- data/lib/puppet/pops/parser/lexer.rb +842 -0
- data/lib/puppet/pops/parser/makefile +13 -0
- data/lib/puppet/pops/parser/parser_support.rb +203 -0
- data/lib/puppet/pops/patterns.rb +35 -0
- data/lib/puppet/pops/utils.rb +104 -0
- data/lib/puppet/pops/validation.rb +297 -0
- data/lib/puppet/pops/validation/checker3_1.rb +551 -0
- data/lib/puppet/pops/validation/validator_factory_3_1.rb +41 -0
- data/lib/puppet/pops/visitable.rb +6 -0
- data/lib/puppet/pops/visitor.rb +50 -0
- data/lib/puppet/property.rb +37 -28
- data/lib/puppet/property/ensure.rb +2 -2
- data/lib/puppet/property/ordered_list.rb +1 -1
- data/lib/puppet/provider.rb +26 -30
- data/lib/puppet/provider/aixobject.rb +45 -44
- data/lib/puppet/provider/augeas/augeas.rb +0 -1
- data/lib/puppet/provider/confiner.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +107 -67
- data/lib/puppet/provider/group/groupadd.rb +59 -3
- data/lib/puppet/provider/interface/cisco.rb +4 -4
- data/lib/puppet/provider/mount/parsed.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +22 -6
- data/lib/puppet/provider/nameservice/pw.rb +1 -1
- data/lib/puppet/provider/package/aix.rb +28 -4
- data/lib/puppet/provider/package/gem.rb +0 -2
- data/lib/puppet/provider/package/macports.rb +1 -1
- data/lib/puppet/provider/package/nim.rb +249 -4
- data/lib/puppet/provider/package/opkg.rb +77 -0
- data/lib/puppet/provider/package/pacman.rb +2 -2
- data/lib/puppet/provider/package/rpm.rb +30 -16
- data/lib/puppet/provider/package/yum.rb +3 -3
- data/lib/puppet/provider/parsedfile.rb +80 -3
- data/lib/puppet/provider/selmodule/semodule.rb +2 -2
- data/lib/puppet/provider/service/debian.rb +0 -4
- data/lib/puppet/provider/service/freebsd.rb +2 -2
- data/lib/puppet/provider/service/gentoo.rb +0 -9
- data/lib/puppet/provider/service/init.rb +27 -2
- data/lib/puppet/provider/service/launchd.rb +1 -1
- data/lib/puppet/provider/service/openwrt.rb +36 -0
- data/lib/puppet/provider/service/redhat.rb +0 -9
- data/lib/puppet/provider/service/src.rb +38 -4
- data/lib/puppet/provider/service/systemd.rb +2 -2
- data/lib/puppet/provider/service/upstart.rb +1 -8
- data/lib/puppet/provider/user/aix.rb +4 -10
- data/lib/puppet/provider/user/pw.rb +6 -10
- data/lib/puppet/provider/user/useradd.rb +129 -31
- data/lib/puppet/provider/vlan/cisco.rb +4 -4
- data/lib/puppet/reference/function.rb +2 -2
- data/lib/puppet/reference/indirection.rb +46 -5
- data/lib/puppet/reference/metaparameter.rb +2 -2
- data/lib/puppet/reports.rb +5 -5
- data/lib/puppet/reports/rrdgraph.rb +4 -4
- data/lib/puppet/reports/tagmail.rb +1 -1
- data/lib/puppet/resource.rb +1 -1
- data/lib/puppet/resource/type.rb +13 -11
- data/lib/puppet/scheduler.rb +16 -0
- data/lib/puppet/scheduler/job.rb +53 -0
- data/lib/puppet/scheduler/scheduler.rb +45 -0
- data/lib/puppet/scheduler/splay_job.rb +32 -0
- data/lib/puppet/scheduler/timer.rb +13 -0
- data/lib/puppet/settings/base_setting.rb +1 -1
- data/lib/puppet/simple_graph.rb +4 -4
- data/lib/puppet/ssl/base.rb +12 -2
- data/lib/puppet/ssl/certificate.rb +4 -1
- data/lib/puppet/ssl/certificate_request.rb +4 -1
- data/lib/puppet/ssl/certificate_revocation_list.rb +4 -1
- data/lib/puppet/ssl/configuration.rb +32 -0
- data/lib/puppet/ssl/host.rb +18 -21
- data/lib/puppet/ssl/key.rb +4 -1
- data/lib/puppet/ssl/validator.rb +116 -0
- data/lib/puppet/transaction.rb +1 -1
- data/lib/puppet/transaction/event.rb +3 -10
- data/lib/puppet/transaction/event_manager.rb +8 -1
- data/lib/puppet/transaction/report.rb +17 -16
- data/lib/puppet/type.rb +77 -69
- data/lib/puppet/type/cron.rb +20 -8
- data/lib/puppet/type/exec.rb +9 -3
- data/lib/puppet/type/file.rb +95 -21
- data/lib/puppet/type/file/content.rb +1 -1
- data/lib/puppet/type/file/mode.rb +7 -1
- data/lib/puppet/type/file/source.rb +2 -2
- data/lib/puppet/type/group.rb +11 -0
- data/lib/puppet/type/scheduled_task.rb +5 -1
- data/lib/puppet/type/service.rb +1 -1
- data/lib/puppet/type/ssh_authorized_key.rb +2 -2
- data/lib/puppet/type/user.rb +24 -6
- data/lib/puppet/util.rb +12 -2
- data/lib/puppet/util/classgen.rb +4 -4
- data/lib/puppet/util/colors.rb +55 -0
- data/lib/puppet/util/command_line/trollop.rb +4 -4
- data/lib/puppet/util/errors.rb +39 -3
- data/lib/puppet/util/fileparsing.rb +5 -0
- data/lib/puppet/util/filetype.rb +11 -9
- data/lib/puppet/util/instrumentation/instrumentable.rb +2 -2
- data/lib/puppet/util/libuser.conf +15 -0
- data/lib/puppet/util/libuser.rb +12 -0
- data/lib/puppet/util/monkey_patches.rb +48 -0
- data/lib/puppet/util/network_device.rb +1 -1
- data/lib/puppet/util/network_device/base.rb +2 -2
- data/lib/puppet/util/network_device/cisco/device.rb +29 -19
- data/lib/puppet/util/network_device/config.rb +5 -2
- data/lib/puppet/util/network_device/ipcalc.rb +1 -1
- data/lib/puppet/util/network_device/transport/ssh.rb +4 -3
- data/lib/puppet/util/network_device/transport/telnet.rb +4 -2
- data/lib/puppet/util/plugins.rb +4 -4
- data/lib/puppet/util/posix.rb +1 -1
- data/lib/puppet/util/profiler.rb +28 -0
- data/lib/puppet/util/profiler/logging.rb +47 -0
- data/lib/puppet/util/profiler/none.rb +8 -0
- data/lib/puppet/util/profiler/object_counts.rb +17 -0
- data/lib/puppet/util/profiler/wall_clock.rb +34 -0
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/rdoc/parser.rb +5 -5
- data/lib/puppet/util/ssl.rb +38 -0
- data/lib/puppet/util/subclass_loader.rb +1 -5
- data/lib/puppet/util/windows.rb +1 -0
- data/lib/puppet/util/windows/process.rb +3 -0
- data/lib/puppet/util/windows/root_certs.rb +86 -0
- data/lib/puppet/util/windows/security.rb +1 -0
- data/lib/puppet/version.rb +1 -1
- data/spec/fixtures/integration/provider/cron/crontab/create_normal_entry +19 -0
- data/spec/fixtures/integration/provider/cron/crontab/create_special_entry +18 -0
- data/spec/fixtures/integration/provider/cron/crontab/crontab_user1 +15 -0
- data/spec/fixtures/integration/provider/cron/crontab/crontab_user2 +4 -0
- data/spec/fixtures/integration/provider/cron/crontab/modify_entry +13 -0
- data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input1 +15 -0
- data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input2 +6 -0
- data/spec/fixtures/integration/provider/cron/crontab/remove_named_resource +12 -0
- data/spec/fixtures/integration/provider/cron/crontab/remove_unnamed_resource +14 -0
- data/spec/fixtures/unit/pops/parser/lexer/aliastest.pp +16 -0
- data/spec/fixtures/unit/pops/parser/lexer/append.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +14 -0
- data/spec/fixtures/unit/pops/parser/lexer/arithmetic_expression.pp +8 -0
- data/spec/fixtures/unit/pops/parser/lexer/arraytrailingcomma.pp +3 -0
- data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +65 -0
- data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +15 -0
- data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +17 -0
- data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/collection.pp +10 -0
- data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +8 -0
- data/spec/fixtures/unit/pops/parser/lexer/collection_within_virtual_definitions.pp +20 -0
- data/spec/fixtures/unit/pops/parser/lexer/componentmetaparams.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +8 -0
- data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +23 -0
- data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +17 -0
- data/spec/fixtures/unit/pops/parser/lexer/emptyclass.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/emptyexec.pp +3 -0
- data/spec/fixtures/unit/pops/parser/lexer/emptyifelse.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/falsevalues.pp +3 -0
- data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/fqdefinition.pp +5 -0
- data/spec/fixtures/unit/pops/parser/lexer/fqparents.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/funccomma.pp +5 -0
- data/spec/fixtures/unit/pops/parser/lexer/hash.pp +33 -0
- data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +12 -0
- data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +15 -0
- data/spec/fixtures/unit/pops/parser/lexer/multilinecomments.pp +10 -0
- data/spec/fixtures/unit/pops/parser/lexer/multipleclass.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +7 -0
- data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +13 -0
- data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/scopetest.pp +13 -0
- data/spec/fixtures/unit/pops/parser/lexer/selectorvalues.pp +49 -0
- data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +5 -0
- data/spec/fixtures/unit/pops/parser/lexer/simpleselector.pp +38 -0
- data/spec/fixtures/unit/pops/parser/lexer/singleary.pp +19 -0
- data/spec/fixtures/unit/pops/parser/lexer/singlequote.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/singleselector.pp +22 -0
- data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/tag.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/tagged.pp +35 -0
- data/spec/fixtures/unit/pops/parser/lexer/virtualresources.pp +14 -0
- data/spec/fixtures/unit/provider/cron/crontab/single_line.yaml +4 -4
- data/spec/fixtures/unit/provider/cron/crontab/vixie_header.txt +3 -0
- data/spec/fixtures/unit/provider/cron/parsed/managed +6 -0
- data/spec/fixtures/unit/provider/cron/parsed/simple +9 -0
- data/spec/fixtures/unit/provider/parsedfile/simple.txt +4 -0
- data/spec/fixtures/unit/provider/service/systemd/list_units +18 -0
- data/spec/integration/parser/collector_spec.rb +1 -1
- data/spec/integration/parser/compiler_spec.rb +252 -227
- data/spec/integration/parser/parser_spec.rb +171 -53
- data/spec/integration/parser/scope_spec.rb +1 -1
- data/spec/integration/provider/cron/crontab_spec.rb +187 -0
- data/spec/integration/provider/service/systemd_spec.rb +20 -0
- data/spec/integration/type/file_spec.rb +21 -21
- data/spec/integration/type/package_spec.rb +1 -1
- data/spec/lib/puppet_spec/database.rb +2 -5
- data/spec/spec_helper.rb +6 -1
- data/spec/unit/application/apply_spec.rb +16 -1
- data/spec/unit/application/describe_spec.rb +1 -1
- data/spec/unit/application/doc_spec.rb +55 -32
- data/spec/unit/application/kick_spec.rb +8 -6
- data/spec/unit/application/master_spec.rb +4 -4
- data/spec/unit/daemon_spec.rb +1 -1
- data/spec/unit/forge/errors_spec.rb +40 -0
- data/spec/unit/forge/repository_spec.rb +11 -1
- data/spec/unit/forge_spec.rb +13 -3
- data/spec/unit/hiera/backend/puppet_backend_spec.rb +1 -0
- data/spec/unit/hiera/scope_spec.rb +48 -25
- data/spec/unit/indirector/catalog/active_record_spec.rb +6 -3
- data/spec/unit/indirector/catalog/compiler_spec.rb +3 -28
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +1 -1
- data/spec/unit/indirector/facts/inventory_active_record_spec.rb +154 -150
- data/spec/unit/indirector/indirection_spec.rb +5 -0
- data/spec/unit/indirector/resource/active_record_spec.rb +5 -22
- data/spec/unit/indirector_spec.rb +7 -1
- data/spec/unit/interface/action_builder_spec.rb +1 -1
- data/spec/unit/interface/action_manager_spec.rb +0 -2
- data/spec/unit/interface/action_spec.rb +1 -1
- data/spec/unit/interface/documentation_spec.rb +0 -2
- data/spec/unit/interface/face_collection_spec.rb +1 -1
- data/spec/unit/interface/option_builder_spec.rb +1 -1
- data/spec/unit/interface/option_spec.rb +0 -1
- data/spec/unit/module_spec.rb +17 -19
- data/spec/unit/module_tool/application_spec.rb +1 -3
- data/spec/unit/module_tool/applications/builder_spec.rb +38 -0
- data/spec/unit/module_tool/applications/checksummer_spec.rb +134 -0
- data/spec/unit/module_tool/applications/installer_spec.rb +71 -91
- data/spec/unit/module_tool/applications/searcher_spec.rb +1 -3
- data/spec/unit/module_tool/applications/uninstaller_spec.rb +18 -26
- data/spec/unit/module_tool/applications/unpacker_spec.rb +19 -52
- data/spec/unit/module_tool/tar/gnu_spec.rb +19 -0
- data/spec/unit/module_tool/tar/mini_spec.rb +59 -0
- data/spec/unit/module_tool/tar/solaris_spec.rb +19 -0
- data/spec/unit/network/http/connection_spec.rb +17 -2
- data/spec/unit/network/http/handler_spec.rb +195 -167
- data/spec/unit/network/http/rack/rest_spec.rb +26 -4
- data/spec/unit/network/http/webrick/rest_spec.rb +28 -1
- data/spec/unit/network/http/webrick_spec.rb +12 -3
- data/spec/unit/node/environment_spec.rb +421 -404
- data/spec/unit/parser/ast/arithmetic_operator_spec.rb +98 -2
- data/spec/unit/parser/collector_spec.rb +4 -4
- data/spec/unit/parser/compiler_spec.rb +13 -13
- data/spec/unit/parser/eparser_adapter_spec.rb +407 -0
- data/spec/unit/parser/functions/extlookup_spec.rb +20 -17
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +5 -0
- data/spec/unit/parser/functions/hiera_include_spec.rb +0 -2
- data/spec/unit/parser/functions/hiera_spec.rb +0 -2
- data/spec/unit/parser/functions_spec.rb +27 -15
- data/spec/unit/parser/methods/collect_spec.rb +110 -0
- data/spec/unit/parser/methods/each_spec.rb +91 -0
- data/spec/unit/parser/methods/foreach_spec.rb +91 -0
- data/spec/unit/parser/methods/reduce_spec.rb +67 -0
- data/spec/unit/parser/methods/reject_spec.rb +73 -0
- data/spec/unit/parser/methods/select_spec.rb +79 -0
- data/spec/unit/parser/methods/shared.rb +61 -0
- data/spec/unit/parser/methods/slice_spec.rb +97 -0
- data/spec/unit/parser/parser_spec.rb +2 -2
- data/spec/unit/parser/scope_spec.rb +39 -16
- data/spec/unit/parser/templatewrapper_spec.rb +6 -5
- data/spec/unit/parser/type_loader_spec.rb +191 -165
- data/spec/unit/pops/adaptable_spec.rb +143 -0
- data/spec/unit/pops/containment_spec.rb +25 -0
- data/spec/unit/pops/factory_rspec_helper.rb +77 -0
- data/spec/unit/pops/factory_spec.rb +329 -0
- data/spec/unit/pops/issues_spec.rb +26 -0
- data/spec/unit/pops/label_provider_spec.rb +42 -0
- data/spec/unit/pops/model/ast_transformer_spec.rb +65 -0
- data/spec/unit/pops/model/model_spec.rb +37 -0
- data/spec/unit/pops/parser/lexer_spec.rb +884 -0
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +248 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +93 -0
- data/spec/unit/pops/parser/parse_conditionals_spec.rb +159 -0
- data/spec/unit/pops/parser/parse_containers_spec.rb +175 -0
- data/spec/unit/pops/parser/parse_resource_spec.rb +228 -0
- data/spec/unit/pops/parser/parser_rspec_helper.rb +11 -0
- data/spec/unit/pops/parser/parser_spec.rb +15 -0
- data/spec/unit/pops/parser/rgen_sanitycheck_spec.rb +16 -0
- data/spec/unit/pops/transformer/transform_basic_expressions_spec.rb +243 -0
- data/spec/unit/pops/transformer/transform_calls_spec.rb +80 -0
- data/spec/unit/pops/transformer/transform_conditionals_spec.rb +132 -0
- data/spec/unit/pops/transformer/transform_containers_spec.rb +182 -0
- data/spec/unit/pops/transformer/transform_resource_spec.rb +185 -0
- data/spec/unit/pops/transformer/transformer_rspec_helper.rb +27 -0
- data/spec/unit/pops/visitor_spec.rb +94 -0
- data/spec/unit/property_spec.rb +11 -0
- data/spec/unit/provider/augeas/augeas_spec.rb +3 -0
- data/spec/unit/provider/cron/crontab_spec.rb +97 -7
- data/spec/unit/provider/cron/parsed_spec.rb +325 -0
- data/spec/unit/provider/exec/posix_spec.rb +1 -1
- data/spec/unit/provider/group/groupadd_spec.rb +33 -3
- data/spec/unit/provider/group/pw_spec.rb +5 -5
- data/spec/unit/provider/nameservice_spec.rb +304 -0
- data/spec/unit/provider/package/aix_spec.rb +53 -11
- data/spec/unit/provider/package/aptrpm_spec.rb +6 -0
- data/spec/unit/provider/package/gem_spec.rb +6 -11
- data/spec/unit/provider/package/nim_spec.rb +216 -7
- data/spec/unit/provider/package/opkg_spec.rb +180 -0
- data/spec/unit/provider/package/rpm_spec.rb +149 -3
- data/spec/unit/provider/package/yum_spec.rb +6 -5
- data/spec/unit/provider/parsedfile_spec.rb +122 -28
- data/spec/unit/provider/service/freebsd_spec.rb +18 -0
- data/spec/unit/provider/service/init_spec.rb +108 -87
- data/spec/unit/provider/service/launchd_spec.rb +2 -2
- data/spec/unit/provider/service/openwrt_spec.rb +109 -0
- data/spec/unit/provider/service/src_spec.rb +117 -41
- data/spec/unit/provider/service/systemd_spec.rb +125 -17
- data/spec/unit/provider/service/upstart_spec.rb +1 -1
- data/spec/unit/provider/user/aix_spec.rb +42 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +1 -0
- data/spec/unit/provider/user/pw_spec.rb +24 -12
- data/spec/unit/provider/user/user_role_add_spec.rb +1 -1
- data/spec/unit/provider/user/useradd_spec.rb +179 -15
- data/spec/unit/resource/type_spec.rb +3 -3
- data/spec/unit/scheduler/job_spec.rb +79 -0
- data/spec/unit/scheduler/scheduler_spec.rb +129 -0
- data/spec/unit/scheduler/splay_job_spec.rb +35 -0
- data/spec/unit/ssl/base_spec.rb +3 -9
- data/spec/unit/ssl/certificate_authority_spec.rb +1 -0
- data/spec/unit/ssl/certificate_request_spec.rb +3 -1
- data/spec/unit/ssl/certificate_spec.rb +3 -1
- data/spec/unit/ssl/configuration_spec.rb +74 -0
- data/spec/unit/ssl/host_spec.rb +28 -7
- data/spec/unit/ssl/validator_spec.rb +311 -0
- data/spec/unit/transaction/event_manager_spec.rb +49 -0
- data/spec/unit/transaction/event_spec.rb +20 -5
- data/spec/unit/transaction/report_spec.rb +8 -0
- data/spec/unit/type/cron_spec.rb +9 -0
- data/spec/unit/type/exec_spec.rb +11 -0
- data/spec/unit/type/file/content_spec.rb +20 -20
- data/spec/unit/type/file/mode_spec.rb +6 -0
- data/spec/unit/type/file/source_spec.rb +9 -7
- data/spec/unit/type/file_spec.rb +22 -3
- data/spec/unit/type/service_spec.rb +34 -21
- data/spec/unit/type_spec.rb +46 -1
- data/spec/unit/util/backups_spec.rb +2 -2
- data/spec/unit/util/execution_spec.rb +4 -1
- data/spec/unit/util/filetype_spec.rb +6 -0
- data/spec/unit/util/monkey_patches_spec.rb +18 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +37 -0
- data/spec/unit/util/network_device/config_spec.rb +14 -0
- data/spec/unit/util/network_device_spec.rb +3 -3
- data/spec/unit/util/profiler/logging_spec.rb +81 -0
- data/spec/unit/util/profiler/none_spec.rb +12 -0
- data/spec/unit/util/profiler/object_counts_spec.rb +14 -0
- data/spec/unit/util/profiler/wall_clock_spec.rb +13 -0
- data/spec/unit/util/pson_spec.rb +5 -0
- data/spec/unit/util/ssl_spec.rb +51 -0
- data/spec/unit/util/windows/root_certs_spec.rb +15 -0
- data/spec/unit/util_spec.rb +28 -0
- metadata +2593 -2307
- data/spec/unit/module_tool/applications/application_spec.rb +0 -19
data/lib/puppet/type/cron.rb
CHANGED
@@ -10,11 +10,12 @@ Puppet::Type.newtype(:cron) do
|
|
10
10
|
job is not part of the actual job, it is used by Puppet to store and
|
11
11
|
retrieve it.
|
12
12
|
|
13
|
-
If you specify a cron
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
13
|
+
If you specify a cron resource that duplicates the scheduling and command
|
14
|
+
used by an existing crontab entry, then Puppet will take no action and
|
15
|
+
defers to the existing crontab entry. If the duplicate cron resource
|
16
|
+
specifies `ensure => absent`, all existing duplicated crontab entries will
|
17
|
+
be removed. Specifying multiple duplicate cron resources with different
|
18
|
+
`ensure` states will result in undefined behavior.
|
18
19
|
|
19
20
|
Example:
|
20
21
|
|
@@ -42,6 +43,13 @@ Puppet::Type.newtype(:cron) do
|
|
42
43
|
hour => ['2-4'],
|
43
44
|
minute => '*/10'
|
44
45
|
}
|
46
|
+
|
47
|
+
An important note: _the Cron type will not reset parameters that are
|
48
|
+
removed from a manifest_. For example, removing a `minute => 10` parameter
|
49
|
+
will not reset the minute component of the associated cronjob to `*`.
|
50
|
+
These changes must be expressed by setting the parameter to
|
51
|
+
`minute => absent` because Puppet only manages parameters that are out of
|
52
|
+
sync with manifest entries.
|
45
53
|
EOT
|
46
54
|
ensurable
|
47
55
|
|
@@ -224,6 +232,12 @@ Puppet::Type.newtype(:cron) do
|
|
224
232
|
nil
|
225
233
|
end
|
226
234
|
end
|
235
|
+
|
236
|
+
def munge(value)
|
237
|
+
value.sub!(/^\s+/, '')
|
238
|
+
value.sub!(/\s+$/, '')
|
239
|
+
value
|
240
|
+
end
|
227
241
|
end
|
228
242
|
|
229
243
|
newproperty(:special) do
|
@@ -364,7 +378,7 @@ Puppet::Type.newtype(:cron) do
|
|
364
378
|
end
|
365
379
|
|
366
380
|
newproperty(:target) do
|
367
|
-
desc "The username that will own the cron entry. Defaults to
|
381
|
+
desc "The username that will own the cron entry. Defaults to
|
368
382
|
the value of $USER for the shell that invoked Puppet, or root if $USER
|
369
383
|
is empty."
|
370
384
|
|
@@ -417,5 +431,3 @@ Puppet::Type.newtype(:cron) do
|
|
417
431
|
end
|
418
432
|
end
|
419
433
|
|
420
|
-
|
421
|
-
|
data/lib/puppet/type/exec.rb
CHANGED
@@ -137,6 +137,10 @@ module Puppet
|
|
137
137
|
normal log level (usually `notice`), but if the command fails
|
138
138
|
(meaning its return code does not match the specified code) then
|
139
139
|
any output is logged at the `err` log level."
|
140
|
+
|
141
|
+
validate do |command|
|
142
|
+
raise ArgumentError, "Command must be a String, got value of class #{command.class}" unless command.is_a? String
|
143
|
+
end
|
140
144
|
end
|
141
145
|
|
142
146
|
newparam(:path) do
|
@@ -180,9 +184,11 @@ module Puppet
|
|
180
184
|
end
|
181
185
|
|
182
186
|
newparam(:logoutput) do
|
183
|
-
desc "Whether to log output
|
184
|
-
|
185
|
-
the
|
187
|
+
desc "Whether to log command output in addition to logging the
|
188
|
+
exit code. Defaults to `on_failure`, which only logs the output
|
189
|
+
when the command has an exit code that does not match any value
|
190
|
+
specified by the `returns` attribute. In addition to the values
|
191
|
+
below, you may set this attribute to any legal log level."
|
186
192
|
|
187
193
|
defaultto :on_failure
|
188
194
|
|
data/lib/puppet/type/file.rb
CHANGED
@@ -245,6 +245,18 @@ Puppet::Type.newtype(:file) do
|
|
245
245
|
newvalues(:first, :all)
|
246
246
|
end
|
247
247
|
|
248
|
+
newparam(:show_diff, :boolean => true) do
|
249
|
+
desc "Whether to display differences when the file changes, defaulting to
|
250
|
+
true. This parameter is useful for files that may contain passwords or
|
251
|
+
other secret data, which might otherwise be included in Puppet reports or
|
252
|
+
other insecure outputs. If the global ``show_diff` configuration parameter
|
253
|
+
is false, then no diffs will be shown even if this parameter is true."
|
254
|
+
|
255
|
+
defaultto :true
|
256
|
+
|
257
|
+
newvalues(:true, :false)
|
258
|
+
end
|
259
|
+
|
248
260
|
# Autorequire the nearest ancestor directory found in the catalog.
|
249
261
|
autorequire(:file) do
|
250
262
|
req = []
|
@@ -471,6 +483,11 @@ Puppet::Type.newtype(:file) do
|
|
471
483
|
@parameters.include?(:purge) and (self[:purge] == :true or self[:purge] == "true")
|
472
484
|
end
|
473
485
|
|
486
|
+
# Should we be showing diffs?
|
487
|
+
def show_diff?
|
488
|
+
@parameters.include?(:show_diff) and (self[:show_diff] == :true or self[:show_diff] == "true")
|
489
|
+
end
|
490
|
+
|
474
491
|
# Recursively generate a list of file resources, which will
|
475
492
|
# be used to copy remote files, manage local files, and/or make links
|
476
493
|
# to map to another directory.
|
@@ -597,34 +614,35 @@ Puppet::Type.newtype(:file) do
|
|
597
614
|
)
|
598
615
|
end
|
599
616
|
|
600
|
-
#
|
601
|
-
#
|
617
|
+
# Back up and remove the file or directory at `self[:path]`.
|
618
|
+
#
|
619
|
+
# @param [Symbol] should The file type replacing the current content.
|
620
|
+
# @return [Boolean] True if the file was removed, else False
|
621
|
+
# @raises [fail???] If the current file isn't one of %w{file link directory} and can't be removed.
|
602
622
|
def remove_existing(should)
|
603
|
-
|
623
|
+
wanted_type = should.to_s
|
624
|
+
current_type = read_current_type
|
625
|
+
|
626
|
+
if current_type.nil?
|
627
|
+
return false
|
628
|
+
end
|
604
629
|
|
605
|
-
|
630
|
+
if can_backup?(current_type)
|
631
|
+
backup_existing
|
632
|
+
end
|
606
633
|
|
607
|
-
|
608
|
-
return
|
634
|
+
if wanted_type != "link" and current_type == wanted_type
|
635
|
+
return false
|
609
636
|
end
|
610
637
|
|
611
|
-
case
|
638
|
+
case current_type
|
612
639
|
when "directory"
|
613
|
-
|
614
|
-
debug "Removing existing directory for replacement with #{should}"
|
615
|
-
FileUtils.rmtree(self[:path])
|
616
|
-
else
|
617
|
-
notice "Not removing directory; use 'force' to override"
|
618
|
-
return
|
619
|
-
end
|
640
|
+
return remove_directory(wanted_type)
|
620
641
|
when "link", "file"
|
621
|
-
|
622
|
-
::File.unlink(self[:path])
|
642
|
+
return remove_file(current_type, wanted_type)
|
623
643
|
else
|
624
|
-
self.fail "Could not back up files of type #{
|
644
|
+
self.fail "Could not back up files of type #{current_type}"
|
625
645
|
end
|
626
|
-
@stat = :needs_stat
|
627
|
-
true
|
628
646
|
end
|
629
647
|
|
630
648
|
def retrieve
|
@@ -746,6 +764,64 @@ Puppet::Type.newtype(:file) do
|
|
746
764
|
|
747
765
|
private
|
748
766
|
|
767
|
+
# @return [String] The type of the current file, cast to a string.
|
768
|
+
def read_current_type
|
769
|
+
stat_info = stat
|
770
|
+
if stat_info
|
771
|
+
stat_info.ftype.to_s
|
772
|
+
else
|
773
|
+
nil
|
774
|
+
end
|
775
|
+
end
|
776
|
+
|
777
|
+
# @return [Boolean] If the current file can be backed up and needs to be backed up.
|
778
|
+
def can_backup?(type)
|
779
|
+
if type == "directory" and self[:force] == :false
|
780
|
+
# (#18110) Directories cannot be removed without :force, so it doesn't
|
781
|
+
# make sense to back them up.
|
782
|
+
false
|
783
|
+
else
|
784
|
+
true
|
785
|
+
end
|
786
|
+
end
|
787
|
+
|
788
|
+
# @return [Boolean] True if the directory was removed
|
789
|
+
# @api private
|
790
|
+
def remove_directory(wanted_type)
|
791
|
+
if self[:force] == :true
|
792
|
+
debug "Removing existing directory for replacement with #{wanted_type}"
|
793
|
+
FileUtils.rmtree(self[:path])
|
794
|
+
stat_needed
|
795
|
+
true
|
796
|
+
else
|
797
|
+
notice "Not removing directory; use 'force' to override"
|
798
|
+
false
|
799
|
+
end
|
800
|
+
end
|
801
|
+
|
802
|
+
# @return [Boolean] if the file was removed (which is always true currently)
|
803
|
+
# @api private
|
804
|
+
def remove_file(current_type, wanted_type)
|
805
|
+
debug "Removing existing #{current_type} for replacement with #{wanted_type}"
|
806
|
+
::File.unlink(self[:path])
|
807
|
+
stat_needed
|
808
|
+
true
|
809
|
+
end
|
810
|
+
|
811
|
+
def stat_needed
|
812
|
+
@stat = :needs_stat
|
813
|
+
end
|
814
|
+
|
815
|
+
# Back up the existing file at a given prior to it being removed
|
816
|
+
# @api private
|
817
|
+
# @raise [Puppet::Error] if the file backup failed
|
818
|
+
# @return [void]
|
819
|
+
def backup_existing
|
820
|
+
unless perform_backup
|
821
|
+
raise Puppet::Error, "Could not back up; will not replace"
|
822
|
+
end
|
823
|
+
end
|
824
|
+
|
749
825
|
# Should we validate the checksum of the file we're writing?
|
750
826
|
def validate_checksum?
|
751
827
|
self[:checksum] !~ /time/
|
@@ -766,8 +842,6 @@ Puppet::Type.newtype(:file) do
|
|
766
842
|
(content = property(:content)) && content.write(file)
|
767
843
|
end
|
768
844
|
|
769
|
-
private
|
770
|
-
|
771
845
|
def write_temporary_file?
|
772
846
|
# unfortunately we don't know the source file size before fetching it
|
773
847
|
# so let's assume the file won't be empty
|
@@ -144,7 +144,13 @@ module Puppet
|
|
144
144
|
end
|
145
145
|
|
146
146
|
def is_to_s(currentvalue)
|
147
|
-
currentvalue
|
147
|
+
if currentvalue == :absent
|
148
|
+
# This can occur during audits---if a file is transitioning from
|
149
|
+
# present to absent the mode will have a value of `:absent`.
|
150
|
+
super
|
151
|
+
else
|
152
|
+
currentvalue.rjust(4, "0")
|
153
|
+
end
|
148
154
|
end
|
149
155
|
end
|
150
156
|
end
|
@@ -101,7 +101,7 @@ module Puppet
|
|
101
101
|
return @content if @content
|
102
102
|
raise Puppet::DevError, "No source for content was stored with the metadata" unless metadata.source
|
103
103
|
|
104
|
-
unless tmp = Puppet::FileServing::Content.indirection.find(metadata.source, :environment => resource.catalog.environment)
|
104
|
+
unless tmp = Puppet::FileServing::Content.indirection.find(metadata.source, :environment => resource.catalog.environment, :links => resource[:links])
|
105
105
|
fail "Could not find any content at %s" % metadata.source
|
106
106
|
end
|
107
107
|
@content = tmp.content
|
@@ -154,7 +154,7 @@ module Puppet
|
|
154
154
|
return nil unless value
|
155
155
|
value.each do |source|
|
156
156
|
begin
|
157
|
-
if data = Puppet::FileServing::Metadata.indirection.find(source, :environment => resource.catalog.environment)
|
157
|
+
if data = Puppet::FileServing::Metadata.indirection.find(source, :environment => resource.catalog.environment, :links => resource[:links])
|
158
158
|
@metadata = data
|
159
159
|
@metadata.source = source
|
160
160
|
break
|
data/lib/puppet/type/group.rb
CHANGED
@@ -21,6 +21,10 @@ module Puppet
|
|
21
21
|
feature :system_groups,
|
22
22
|
"The provider allows you to create system groups with lower GIDs."
|
23
23
|
|
24
|
+
feature :libuser,
|
25
|
+
"Allows local groups to be managed on systems that also use some other
|
26
|
+
remote NSS method of managing accounts."
|
27
|
+
|
24
28
|
ensurable do
|
25
29
|
desc "Create or remove the group."
|
26
30
|
|
@@ -146,6 +150,13 @@ module Puppet
|
|
146
150
|
defaultto false
|
147
151
|
end
|
148
152
|
|
153
|
+
newparam(:forcelocal, :boolean => true, :required_features => :libuser ) do
|
154
|
+
desc "Forces the mangement of local accounts when accounts are also
|
155
|
+
being managed by some other NSS"
|
156
|
+
newvalues(:true, :false)
|
157
|
+
defaultto false
|
158
|
+
end
|
159
|
+
|
149
160
|
# This method has been exposed for puppet to manage users and groups of
|
150
161
|
# files in its settings and should not be considered available outside of
|
151
162
|
# puppet.
|
@@ -62,7 +62,11 @@ Puppet::Type.newtype(:scheduled_task) do
|
|
62
62
|
completed successfully'. It is recommended that you either
|
63
63
|
choose another user to run the scheduled task, or alter the
|
64
64
|
security policy to allow v1 scheduled tasks to run as the
|
65
|
-
'SYSTEM' account. Defaults to 'SYSTEM'.
|
65
|
+
'SYSTEM' account. Defaults to 'SYSTEM'.
|
66
|
+
|
67
|
+
Please also note that Puppet must be running as a privileged user
|
68
|
+
in order to manage `scheduled_task` resources. Running as an
|
69
|
+
unprivileged user will result in 'access denied' errors."
|
66
70
|
|
67
71
|
defaultto :system
|
68
72
|
|
data/lib/puppet/type/service.rb
CHANGED
@@ -27,8 +27,8 @@ module Puppet
|
|
27
27
|
end
|
28
28
|
|
29
29
|
newproperty(:key) do
|
30
|
-
desc "The public key itself; generally a long string of hex characters. The key attribute
|
31
|
-
may not contain whitespace: Omit key headers (e.g. 'ssh-rsa') and key identifiers
|
30
|
+
desc "The public key itself; generally a long string of hex characters. The key attribute
|
31
|
+
may not contain whitespace: Omit key headers (e.g. 'ssh-rsa') and key identifiers
|
32
32
|
(e.g. 'joe@joescomputer.local') found in the public key file."
|
33
33
|
|
34
34
|
validate do |value|
|
data/lib/puppet/type/user.rb
CHANGED
@@ -23,7 +23,7 @@ module Puppet
|
|
23
23
|
"The provider supports duplicate users with the same UID."
|
24
24
|
|
25
25
|
feature :manages_homedir,
|
26
|
-
"The provider can create and
|
26
|
+
"The provider can create, remove, and update home directories."
|
27
27
|
|
28
28
|
feature :manages_passwords,
|
29
29
|
"The provider can modify user passwords, by accepting a password
|
@@ -49,6 +49,10 @@ module Puppet
|
|
49
49
|
feature :manages_aix_lam,
|
50
50
|
"The provider can manage AIX Loadable Authentication Module (LAM) system."
|
51
51
|
|
52
|
+
feature :libuser,
|
53
|
+
"Allows local users to be managed on systems that also use some other
|
54
|
+
remote NSS method of managing accounts."
|
55
|
+
|
52
56
|
newproperty(:ensure, :parent => Puppet::Property::Ensure) do
|
53
57
|
newvalue(:present, :event => :user_created) do
|
54
58
|
provider.create
|
@@ -299,8 +303,10 @@ module Puppet
|
|
299
303
|
|
300
304
|
newparam(:managehome, :boolean => true) do
|
301
305
|
desc "Whether to manage the home directory when managing the user.
|
302
|
-
This will create the home directory when `ensure => present`,
|
303
|
-
delete the home directory when `ensure => absent`.
|
306
|
+
This will create the home directory when `ensure => present`,
|
307
|
+
delete the home directory when `ensure => absent`. Linux only:
|
308
|
+
this will update the user's home directory when the `home` property
|
309
|
+
changes. Defaults to `false`."
|
304
310
|
|
305
311
|
newvalues(:true, :false)
|
306
312
|
|
@@ -315,11 +321,16 @@ module Puppet
|
|
315
321
|
|
316
322
|
newproperty(:expiry, :required_features => :manages_expiry) do
|
317
323
|
desc "The expiry date for this user. Must be provided in
|
318
|
-
a zero-padded YYYY-MM-DD format --- e.g. 2010-02-19.
|
324
|
+
a zero-padded YYYY-MM-DD format --- e.g. 2010-02-19.
|
325
|
+
If you want to make sure the user account does never
|
326
|
+
expire, you can pass the special value `absent`."
|
327
|
+
|
328
|
+
newvalues :absent
|
329
|
+
newvalues /^\d{4}-\d{2}-\d{2}$/
|
319
330
|
|
320
331
|
validate do |value|
|
321
|
-
if value !~ /^\d{4}-\d{2}-\d{2}$/
|
322
|
-
raise ArgumentError, "Expiry dates must be YYYY-MM-DD"
|
332
|
+
if value.intern != :absent and value !~ /^\d{4}-\d{2}-\d{2}$/
|
333
|
+
raise ArgumentError, "Expiry dates must be YYYY-MM-DD or the string \"absent\""
|
323
334
|
end
|
324
335
|
end
|
325
336
|
end
|
@@ -549,5 +560,12 @@ module Puppet
|
|
549
560
|
end
|
550
561
|
end
|
551
562
|
end
|
563
|
+
|
564
|
+
newparam(:forcelocal, :boolean => true, :required_features => :libuser ) do
|
565
|
+
desc "Forces the mangement of local accounts when accounts are also
|
566
|
+
being managed by some other NSS"
|
567
|
+
newvalues(:true, :false)
|
568
|
+
defaultto false
|
569
|
+
end
|
552
570
|
end
|
553
571
|
end
|
data/lib/puppet/util.rb
CHANGED
@@ -481,7 +481,7 @@ module Util
|
|
481
481
|
retry
|
482
482
|
end
|
483
483
|
else
|
484
|
-
File.rename(tempfile.path, file)
|
484
|
+
File.rename(tempfile.path, file.to_s)
|
485
485
|
end
|
486
486
|
|
487
487
|
# Ideally, we would now fsync the directory as well, but Ruby doesn't
|
@@ -519,7 +519,17 @@ module Util
|
|
519
519
|
end
|
520
520
|
module_function :exit_on_fail
|
521
521
|
|
522
|
-
|
522
|
+
def deterministic_rand(seed,max)
|
523
|
+
if defined?(Random) == 'constant' && Random.class == Class
|
524
|
+
Random.new(seed).rand(max).to_s
|
525
|
+
else
|
526
|
+
srand(seed)
|
527
|
+
result = rand(max).to_s
|
528
|
+
srand()
|
529
|
+
result
|
530
|
+
end
|
531
|
+
end
|
532
|
+
module_function :deterministic_rand
|
523
533
|
|
524
534
|
|
525
535
|
#######################################################################################################
|
data/lib/puppet/util/classgen.rb
CHANGED
@@ -34,7 +34,7 @@ module Puppet::Util::ClassGen
|
|
34
34
|
genthing(name, Class, options, block)
|
35
35
|
end
|
36
36
|
|
37
|
-
# Creates a new module.
|
37
|
+
# Creates a new module.
|
38
38
|
# @param name [String] the name of the generated module
|
39
39
|
# @param optinos [Hash] hash with options
|
40
40
|
# @option options [Array<Class>] :array if specified, the generated class is appended to this array
|
@@ -148,10 +148,10 @@ module Puppet::Util::ClassGen
|
|
148
148
|
# @api private
|
149
149
|
#
|
150
150
|
def is_constant_defined?(const)
|
151
|
-
if ::RUBY_VERSION =~
|
152
|
-
const_defined?(const, false)
|
153
|
-
else
|
151
|
+
if ::RUBY_VERSION =~ /^1.8/
|
154
152
|
const_defined?(const)
|
153
|
+
else
|
154
|
+
const_defined?(const, false)
|
155
155
|
end
|
156
156
|
end
|
157
157
|
|