puppet 0.23.2 → 0.24.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/CHANGELOG +112 -1
- data/README +1 -1
- data/Rakefile +1 -2
- data/bin/filebucket +2 -3
- data/bin/puppet +55 -39
- data/bin/puppetca +20 -11
- data/bin/puppetd +30 -31
- data/bin/puppetdoc +27 -28
- data/bin/puppetmasterd +24 -42
- data/bin/puppetrun +3 -4
- data/bin/ralsh +5 -7
- data/conf/redhat/puppet.spec +4 -1
- data/conf/solaris/smf/svc-puppetd +1 -1
- data/conf/solaris/smf/svc-puppetmasterd +1 -1
- data/examples/code/allatonce +1 -1
- data/examples/code/assignments +1 -1
- data/examples/code/components +1 -1
- data/examples/code/file.bl +1 -1
- data/examples/code/filedefaults +1 -1
- data/examples/code/fileparsing +1 -1
- data/examples/code/filerecursion +1 -1
- data/examples/code/functions +1 -1
- data/examples/code/groups +1 -1
- data/examples/code/head +1 -1
- data/examples/code/importing +1 -1
- data/examples/code/modules/sample-module.pp +10 -0
- data/examples/code/modules/sample-module/README.txt +17 -0
- data/examples/code/modules/sample-module/lib/puppet/parser/functions/hostname_to_dn.rb +36 -0
- data/examples/code/modules/sample-module/manifests/init.pp +12 -0
- data/examples/code/modules/sample-module/templates/sample.erb +5 -0
- data/examples/code/nodes +1 -1
- data/examples/code/one +1 -1
- data/examples/code/relationships +1 -1
- data/examples/code/selectors +1 -1
- data/examples/code/simpletests +1 -1
- data/examples/root/etc/init.d/sleeper +1 -1
- data/examples/root/etc/puppet/fileserver.conf +1 -1
- data/ext/ldap/puppet.schema +1 -1
- data/ext/module_puppet +30 -21
- data/ext/puppet-test +3 -3
- data/ext/vim/filetype.vim +1 -1
- data/install.rb +1 -2
- data/lib/puppet.rb +20 -19
- data/lib/puppet/checksum.rb +57 -0
- data/lib/puppet/config_stores/rest.rb +1 -1
- data/lib/puppet/daemon.rb +0 -1
- data/lib/puppet/{configuration.rb → defaults.rb} +56 -23
- data/lib/puppet/dsl.rb +22 -116
- data/lib/puppet/error.rb +0 -9
- data/lib/puppet/event.rb +0 -1
- data/lib/puppet/external/gratr/rdot.rb +0 -1
- data/lib/puppet/external/lock.rb +0 -1
- data/lib/puppet/feature/base.rb +3 -2
- data/lib/puppet/feature/rails.rb +0 -1
- data/lib/puppet/file_serving.rb +7 -0
- data/lib/puppet/file_serving/configuration.rb +129 -0
- data/lib/puppet/file_serving/configuration/parser.rb +124 -0
- data/lib/puppet/file_serving/content.rb +34 -0
- data/lib/puppet/file_serving/file_base.rb +63 -0
- data/lib/puppet/file_serving/fileset.rb +138 -0
- data/lib/puppet/file_serving/indirection_hooks.rb +44 -0
- data/lib/puppet/file_serving/metadata.rb +69 -0
- data/lib/puppet/file_serving/mount.rb +186 -0
- data/lib/puppet/file_serving/terminus_helper.rb +19 -0
- data/lib/puppet/indirector.rb +68 -0
- data/lib/puppet/indirector/catalog/compiler.rb +173 -0
- data/lib/puppet/indirector/catalog/yaml.rb +24 -0
- data/lib/puppet/indirector/checksum/file.rb +33 -0
- data/lib/puppet/indirector/code.rb +6 -0
- data/lib/puppet/indirector/direct_file_server.rb +27 -0
- data/lib/puppet/indirector/exec.rb +57 -0
- data/lib/puppet/indirector/facts/facter.rb +65 -0
- data/lib/puppet/indirector/facts/memory.rb +9 -0
- data/lib/puppet/indirector/facts/yaml.rb +7 -0
- data/lib/puppet/indirector/file.rb +54 -0
- data/lib/puppet/indirector/file_content.rb +5 -0
- data/lib/puppet/indirector/file_content/file.rb +11 -0
- data/lib/puppet/indirector/file_content/file_server.rb +11 -0
- data/lib/puppet/indirector/file_content/modules.rb +11 -0
- data/lib/puppet/indirector/file_content/rest.rb +12 -0
- data/lib/puppet/indirector/file_metadata.rb +5 -0
- data/lib/puppet/indirector/file_metadata/file.rb +26 -0
- data/lib/puppet/indirector/file_metadata/file_server.rb +11 -0
- data/lib/puppet/indirector/file_metadata/modules.rb +17 -0
- data/lib/puppet/indirector/file_metadata/rest.rb +12 -0
- data/lib/puppet/indirector/file_server.rb +56 -0
- data/lib/puppet/indirector/indirection.rb +237 -0
- data/lib/puppet/indirector/ldap.rb +90 -0
- data/lib/puppet/indirector/memory.rb +21 -0
- data/lib/puppet/indirector/module_files.rb +82 -0
- data/lib/puppet/indirector/node/exec.rb +52 -0
- data/lib/puppet/indirector/node/ldap.rb +120 -0
- data/lib/puppet/indirector/node/memory.rb +10 -0
- data/lib/puppet/indirector/node/plain.rb +19 -0
- data/lib/puppet/indirector/node/rest.rb +7 -0
- data/lib/puppet/indirector/node/yaml.rb +7 -0
- data/lib/puppet/indirector/plain.rb +9 -0
- data/lib/puppet/indirector/report/processor.rb +50 -0
- data/lib/puppet/indirector/rest.rb +8 -0
- data/lib/puppet/indirector/ssl_rsa.rb +5 -0
- data/lib/puppet/indirector/ssl_rsa/file.rb +33 -0
- data/lib/puppet/indirector/terminus.rb +178 -0
- data/lib/puppet/indirector/yaml.rb +57 -0
- data/lib/puppet/metatype/attributes.rb +3 -3
- data/lib/puppet/metatype/closure.rb +0 -66
- data/lib/puppet/metatype/container.rb +0 -9
- data/lib/puppet/metatype/evaluation.rb +10 -2
- data/lib/puppet/metatype/instances.rb +16 -30
- data/lib/puppet/metatype/manager.rb +1 -2
- data/lib/puppet/metatype/metaparams.rb +27 -21
- data/lib/puppet/metatype/providers.rb +3 -2
- data/lib/puppet/metatype/relationships.rb +1 -2
- data/lib/puppet/metatype/schedules.rb +0 -1
- data/lib/puppet/metatype/tags.rb +0 -1
- data/lib/puppet/module.rb +60 -32
- data/lib/puppet/network/authconfig.rb +0 -1
- data/lib/puppet/network/authorization.rb +0 -1
- data/lib/puppet/network/authstore.rb +0 -1
- data/lib/puppet/network/client.rb +13 -4
- data/lib/puppet/network/client/ca.rb +4 -5
- data/lib/puppet/network/client/dipper.rb +0 -1
- data/lib/puppet/network/client/file.rb +0 -1
- data/lib/puppet/network/client/master.rb +127 -235
- data/lib/puppet/network/client/proxy.rb +0 -1
- data/lib/puppet/network/client/report.rb +0 -1
- data/lib/puppet/network/client/resource.rb +0 -1
- data/lib/puppet/network/client/runner.rb +0 -1
- data/lib/puppet/network/client/status.rb +0 -1
- data/lib/puppet/network/client_request.rb +0 -1
- data/lib/puppet/network/handler.rb +5 -2
- data/lib/puppet/network/handler/ca.rb +1 -2
- data/lib/puppet/network/handler/configuration.rb +184 -0
- data/lib/puppet/network/handler/filebucket.rb +1 -2
- data/lib/puppet/network/handler/fileserver.rb +279 -107
- data/lib/puppet/network/handler/master.rb +57 -152
- data/lib/puppet/network/handler/report.rb +6 -65
- data/lib/puppet/network/handler/resource.rb +5 -13
- data/lib/puppet/network/handler/runner.rb +3 -4
- data/lib/puppet/network/handler/status.rb +0 -1
- data/lib/puppet/network/http.rb +13 -0
- data/lib/puppet/network/http/handler.rb +109 -0
- data/lib/puppet/network/http/mongrel.rb +54 -0
- data/lib/puppet/network/http/mongrel/rest.rb +37 -0
- data/lib/puppet/network/http/mongrel/xmlrpc.rb +4 -0
- data/lib/puppet/network/http/webrick.rb +51 -0
- data/lib/puppet/network/http/webrick/rest.rb +41 -0
- data/lib/puppet/network/http/webrick/xmlrpc.rb +4 -0
- data/lib/puppet/network/http_server.rb +3 -0
- data/lib/puppet/network/{server → http_server}/mongrel.rb +11 -5
- data/lib/puppet/network/{server → http_server}/webrick.rb +9 -5
- data/lib/puppet/network/rest_controller.rb +2 -0
- data/lib/puppet/network/rights.rb +0 -1
- data/lib/puppet/network/server.rb +63 -3
- data/lib/puppet/network/xmlrpc/client.rb +90 -23
- data/lib/puppet/network/xmlrpc/processor.rb +0 -1
- data/lib/puppet/network/xmlrpc/server.rb +0 -1
- data/lib/puppet/network/xmlrpc/webrick_servlet.rb +0 -1
- data/lib/puppet/node.rb +165 -0
- data/lib/puppet/node/catalog.rb +480 -0
- data/lib/puppet/node/environment.rb +46 -0
- data/lib/puppet/node/facts.rb +36 -0
- data/lib/puppet/parameter.rb +34 -28
- data/lib/puppet/parser/ast.rb +0 -1
- data/lib/puppet/parser/ast/astarray.rb +30 -53
- data/lib/puppet/parser/ast/branch.rb +0 -10
- data/lib/puppet/parser/ast/caseopt.rb +0 -11
- data/lib/puppet/parser/ast/casestatement.rb +0 -12
- data/lib/puppet/parser/ast/collection.rb +1 -3
- data/lib/puppet/parser/ast/collexpr.rb +0 -2
- data/lib/puppet/parser/ast/{component.rb → definition.rb} +58 -72
- data/lib/puppet/parser/ast/else.rb +0 -10
- data/lib/puppet/parser/ast/function.rb +0 -2
- data/lib/puppet/parser/ast/hostclass.rb +21 -19
- data/lib/puppet/parser/ast/ifstatement.rb +0 -13
- data/lib/puppet/parser/ast/leaf.rb +0 -8
- data/lib/puppet/parser/ast/node.rb +13 -10
- data/lib/puppet/parser/ast/resource.rb +75 -0
- data/lib/puppet/parser/ast/{resourcedefaults.rb → resource_defaults.rb} +4 -20
- data/lib/puppet/parser/ast/{resourceoverride.rb → resource_override.rb} +3 -5
- data/lib/puppet/parser/ast/resource_reference.rb +66 -0
- data/lib/puppet/parser/ast/resourceparam.rb +0 -14
- data/lib/puppet/parser/ast/selector.rb +0 -10
- data/lib/puppet/parser/ast/tag.rb +0 -2
- data/lib/puppet/parser/ast/vardef.rb +0 -14
- data/lib/puppet/parser/collector.rb +83 -101
- data/lib/puppet/parser/compile.rb +509 -0
- data/lib/puppet/parser/functions.rb +10 -10
- data/lib/puppet/parser/interpreter.rb +44 -662
- data/lib/puppet/parser/lexer.rb +1 -3
- data/lib/puppet/parser/parser.rb +674 -701
- data/lib/puppet/parser/parser_support.rb +33 -24
- data/lib/puppet/parser/resource.rb +219 -162
- data/lib/puppet/parser/resource/param.rb +1 -2
- data/lib/puppet/parser/resource/reference.rb +24 -16
- data/lib/puppet/parser/scope.rb +48 -459
- data/lib/puppet/parser/templatewrapper.rb +4 -5
- data/lib/puppet/pgraph.rb +10 -13
- data/lib/puppet/property.rb +25 -41
- data/lib/puppet/propertychange.rb +0 -2
- data/lib/puppet/provider.rb +15 -11
- data/lib/puppet/provider/cron/crontab.rb +6 -7
- data/lib/puppet/provider/group/groupadd.rb +0 -1
- data/lib/puppet/provider/group/netinfo.rb +0 -1
- data/lib/puppet/provider/group/pw.rb +0 -1
- data/lib/puppet/provider/host/netinfo.rb +0 -1
- data/lib/puppet/provider/host/parsed.rb +0 -1
- data/lib/puppet/provider/interface/redhat.rb +90 -91
- data/lib/puppet/provider/interface/sunos.rb +98 -81
- data/lib/puppet/provider/mailalias/aliases.rb +0 -1
- data/lib/puppet/provider/maillist/mailman.rb +2 -3
- data/lib/puppet/provider/mount.rb +10 -9
- data/lib/puppet/provider/mount/netinfo.rb +0 -1
- data/lib/puppet/provider/mount/parsed.rb +0 -1
- data/lib/puppet/provider/nameservice.rb +0 -1
- data/lib/puppet/provider/nameservice/netinfo.rb +0 -1
- data/lib/puppet/provider/nameservice/objectadd.rb +0 -1
- data/lib/puppet/provider/nameservice/pw.rb +0 -1
- data/lib/puppet/provider/package.rb +0 -2
- data/lib/puppet/provider/package/appdmg.rb +0 -1
- data/lib/puppet/provider/package/apple.rb +0 -1
- data/lib/puppet/provider/package/apt.rb +0 -1
- data/lib/puppet/provider/package/aptitude.rb +0 -1
- data/lib/puppet/provider/package/aptrpm.rb +0 -1
- data/lib/puppet/provider/package/blastwave.rb +0 -1
- data/lib/puppet/provider/package/darwinport.rb +0 -1
- data/lib/puppet/provider/package/dpkg.rb +9 -1
- data/lib/puppet/provider/package/fink.rb +0 -1
- data/lib/puppet/provider/package/freebsd.rb +0 -1
- data/lib/puppet/provider/package/gem.rb +0 -1
- data/lib/puppet/provider/package/openbsd.rb +1 -2
- data/lib/puppet/provider/package/pkgdmg.rb +14 -15
- data/lib/puppet/provider/package/portage.rb +6 -7
- data/lib/puppet/provider/package/ports.rb +1 -4
- data/lib/puppet/provider/package/rpm.rb +31 -45
- data/lib/puppet/provider/package/sun.rb +0 -3
- data/lib/puppet/provider/package/sunfreeware.rb +0 -1
- data/lib/puppet/provider/package/up2date.rb +0 -1
- data/lib/puppet/provider/package/urpmi.rb +0 -1
- data/lib/puppet/provider/package/yum.rb +45 -14
- data/lib/puppet/provider/package/yumhelper.py +37 -0
- data/lib/puppet/provider/parsedfile.rb +2 -3
- data/lib/puppet/provider/port/parsed.rb +0 -1
- data/lib/puppet/provider/service/base.rb +4 -1
- data/lib/puppet/provider/service/debian.rb +5 -2
- data/lib/puppet/provider/service/freebsd.rb +51 -0
- data/lib/puppet/provider/service/init.rb +16 -40
- data/lib/puppet/provider/service/redhat.rb +1 -6
- data/lib/puppet/provider/service/smf.rb +0 -1
- data/lib/puppet/provider/sshkey/parsed.rb +0 -1
- data/lib/puppet/provider/user/netinfo.rb +0 -1
- data/lib/puppet/provider/user/pw.rb +0 -1
- data/lib/puppet/provider/user/useradd.rb +0 -1
- data/lib/puppet/provider/zone/solaris.rb +0 -1
- data/lib/puppet/rails.rb +35 -30
- data/lib/puppet/rails/database/schema.rb +0 -1
- data/lib/puppet/rails/host.rb +6 -15
- data/lib/puppet/rails/param_name.rb +1 -2
- data/lib/puppet/rails/param_value.rb +0 -1
- data/lib/puppet/rails/puppet_class.rb +0 -1
- data/lib/puppet/rails/resource.rb +3 -5
- data/lib/puppet/reference/configuration.rb +12 -6
- data/lib/puppet/reference/indirection.rb +34 -0
- data/lib/puppet/reference/node_source.rb +9 -0
- data/lib/puppet/relationship.rb +10 -8
- data/lib/puppet/reports.rb +51 -0
- data/lib/puppet/reports/log.rb +2 -3
- data/lib/puppet/reports/rrdgraph.rb +2 -5
- data/lib/puppet/reports/store.rb +6 -7
- data/lib/puppet/reports/tagmail.rb +2 -3
- data/lib/puppet/resource_reference.rb +79 -0
- data/lib/puppet/simple_graph.rb +251 -0
- data/lib/puppet/sslcertificates.rb +19 -15
- data/lib/puppet/sslcertificates/ca.rb +56 -15
- data/lib/puppet/sslcertificates/certificate.rb +0 -1
- data/lib/puppet/sslcertificates/inventory.rb +2 -6
- data/lib/puppet/sslcertificates/monkey_patch.rb +6 -0
- data/lib/puppet/sslcertificates/support.rb +4 -5
- data/lib/puppet/transaction.rb +93 -96
- data/lib/puppet/transaction/report.rb +5 -1
- data/lib/puppet/transportable.rb +79 -125
- data/lib/puppet/type.rb +44 -10
- data/lib/puppet/type/component.rb +25 -110
- data/lib/puppet/type/cron.rb +1 -2
- data/lib/puppet/type/exec.rb +19 -13
- data/lib/puppet/type/group.rb +0 -1
- data/lib/puppet/type/host.rb +0 -1
- data/lib/puppet/type/interface.rb +6 -3
- data/lib/puppet/type/k5login.rb +87 -0
- data/lib/puppet/type/mailalias.rb +0 -1
- data/lib/puppet/type/maillist.rb +0 -1
- data/lib/puppet/type/mount.rb +7 -13
- data/lib/puppet/type/notify.rb +0 -1
- data/lib/puppet/type/package.rb +7 -63
- data/lib/puppet/type/pfile.rb +25 -32
- data/lib/puppet/type/pfile/checksum.rb +0 -1
- data/lib/puppet/type/pfile/content.rb +18 -3
- data/lib/puppet/type/pfile/ensure.rb +5 -6
- data/lib/puppet/type/pfile/group.rb +4 -1
- data/lib/puppet/type/pfile/mode.rb +0 -1
- data/lib/puppet/type/pfile/owner.rb +6 -9
- data/lib/puppet/type/pfile/source.rb +28 -11
- data/lib/puppet/type/pfile/target.rb +2 -1
- data/lib/puppet/type/pfile/type.rb +0 -1
- data/lib/puppet/type/pfilebucket.rb +0 -1
- data/lib/puppet/type/port.rb +0 -1
- data/lib/puppet/type/resources.rb +0 -1
- data/lib/puppet/type/schedule.rb +17 -15
- data/lib/puppet/type/service.rb +23 -159
- data/lib/puppet/type/sshkey.rb +0 -1
- data/lib/puppet/type/tidy.rb +15 -7
- data/lib/puppet/type/user.rb +0 -1
- data/lib/puppet/type/zone.rb +0 -1
- data/lib/puppet/util.rb +1 -2
- data/lib/puppet/util/autoload.rb +21 -23
- data/lib/puppet/util/checksums.rb +37 -0
- data/lib/puppet/util/classgen.rb +0 -1
- data/lib/puppet/util/diff.rb +71 -0
- data/lib/puppet/util/docs.rb +8 -2
- data/lib/puppet/util/errors.rb +0 -1
- data/lib/puppet/util/execution.rb +0 -1
- data/lib/puppet/util/fact_store.rb +0 -1
- data/lib/puppet/util/feature.rb +31 -22
- data/lib/puppet/util/fileparsing.rb +3 -2
- data/lib/puppet/util/filetype.rb +30 -12
- data/lib/puppet/util/graph.rb +0 -1
- data/lib/puppet/util/inifile.rb +0 -1
- data/lib/puppet/util/instance_loader.rb +11 -4
- data/lib/puppet/util/loadedfile.rb +0 -1
- data/lib/puppet/util/log.rb +0 -1
- data/lib/puppet/util/log_paths.rb +0 -1
- data/lib/puppet/util/logging.rb +0 -1
- data/lib/puppet/util/metaid.rb +0 -1
- data/lib/puppet/util/methodhelper.rb +0 -2
- data/lib/puppet/util/metric.rb +1 -2
- data/lib/puppet/util/plist.rb +0 -1
- data/lib/puppet/util/plist/generator.rb +0 -1
- data/lib/puppet/util/plist/parser.rb +0 -1
- data/lib/puppet/util/posix.rb +7 -1
- data/lib/puppet/util/provider_features.rb +11 -12
- data/lib/puppet/util/rails/collection_merger.rb +0 -1
- data/lib/puppet/util/reference.rb +2 -3
- data/lib/puppet/util/{config.rb → settings.rb} +424 -300
- data/lib/puppet/util/storage.rb +1 -3
- data/lib/puppet/util/subclass_loader.rb +0 -1
- data/lib/puppet/util/suidmanager.rb +25 -42
- data/lib/puppet/util/uri_helper.rb +22 -0
- data/lib/puppet/util/variables.rb +0 -1
- data/lib/puppet/util/warnings.rb +0 -1
- data/test/Rakefile +1 -1
- data/test/certmgr/ca.rb +8 -2
- data/test/certmgr/certmgr.rb +14 -6
- data/test/certmgr/inventory.rb +18 -30
- data/test/certmgr/support.rb +3 -2
- data/test/executables/filebucket.rb +1 -2
- data/test/executables/puppetbin.rb +1 -2
- data/test/executables/puppetca.rb +7 -2
- data/test/executables/puppetd.rb +23 -29
- data/test/executables/puppetmasterd.rb +1 -2
- data/test/executables/puppetmodule.rb +1 -2
- data/test/language/ast.rb +24 -29
- data/test/language/ast/casestatement.rb +1 -2
- data/test/language/ast/definition.rb +166 -0
- data/test/language/ast/hostclass.rb +50 -29
- data/test/language/ast/resource.rb +59 -0
- data/test/language/ast/{resourceref.rb → resource_reference.rb} +30 -20
- data/test/language/ast/selector.rb +1 -2
- data/test/language/ast/variable.rb +1 -2
- data/test/language/compile.rb +569 -0
- data/test/language/functions.rb +57 -76
- data/test/language/lexer.rb +20 -3
- data/test/language/parser.rb +45 -33
- data/test/language/resource.rb +275 -308
- data/test/language/scope.rb +135 -410
- data/test/language/snippets.rb +19 -41
- data/test/language/transportable.rb +8 -29
- data/test/lib/mocha/auto_verify.rb +6 -6
- data/test/lib/mocha/deprecation.rb +22 -0
- data/test/lib/mocha/exception_raiser.rb +17 -0
- data/test/lib/mocha/expectation.rb +167 -84
- data/test/lib/mocha/infinite_range.rb +4 -6
- data/test/lib/mocha/inspect.rb +3 -1
- data/test/lib/mocha/is_a.rb +9 -0
- data/test/lib/mocha/missing_expectation.rb +27 -0
- data/test/lib/mocha/mock.rb +192 -5
- data/test/lib/mocha/multiple_yields.rb +20 -0
- data/test/lib/mocha/no_yields.rb +11 -0
- data/test/lib/mocha/object.rb +11 -1
- data/test/lib/mocha/parameter_matchers.rb +9 -0
- data/test/lib/mocha/parameter_matchers/all_of.rb +39 -0
- data/test/lib/mocha/parameter_matchers/any_of.rb +44 -0
- data/test/lib/mocha/parameter_matchers/anything.rb +30 -0
- data/test/lib/mocha/parameter_matchers/has_entry.rb +39 -0
- data/test/lib/mocha/parameter_matchers/has_key.rb +39 -0
- data/test/lib/mocha/parameter_matchers/has_value.rb +39 -0
- data/test/lib/mocha/parameter_matchers/includes.rb +37 -0
- data/test/lib/mocha/return_values.rb +31 -0
- data/test/lib/mocha/single_return_value.rb +24 -0
- data/test/lib/mocha/single_yield.rb +18 -0
- data/test/lib/mocha/standalone.rb +2 -0
- data/test/lib/mocha/stub.rb +18 -0
- data/test/lib/mocha/test_case_adapter.rb +3 -3
- data/test/lib/mocha/yield_parameters.rb +31 -0
- data/test/lib/puppettest.rb +38 -20
- data/test/lib/puppettest/certificates.rb +0 -1
- data/test/lib/puppettest/exetest.rb +0 -1
- data/test/lib/puppettest/fakes.rb +0 -1
- data/test/lib/puppettest/fileparsing.rb +8 -15
- data/test/lib/puppettest/filetesting.rb +0 -1
- data/test/lib/puppettest/parsertesting.rb +37 -23
- data/test/lib/puppettest/railstesting.rb +3 -6
- data/test/lib/puppettest/reporttesting.rb +0 -1
- data/test/lib/puppettest/resourcetesting.rb +6 -34
- data/test/lib/puppettest/runnable_test.rb +30 -0
- data/test/lib/puppettest/servertest.rb +2 -3
- data/test/lib/puppettest/support/assertions.rb +13 -41
- data/test/lib/puppettest/support/collection.rb +0 -1
- data/test/lib/puppettest/support/helpers.rb +0 -1
- data/test/lib/puppettest/support/resources.rb +17 -17
- data/test/lib/puppettest/support/utils.rb +45 -27
- data/test/lib/puppettest/testcase.rb +2 -21
- data/test/lib/rake/puppet_test_loader.rb +0 -1
- data/test/lib/rake/puppet_testtask.rb +0 -1
- data/test/network/authconfig.rb +1 -2
- data/test/network/authorization.rb +1 -2
- data/test/network/authstore.rb +1 -2
- data/test/network/client/ca.rb +12 -7
- data/test/network/client/client.rb +17 -22
- data/test/network/client/dipper.rb +1 -2
- data/test/network/client/master.rb +70 -184
- data/test/network/client/resource.rb +9 -2
- data/test/network/client_request.rb +1 -2
- data/test/network/daemon.rb +1 -2
- data/test/network/handler/bucket.rb +2 -31
- data/test/network/handler/ca.rb +9 -3
- data/test/network/handler/configuration.rb +160 -0
- data/test/network/handler/fileserver.rb +24 -5
- data/test/network/handler/handler.rb +1 -2
- data/test/network/handler/master.rb +38 -243
- data/test/network/handler/report.rb +2 -104
- data/test/network/handler/resource.rb +5 -3
- data/test/network/handler/runner.rb +22 -60
- data/test/network/rights.rb +1 -2
- data/test/network/server/mongrel_test.rb +2 -3
- data/test/network/server/webrick.rb +17 -11
- data/test/network/xmlrpc/client.rb +27 -12
- data/test/network/xmlrpc/processor.rb +3 -4
- data/test/network/xmlrpc/server.rb +1 -2
- data/test/network/xmlrpc/webrick_servlet.rb +8 -2
- data/test/other/dsl.rb +2 -4
- data/test/other/events.rb +14 -56
- data/test/other/overrides.rb +3 -6
- data/test/other/propertychange.rb +1 -2
- data/test/other/provider.rb +1 -2
- data/test/other/puppet.rb +1 -2
- data/test/other/relationships.rb +15 -17
- data/test/other/report.rb +14 -20
- data/test/other/transactions.rb +109 -192
- data/test/puppet/conffiles.rb +3 -5
- data/test/puppet/defaults.rb +1 -28
- data/test/puppet/errortest.rb +1 -2
- data/test/puppet/tc_suidmanager.rb +77 -63
- data/test/rails/ast.rb +4 -4
- data/test/rails/configuration.rb +71 -0
- data/test/rails/host.rb +19 -30
- data/test/rails/rails.rb +1 -2
- data/test/rails/railsparameter.rb +3 -4
- data/test/rails/railsresource.rb +6 -5
- data/test/ral/manager/attributes.rb +1 -2
- data/test/ral/manager/instances.rb +3 -3
- data/test/ral/manager/manager.rb +1 -2
- data/test/ral/manager/provider.rb +1 -2
- data/test/ral/manager/type.rb +89 -93
- data/test/ral/providers/cron/crontab.rb +9 -11
- data/test/ral/providers/group.rb +1 -2
- data/test/ral/providers/host/netinfo.rb +1 -2
- data/test/ral/providers/host/parsed.rb +1 -2
- data/test/ral/providers/mailalias/aliases.rb +1 -2
- data/test/ral/providers/mount/netinfo.rb +1 -2
- data/test/ral/providers/nameservice.rb +1 -2
- data/test/ral/providers/package.rb +5 -4
- data/test/ral/providers/package/apt.rb +0 -1
- data/test/ral/providers/package/aptrpm.rb +0 -1
- data/test/ral/providers/parsedfile.rb +1 -2
- data/test/ral/providers/port/parsed.rb +1 -2
- data/test/ral/providers/provider.rb +10 -5
- data/test/ral/providers/service/base.rb +1 -2
- data/test/ral/providers/service/debian.rb +58 -0
- data/test/ral/providers/sshkey/parsed.rb +1 -2
- data/test/ral/providers/user.rb +3 -2
- data/test/ral/providers/user/useradd.rb +0 -1
- data/test/ral/types/basic.rb +4 -9
- data/test/ral/types/cron.rb +6 -12
- data/test/ral/types/exec.rb +6 -7
- data/test/ral/types/file.rb +35 -14
- data/test/ral/types/file/target.rb +6 -5
- data/test/ral/types/filebucket.rb +3 -2
- data/test/ral/types/fileignoresource.rb +10 -42
- data/test/ral/types/filesources.rb +21 -60
- data/test/ral/types/group.rb +3 -3
- data/test/ral/types/host.rb +6 -3
- data/test/ral/types/mailalias.rb +1 -2
- data/test/ral/types/parameter.rb +5 -3
- data/test/ral/types/port.rb +1 -2
- data/test/ral/types/property.rb +3 -3
- data/test/ral/types/resources.rb +1 -2
- data/test/ral/types/service.rb +5 -3
- data/test/ral/types/sshkey.rb +5 -3
- data/test/ral/types/tidy.rb +63 -3
- data/test/ral/types/user.rb +10 -11
- data/test/ral/types/yumrepo.rb +1 -1
- data/test/ral/types/zone.rb +1 -2
- data/test/util/autoload.rb +23 -27
- data/test/util/classgen.rb +1 -2
- data/test/util/execution.rb +1 -2
- data/test/util/features.rb +1 -3
- data/test/util/fileparsing.rb +11 -3
- data/test/util/filetype.rb +1 -2
- data/test/util/inifile.rb +1 -1
- data/test/util/instance_loader.rb +5 -6
- data/test/util/loadedfile.rb +1 -2
- data/test/util/log.rb +1 -2
- data/test/util/metrics.rb +1 -2
- data/test/util/package.rb +1 -2
- data/test/util/posixtest.rb +1 -2
- data/test/util/{config.rb → settings.rb} +123 -265
- data/test/util/storage.rb +1 -2
- data/test/util/subclass_loader.rb +1 -2
- data/test/util/utiltest.rb +1 -111
- metadata +130 -112
- data/ext/tools/passwd2puppet +0 -45
- data/lib/puppet/fact_stores/yaml.rb +0 -42
- data/lib/puppet/network/handler/facts.rb +0 -70
- data/lib/puppet/parser/ast/resourcedef.rb +0 -222
- data/lib/puppet/parser/ast/resourceref.rb +0 -58
- data/test/language/ast/component.rb +0 -142
- data/test/language/collector.rb +0 -179
- data/test/language/interpreter.rb +0 -804
- data/test/language/node.rb +0 -126
- data/test/lib/mocha/mock_methods.rb +0 -122
- data/test/lib/puppettest/graph.rb +0 -41
- data/test/lib/spec.rb +0 -8
- data/test/lib/spec/callback.rb +0 -11
- data/test/lib/spec/callback/callback_container.rb +0 -60
- data/test/lib/spec/callback/extensions/module.rb +0 -24
- data/test/lib/spec/callback/extensions/object.rb +0 -37
- data/test/lib/spec/deprecated.rb +0 -3
- data/test/lib/spec/expectations.rb +0 -59
- data/test/lib/spec/expectations/differs/default.rb +0 -62
- data/test/lib/spec/expectations/errors.rb +0 -6
- data/test/lib/spec/expectations/extensions.rb +0 -3
- data/test/lib/spec/expectations/extensions/object.rb +0 -109
- data/test/lib/spec/expectations/extensions/proc.rb +0 -57
- data/test/lib/spec/expectations/extensions/string_and_symbol.rb +0 -17
- data/test/lib/spec/expectations/handler.rb +0 -47
- data/test/lib/spec/expectations/should.rb +0 -5
- data/test/lib/spec/expectations/should/base.rb +0 -64
- data/test/lib/spec/expectations/should/change.rb +0 -69
- data/test/lib/spec/expectations/should/have.rb +0 -128
- data/test/lib/spec/expectations/should/not.rb +0 -74
- data/test/lib/spec/expectations/should/should.rb +0 -81
- data/test/lib/spec/expectations/sugar.rb +0 -47
- data/test/lib/spec/matchers.rb +0 -160
- data/test/lib/spec/matchers/be.rb +0 -161
- data/test/lib/spec/matchers/be_close.rb +0 -37
- data/test/lib/spec/matchers/change.rb +0 -120
- data/test/lib/spec/matchers/eql.rb +0 -43
- data/test/lib/spec/matchers/equal.rb +0 -43
- data/test/lib/spec/matchers/has.rb +0 -44
- data/test/lib/spec/matchers/have.rb +0 -140
- data/test/lib/spec/matchers/include.rb +0 -50
- data/test/lib/spec/matchers/match.rb +0 -41
- data/test/lib/spec/matchers/raise_error.rb +0 -100
- data/test/lib/spec/matchers/respond_to.rb +0 -35
- data/test/lib/spec/matchers/satisfy.rb +0 -47
- data/test/lib/spec/matchers/throw_symbol.rb +0 -75
- data/test/lib/spec/mocks.rb +0 -232
- data/test/lib/spec/mocks/argument_expectation.rb +0 -132
- data/test/lib/spec/mocks/error_generator.rb +0 -85
- data/test/lib/spec/mocks/errors.rb +0 -10
- data/test/lib/spec/mocks/extensions/object.rb +0 -3
- data/test/lib/spec/mocks/message_expectation.rb +0 -231
- data/test/lib/spec/mocks/methods.rb +0 -40
- data/test/lib/spec/mocks/mock.rb +0 -26
- data/test/lib/spec/mocks/mock_handler.rb +0 -166
- data/test/lib/spec/mocks/order_group.rb +0 -29
- data/test/lib/spec/rake/spectask.rb +0 -173
- data/test/lib/spec/rake/verify_rcov.rb +0 -47
- data/test/lib/spec/runner.rb +0 -132
- data/test/lib/spec/runner/backtrace_tweaker.rb +0 -55
- data/test/lib/spec/runner/command_line.rb +0 -34
- data/test/lib/spec/runner/context.rb +0 -154
- data/test/lib/spec/runner/context_eval.rb +0 -142
- data/test/lib/spec/runner/context_runner.rb +0 -55
- data/test/lib/spec/runner/drb_command_line.rb +0 -21
- data/test/lib/spec/runner/execution_context.rb +0 -17
- data/test/lib/spec/runner/extensions/kernel.rb +0 -17
- data/test/lib/spec/runner/extensions/object.rb +0 -32
- data/test/lib/spec/runner/formatter.rb +0 -5
- data/test/lib/spec/runner/formatter/base_text_formatter.rb +0 -118
- data/test/lib/spec/runner/formatter/html_formatter.rb +0 -219
- data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +0 -27
- data/test/lib/spec/runner/formatter/rdoc_formatter.rb +0 -22
- data/test/lib/spec/runner/formatter/specdoc_formatter.rb +0 -23
- data/test/lib/spec/runner/heckle_runner.rb +0 -71
- data/test/lib/spec/runner/heckle_runner_win.rb +0 -10
- data/test/lib/spec/runner/option_parser.rb +0 -224
- data/test/lib/spec/runner/reporter.rb +0 -105
- data/test/lib/spec/runner/spec_matcher.rb +0 -25
- data/test/lib/spec/runner/spec_parser.rb +0 -41
- data/test/lib/spec/runner/spec_should_raise_handler.rb +0 -74
- data/test/lib/spec/runner/specification.rb +0 -114
- data/test/lib/spec/translator.rb +0 -87
- data/test/lib/spec/version.rb +0 -30
- data/test/network/handler/facts.rb +0 -112
- data/test/other/pgraph.rb +0 -290
- data/test/other/relationship.rb +0 -74
- data/test/puppet/modules.rb +0 -59
- data/test/rails/collection.rb +0 -247
- data/test/rails/interpreter.rb +0 -91
- data/test/ral/providers/mount/parsed.rb +0 -251
- data/test/ral/providers/service.rb +0 -235
- data/test/ral/types/component.rb +0 -113
- data/test/ral/types/interface.rb +0 -40
- data/test/ral/types/mount.rb +0 -362
- data/test/ral/types/package.rb +0 -154
- data/test/ral/types/schedule.rb +0 -357
- data/test/tagging/tagging.rb +0 -170
- data/test/util/fact_store.rb +0 -67
- data/test/util/graph.rb +0 -108
@@ -1,3 +1,5 @@
|
|
1
|
+
# I pulled this into a separate file, because I got
|
2
|
+
# tired of rebuilding the parser.rb file all the time.
|
1
3
|
class Puppet::Parser::Parser
|
2
4
|
require 'puppet/parser/functions'
|
3
5
|
|
@@ -13,7 +15,7 @@ class Puppet::Parser::Parser
|
|
13
15
|
|
14
16
|
AST = Puppet::Parser::AST
|
15
17
|
|
16
|
-
attr_reader :
|
18
|
+
attr_reader :version, :environment
|
17
19
|
attr_accessor :files
|
18
20
|
|
19
21
|
|
@@ -83,6 +85,10 @@ class Puppet::Parser::Parser
|
|
83
85
|
raise except
|
84
86
|
end
|
85
87
|
|
88
|
+
def file
|
89
|
+
@lexer.file
|
90
|
+
end
|
91
|
+
|
86
92
|
def file=(file)
|
87
93
|
unless FileTest.exists?(file)
|
88
94
|
unless file =~ /\.pp$/
|
@@ -119,7 +125,7 @@ class Puppet::Parser::Parser
|
|
119
125
|
# The recursive method used to actually look these objects up.
|
120
126
|
def fqfind(namespace, name, table)
|
121
127
|
namespace = namespace.downcase
|
122
|
-
name = name.downcase
|
128
|
+
name = name.to_s.downcase
|
123
129
|
if name =~ /^::/ or namespace == ""
|
124
130
|
classname = name.sub(/^::/, '')
|
125
131
|
unless table[classname]
|
@@ -174,14 +180,14 @@ class Puppet::Parser::Parser
|
|
174
180
|
"in file #{@lexer.file} at line #{@lexer.line}"
|
175
181
|
)
|
176
182
|
end
|
177
|
-
files = Puppet::Module::find_manifests(pat, dir)
|
183
|
+
files = Puppet::Module::find_manifests(pat, :cwd => dir)
|
178
184
|
if files.size == 0
|
179
185
|
raise Puppet::ImportError.new("No file(s) found for import " +
|
180
186
|
"of '#{pat}'")
|
181
187
|
end
|
182
188
|
|
183
189
|
files.collect { |file|
|
184
|
-
parser = Puppet::Parser::Parser.new(@astset)
|
190
|
+
parser = Puppet::Parser::Parser.new(:astset => @astset, :environment => @environment)
|
185
191
|
parser.files = self.files
|
186
192
|
Puppet.debug("importing '%s'" % file)
|
187
193
|
|
@@ -200,11 +206,10 @@ class Puppet::Parser::Parser
|
|
200
206
|
}
|
201
207
|
end
|
202
208
|
|
203
|
-
def initialize(
|
209
|
+
def initialize(options = {})
|
210
|
+
@astset = options[:astset] || ASTSet.new({}, {}, {})
|
211
|
+
@environment = options[:environment]
|
204
212
|
initvars()
|
205
|
-
if astset
|
206
|
-
@astset = astset
|
207
|
-
end
|
208
213
|
end
|
209
214
|
|
210
215
|
# Initialize or reset all of our variables.
|
@@ -212,15 +217,6 @@ class Puppet::Parser::Parser
|
|
212
217
|
@lexer = Puppet::Parser::Lexer.new()
|
213
218
|
@files = []
|
214
219
|
@loaded = []
|
215
|
-
|
216
|
-
# This is where we store our classes and definitions and nodes.
|
217
|
-
# Clear each hash, just to help the GC a bit.
|
218
|
-
if defined?(@astset)
|
219
|
-
[:classes, :definitions, :nodes].each do |name|
|
220
|
-
@astset.send(name).clear
|
221
|
-
end
|
222
|
-
end
|
223
|
-
@astset = ASTSet.new({}, {}, {})
|
224
220
|
end
|
225
221
|
|
226
222
|
# Try to load a class, since we could not find it.
|
@@ -340,7 +336,7 @@ class Puppet::Parser::Parser
|
|
340
336
|
args[param] = options[param] if options[param]
|
341
337
|
end
|
342
338
|
|
343
|
-
@astset.definitions[name] = ast AST::
|
339
|
+
@astset.definitions[name] = ast AST::Definition, args
|
344
340
|
end
|
345
341
|
|
346
342
|
# Create a new node. Nodes are special, because they're stored in a global
|
@@ -370,10 +366,12 @@ class Puppet::Parser::Parser
|
|
370
366
|
end
|
371
367
|
|
372
368
|
def on_error(token,value,stack)
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
369
|
+
if token == 0 # denotes end of file
|
370
|
+
value = 'end of file'
|
371
|
+
else
|
372
|
+
value = "'%s'" % value
|
373
|
+
end
|
374
|
+
error = "Syntax error at %s" % [value]
|
377
375
|
|
378
376
|
if brace = @lexer.expected
|
379
377
|
error += "; expected '%s'" % brace
|
@@ -425,6 +423,7 @@ class Puppet::Parser::Parser
|
|
425
423
|
# Store the results as the top-level class.
|
426
424
|
newclass("", :code => main)
|
427
425
|
end
|
426
|
+
@version = Time.now.to_i
|
428
427
|
return @astset
|
429
428
|
ensure
|
430
429
|
@lexer.clear
|
@@ -442,6 +441,16 @@ class Puppet::Parser::Parser
|
|
442
441
|
def string=(string)
|
443
442
|
@lexer.string = string
|
444
443
|
end
|
445
|
-
end
|
446
444
|
|
447
|
-
#
|
445
|
+
# Add a new file to be checked when we're checking to see if we should be
|
446
|
+
# reparsed. This is basically only used by the TemplateWrapper to let the
|
447
|
+
# parser know about templates that should be parsed.
|
448
|
+
def watch_file(*files)
|
449
|
+
files.each do |file|
|
450
|
+
unless file.is_a? Puppet::Util::LoadedFile
|
451
|
+
file = Puppet::Util::LoadedFile.new(file)
|
452
|
+
end
|
453
|
+
@files << file
|
454
|
+
end
|
455
|
+
end
|
456
|
+
end
|
@@ -3,19 +3,26 @@
|
|
3
3
|
class Puppet::Parser::Resource
|
4
4
|
require 'puppet/parser/resource/param'
|
5
5
|
require 'puppet/parser/resource/reference'
|
6
|
-
ResParam = Struct.new :name, :value, :source, :line, :file
|
7
6
|
include Puppet::Util
|
8
7
|
include Puppet::Util::MethodHelper
|
9
8
|
include Puppet::Util::Errors
|
10
9
|
include Puppet::Util::Logging
|
11
10
|
|
12
11
|
attr_accessor :source, :line, :file, :scope, :rails_id
|
13
|
-
attr_accessor :virtual, :override, :
|
12
|
+
attr_accessor :virtual, :override, :translated
|
14
13
|
|
15
|
-
attr_reader :exported
|
14
|
+
attr_reader :exported, :evaluated, :params
|
16
15
|
|
17
16
|
attr_writer :tags
|
18
17
|
|
18
|
+
# Determine whether the provided parameter name is a relationship parameter.
|
19
|
+
def self.relationship_parameter?(name)
|
20
|
+
unless defined?(@relationship_names)
|
21
|
+
@relationship_names = Puppet::Type.relationship_params.collect { |p| p.name }
|
22
|
+
end
|
23
|
+
@relationship_names.include?(name)
|
24
|
+
end
|
25
|
+
|
19
26
|
# Proxy a few methods to our @ref object.
|
20
27
|
[:builtin?, :type, :title].each do |method|
|
21
28
|
define_method(method) do
|
@@ -24,7 +31,7 @@ class Puppet::Parser::Resource
|
|
24
31
|
end
|
25
32
|
|
26
33
|
# Set up some boolean test methods
|
27
|
-
[:exported, :translated, :override].each do |method|
|
34
|
+
[:exported, :translated, :override, :virtual, :evaluated].each do |method|
|
28
35
|
newmeth = (method.to_s + "?").intern
|
29
36
|
define_method(newmeth) do
|
30
37
|
self.send(method)
|
@@ -43,44 +50,6 @@ class Puppet::Parser::Resource
|
|
43
50
|
end
|
44
51
|
end
|
45
52
|
|
46
|
-
# Add default values from our definition.
|
47
|
-
def adddefaults
|
48
|
-
defaults = scope.lookupdefaults(self.type)
|
49
|
-
|
50
|
-
defaults.each do |name, param|
|
51
|
-
unless @params.include?(param.name)
|
52
|
-
self.debug "Adding default for %s" % param.name
|
53
|
-
|
54
|
-
@params[param.name] = param
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
# Add any metaparams defined in our scope. This actually adds any metaparams
|
60
|
-
# from any parent scope, and there's currently no way to turn that off.
|
61
|
-
def addmetaparams
|
62
|
-
Puppet::Type.eachmetaparam do |name|
|
63
|
-
next if self[name]
|
64
|
-
if val = scope.lookupvar(name.to_s, false)
|
65
|
-
unless val == :undefined
|
66
|
-
set Param.new(:name => name, :value => val,
|
67
|
-
:source => scope.source)
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
# Add any overrides for this object.
|
74
|
-
def addoverrides
|
75
|
-
overrides = scope.lookupoverrides(self)
|
76
|
-
|
77
|
-
overrides.each do |over|
|
78
|
-
self.merge(over)
|
79
|
-
end
|
80
|
-
|
81
|
-
overrides.clear
|
82
|
-
end
|
83
|
-
|
84
53
|
def builtin=(bool)
|
85
54
|
@ref.builtin = bool
|
86
55
|
end
|
@@ -89,15 +58,8 @@ class Puppet::Parser::Resource
|
|
89
58
|
def evaluate
|
90
59
|
if klass = @ref.definedtype
|
91
60
|
finish()
|
92
|
-
scope.
|
93
|
-
return klass.evaluate(:scope => scope,
|
94
|
-
:type => self.type,
|
95
|
-
:title => self.title,
|
96
|
-
:arguments => self.to_hash,
|
97
|
-
:scope => self.scope,
|
98
|
-
:virtual => self.virtual,
|
99
|
-
:exported => self.exported
|
100
|
-
)
|
61
|
+
scope.compile.delete_resource(self)
|
62
|
+
return klass.evaluate(:scope => scope, :resource => self)
|
101
63
|
elsif builtin?
|
102
64
|
devfail "Cannot evaluate a builtin type"
|
103
65
|
else
|
@@ -107,6 +69,8 @@ class Puppet::Parser::Resource
|
|
107
69
|
@evaluated = true
|
108
70
|
end
|
109
71
|
|
72
|
+
# Mark this resource as both exported and virtual,
|
73
|
+
# or remove the exported mark.
|
110
74
|
def exported=(value)
|
111
75
|
if value
|
112
76
|
@virtual = true
|
@@ -116,63 +80,80 @@ class Puppet::Parser::Resource
|
|
116
80
|
end
|
117
81
|
end
|
118
82
|
|
119
|
-
def evaluated?
|
120
|
-
if defined? @evaluated and @evaluated
|
121
|
-
true
|
122
|
-
else
|
123
|
-
false
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
83
|
# Do any finishing work on this object, called before evaluation or
|
128
84
|
# before storage/translation.
|
129
85
|
def finish
|
130
|
-
|
131
|
-
|
132
|
-
|
86
|
+
add_overrides()
|
87
|
+
add_defaults()
|
88
|
+
add_metaparams()
|
89
|
+
validate()
|
133
90
|
end
|
134
91
|
|
135
92
|
def initialize(options)
|
93
|
+
# Set all of the options we can.
|
94
|
+
options.each do |option, value|
|
95
|
+
if respond_to?(option.to_s + "=")
|
96
|
+
send(option.to_s + "=", value)
|
97
|
+
options.delete(option)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
unless self.scope
|
102
|
+
raise ArgumentError, "Resources require a scope"
|
103
|
+
end
|
104
|
+
@source ||= scope.source
|
105
|
+
|
136
106
|
options = symbolize_options(options)
|
137
107
|
|
138
|
-
#
|
139
|
-
|
140
|
-
|
141
|
-
options.delete(
|
142
|
-
|
108
|
+
# Set up our reference.
|
109
|
+
if type = options[:type] and title = options[:title]
|
110
|
+
options.delete(:type)
|
111
|
+
options.delete(:title)
|
112
|
+
else
|
113
|
+
raise ArgumentError, "Resources require a type and title"
|
143
114
|
end
|
144
115
|
|
116
|
+
@ref = Reference.new(:type => type, :title => title, :scope => self.scope)
|
117
|
+
|
145
118
|
@params = {}
|
146
|
-
|
147
|
-
|
119
|
+
|
120
|
+
# Define all of the parameters
|
121
|
+
if params = options[:params]
|
148
122
|
options.delete(:params)
|
123
|
+
params.each do |param|
|
124
|
+
set_parameter(param)
|
125
|
+
end
|
149
126
|
end
|
150
127
|
|
151
|
-
#
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
requiredopts(:scope, :source)
|
128
|
+
# Throw an exception if we've got any arguments left to set.
|
129
|
+
unless options.empty?
|
130
|
+
raise ArgumentError, "Resources do not accept %s" % options.keys.collect { |k| k.to_s }.join(", ")
|
131
|
+
end
|
157
132
|
|
158
|
-
@
|
133
|
+
@tags = []
|
134
|
+
tag(@ref.type)
|
135
|
+
tag(@ref.title) if @ref.title.to_s =~ /^[-\w]+$/
|
159
136
|
|
160
|
-
if
|
161
|
-
|
162
|
-
# We use the method here, because it does type-checking.
|
163
|
-
set(param)
|
164
|
-
end
|
137
|
+
if scope.resource
|
138
|
+
@tags += scope.resource.tags
|
165
139
|
end
|
166
140
|
end
|
167
141
|
|
168
|
-
# Merge an override resource in.
|
142
|
+
# Merge an override resource in. This will throw exceptions if
|
143
|
+
# any overrides aren't allowed.
|
169
144
|
def merge(resource)
|
145
|
+
# Test the resource scope, to make sure the resource is even allowed
|
146
|
+
# to override.
|
147
|
+
unless self.source.object_id == resource.source.object_id || resource.source.child_of?(self.source)
|
148
|
+
raise Puppet::ParseError.new("Only subclasses can override parameters", resource.line, resource.file)
|
149
|
+
end
|
170
150
|
# Some of these might fail, but they'll fail in the way we want.
|
171
151
|
resource.params.each do |name, param|
|
172
|
-
|
152
|
+
override_parameter(param)
|
173
153
|
end
|
174
154
|
end
|
175
155
|
|
156
|
+
# Modify this resource in the Rails database. Poor design, yo.
|
176
157
|
def modify_rails(db_resource)
|
177
158
|
args = rails_args
|
178
159
|
args.each do |param, value|
|
@@ -215,6 +196,15 @@ class Puppet::Parser::Resource
|
|
215
196
|
})
|
216
197
|
end
|
217
198
|
|
199
|
+
# Return the resource name, or the title if no name
|
200
|
+
# was specified.
|
201
|
+
def name
|
202
|
+
unless defined? @name
|
203
|
+
@name = self[:name] || self.title
|
204
|
+
end
|
205
|
+
@name
|
206
|
+
end
|
207
|
+
|
218
208
|
# This *significantly* reduces the number of calls to Puppet.[].
|
219
209
|
def paramcheck?
|
220
210
|
unless defined? @@paramcheck
|
@@ -223,23 +213,6 @@ class Puppet::Parser::Resource
|
|
223
213
|
@@paramcheck
|
224
214
|
end
|
225
215
|
|
226
|
-
# Verify that all passed parameters are valid. This throws an error if
|
227
|
-
# there's a problem, so we don't have to worry about the return value.
|
228
|
-
def paramcheck(param)
|
229
|
-
param = param.to_s
|
230
|
-
# Now make sure it's a valid argument to our class. These checks
|
231
|
-
# are organized in order of commonhood -- most types, it's a valid
|
232
|
-
# argument and paramcheck is enabled.
|
233
|
-
if @ref.typeclass.validattr?(param)
|
234
|
-
true
|
235
|
-
elsif %w{name title}.include?(param) # always allow these
|
236
|
-
true
|
237
|
-
elsif paramcheck?
|
238
|
-
self.fail Puppet::ParseError, "Invalid parameter '%s' for type '%s'" %
|
239
|
-
[param.inspect, @ref.type]
|
240
|
-
end
|
241
|
-
end
|
242
|
-
|
243
216
|
# A temporary occasion, until I get paths in the scopes figured out.
|
244
217
|
def path
|
245
218
|
to_s
|
@@ -250,65 +223,21 @@ class Puppet::Parser::Resource
|
|
250
223
|
@ref.to_s
|
251
224
|
end
|
252
225
|
|
253
|
-
#
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
elsif ! param.is_a?(Puppet::Parser::Resource::Param)
|
260
|
-
raise ArgumentError, "Must pass a parameter or all necessary values"
|
261
|
-
end
|
262
|
-
# Because definitions are now parse-time, I can paramcheck immediately.
|
263
|
-
paramcheck(param.name)
|
264
|
-
|
265
|
-
if current = @params[param.name]
|
266
|
-
# This is where we'd ignore any equivalent values if we wanted to,
|
267
|
-
# but that would introduce a lot of really bad ordering issues.
|
268
|
-
if param.source.child_of?(current.source)
|
269
|
-
if param.add
|
270
|
-
# Merge with previous value.
|
271
|
-
param.value = [ current.value, param.value ].flatten
|
272
|
-
end
|
273
|
-
|
274
|
-
# Replace it, keeping all of its info.
|
275
|
-
@params[param.name] = param
|
276
|
-
else
|
277
|
-
if Puppet[:trace]
|
278
|
-
puts caller
|
279
|
-
end
|
280
|
-
msg = "Parameter '%s' is already set on %s" %
|
281
|
-
[param.name, self.to_s]
|
282
|
-
if current.source.to_s != ""
|
283
|
-
msg += " by %s" % current.source
|
284
|
-
end
|
285
|
-
if current.file or current.line
|
286
|
-
fields = []
|
287
|
-
fields << current.file if current.file
|
288
|
-
fields << current.line.to_s if current.line
|
289
|
-
msg += " at %s" % fields.join(":")
|
290
|
-
end
|
291
|
-
msg += "; cannot redefine"
|
292
|
-
error = Puppet::ParseError.new(msg)
|
293
|
-
error.file = param.file if param.file
|
294
|
-
error.line = param.line if param.line
|
295
|
-
raise error
|
226
|
+
# Add a tag to our current list. These tags will be added to all
|
227
|
+
# of the objects contained in this scope.
|
228
|
+
def tag(*ary)
|
229
|
+
ary.collect { |tag| tag.to_s.downcase }.collect { |tag| tag.split("::") }.flatten.each do |tag|
|
230
|
+
unless tag =~ /^\w[-\w]*$/
|
231
|
+
fail Puppet::ParseError, "Invalid tag %s" % tag.inspect
|
296
232
|
end
|
297
|
-
|
298
|
-
|
299
|
-
@params[param.name] = param
|
300
|
-
else
|
301
|
-
fail Puppet::ParseError, "Only subclasses can set parameters"
|
233
|
+
unless @tags.include?(tag)
|
234
|
+
@tags << tag
|
302
235
|
end
|
303
236
|
end
|
304
237
|
end
|
305
238
|
|
306
239
|
def tags
|
307
|
-
|
308
|
-
@tags = scope.tags
|
309
|
-
@tags << self.type
|
310
|
-
end
|
311
|
-
@tags
|
240
|
+
@tags.dup
|
312
241
|
end
|
313
242
|
|
314
243
|
def to_hash
|
@@ -346,12 +275,26 @@ class Puppet::Parser::Resource
|
|
346
275
|
|
347
276
|
# Translate our object to a transportable object.
|
348
277
|
def to_trans
|
349
|
-
|
350
|
-
|
278
|
+
return nil if virtual?
|
279
|
+
|
280
|
+
if builtin?
|
281
|
+
to_transobject
|
282
|
+
else
|
283
|
+
to_transbucket
|
351
284
|
end
|
285
|
+
end
|
352
286
|
|
353
|
-
|
287
|
+
def to_transbucket
|
288
|
+
bucket = Puppet::TransBucket.new([])
|
289
|
+
|
290
|
+
bucket.type = self.type
|
291
|
+
bucket.name = self.title
|
354
292
|
|
293
|
+
# TransBuckets don't support parameters, which is why they're being deprecated.
|
294
|
+
return bucket
|
295
|
+
end
|
296
|
+
|
297
|
+
def to_transobject
|
355
298
|
# Now convert to a transobject
|
356
299
|
obj = Puppet::TransObject.new(@ref.title, @ref.type)
|
357
300
|
to_hash.each do |p, v|
|
@@ -384,12 +327,106 @@ class Puppet::Parser::Resource
|
|
384
327
|
|
385
328
|
return obj
|
386
329
|
end
|
387
|
-
|
388
|
-
def virtual?
|
389
|
-
self.virtual
|
390
|
-
end
|
391
330
|
|
392
331
|
private
|
332
|
+
|
333
|
+
# Add default values from our definition.
|
334
|
+
def add_defaults
|
335
|
+
scope.lookupdefaults(self.type).each do |name, param|
|
336
|
+
unless @params.include?(name)
|
337
|
+
self.debug "Adding default for %s" % name
|
338
|
+
|
339
|
+
@params[name] = param
|
340
|
+
end
|
341
|
+
end
|
342
|
+
end
|
343
|
+
|
344
|
+
# Add any metaparams defined in our scope. This actually adds any metaparams
|
345
|
+
# from any parent scope, and there's currently no way to turn that off.
|
346
|
+
def add_metaparams
|
347
|
+
Puppet::Type.eachmetaparam do |name|
|
348
|
+
# Skip metaparams that we already have defined, unless they're relationship metaparams.
|
349
|
+
# LAK:NOTE Relationship metaparams get treated specially -- we stack them, instead of
|
350
|
+
# overriding.
|
351
|
+
next if @params[name] and not self.class.relationship_parameter?(name)
|
352
|
+
|
353
|
+
# Skip metaparams for which we get no value.
|
354
|
+
next unless val = scope.lookupvar(name.to_s, false) and val != :undefined
|
355
|
+
|
356
|
+
# The default case: just set the value
|
357
|
+
return set_parameter(name, val) unless @params[name]
|
358
|
+
|
359
|
+
# For relationship params, though, join the values (a la #446).
|
360
|
+
@params[name].value = [@params[name].value, val].flatten
|
361
|
+
end
|
362
|
+
end
|
363
|
+
|
364
|
+
# Add any overrides for this object.
|
365
|
+
def add_overrides
|
366
|
+
if overrides = scope.compile.resource_overrides(self)
|
367
|
+
overrides.each do |over|
|
368
|
+
self.merge(over)
|
369
|
+
end
|
370
|
+
|
371
|
+
# Remove the overrides, so that the configuration knows there
|
372
|
+
# are none left.
|
373
|
+
overrides.clear
|
374
|
+
end
|
375
|
+
end
|
376
|
+
|
377
|
+
# Accept a parameter from an override.
|
378
|
+
def override_parameter(param)
|
379
|
+
# This can happen if the override is defining a new parameter, rather
|
380
|
+
# than replacing an existing one.
|
381
|
+
(@params[param.name] = param and return) unless current = @params[param.name]
|
382
|
+
|
383
|
+
# The parameter is already set. Fail if they're not allowed to override it.
|
384
|
+
unless param.source.child_of?(current.source)
|
385
|
+
if Puppet[:trace]
|
386
|
+
puts caller
|
387
|
+
end
|
388
|
+
msg = "Parameter '%s' is already set on %s" %
|
389
|
+
[param.name, self.to_s]
|
390
|
+
if current.source.to_s != ""
|
391
|
+
msg += " by %s" % current.source
|
392
|
+
end
|
393
|
+
if current.file or current.line
|
394
|
+
fields = []
|
395
|
+
fields << current.file if current.file
|
396
|
+
fields << current.line.to_s if current.line
|
397
|
+
msg += " at %s" % fields.join(":")
|
398
|
+
end
|
399
|
+
msg += "; cannot redefine"
|
400
|
+
raise Puppet::ParseError.new(msg, param.line, param.file)
|
401
|
+
end
|
402
|
+
|
403
|
+
# If we've gotten this far, we're allowed to override.
|
404
|
+
|
405
|
+
# Merge with previous value, if the parameter was generated with the +> syntax.
|
406
|
+
# It's important that we use the new param instance here, not the old one,
|
407
|
+
# so that the source is registered correctly for later overrides.
|
408
|
+
param.value = [current.value, param.value].flatten if param.add
|
409
|
+
|
410
|
+
@params[param.name] = param
|
411
|
+
end
|
412
|
+
|
413
|
+
# Verify that all passed parameters are valid. This throws an error if
|
414
|
+
# there's a problem, so we don't have to worry about the return value.
|
415
|
+
def paramcheck(param)
|
416
|
+
param = param.to_s
|
417
|
+
# Now make sure it's a valid argument to our class. These checks
|
418
|
+
# are organized in order of commonhood -- most types, it's a valid
|
419
|
+
# argument and paramcheck is enabled.
|
420
|
+
if @ref.typeclass.validattr?(param)
|
421
|
+
true
|
422
|
+
elsif %w{name title}.include?(param) # always allow these
|
423
|
+
true
|
424
|
+
elsif paramcheck?
|
425
|
+
self.fail Puppet::ParseError, "Invalid parameter '%s' for type '%s'" %
|
426
|
+
[param, @ref.type]
|
427
|
+
end
|
428
|
+
end
|
429
|
+
|
393
430
|
def rails_args
|
394
431
|
return [:type, :title, :line, :exported].inject({}) do |hash, param|
|
395
432
|
# 'type' isn't a valid column name, so we have to use another name.
|
@@ -400,6 +437,26 @@ class Puppet::Parser::Resource
|
|
400
437
|
hash
|
401
438
|
end
|
402
439
|
end
|
403
|
-
end
|
404
440
|
|
405
|
-
#
|
441
|
+
# Define a parameter in our resource.
|
442
|
+
def set_parameter(param, value = nil)
|
443
|
+
if value
|
444
|
+
param = Puppet::Parser::Resource::Param.new(
|
445
|
+
:name => param, :value => value, :source => self.source
|
446
|
+
)
|
447
|
+
elsif ! param.is_a?(Puppet::Parser::Resource::Param)
|
448
|
+
raise ArgumentError, "Must pass a parameter or all necessary values"
|
449
|
+
end
|
450
|
+
|
451
|
+
# And store it in our parameter hash.
|
452
|
+
@params[param.name] = param
|
453
|
+
end
|
454
|
+
|
455
|
+
# Make sure the resource's parameters are all valid for the type.
|
456
|
+
def validate
|
457
|
+
@params.each do |name, param|
|
458
|
+
# Make sure it's a valid parameter.
|
459
|
+
paramcheck(name)
|
460
|
+
end
|
461
|
+
end
|
462
|
+
end
|