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
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'puppet/provider/package'
|
2
|
+
|
3
|
+
Puppet::Type.type(:package).provide :opkg, :source => :opkg, :parent => Puppet::Provider::Package do
|
4
|
+
desc "Opkg packaging support. Common on OpenWrt and OpenEmbedded platforms"
|
5
|
+
|
6
|
+
commands :opkg => "opkg"
|
7
|
+
|
8
|
+
confine :operatingsystem => :openwrt
|
9
|
+
defaultfor :operatingsystem => :openwrt
|
10
|
+
|
11
|
+
def self.instances
|
12
|
+
packages = []
|
13
|
+
execpipe("#{command(:opkg)} list-installed") do |process|
|
14
|
+
regex = %r{^(\S+) - (\S+)}
|
15
|
+
fields = [:name, :ensure]
|
16
|
+
hash = {}
|
17
|
+
|
18
|
+
process.each_line { |line|
|
19
|
+
if match = regex.match(line)
|
20
|
+
fields.zip(match.captures) { |field,value| hash[field] = value }
|
21
|
+
name = hash[:name]
|
22
|
+
hash[:provider] = self.name
|
23
|
+
packages << new(hash)
|
24
|
+
hash = {}
|
25
|
+
else
|
26
|
+
warning("Failed to match line %s" % line)
|
27
|
+
end
|
28
|
+
}
|
29
|
+
end
|
30
|
+
packages
|
31
|
+
rescue Puppet::ExecutionFailure
|
32
|
+
return nil
|
33
|
+
end
|
34
|
+
|
35
|
+
def latest
|
36
|
+
output = opkg( "list", @resource[:name])
|
37
|
+
matches = /^(\S+) - (\S+)/.match(output).captures
|
38
|
+
matches[1]
|
39
|
+
end
|
40
|
+
|
41
|
+
def install
|
42
|
+
# OpenWrt package lists are ephemeral, make sure we have at least
|
43
|
+
# some entries in the list directory for opkg to use
|
44
|
+
opkg('update') if Dir.entries('/var/opkg-lists/').size <= 2
|
45
|
+
|
46
|
+
if @resource[:source]
|
47
|
+
opkg( '--force-overwrite', 'install', @resource[:source] )
|
48
|
+
else
|
49
|
+
opkg( '--force-overwrite', 'install', @resource[:name] )
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def uninstall
|
54
|
+
opkg( 'remove', @resource[:name] )
|
55
|
+
end
|
56
|
+
|
57
|
+
def update
|
58
|
+
self.install
|
59
|
+
end
|
60
|
+
|
61
|
+
def query
|
62
|
+
# list out our specific package
|
63
|
+
output = opkg( 'list-installed', @resource[:name] )
|
64
|
+
if output =~ /^(\S+) - (\S+)/
|
65
|
+
return { :ensure => $2 }
|
66
|
+
end
|
67
|
+
nil
|
68
|
+
rescue Puppet::ExecutionFailure
|
69
|
+
return {
|
70
|
+
:ensure => :purged,
|
71
|
+
:status => 'missing',
|
72
|
+
:name => @resource[:name],
|
73
|
+
:error => 'ok',
|
74
|
+
}
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
@@ -115,11 +115,11 @@ Puppet::Type.type(:package).provide :pacman, :parent => Puppet::Provider::Packag
|
|
115
115
|
if pacman_check
|
116
116
|
output = pacman "-Sp", "--print-format", "%v", @resource[:name]
|
117
117
|
return output.chomp
|
118
|
-
else
|
118
|
+
else
|
119
119
|
output = yaourt "-Qma", @resource[:name]
|
120
120
|
output.split("\n").each do |line|
|
121
121
|
return line.split[1].chomp if line =~ /^aur/
|
122
|
-
end
|
122
|
+
end
|
123
123
|
end
|
124
124
|
rescue Puppet::ExecutionFailure
|
125
125
|
if pacman_check and self.yaourt?
|
@@ -23,19 +23,28 @@ Puppet::Type.type(:package).provide :rpm, :source => :rpm, :parent => Puppet::Pr
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
+
def self.current_version
|
27
|
+
return @current_version unless @current_version.nil?
|
28
|
+
output = rpm "--version"
|
29
|
+
@current_version = output.gsub('RPM version ', '').strip
|
30
|
+
end
|
31
|
+
|
32
|
+
# rpm < 4.1 don't support --nosignature
|
33
|
+
def self.nosignature
|
34
|
+
'--nosignature' unless Puppet::Util::Package.versioncmp(current_version, '4.1') < 0
|
35
|
+
end
|
36
|
+
|
37
|
+
# rpm < 4.0.2 don't support --nodigest
|
38
|
+
def self.nodigest
|
39
|
+
'--nodigest' unless Puppet::Util::Package.versioncmp(current_version, '4.0.2') < 0
|
40
|
+
end
|
41
|
+
|
26
42
|
def self.instances
|
27
43
|
packages = []
|
28
44
|
|
29
|
-
# rpm < 4.1 don't support --nosignature
|
30
|
-
output = rpm "--version"
|
31
|
-
sig = "--nosignature"
|
32
|
-
if output =~ /RPM version (([123].*)|(4\.0.*))/
|
33
|
-
sig = ""
|
34
|
-
end
|
35
|
-
|
36
45
|
# list out all of the packages
|
37
46
|
begin
|
38
|
-
execpipe("#{command(:rpm)} -qa #{
|
47
|
+
execpipe("#{command(:rpm)} -qa #{nosignature} #{nodigest} --qf '#{NEVRAFORMAT}\n'") { |process|
|
39
48
|
# now turn each returned line into a package object
|
40
49
|
process.each_line { |line|
|
41
50
|
hash = nevra_to_hash(line)
|
@@ -56,7 +65,7 @@ Puppet::Type.type(:package).provide :rpm, :source => :rpm, :parent => Puppet::Pr
|
|
56
65
|
#NOTE: Prior to a fix for issue 1243, this method potentially returned a cached value
|
57
66
|
#IF YOU CALL THIS METHOD, IT WILL CALL RPM
|
58
67
|
#Use get(:property) to check if cached values are available
|
59
|
-
cmd = ["-q", @resource[:name], "
|
68
|
+
cmd = ["-q", @resource[:name], "#{self.class.nosignature}", "#{self.class.nodigest}", "--qf", "#{NEVRAFORMAT}\n"]
|
60
69
|
|
61
70
|
begin
|
62
71
|
output = rpm(*cmd)
|
@@ -95,13 +104,13 @@ Puppet::Type.type(:package).provide :rpm, :source => :rpm, :parent => Puppet::Pr
|
|
95
104
|
end
|
96
105
|
|
97
106
|
flag = "-i"
|
98
|
-
flag = "-U" if @property_hash[:ensure] and @property_hash[:ensure] != :absent
|
107
|
+
flag = ["-U", "--oldpackage"] if @property_hash[:ensure] and @property_hash[:ensure] != :absent
|
99
108
|
|
100
|
-
rpm flag,
|
109
|
+
rpm flag, source
|
101
110
|
end
|
102
111
|
|
103
112
|
def uninstall
|
104
|
-
query
|
113
|
+
query if get(:arch) == :absent
|
105
114
|
nvr = "#{get(:name)}-#{get(:version)}-#{get(:release)}"
|
106
115
|
arch = ".#{get(:arch)}"
|
107
116
|
# If they specified an arch in the manifest, erase that Otherwise,
|
@@ -109,10 +118,15 @@ Puppet::Type.type(:package).provide :rpm, :source => :rpm, :parent => Puppet::Pr
|
|
109
118
|
# installed and only the package name is specified (without the
|
110
119
|
# arch), this will uninstall all of them on successive runs of the
|
111
120
|
# client, one after the other
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
121
|
+
|
122
|
+
# version of RPM prior to 4.2.1 can't accept the architecture as
|
123
|
+
# part of the package name.
|
124
|
+
unless Puppet::Util::Package.versioncmp(self.class.current_version, '4.2.1') < 0
|
125
|
+
if @resource[:name][-arch.size, arch.size] == arch
|
126
|
+
nvr += arch
|
127
|
+
else
|
128
|
+
nvr += ".#{get(:arch)}"
|
129
|
+
end
|
116
130
|
end
|
117
131
|
rpm "-e", nvr
|
118
132
|
end
|
@@ -2,9 +2,9 @@ require 'puppet/util/package'
|
|
2
2
|
|
3
3
|
Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do
|
4
4
|
desc "Support via `yum`.
|
5
|
-
|
6
|
-
Using this provider's `uninstallable` feature will not remove dependent packages. To
|
7
|
-
remove dependent packages with this provider use the `purgeable` feature, but note this
|
5
|
+
|
6
|
+
Using this provider's `uninstallable` feature will not remove dependent packages. To
|
7
|
+
remove dependent packages with this provider use the `purgeable` feature, but note this
|
8
8
|
feature is destructive and should be used with the utmost care."
|
9
9
|
|
10
10
|
has_feature :versionable
|
@@ -103,6 +103,37 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
|
|
103
103
|
# HEADER: is definitely not recommended.\n}
|
104
104
|
end
|
105
105
|
|
106
|
+
# An optional regular expression matched by third party headers.
|
107
|
+
#
|
108
|
+
# For example, this can be used to filter the vixie cron headers as
|
109
|
+
# erronously exported by older cron versions.
|
110
|
+
#
|
111
|
+
# @api private
|
112
|
+
# @abstract Providers based on ParsedFile may implement this to make it
|
113
|
+
# possible to identify a header maintained by a third party tool.
|
114
|
+
# The provider can then allow that header to remain near the top of the
|
115
|
+
# written file, or remove it after composing the file content.
|
116
|
+
# If implemented, the function must return a Regexp object.
|
117
|
+
# The expression must be tailored to match exactly one third party header.
|
118
|
+
# @see drop_native_header
|
119
|
+
# @note When specifying regular expressions in multiline mode, avoid
|
120
|
+
# greedy repititions such as '.*' (use .*? instead). Otherwise, the
|
121
|
+
# provider may drop file content between sparse headers.
|
122
|
+
def self.native_header_regex
|
123
|
+
nil
|
124
|
+
end
|
125
|
+
|
126
|
+
# How to handle third party headers.
|
127
|
+
# @api private
|
128
|
+
# @abstract Providers based on ParsedFile that make use of the support for
|
129
|
+
# third party headers may override this method to return +true+.
|
130
|
+
# When this is done, headers that are matched by the native_header_regex
|
131
|
+
# are not written back to disk.
|
132
|
+
# @see native_header_regex
|
133
|
+
def self.drop_native_header
|
134
|
+
false
|
135
|
+
end
|
136
|
+
|
106
137
|
# Add another type var.
|
107
138
|
def self.initvars
|
108
139
|
@records = []
|
@@ -186,6 +217,11 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
|
|
186
217
|
match_providers_with_resources(resources)
|
187
218
|
end
|
188
219
|
|
220
|
+
# Match a list of catalog resources with provider instances
|
221
|
+
#
|
222
|
+
# @api private
|
223
|
+
#
|
224
|
+
# @param [Array<Puppet::Resource>] resources A list of resources using this class as a provider
|
189
225
|
def self.match_providers_with_resources(resources)
|
190
226
|
return unless resources
|
191
227
|
matchers = resources.dup
|
@@ -193,11 +229,10 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
|
|
193
229
|
# Skip things like comments and blank lines
|
194
230
|
next if skip_record?(record)
|
195
231
|
|
196
|
-
if
|
232
|
+
if (resource = resource_for_record(record, resources))
|
197
233
|
resource.provider = new(record)
|
198
234
|
elsif respond_to?(:match)
|
199
235
|
if resource = match(record, matchers)
|
200
|
-
# Remove this resource from circulation so we don't unnecessarily try to match
|
201
236
|
matchers.delete(resource.title)
|
202
237
|
record[:name] = resource[:name]
|
203
238
|
resource.provider = new(record)
|
@@ -206,6 +241,21 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
|
|
206
241
|
end
|
207
242
|
end
|
208
243
|
|
244
|
+
# Look up a resource based on a parsed file record
|
245
|
+
#
|
246
|
+
# @api private
|
247
|
+
#
|
248
|
+
# @param [Hash<Symbol, Object>] record
|
249
|
+
# @param [Array<Puppet::Resource>] resources
|
250
|
+
#
|
251
|
+
# @return [Puppet::Resource, nil] The resource if found, else nil
|
252
|
+
def self.resource_for_record(record, resources)
|
253
|
+
name = record[:name]
|
254
|
+
if name
|
255
|
+
resources[name]
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
209
259
|
def self.prefetch_all_targets(resources)
|
210
260
|
records = []
|
211
261
|
targets(resources).each do |target|
|
@@ -216,7 +266,16 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
|
|
216
266
|
|
217
267
|
# Prefetch an individual target.
|
218
268
|
def self.prefetch_target(target)
|
219
|
-
|
269
|
+
|
270
|
+
begin
|
271
|
+
target_records = retrieve(target)
|
272
|
+
rescue Puppet::Util::FileType::FileReadError => detail
|
273
|
+
puts detail.backtrace if Puppet[:trace]
|
274
|
+
Puppet.err "Could not prefetch #{self.resource_type.name} provider '#{self.name}' target '#{target}': #{detail}. Treating as empty"
|
275
|
+
target_records = []
|
276
|
+
end
|
277
|
+
|
278
|
+
target_records.each do |r|
|
220
279
|
r[:on_disk] = true
|
221
280
|
r[:target] = target
|
222
281
|
r[:ensure] = :present
|
@@ -299,8 +358,26 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
|
|
299
358
|
targets.uniq.compact
|
300
359
|
end
|
301
360
|
|
361
|
+
# Compose file contents from the set of records.
|
362
|
+
#
|
363
|
+
# If self.native_header_regex is not nil, possible vendor headers are
|
364
|
+
# identified by matching the return value against the expression.
|
365
|
+
# If one (or several consecutive) such headers, are found, they are
|
366
|
+
# either moved in front of the self.header if self.drop_native_header
|
367
|
+
# is false (this is the default), or removed from the return value otherwise.
|
368
|
+
#
|
369
|
+
# @api private
|
302
370
|
def self.to_file(records)
|
303
371
|
text = super
|
372
|
+
if native_header_regex and (match = text.match(native_header_regex))
|
373
|
+
if drop_native_header
|
374
|
+
# concatenate the text in front of and after the native header
|
375
|
+
text = match.pre_match + match.post_match
|
376
|
+
else
|
377
|
+
native_header = match[0]
|
378
|
+
return native_header + header + match.pre_match + match.post_match
|
379
|
+
end
|
380
|
+
end
|
304
381
|
header + text
|
305
382
|
end
|
306
383
|
|
@@ -73,7 +73,7 @@ Puppet::Type.type(:selmodule).provide(:semodule) do
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def selmod_readnext (handle)
|
76
|
-
len = handle.read(4).unpack('
|
76
|
+
len = handle.read(4).unpack('V')[0]
|
77
77
|
handle.read(len)
|
78
78
|
end
|
79
79
|
|
@@ -83,7 +83,7 @@ Puppet::Type.type(:selmodule).provide(:semodule) do
|
|
83
83
|
filename = selmod_name_to_filename
|
84
84
|
mod = File.new(filename, "r")
|
85
85
|
|
86
|
-
(hdr, ver, numsec) = mod.read(12).unpack('
|
86
|
+
(hdr, ver, numsec) = mod.read(12).unpack('VVV')
|
87
87
|
|
88
88
|
raise Puppet::Error, "Found #{hdr} instead of magic #{magic} in #{filename}" if hdr != magic
|
89
89
|
|
@@ -18,10 +18,6 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do
|
|
18
18
|
|
19
19
|
defaultfor :operatingsystem => [:debian, :ubuntu]
|
20
20
|
|
21
|
-
def self.defpath
|
22
|
-
superclass.defpath
|
23
|
-
end
|
24
|
-
|
25
21
|
# Remove the symlinks
|
26
22
|
def disable
|
27
23
|
if `dpkg --compare-versions $(dpkg-query -W --showformat '${Version}' sysv-rc) ge 2.88 ; echo $?`.to_i == 0
|
@@ -41,7 +41,7 @@ Puppet::Type.type(:service).provide :freebsd, :parent => :init do
|
|
41
41
|
def rcvar_name
|
42
42
|
name = self.rcvar[1]
|
43
43
|
self.error("No rcvar name found in rcvar") if name.nil?
|
44
|
-
name = name.gsub!(/(
|
44
|
+
name = name.gsub!(/(.*?)(_enable)?=(.*)/, '\1')
|
45
45
|
self.error("rcvar name is empty") if name.nil?
|
46
46
|
self.debug("rcvar name is #{name}")
|
47
47
|
name
|
@@ -73,7 +73,7 @@ Puppet::Type.type(:service).provide :freebsd, :parent => :init do
|
|
73
73
|
[rcconf, rcconf_local, rcconf_dir + "/#{service}"].each do |filename|
|
74
74
|
if File.exists?(filename)
|
75
75
|
s = File.read(filename)
|
76
|
-
if s.gsub!(
|
76
|
+
if s.gsub!(/^(#{rcvar}(_enable)?)=\"?(YES|NO)\"?/, "\\1=\"#{yesno}\"")
|
77
77
|
File.open(filename, File::WRONLY) { |f| f << s }
|
78
78
|
self.debug("Replaced in #{filename}")
|
79
79
|
success = true
|
@@ -12,15 +12,6 @@ Puppet::Type.type(:service).provide :gentoo, :parent => :init do
|
|
12
12
|
|
13
13
|
confine :operatingsystem => :gentoo
|
14
14
|
|
15
|
-
def self.defpath
|
16
|
-
superclass.defpath
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.instances
|
20
|
-
# this exclude list was found with grep -L '\/sbin\/runscript' /etc/init.d/*
|
21
|
-
self.get_services(self.defpath, ['functions.sh', 'reboot.sh', 'shutdown.sh'])
|
22
|
-
end
|
23
|
-
|
24
15
|
def disable
|
25
16
|
output = update :del, @resource[:name], :default
|
26
17
|
rescue Puppet::ExecutionFailure
|
@@ -19,12 +19,37 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
|
|
19
19
|
# We can't confine this here, because the init path can be overridden.
|
20
20
|
#confine :exists => defpath
|
21
21
|
|
22
|
+
# some init scripts are not safe to execute, e.g. we do not want
|
23
|
+
# to suddently run /etc/init.d/reboot.sh status and reboot our system. The
|
24
|
+
# exclude list could be platform agnostic but I assume an invalid init script
|
25
|
+
# on system A will never be a valid init script on system B
|
26
|
+
def self.excludes
|
27
|
+
excludes = []
|
28
|
+
# these exclude list was found with grep -L '\/sbin\/runscript' /etc/init.d/* on gentoo
|
29
|
+
excludes += %w{functions.sh reboot.sh shutdown.sh}
|
30
|
+
# this exclude list is all from /sbin/service (5.x), but I did not exclude kudzu
|
31
|
+
excludes += %w{functions halt killall single linuxconf reboot boot}
|
32
|
+
# 'wait-for-state' and 'portmap-wait' are excluded from instances here
|
33
|
+
# because they take parameters that have unclear meaning. It looks like
|
34
|
+
# 'wait-for-state' is a generic waiter mainly used internally for other
|
35
|
+
# upstart services as a 'sleep until something happens'
|
36
|
+
# (http://lists.debian.org/debian-devel/2012/02/msg01139.html), while
|
37
|
+
# 'portmap-wait' is a specific instance of a waiter. There is an open
|
38
|
+
# launchpad bug
|
39
|
+
# (https://bugs.launchpad.net/ubuntu/+source/upstart/+bug/962047) that may
|
40
|
+
# eventually explain how to use the wait-for-state service or perhaps why
|
41
|
+
# it should remain excluded. When that bug is adddressed this should be
|
42
|
+
# reexamined.
|
43
|
+
excludes += %w{wait-for-state portmap-wait}
|
44
|
+
excludes
|
45
|
+
end
|
46
|
+
|
22
47
|
# List all services of this type.
|
23
48
|
def self.instances
|
24
49
|
get_services(self.defpath)
|
25
50
|
end
|
26
51
|
|
27
|
-
def self.get_services(defpath, exclude=
|
52
|
+
def self.get_services(defpath, exclude = self.excludes)
|
28
53
|
defpath = [defpath] unless defpath.is_a? Array
|
29
54
|
instances = []
|
30
55
|
defpath.each do |path|
|
@@ -69,7 +94,7 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
|
|
69
94
|
if File.directory?(path)
|
70
95
|
true
|
71
96
|
else
|
72
|
-
if File.exist?(path)
|
97
|
+
if File.exist?(path)
|
73
98
|
self.debug "Search path #{path} is not a directory"
|
74
99
|
else
|
75
100
|
self.debug "Search path #{path} does not exist"
|
@@ -166,7 +166,7 @@ Puppet::Type.type(:service).provide :launchd, :parent => :base do
|
|
166
166
|
end
|
167
167
|
|
168
168
|
# Launchd implemented plist overrides in version 10.6.
|
169
|
-
# This method checks the major_version of OS X and returns true if
|
169
|
+
# This method checks the major_version of OS X and returns true if
|
170
170
|
# it is 10.6 or greater. This allows us to implement different plist
|
171
171
|
# behavior for versions >= 10.6
|
172
172
|
def has_macosx_plist_overrides?
|
@@ -0,0 +1,36 @@
|
|
1
|
+
Puppet::Type.type(:service).provide :openwrt, :parent => :init, :source => :init do
|
2
|
+
desc <<-EOT
|
3
|
+
Support for OpenWrt flavored init scripts.
|
4
|
+
|
5
|
+
Uses /etc/init.d/service_name enable, disable, and enabled.
|
6
|
+
|
7
|
+
EOT
|
8
|
+
|
9
|
+
defaultfor :operatingsystem => :openwrt
|
10
|
+
confine :operatingsystem => :openwrt
|
11
|
+
|
12
|
+
has_feature :enableable
|
13
|
+
|
14
|
+
def self.defpath
|
15
|
+
["/etc/init.d"]
|
16
|
+
end
|
17
|
+
|
18
|
+
def enable
|
19
|
+
system(self.initscript, 'enable')
|
20
|
+
end
|
21
|
+
|
22
|
+
def disable
|
23
|
+
system(self.initscript, 'disable')
|
24
|
+
end
|
25
|
+
|
26
|
+
def enabled?
|
27
|
+
# We can't define the "command" for the init script, so we call system?
|
28
|
+
if system(self.initscript, 'enabled') then return :true else return :false end
|
29
|
+
end
|
30
|
+
|
31
|
+
# Purposely leave blank so we fail back to ps based status detection
|
32
|
+
# As OpenWrt init script do not have status commands
|
33
|
+
def statuscmd
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|