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
@@ -66,7 +66,8 @@ module PSON
|
|
66
66
|
# * *object_class*: Defaults to Hash
|
67
67
|
# * *array_class*: Defaults to Array
|
68
68
|
def initialize(source, opts = {})
|
69
|
-
|
69
|
+
source = convert_encoding source
|
70
|
+
super source
|
70
71
|
if !opts.key?(:max_nesting) # defaults to 19
|
71
72
|
@max_nesting = 19
|
72
73
|
elsif opts[:max_nesting]
|
@@ -111,6 +112,51 @@ module PSON
|
|
111
112
|
|
112
113
|
private
|
113
114
|
|
115
|
+
def convert_encoding(source)
|
116
|
+
if source.respond_to?(:to_str)
|
117
|
+
source = source.to_str
|
118
|
+
else
|
119
|
+
raise TypeError, "#{source.inspect} is not like a string"
|
120
|
+
end
|
121
|
+
if defined?(::Encoding)
|
122
|
+
if source.encoding == ::Encoding::ASCII_8BIT
|
123
|
+
b = source[0, 4].bytes.to_a
|
124
|
+
source =
|
125
|
+
case
|
126
|
+
when b.size >= 4 && b[0] == 0 && b[1] == 0 && b[2] == 0
|
127
|
+
source.dup.force_encoding(::Encoding::UTF_32BE).encode!(::Encoding::UTF_8)
|
128
|
+
when b.size >= 4 && b[0] == 0 && b[2] == 0
|
129
|
+
source.dup.force_encoding(::Encoding::UTF_16BE).encode!(::Encoding::UTF_8)
|
130
|
+
when b.size >= 4 && b[1] == 0 && b[2] == 0 && b[3] == 0
|
131
|
+
source.dup.force_encoding(::Encoding::UTF_32LE).encode!(::Encoding::UTF_8)
|
132
|
+
when b.size >= 4 && b[1] == 0 && b[3] == 0
|
133
|
+
source.dup.force_encoding(::Encoding::UTF_16LE).encode!(::Encoding::UTF_8)
|
134
|
+
else
|
135
|
+
source.dup
|
136
|
+
end
|
137
|
+
else
|
138
|
+
source = source.encode(::Encoding::UTF_8)
|
139
|
+
end
|
140
|
+
source.force_encoding(::Encoding::ASCII_8BIT)
|
141
|
+
else
|
142
|
+
b = source
|
143
|
+
source =
|
144
|
+
case
|
145
|
+
when b.size >= 4 && b[0] == 0 && b[1] == 0 && b[2] == 0
|
146
|
+
PSON.encode('utf-8', 'utf-32be', b)
|
147
|
+
when b.size >= 4 && b[0] == 0 && b[2] == 0
|
148
|
+
PSON.encode('utf-8', 'utf-16be', b)
|
149
|
+
when b.size >= 4 && b[1] == 0 && b[2] == 0 && b[3] == 0
|
150
|
+
PSON.encode('utf-8', 'utf-32le', b)
|
151
|
+
when b.size >= 4 && b[1] == 0 && b[3] == 0
|
152
|
+
PSON.encode('utf-8', 'utf-16le', b)
|
153
|
+
else
|
154
|
+
b
|
155
|
+
end
|
156
|
+
end
|
157
|
+
source
|
158
|
+
end
|
159
|
+
|
114
160
|
# Unescape characters in strings.
|
115
161
|
UNESCAPE_MAP = Hash.new { |h, k| h[k] = k.chr }
|
116
162
|
|
@@ -60,15 +60,15 @@ Puppet::Indirector::Face.define(:certificate, '0.0.1') do
|
|
60
60
|
|
61
61
|
when_invoked do |name, options|
|
62
62
|
host = Puppet::SSL::Host.new(name)
|
63
|
-
|
63
|
+
|
64
64
|
# We have a weird case where we have --dns_alt_names from Puppet, but
|
65
65
|
# this option is --dns-alt-names. Until we can get rid of --dns-alt-names
|
66
66
|
# or do a global tr('-', '_'), we have to support both.
|
67
|
-
# In supporting both, we'll use Puppet[:dns_alt_names] if specified on
|
67
|
+
# In supporting both, we'll use Puppet[:dns_alt_names] if specified on
|
68
68
|
# command line. We'll use options[:dns_alt_names] if specified on
|
69
69
|
# command line. If both specified, we'll fail.
|
70
70
|
# jeffweiss 17 april 2012
|
71
|
-
|
71
|
+
|
72
72
|
global_setting_from_cli = Puppet.settings.set_by_cli?(:dns_alt_names) == true
|
73
73
|
raise ArgumentError, "Can't specify both --dns_alt_names and --dns-alt-names" if options[:dns_alt_names] and global_setting_from_cli
|
74
74
|
options[:dns_alt_names] = Puppet[:dns_alt_names] if global_setting_from_cli
|
data/lib/puppet/face/module.rb
CHANGED
@@ -14,6 +14,6 @@ Puppet::Face.define(:module, '1.0.0') do
|
|
14
14
|
a repository of user-contributed Puppet code. It can also generate empty
|
15
15
|
modules, and prepare locally developed modules for release on the Forge.
|
16
16
|
EOT
|
17
|
-
|
17
|
+
|
18
18
|
display_global_options "environment", "modulepath"
|
19
19
|
end
|
@@ -21,7 +21,9 @@ Puppet::Face.define(:module, '1.0.0') do
|
|
21
21
|
|
22
22
|
when_invoked do |path, options|
|
23
23
|
Puppet::ModuleTool.set_option_defaults options
|
24
|
-
root_path = Puppet::ModuleTool.find_module_root(path)
|
24
|
+
unless root_path = Puppet::ModuleTool.find_module_root(path)
|
25
|
+
raise ArgumentError, "Could not find a valid module at #{path.inspect}"
|
26
|
+
end
|
25
27
|
Puppet::ModuleTool::Applications::Checksummer.run(root_path, options)
|
26
28
|
end
|
27
29
|
|
@@ -50,7 +50,7 @@ Puppet::Face.define(:module, '1.0.0') do
|
|
50
50
|
|
51
51
|
when_invoked do |name, options|
|
52
52
|
name = name.gsub('/', '-')
|
53
|
-
|
53
|
+
|
54
54
|
Puppet::ModuleTool.set_option_defaults options
|
55
55
|
Puppet.notice "Preparing to uninstall '#{name}'" << (options[:version] ? " (#{colorize(:cyan, options[:version].sub(/^(?=\d)/, 'v'))})" : '') << " ..."
|
56
56
|
Puppet::ModuleTool::Applications::Uninstaller.run(name, options)
|
@@ -9,17 +9,17 @@ Puppet::Face.define(:node, '0.0.1') do
|
|
9
9
|
description <<-'EOT'
|
10
10
|
Clean up everything a puppet master knows about a node, including certificates
|
11
11
|
and storeconfigs data.
|
12
|
-
|
12
|
+
|
13
13
|
The full list of info cleaned by this action is:
|
14
14
|
|
15
15
|
<Signed certificates> - ($vardir/ssl/ca/signed/node.domain.pem)
|
16
|
-
|
16
|
+
|
17
17
|
<Cached facts> - ($vardir/yaml/facts/node.domain.yaml)
|
18
|
-
|
18
|
+
|
19
19
|
<Cached node objects> - ($vardir/yaml/node/node.domain.yaml)
|
20
|
-
|
20
|
+
|
21
21
|
<Reports> - ($vardir/reports/node.domain)
|
22
|
-
|
22
|
+
|
23
23
|
<Stored configs> - (in database) The clean action can either remove all
|
24
24
|
data from a host in your storeconfigs database, or, with the
|
25
25
|
<--unexport> option, turn every exported resource supporting ensure to
|
data/lib/puppet/feature/base.rb
CHANGED
@@ -10,7 +10,7 @@ Puppet.features.add(:syslog, :libs => ["syslog"])
|
|
10
10
|
# We can use POSIX user functions
|
11
11
|
Puppet.features.add(:posix) do
|
12
12
|
require 'etc'
|
13
|
-
Etc.getpwuid(0)
|
13
|
+
!Etc.getpwuid(0).nil? && Puppet.features.syslog?
|
14
14
|
end
|
15
15
|
|
16
16
|
# We can use Microsoft Windows functions
|
@@ -68,3 +68,5 @@ Puppet.features.add(:sqlite, :libs => ["sqlite3"])
|
|
68
68
|
|
69
69
|
# We have Hiera
|
70
70
|
Puppet.features.add(:hiera, :libs => ["hiera"])
|
71
|
+
|
72
|
+
Puppet.features.add(:minitar, :libs => ["archive/tar/minitar"])
|
@@ -136,7 +136,7 @@ class Puppet::FileServing::Fileset
|
|
136
136
|
result = []
|
137
137
|
return result unless recurse?(depth)
|
138
138
|
|
139
|
-
while dir_path = current_dirs.shift
|
139
|
+
while dir_path = current_dirs.shift
|
140
140
|
next unless stat = stat(dir_path)
|
141
141
|
next unless stat.directory?
|
142
142
|
|
@@ -153,6 +153,14 @@ class Puppet::FileServing::Fileset
|
|
153
153
|
# And to our list of files/directories to iterate over.
|
154
154
|
next_dirs << File.join(dir_path, file_path)
|
155
155
|
end
|
156
|
+
|
157
|
+
# Move to the next recusion level
|
158
|
+
if current_dirs.empty?
|
159
|
+
depth += 1
|
160
|
+
break unless recurse?(depth)
|
161
|
+
current_dirs = next_dirs
|
162
|
+
next_dirs = []
|
163
|
+
end
|
156
164
|
end
|
157
165
|
|
158
166
|
result
|
data/lib/puppet/forge.rb
CHANGED
@@ -7,6 +7,8 @@ require 'puppet/forge/repository'
|
|
7
7
|
require 'puppet/forge/errors'
|
8
8
|
|
9
9
|
class Puppet::Forge
|
10
|
+
include Puppet::Forge::Errors
|
11
|
+
|
10
12
|
# +consumer_name+ is a name to be used for identifying the consumer of the
|
11
13
|
# forge and +consumer_semver+ is a SemVer object to identify the version of
|
12
14
|
# the consumer
|
@@ -34,6 +36,14 @@ class Puppet::Forge
|
|
34
36
|
# }
|
35
37
|
# ]
|
36
38
|
#
|
39
|
+
# @param term [String] search term
|
40
|
+
# @return [Array] modules found
|
41
|
+
# @raise [Puppet::Forge::Errors::CommunicationError] if there is a network
|
42
|
+
# related error
|
43
|
+
# @raise [Puppet::Forge::Errors::SSLVerifyError] if there is a problem
|
44
|
+
# verifying the remote SSL certificate
|
45
|
+
# @raise [Puppet::Forge::Errors::ResponseError] if the repository returns a
|
46
|
+
# bad HTTP response
|
37
47
|
def search(term)
|
38
48
|
server = Puppet.settings[:module_repository]
|
39
49
|
Puppet.notice "Searching #{server} ..."
|
@@ -43,12 +53,25 @@ class Puppet::Forge
|
|
43
53
|
when "200"
|
44
54
|
matches = PSON.parse(response.body)
|
45
55
|
else
|
46
|
-
raise
|
56
|
+
raise ResponseError.new(:uri => uri.to_s, :input => term, :response => response)
|
47
57
|
end
|
48
58
|
|
49
59
|
matches
|
50
60
|
end
|
51
61
|
|
62
|
+
# Return a list of module metadata hashes for the module requested and all
|
63
|
+
# of its dependencies.
|
64
|
+
#
|
65
|
+
# @param author [String] module's author name
|
66
|
+
# @param mod_name [String] module name
|
67
|
+
# @param version [String] optional module version number
|
68
|
+
# @return [Array] module and dependency metadata
|
69
|
+
# @raise [Puppet::Forge::Errors::CommunicationError] if there is a network
|
70
|
+
# related error
|
71
|
+
# @raise [Puppet::Forge::Errors::SSLVerifyError] if there is a problem
|
72
|
+
# verifying the remote SSL certificate
|
73
|
+
# @raise [Puppet::Forge::Errors::ResponseError] if the repository returns
|
74
|
+
# an error in its API response or a bad HTTP response
|
52
75
|
def remote_dependency_info(author, mod_name, version)
|
53
76
|
version_string = version ? "&version=#{version}" : ''
|
54
77
|
response = repository.make_http_request("/api/v1/releases.json?module=#{author}/#{mod_name}#{version_string}")
|
@@ -57,11 +80,11 @@ class Puppet::Forge
|
|
57
80
|
when "200"
|
58
81
|
return json
|
59
82
|
else
|
60
|
-
error = json['error']
|
61
|
-
if error =~ /^Module #{author}\/#{mod_name} has no release/
|
83
|
+
error = json['error']
|
84
|
+
if error && error =~ /^Module #{author}\/#{mod_name} has no release/
|
62
85
|
return []
|
63
86
|
else
|
64
|
-
raise
|
87
|
+
raise ResponseError.new(:uri => uri.to_s, :input => "#{author}/#{mod_name}", :message => error, :response => response)
|
65
88
|
end
|
66
89
|
end
|
67
90
|
end
|
@@ -74,7 +97,7 @@ class Puppet::Forge
|
|
74
97
|
begin
|
75
98
|
cache_path = repository.retrieve(file)
|
76
99
|
rescue OpenURI::HTTPError => e
|
77
|
-
raise
|
100
|
+
raise HttpResponseError.new(:uri => uri.to_s, :input => modname, :message => e.message)
|
78
101
|
end
|
79
102
|
else
|
80
103
|
raise RuntimeError, "Malformed response from module repository."
|
data/lib/puppet/forge/errors.rb
CHANGED
@@ -66,4 +66,38 @@ Could not connect to #{@uri}
|
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
+
# This exception is raised when there is a bad HTTP response from the forge
|
70
|
+
# and optionally a message in the response.
|
71
|
+
class ResponseError < ForgeError
|
72
|
+
# @option options [String] :uri The URI that failed
|
73
|
+
# @option options [String] :input The user's input (e.g. module name)
|
74
|
+
# @option options [String] :message Error from the API response (optional)
|
75
|
+
# @option options [Net::HTTPResponse] :response The original HTTP response
|
76
|
+
def initialize(options)
|
77
|
+
@uri = options[:uri]
|
78
|
+
@input = options[:input]
|
79
|
+
@message = options[:message]
|
80
|
+
response = options[:response]
|
81
|
+
@response = "#{response.code} #{response.message}"
|
82
|
+
|
83
|
+
message = "Could not execute operation for '#{@input}'. Detail: "
|
84
|
+
message << @message << " / " if @message
|
85
|
+
message << @response << "."
|
86
|
+
super(message, original)
|
87
|
+
end
|
88
|
+
|
89
|
+
# Return a multiline version of the error message
|
90
|
+
#
|
91
|
+
# @return [String] the multiline version of the error message
|
92
|
+
def multiline
|
93
|
+
message = <<-EOS
|
94
|
+
Could not execute operation for '#{@input}'
|
95
|
+
The server being queried was #{@uri}
|
96
|
+
The HTTP response we received was '#{@response}'
|
97
|
+
EOS
|
98
|
+
message << " The message we received said '#{@message}'\n" if @message
|
99
|
+
message << " Check the author and module names are correct."
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
69
103
|
end
|
@@ -75,7 +75,7 @@ class Puppet::Forge
|
|
75
75
|
|
76
76
|
# Return a Net::HTTPResponse read for this +request_path+.
|
77
77
|
def make_http_request(request_path)
|
78
|
-
request = Net::HTTP::Get.new(request_path, { "User-Agent" => user_agent })
|
78
|
+
request = Net::HTTP::Get.new(URI.escape(request_path), { "User-Agent" => user_agent })
|
79
79
|
if ! @uri.user.nil? && ! @uri.password.nil?
|
80
80
|
request.basic_auth(@uri.user, @uri.password)
|
81
81
|
end
|
data/lib/puppet/indirector.rb
CHANGED
@@ -40,9 +40,12 @@ module Puppet::Indirector
|
|
40
40
|
include Puppet::Indirector::Envelope
|
41
41
|
extend Puppet::Network::FormatHandler
|
42
42
|
|
43
|
+
# record the indirected class name for documentation purposes
|
44
|
+
options[:indirected_class] = name
|
45
|
+
|
43
46
|
# instantiate the actual Terminus for that type and this name (:ldap, w/ args :node)
|
44
47
|
# & hook the instantiated Terminus into this class (Node: @indirection = terminus)
|
45
|
-
@indirection = Puppet::Indirector::Indirection.new(self, indirection,
|
48
|
+
@indirection = Puppet::Indirector::Indirection.new(self, indirection, options)
|
46
49
|
end
|
47
50
|
|
48
51
|
module ClassMethods
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'puppet/node'
|
2
2
|
require 'puppet/resource/catalog'
|
3
3
|
require 'puppet/indirector/code'
|
4
|
+
require 'puppet/util/profiler'
|
4
5
|
require 'yaml'
|
5
6
|
|
6
7
|
class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
@@ -16,20 +17,22 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
16
17
|
raise ArgumentError, "Facts but no fact format provided for #{request.key}"
|
17
18
|
end
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
20
|
+
Puppet::Util::Profiler.profile("Found facts") do
|
21
|
+
# If the facts were encoded as yaml, then the param reconstitution system
|
22
|
+
# in Network::HTTP::Handler will automagically deserialize the value.
|
23
|
+
if text_facts.is_a?(Puppet::Node::Facts)
|
24
|
+
facts = text_facts
|
25
|
+
else
|
26
|
+
facts = Puppet::Node::Facts.convert_from(format, text_facts)
|
27
|
+
end
|
26
28
|
|
27
|
-
|
28
|
-
|
29
|
-
|
29
|
+
unless facts.name == request.key
|
30
|
+
raise Puppet::Error, "Catalog for #{request.key.inspect} was requested with fact definition for the wrong node (#{facts.name.inspect})."
|
31
|
+
end
|
30
32
|
|
31
|
-
|
32
|
-
|
33
|
+
facts.add_timestamp
|
34
|
+
Puppet::Node::Facts.indirection.save(facts)
|
35
|
+
end
|
33
36
|
end
|
34
37
|
|
35
38
|
# Compile a node's catalog.
|
@@ -54,7 +57,9 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
54
57
|
end
|
55
58
|
|
56
59
|
def initialize
|
57
|
-
|
60
|
+
Puppet::Util::Profiler.profile("Setup server facts for compiling") do
|
61
|
+
set_server_facts
|
62
|
+
end
|
58
63
|
end
|
59
64
|
|
60
65
|
# Is our compiler part of a network, or are we just local?
|
@@ -76,9 +81,7 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
76
81
|
str += " in environment #{node.environment}" if node.environment
|
77
82
|
config = nil
|
78
83
|
|
79
|
-
|
80
|
-
|
81
|
-
benchmark(loglevel, str) do
|
84
|
+
Puppet::Util::Profiler.profile(str) do
|
82
85
|
begin
|
83
86
|
config = Puppet::Parser::Compiler.compile(node)
|
84
87
|
rescue Puppet::Error => detail
|
@@ -91,20 +94,24 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
91
94
|
end
|
92
95
|
|
93
96
|
# Turn our host name into a node object.
|
94
|
-
def find_node(name,
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
97
|
+
def find_node(name, environment)
|
98
|
+
Puppet::Util::Profiler.profile("Found node information") do
|
99
|
+
node = nil
|
100
|
+
begin
|
101
|
+
node = Puppet::Node.indirection.find(name, :environment => environment)
|
102
|
+
rescue => detail
|
103
|
+
message = "Failed when searching for node #{name}: #{detail}"
|
104
|
+
Puppet.log_exception(detail, message)
|
105
|
+
raise Puppet::Error, message
|
106
|
+
end
|
103
107
|
|
104
|
-
# Add any external data to the node.
|
105
|
-
add_node_data(node)
|
106
108
|
|
107
|
-
|
109
|
+
# Add any external data to the node.
|
110
|
+
if node
|
111
|
+
add_node_data(node)
|
112
|
+
end
|
113
|
+
node
|
114
|
+
end
|
108
115
|
end
|
109
116
|
|
110
117
|
# Extract the node from the request, or use the request
|
@@ -123,10 +130,10 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
123
130
|
# By default the REST authorization system makes sure only the connected node
|
124
131
|
# can compile his catalog.
|
125
132
|
# This allows for instance monitoring systems or puppet-load to check several
|
126
|
-
# node's catalog with only one certificate and a modification to auth.conf
|
133
|
+
# node's catalog with only one certificate and a modification to auth.conf
|
127
134
|
# If no key is provided we can only compile the currently connected node.
|
128
135
|
name = request.key || request.node
|
129
|
-
if node = find_node(name,
|
136
|
+
if node = find_node(name, request.environment)
|
130
137
|
return node
|
131
138
|
end
|
132
139
|
|
@@ -11,6 +11,7 @@ class Puppet::Node::Facts::InventoryActiveRecord < Puppet::Indirector::ActiveRec
|
|
11
11
|
and inventory are deprecated. See http://links.puppetlabs.com/activerecord-deprecation"
|
12
12
|
|
13
13
|
def initialize
|
14
|
+
raise Puppet::Error, "ActiveRecords-based inventory is unsupported with Ruby 2 and Rails 3.0" if RUBY_VERSION[0] == '2'
|
14
15
|
Puppet.deprecation_warning "ActiveRecord-based storeconfigs and inventory are deprecated. See http://links.puppetlabs.com/activerecord-deprecation"
|
15
16
|
super
|
16
17
|
end
|