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
@@ -51,7 +51,7 @@ class Puppet::Parser::Resource::Param
|
|
51
51
|
#dev_warn if db_values.nil? || db_values.empty?
|
52
52
|
|
53
53
|
values_to_remove(db_values).each { |remove_me|
|
54
|
-
Puppet::Rails::ParamValue.delete(remove_me)
|
54
|
+
Puppet::Rails::ParamValue.delete(remove_me.id)
|
55
55
|
}
|
56
56
|
line_number = line_to_i()
|
57
57
|
values_to_add(db_values).each { |add_me|
|
@@ -88,4 +88,3 @@ class Puppet::Parser::Resource::Param
|
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
91
|
-
# $Id: param.rb 2742 2007-08-03 23:49:53Z luke $
|
@@ -1,9 +1,11 @@
|
|
1
|
+
require 'puppet/resource_reference'
|
2
|
+
|
1
3
|
# A reference to a resource. Mostly just the type and title.
|
2
|
-
class Puppet::Parser::Resource::Reference
|
4
|
+
class Puppet::Parser::Resource::Reference < Puppet::ResourceReference
|
3
5
|
include Puppet::Util::MethodHelper
|
4
6
|
include Puppet::Util::Errors
|
5
7
|
|
6
|
-
attr_accessor :
|
8
|
+
attr_accessor :builtin, :file, :line, :scope
|
7
9
|
|
8
10
|
# Are we a builtin type?
|
9
11
|
def builtin?
|
@@ -15,24 +17,39 @@ class Puppet::Parser::Resource::Reference
|
|
15
17
|
end
|
16
18
|
end
|
17
19
|
|
18
|
-
|
20
|
+
@builtin
|
19
21
|
end
|
20
22
|
|
21
23
|
def builtintype
|
22
|
-
if t = Puppet::Type.type(self.type) and t.name != :component
|
24
|
+
if t = Puppet::Type.type(self.type.downcase) and t.name != :component
|
23
25
|
t
|
24
26
|
else
|
25
27
|
nil
|
26
28
|
end
|
27
29
|
end
|
28
30
|
|
29
|
-
# Return the defined type for our obj.
|
31
|
+
# Return the defined type for our obj. This can return classes,
|
32
|
+
# definitions or nodes.
|
30
33
|
def definedtype
|
31
34
|
unless defined? @definedtype
|
32
|
-
|
35
|
+
case self.type
|
36
|
+
when "Class": # look for host classes
|
37
|
+
if self.title == :main
|
38
|
+
tmp = @scope.findclass("")
|
39
|
+
else
|
40
|
+
tmp = @scope.findclass(self.title)
|
41
|
+
end
|
42
|
+
when "Node": # look for node definitions
|
43
|
+
tmp = @scope.parser.nodes[self.title]
|
44
|
+
else # normal definitions
|
45
|
+
# We have to swap these variables around so the errors are right.
|
46
|
+
tmp = @scope.finddefine(self.type)
|
47
|
+
end
|
48
|
+
|
49
|
+
if tmp
|
33
50
|
@definedtype = tmp
|
34
51
|
else
|
35
|
-
fail Puppet::ParseError, "Could not find resource
|
52
|
+
fail Puppet::ParseError, "Could not find resource '%s'" % self
|
36
53
|
end
|
37
54
|
end
|
38
55
|
|
@@ -48,13 +65,6 @@ class Puppet::Parser::Resource::Reference
|
|
48
65
|
return [type.to_s,title.to_s]
|
49
66
|
end
|
50
67
|
|
51
|
-
def to_s
|
52
|
-
unless defined? @namestring
|
53
|
-
@namestring = "%s[%s]" % [type.capitalize, title]
|
54
|
-
end
|
55
|
-
@namestring
|
56
|
-
end
|
57
|
-
|
58
68
|
def typeclass
|
59
69
|
unless defined? @typeclass
|
60
70
|
if tmp = builtintype || definedtype
|
@@ -67,5 +77,3 @@ class Puppet::Parser::Resource::Reference
|
|
67
77
|
@typeclass
|
68
78
|
end
|
69
79
|
end
|
70
|
-
|
71
|
-
# $Id: reference.rb 2664 2007-07-09 20:54:35Z luke $
|
data/lib/puppet/parser/scope.rb
CHANGED
@@ -15,36 +15,19 @@ class Puppet::Parser::Scope
|
|
15
15
|
|
16
16
|
include Enumerable
|
17
17
|
include Puppet::Util::Errors
|
18
|
-
attr_accessor :parent, :level, :
|
19
|
-
attr_accessor :
|
20
|
-
attr_accessor :top, :translated, :
|
18
|
+
attr_accessor :parent, :level, :parser, :source, :resource
|
19
|
+
attr_accessor :base, :keyword, :nodescope
|
20
|
+
attr_accessor :top, :translated, :compile
|
21
21
|
|
22
|
-
#
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
# Retrieve and set the declarative setting.
|
27
|
-
def self.declarative
|
28
|
-
return @@declarative
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.declarative=(val)
|
32
|
-
@@declarative = val
|
22
|
+
# Proxy accessors
|
23
|
+
def host
|
24
|
+
@compile.node.name
|
33
25
|
end
|
34
26
|
|
35
|
-
|
36
|
-
|
37
|
-
# which is why I can't use class variables for them.
|
38
|
-
def self.sharedtable(*names)
|
39
|
-
attr_accessor(*names)
|
40
|
-
@@sharedtables ||= []
|
41
|
-
@@sharedtables += names
|
27
|
+
def interpreter
|
28
|
+
@compile.interpreter
|
42
29
|
end
|
43
30
|
|
44
|
-
# This is probably not all that good of an idea, but...
|
45
|
-
# This way a parent can share its tables with all of its children.
|
46
|
-
sharedtable :classtable, :definedtable, :exportable, :overridetable, :collecttable
|
47
|
-
|
48
31
|
# Is the value true? This allows us to control the definition of truth
|
49
32
|
# in one place.
|
50
33
|
def self.true?(value)
|
@@ -65,146 +48,14 @@ class Puppet::Parser::Scope
|
|
65
48
|
end
|
66
49
|
end
|
67
50
|
|
68
|
-
# Is the type a builtin type?
|
69
|
-
def builtintype?(type)
|
70
|
-
if typeklass = Puppet::Type.type(type)
|
71
|
-
return typeklass
|
72
|
-
else
|
73
|
-
return false
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
# Create a new child scope.
|
78
|
-
def child=(scope)
|
79
|
-
@children.push(scope)
|
80
|
-
|
81
|
-
# Copy all of the shared tables over to the child.
|
82
|
-
@@sharedtables.each do |name|
|
83
|
-
scope.send(name.to_s + "=", self.send(name))
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
# Verify that the given object isn't defined elsewhere.
|
88
|
-
def chkobjectclosure(obj)
|
89
|
-
if exobj = @definedtable[obj.ref]
|
90
|
-
typeklass = Puppet::Type.type(obj.type)
|
91
|
-
if typeklass and ! typeklass.isomorphic?
|
92
|
-
Puppet.info "Allowing duplicate %s" % type
|
93
|
-
else
|
94
|
-
# Either it's a defined type, which are never
|
95
|
-
# isomorphic, or it's a non-isomorphic type.
|
96
|
-
msg = "Duplicate definition: %s is already defined" % obj.ref
|
97
|
-
|
98
|
-
if exobj.file and exobj.line
|
99
|
-
msg << " in file %s at line %s" %
|
100
|
-
[exobj.file, exobj.line]
|
101
|
-
end
|
102
|
-
|
103
|
-
if obj.line or obj.file
|
104
|
-
msg << "; cannot redefine"
|
105
|
-
end
|
106
|
-
|
107
|
-
raise Puppet::ParseError.new(msg)
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
return true
|
112
|
-
end
|
113
|
-
|
114
|
-
# Return the scope associated with a class. This is just here so
|
115
|
-
# that subclasses can set their parent scopes to be the scope of
|
116
|
-
# their parent class.
|
117
|
-
def class_scope(klass)
|
118
|
-
scope = if klass.respond_to?(:classname)
|
119
|
-
@classtable[klass.classname]
|
120
|
-
else
|
121
|
-
@classtable[klass]
|
122
|
-
end
|
123
|
-
|
124
|
-
return nil unless scope
|
125
|
-
|
126
|
-
if scope.nodescope? and ! klass.is_a?(AST::Node)
|
127
|
-
raise Puppet::ParseError, "Node %s has already been evaluated; cannot evaluate class with same name" % [klass.classname]
|
128
|
-
end
|
129
|
-
|
130
|
-
scope
|
131
|
-
end
|
132
|
-
|
133
|
-
# Return the list of collections.
|
134
|
-
def collections
|
135
|
-
@collecttable
|
136
|
-
end
|
137
|
-
|
138
|
-
def declarative=(val)
|
139
|
-
self.class.declarative = val
|
140
|
-
end
|
141
|
-
|
142
|
-
def declarative
|
143
|
-
self.class.declarative
|
144
|
-
end
|
145
|
-
|
146
|
-
# Test whether a given scope is declarative. Even though it's
|
147
|
-
# a global value, the calling objects don't need to know that.
|
148
|
-
def declarative?
|
149
|
-
@@declarative
|
150
|
-
end
|
151
|
-
|
152
|
-
# Remove a specific child.
|
153
|
-
def delete(child)
|
154
|
-
@children.delete(child)
|
155
|
-
end
|
156
|
-
|
157
|
-
# Remove a resource from the various tables. This is only used when
|
158
|
-
# a resource maps to a definition and gets evaluated.
|
159
|
-
def deleteresource(resource)
|
160
|
-
if @definedtable[resource.ref]
|
161
|
-
@definedtable.delete(resource.ref)
|
162
|
-
end
|
163
|
-
|
164
|
-
if @children.include?(resource)
|
165
|
-
@children.delete(resource)
|
166
|
-
end
|
167
|
-
end
|
168
|
-
|
169
51
|
# Are we the top scope?
|
170
52
|
def topscope?
|
171
53
|
@level == 1
|
172
54
|
end
|
173
55
|
|
174
|
-
# Return a list of all of the defined classes.
|
175
|
-
def classlist
|
176
|
-
unless defined? @classtable
|
177
|
-
raise Puppet::DevError, "Scope did not receive class table"
|
178
|
-
end
|
179
|
-
return @classtable.keys.reject { |k| k == "" }
|
180
|
-
end
|
181
|
-
|
182
|
-
# Yield each child scope in turn
|
183
|
-
def each
|
184
|
-
@children.each { |child|
|
185
|
-
yield child
|
186
|
-
}
|
187
|
-
end
|
188
|
-
|
189
|
-
# Evaluate a list of classes.
|
190
|
-
def evalclasses(*classes)
|
191
|
-
retval = []
|
192
|
-
classes.each do |klass|
|
193
|
-
if obj = findclass(klass)
|
194
|
-
obj.safeevaluate :scope => self
|
195
|
-
retval << klass
|
196
|
-
end
|
197
|
-
end
|
198
|
-
retval
|
199
|
-
end
|
200
|
-
|
201
|
-
def exported?
|
202
|
-
self.exported
|
203
|
-
end
|
204
|
-
|
205
56
|
def findclass(name)
|
206
57
|
@namespaces.each do |namespace|
|
207
|
-
if r =
|
58
|
+
if r = parser.findclass(namespace, name)
|
208
59
|
return r
|
209
60
|
end
|
210
61
|
end
|
@@ -213,7 +64,7 @@ class Puppet::Parser::Scope
|
|
213
64
|
|
214
65
|
def finddefine(name)
|
215
66
|
@namespaces.each do |namespace|
|
216
|
-
if r =
|
67
|
+
if r = parser.finddefine(namespace, name)
|
217
68
|
return r
|
218
69
|
end
|
219
70
|
end
|
@@ -221,28 +72,11 @@ class Puppet::Parser::Scope
|
|
221
72
|
end
|
222
73
|
|
223
74
|
def findresource(string, name = nil)
|
224
|
-
|
225
|
-
string = "%s[%s]" % [string.capitalize, name]
|
226
|
-
end
|
227
|
-
|
228
|
-
@definedtable[string]
|
229
|
-
end
|
230
|
-
|
231
|
-
# Recursively complete the whole tree, in preparation for
|
232
|
-
# translation or storage.
|
233
|
-
def finish
|
234
|
-
self.each do |obj|
|
235
|
-
obj.finish
|
236
|
-
end
|
75
|
+
compile.findresource(string, name)
|
237
76
|
end
|
238
77
|
|
239
|
-
# Initialize our new scope. Defaults to having no parent
|
240
|
-
# being declarative.
|
78
|
+
# Initialize our new scope. Defaults to having no parent.
|
241
79
|
def initialize(hash = {})
|
242
|
-
@parent = nil
|
243
|
-
@type = nil
|
244
|
-
@name = nil
|
245
|
-
@finished = false
|
246
80
|
if hash.include?(:namespace)
|
247
81
|
if n = hash[:namespace]
|
248
82
|
@namespaces = [n]
|
@@ -262,94 +96,15 @@ class Puppet::Parser::Scope
|
|
262
96
|
|
263
97
|
@tags = []
|
264
98
|
|
265
|
-
if @parent.nil?
|
266
|
-
unless hash.include?(:declarative)
|
267
|
-
hash[:declarative] = true
|
268
|
-
end
|
269
|
-
self.istop(hash[:declarative])
|
270
|
-
@inside = nil
|
271
|
-
else
|
272
|
-
# This is here, rather than in newchild(), so that all
|
273
|
-
# of the later variable initialization works.
|
274
|
-
@parent.child = self
|
275
|
-
|
276
|
-
@level = @parent.level + 1
|
277
|
-
@interp = @parent.interp
|
278
|
-
@source = hash[:source] || @parent.source
|
279
|
-
@topscope = @parent.topscope
|
280
|
-
#@inside = @parent.inside # Used for definition inheritance
|
281
|
-
@host = @parent.host
|
282
|
-
@type ||= @parent.type
|
283
|
-
end
|
284
|
-
|
285
|
-
# Our child scopes and objects
|
286
|
-
@children = []
|
287
|
-
|
288
99
|
# The symbol table for this scope. This is where we store variables.
|
289
100
|
@symtable = {}
|
290
101
|
|
291
102
|
# All of the defaults set for types. It's a hash of hashes,
|
292
103
|
# with the first key being the type, then the second key being
|
293
104
|
# the parameter.
|
294
|
-
@
|
105
|
+
@defaults = Hash.new { |dhash,type|
|
295
106
|
dhash[type] = {}
|
296
107
|
}
|
297
|
-
|
298
|
-
unless @interp
|
299
|
-
raise Puppet::DevError, "Scopes require an interpreter"
|
300
|
-
end
|
301
|
-
end
|
302
|
-
|
303
|
-
# Associate the object directly with the scope, so that contained objects
|
304
|
-
# can look up what container they're running within.
|
305
|
-
def inside(arg = nil)
|
306
|
-
return @inside unless arg
|
307
|
-
|
308
|
-
old = @inside
|
309
|
-
@inside = arg
|
310
|
-
yield
|
311
|
-
ensure
|
312
|
-
#Puppet.warning "exiting %s" % @inside.name
|
313
|
-
@inside = old
|
314
|
-
end
|
315
|
-
|
316
|
-
# Mark that we're the top scope, and set some hard-coded info.
|
317
|
-
def istop(declarative = true)
|
318
|
-
# the level is mostly used for debugging
|
319
|
-
@level = 1
|
320
|
-
|
321
|
-
# The table for storing class singletons. This will only actually
|
322
|
-
# be used by top scopes and node scopes.
|
323
|
-
@classtable = {}
|
324
|
-
|
325
|
-
self.class.declarative = declarative
|
326
|
-
|
327
|
-
# The table for all defined objects.
|
328
|
-
@definedtable = {}
|
329
|
-
|
330
|
-
# The list of objects that will available for export.
|
331
|
-
@exportable = {}
|
332
|
-
|
333
|
-
# The list of overrides. This is used to cache overrides on objects
|
334
|
-
# that don't exist yet. We store an array of each override.
|
335
|
-
@overridetable = Hash.new do |overs, ref|
|
336
|
-
overs[ref] = []
|
337
|
-
end
|
338
|
-
|
339
|
-
# Eventually, if we support sites, this will allow definitions
|
340
|
-
# of nodes with the same name in different sites. For now
|
341
|
-
# the top-level scope is always the only site scope.
|
342
|
-
@sitescope = true
|
343
|
-
|
344
|
-
@namespaces = [""]
|
345
|
-
|
346
|
-
# The list of collections that have been created. This is a global list,
|
347
|
-
# but they each refer back to the scope that created them.
|
348
|
-
@collecttable = []
|
349
|
-
|
350
|
-
@topscope = self
|
351
|
-
@type = "puppet"
|
352
|
-
@name = "top"
|
353
108
|
end
|
354
109
|
|
355
110
|
# Collect all of the defaults set at any higher scopes.
|
@@ -360,16 +115,16 @@ class Puppet::Parser::Scope
|
|
360
115
|
values = {}
|
361
116
|
|
362
117
|
# first collect the values from the parents
|
363
|
-
unless
|
364
|
-
|
118
|
+
unless parent.nil?
|
119
|
+
parent.lookupdefaults(type).each { |var,value|
|
365
120
|
values[var] = value
|
366
121
|
}
|
367
122
|
end
|
368
123
|
|
369
124
|
# then override them with any current values
|
370
125
|
# this should probably be done differently
|
371
|
-
if @
|
372
|
-
@
|
126
|
+
if @defaults.include?(type)
|
127
|
+
@defaults[type].each { |var,value|
|
373
128
|
values[var] = value
|
374
129
|
}
|
375
130
|
end
|
@@ -379,17 +134,6 @@ class Puppet::Parser::Scope
|
|
379
134
|
return values
|
380
135
|
end
|
381
136
|
|
382
|
-
# Look up all of the exported objects of a given type.
|
383
|
-
def lookupexported(type)
|
384
|
-
@definedtable.find_all do |name, r|
|
385
|
-
r.type == type and r.exported?
|
386
|
-
end
|
387
|
-
end
|
388
|
-
|
389
|
-
def lookupoverrides(obj)
|
390
|
-
@overridetable[obj.ref]
|
391
|
-
end
|
392
|
-
|
393
137
|
# Look up a defined type.
|
394
138
|
def lookuptype(name)
|
395
139
|
finddefine(name) || findclass(name)
|
@@ -403,7 +147,7 @@ class Puppet::Parser::Scope
|
|
403
147
|
unless klass
|
404
148
|
raise Puppet::ParseError, "Could not find class %s" % klassname
|
405
149
|
end
|
406
|
-
unless kscope = class_scope(klass)
|
150
|
+
unless kscope = compile.class_scope(klass)
|
407
151
|
raise Puppet::ParseError, "Class %s has not been evaluated so its variables cannot be referenced" % klass.classname
|
408
152
|
end
|
409
153
|
return kscope.lookupvar(shortname, usestring)
|
@@ -426,7 +170,7 @@ class Puppet::Parser::Scope
|
|
426
170
|
return @symtable[name]
|
427
171
|
end
|
428
172
|
elsif self.parent
|
429
|
-
return
|
173
|
+
return parent.lookupvar(name, usestring)
|
430
174
|
elsif usestring
|
431
175
|
return ""
|
432
176
|
else
|
@@ -438,16 +182,9 @@ class Puppet::Parser::Scope
|
|
438
182
|
@namespaces.dup
|
439
183
|
end
|
440
184
|
|
441
|
-
#
|
442
|
-
def
|
443
|
-
|
444
|
-
end
|
445
|
-
|
446
|
-
# Create a new scope.
|
447
|
-
def newscope(hash = {})
|
448
|
-
hash[:parent] = self
|
449
|
-
#debug "Creating new scope, level %s" % [self.level + 1]
|
450
|
-
return Puppet::Parser::Scope.new(hash)
|
185
|
+
# Create a new scope and set these options.
|
186
|
+
def newscope(options = {})
|
187
|
+
compile.newscope(self, options)
|
451
188
|
end
|
452
189
|
|
453
190
|
# Is this class for a node? This is used to make sure that
|
@@ -455,75 +192,25 @@ class Puppet::Parser::Scope
|
|
455
192
|
# is required because of how often the names are used throughout
|
456
193
|
# the system, including on the client.
|
457
194
|
def nodescope?
|
458
|
-
|
195
|
+
self.nodescope
|
459
196
|
end
|
460
197
|
|
461
|
-
#
|
462
|
-
|
463
|
-
|
464
|
-
@
|
465
|
-
|
466
|
-
|
467
|
-
def resources
|
468
|
-
@definedtable.values
|
469
|
-
end
|
470
|
-
|
471
|
-
# Store the fact that we've evaluated a given class. We use a hash
|
472
|
-
# that gets inherited from the top scope down, rather than a global
|
473
|
-
# hash. We store the object ID, not class name, so that we
|
474
|
-
# can support multiple unrelated classes with the same name.
|
475
|
-
def setclass(obj)
|
476
|
-
if obj.is_a?(AST::HostClass)
|
477
|
-
unless obj.classname
|
478
|
-
raise Puppet::DevError, "Got a %s with no fully qualified name" %
|
479
|
-
obj.class
|
480
|
-
end
|
481
|
-
@classtable[obj.classname] = self
|
482
|
-
else
|
483
|
-
raise Puppet::DevError, "Invalid class %s" % obj.inspect
|
484
|
-
end
|
485
|
-
if obj.is_a?(AST::Node)
|
486
|
-
@nodescope = true
|
487
|
-
end
|
488
|
-
nil
|
489
|
-
end
|
490
|
-
|
491
|
-
# Set all of our facts in the top-level scope.
|
492
|
-
def setfacts(facts)
|
493
|
-
facts.each { |var, value|
|
494
|
-
self.setvar(var, value)
|
495
|
-
}
|
496
|
-
end
|
497
|
-
|
498
|
-
# Add a new object to our object table and the global list, and do any necessary
|
499
|
-
# checks.
|
500
|
-
def setresource(obj)
|
501
|
-
self.chkobjectclosure(obj)
|
502
|
-
|
503
|
-
@children << obj
|
504
|
-
|
505
|
-
# Mark the resource as virtual or exported, as necessary.
|
506
|
-
if self.exported?
|
507
|
-
obj.exported = true
|
508
|
-
elsif self.virtual?
|
509
|
-
obj.virtual = true
|
198
|
+
# We probably shouldn't cache this value... But it's a lot faster
|
199
|
+
# than doing lots of queries.
|
200
|
+
def parent
|
201
|
+
unless defined?(@parent)
|
202
|
+
@parent = compile.parent(self)
|
510
203
|
end
|
511
|
-
|
512
|
-
# The global table
|
513
|
-
@definedtable[obj.ref] = obj
|
514
|
-
|
515
|
-
return obj
|
204
|
+
@parent
|
516
205
|
end
|
517
206
|
|
518
|
-
#
|
519
|
-
#
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
if obj = @definedtable[resource.ref]
|
524
|
-
obj.merge(resource)
|
207
|
+
# Return the list of scopes up to the top scope, ordered with our own first.
|
208
|
+
# This is used for looking up variables and defaults.
|
209
|
+
def scope_path
|
210
|
+
if parent
|
211
|
+
[self, parent.scope_path].flatten.compact
|
525
212
|
else
|
526
|
-
|
213
|
+
[self]
|
527
214
|
end
|
528
215
|
end
|
529
216
|
|
@@ -531,7 +218,7 @@ class Puppet::Parser::Scope
|
|
531
218
|
# so that the syntax is isolated. We don't do any kind of type-checking
|
532
219
|
# here; instead we let the resource do it when the defaults are used.
|
533
220
|
def setdefaults(type, params)
|
534
|
-
table = @
|
221
|
+
table = @defaults[type]
|
535
222
|
|
536
223
|
# if we got a single param, it'll be in its own array
|
537
224
|
params = [params] unless params.is_a?(Array)
|
@@ -539,17 +226,8 @@ class Puppet::Parser::Scope
|
|
539
226
|
params.each { |param|
|
540
227
|
#Puppet.debug "Default for %s is %s => %s" %
|
541
228
|
# [type,ary[0].inspect,ary[1].inspect]
|
542
|
-
if
|
543
|
-
|
544
|
-
self.fail "Default already defined for %s { %s }" %
|
545
|
-
[type,param.name]
|
546
|
-
end
|
547
|
-
else
|
548
|
-
if table.include?(param.name)
|
549
|
-
# we should maybe allow this warning to be turned off...
|
550
|
-
Puppet.warning "Replacing default for %s { %s }" %
|
551
|
-
[type,param.name]
|
552
|
-
end
|
229
|
+
if table.include?(param.name)
|
230
|
+
raise Puppet::ParseError.new("Default already defined for %s { %s }; cannot redefine" % [type, param.name], param.line, param.file)
|
553
231
|
end
|
554
232
|
table[param.name] = param
|
555
233
|
}
|
@@ -557,23 +235,19 @@ class Puppet::Parser::Scope
|
|
557
235
|
|
558
236
|
# Set a variable in the current scope. This will override settings
|
559
237
|
# in scopes above, but will not allow variables in the current scope
|
560
|
-
# to be reassigned
|
238
|
+
# to be reassigned.
|
561
239
|
def setvar(name,value, file = nil, line = nil)
|
562
240
|
#Puppet.debug "Setting %s to '%s' at level %s" %
|
563
241
|
# [name.inspect,value,self.level]
|
564
242
|
if @symtable.include?(name)
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
error.file = file
|
569
|
-
end
|
570
|
-
if line
|
571
|
-
error.line = line
|
572
|
-
end
|
573
|
-
raise error
|
574
|
-
else
|
575
|
-
Puppet.warning "Reassigning %s to %s" % [name,value]
|
243
|
+
error = Puppet::ParseError.new("Cannot reassign variable %s" % name)
|
244
|
+
if file
|
245
|
+
error.file = file
|
576
246
|
end
|
247
|
+
if line
|
248
|
+
error.line = line
|
249
|
+
end
|
250
|
+
raise error
|
577
251
|
end
|
578
252
|
@symtable[name] = value
|
579
253
|
end
|
@@ -637,82 +311,16 @@ class Puppet::Parser::Scope
|
|
637
311
|
return out
|
638
312
|
end
|
639
313
|
|
640
|
-
# Add a tag to our current list. These tags will be added to all
|
641
|
-
# of the objects contained in this scope.
|
642
|
-
def tag(*ary)
|
643
|
-
ary.each { |tag|
|
644
|
-
if tag.nil? or tag == ""
|
645
|
-
puts caller
|
646
|
-
Puppet.debug "got told to tag with %s" % tag.inspect
|
647
|
-
next
|
648
|
-
end
|
649
|
-
unless tag =~ /^\w[-\w]*$/
|
650
|
-
fail Puppet::ParseError, "Invalid tag %s" % tag.inspect
|
651
|
-
end
|
652
|
-
tag = tag.to_s
|
653
|
-
unless @tags.include?(tag)
|
654
|
-
#Puppet.info "Tagging scope %s with %s" % [self.object_id, tag]
|
655
|
-
@tags << tag
|
656
|
-
end
|
657
|
-
}
|
658
|
-
end
|
659
|
-
|
660
314
|
# Return the tags associated with this scope. It's basically
|
661
315
|
# just our parents' tags, plus our type. We don't cache this value
|
662
316
|
# because our parent tags might change between calls.
|
663
317
|
def tags
|
664
|
-
|
665
|
-
unless ! defined? @type or @type.nil? or @type == ""
|
666
|
-
tmp << @type.to_s
|
667
|
-
end
|
668
|
-
if @parent
|
669
|
-
#info "Looking for tags in %s" % @parent.type
|
670
|
-
@parent.tags.each { |tag|
|
671
|
-
if tag.nil? or tag == ""
|
672
|
-
Puppet.debug "parent returned tag %s" % tag.inspect
|
673
|
-
next
|
674
|
-
end
|
675
|
-
unless tmp.include?(tag)
|
676
|
-
tmp << tag
|
677
|
-
end
|
678
|
-
}
|
679
|
-
end
|
680
|
-
return tmp.sort.uniq
|
318
|
+
resource.tags
|
681
319
|
end
|
682
320
|
|
683
321
|
# Used mainly for logging
|
684
322
|
def to_s
|
685
|
-
|
686
|
-
return "%s[%s]" % [@type, @name]
|
687
|
-
else
|
688
|
-
return self.type.to_s
|
689
|
-
end
|
690
|
-
end
|
691
|
-
|
692
|
-
# Convert all of our objects as necessary.
|
693
|
-
def translate
|
694
|
-
ret = @children.collect do |child|
|
695
|
-
case child
|
696
|
-
when Puppet::Parser::Resource
|
697
|
-
child.to_trans
|
698
|
-
when self.class
|
699
|
-
child.translate
|
700
|
-
else
|
701
|
-
devfail "Got %s for translation" % child.class
|
702
|
-
end
|
703
|
-
end.reject { |o| o.nil? }
|
704
|
-
bucket = Puppet::TransBucket.new ret
|
705
|
-
|
706
|
-
case self.type
|
707
|
-
when "": bucket.type = "main"
|
708
|
-
when nil: devfail "A Scope with no type"
|
709
|
-
else
|
710
|
-
bucket.type = @type
|
711
|
-
end
|
712
|
-
if self.name
|
713
|
-
bucket.name = self.name
|
714
|
-
end
|
715
|
-
return bucket
|
323
|
+
"Scope(%s)" % @resource.to_s
|
716
324
|
end
|
717
325
|
|
718
326
|
# Undefine a variable; only used for testing.
|
@@ -721,23 +329,4 @@ class Puppet::Parser::Scope
|
|
721
329
|
@symtable.delete(var)
|
722
330
|
end
|
723
331
|
end
|
724
|
-
|
725
|
-
# Return an array of all of the unevaluated objects
|
726
|
-
def unevaluated
|
727
|
-
ary = @definedtable.find_all do |name, object|
|
728
|
-
! object.builtin? and ! object.evaluated?
|
729
|
-
end.collect { |name, object| object }
|
730
|
-
|
731
|
-
if ary.empty?
|
732
|
-
return nil
|
733
|
-
else
|
734
|
-
return ary
|
735
|
-
end
|
736
|
-
end
|
737
|
-
|
738
|
-
def virtual?
|
739
|
-
self.virtual || self.exported?
|
740
|
-
end
|
741
332
|
end
|
742
|
-
|
743
|
-
# $Id: scope.rb 2646 2007-07-04 21:06:26Z luke $
|