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
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'puppet/indirector/file'
|
2
|
+
require 'puppet/indirector/ssl_rsa'
|
3
|
+
|
4
|
+
class Puppet::Indirector::SslRsa::File < Puppet::Indirector::File
|
5
|
+
desc "Store SSL keys on disk."
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
Puppet.settings.use(:ssl)
|
9
|
+
end
|
10
|
+
|
11
|
+
def path(name)
|
12
|
+
if name == :ca
|
13
|
+
File.join Puppet.settings[:cadir], "ca_key.pem"
|
14
|
+
else
|
15
|
+
File.join Puppet.settings[:publickeydir], name.to_s + ".pem"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def save(key)
|
20
|
+
File.open(path(key.name), "w") { |f| f.print key.to_pem }
|
21
|
+
end
|
22
|
+
|
23
|
+
def find(name)
|
24
|
+
return nil unless FileTest.exists?(path(name))
|
25
|
+
OpenSSL::PKey::RSA.new(File.read(path(name)))
|
26
|
+
end
|
27
|
+
|
28
|
+
def destroy(name)
|
29
|
+
return nil unless FileTest.exists?(path(name))
|
30
|
+
File.unlink(path(name)) and true
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,178 @@
|
|
1
|
+
require 'puppet/indirector'
|
2
|
+
require 'puppet/indirector/indirection'
|
3
|
+
require 'puppet/util/instance_loader'
|
4
|
+
|
5
|
+
# A simple class that can function as the base class for indirected types.
|
6
|
+
class Puppet::Indirector::Terminus
|
7
|
+
require 'puppet/util/docs'
|
8
|
+
extend Puppet::Util::Docs
|
9
|
+
|
10
|
+
class << self
|
11
|
+
include Puppet::Util::InstanceLoader
|
12
|
+
|
13
|
+
attr_accessor :name, :terminus_type
|
14
|
+
attr_reader :abstract_terminus, :indirection
|
15
|
+
|
16
|
+
# Are we an abstract terminus type, rather than an instance with an
|
17
|
+
# associated indirection?
|
18
|
+
def abstract_terminus?
|
19
|
+
abstract_terminus
|
20
|
+
end
|
21
|
+
|
22
|
+
# Convert a constant to a short name.
|
23
|
+
def const2name(const)
|
24
|
+
const.sub(/^[A-Z]/) { |i| i.downcase }.gsub(/[A-Z]/) { |i| "_" + i.downcase }.intern
|
25
|
+
end
|
26
|
+
|
27
|
+
# Look up the indirection if we were only provided a name.
|
28
|
+
def indirection=(name)
|
29
|
+
if name.is_a?(Puppet::Indirector::Indirection)
|
30
|
+
@indirection = name
|
31
|
+
elsif ind = Puppet::Indirector::Indirection.instance(name)
|
32
|
+
@indirection = ind
|
33
|
+
else
|
34
|
+
raise ArgumentError, "Could not find indirection instance %s for %s" % [name, self.name]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def indirection_name
|
39
|
+
@indirection.name
|
40
|
+
end
|
41
|
+
|
42
|
+
# Register our subclass with the appropriate indirection.
|
43
|
+
# This follows the convention that our terminus is named after the
|
44
|
+
# indirection.
|
45
|
+
def inherited(subclass)
|
46
|
+
longname = subclass.to_s
|
47
|
+
if longname =~ /#<Class/
|
48
|
+
raise Puppet::DevError, "Terminus subclasses must have associated constants"
|
49
|
+
end
|
50
|
+
names = longname.split("::")
|
51
|
+
|
52
|
+
# Convert everything to a lower-case symbol, converting camelcase to underscore word separation.
|
53
|
+
name = names.pop.sub(/^[A-Z]/) { |i| i.downcase }.gsub(/[A-Z]/) { |i| "_" + i.downcase }.intern
|
54
|
+
|
55
|
+
subclass.name = name
|
56
|
+
|
57
|
+
# Short-circuit the abstract types, which are those that directly subclass
|
58
|
+
# the Terminus class.
|
59
|
+
if self == Puppet::Indirector::Terminus
|
60
|
+
subclass.mark_as_abstract_terminus
|
61
|
+
return
|
62
|
+
end
|
63
|
+
|
64
|
+
# Set the terminus type to be the name of the abstract terminus type.
|
65
|
+
# Yay, class/instance confusion.
|
66
|
+
subclass.terminus_type = self.name
|
67
|
+
|
68
|
+
# Our subclass is specifically associated with an indirection.
|
69
|
+
indirection_name = names.pop.sub(/^[A-Z]/) { |i| i.downcase }.gsub(/[A-Z]/) { |i| "_" + i.downcase }.intern
|
70
|
+
|
71
|
+
if indirection_name == "" or indirection_name.nil?
|
72
|
+
raise Puppet::DevError, "Could not discern indirection model from class constant"
|
73
|
+
end
|
74
|
+
|
75
|
+
# This will throw an exception if the indirection instance cannot be found.
|
76
|
+
# Do this last, because it also registers the terminus type with the indirection,
|
77
|
+
# which needs the above information.
|
78
|
+
subclass.indirection = indirection_name
|
79
|
+
|
80
|
+
# And add this instance to the instance hash.
|
81
|
+
Puppet::Indirector::Terminus.register_terminus_class(subclass)
|
82
|
+
end
|
83
|
+
|
84
|
+
# Mark that this instance is abstract.
|
85
|
+
def mark_as_abstract_terminus
|
86
|
+
@abstract_terminus = true
|
87
|
+
end
|
88
|
+
|
89
|
+
def model
|
90
|
+
indirection.model
|
91
|
+
end
|
92
|
+
|
93
|
+
# Convert a short name to a constant.
|
94
|
+
def name2const(name)
|
95
|
+
name.to_s.capitalize.sub(/_(.)/) { |i| $1.upcase }
|
96
|
+
end
|
97
|
+
|
98
|
+
# Register a class, probably autoloaded.
|
99
|
+
def register_terminus_class(klass)
|
100
|
+
setup_instance_loading klass.indirection_name
|
101
|
+
instance_hash(klass.indirection_name)[klass.name] = klass
|
102
|
+
end
|
103
|
+
|
104
|
+
# Return a terminus by name, using the autoloader.
|
105
|
+
def terminus_class(indirection_name, terminus_type)
|
106
|
+
setup_instance_loading indirection_name
|
107
|
+
loaded_instance(indirection_name, terminus_type)
|
108
|
+
end
|
109
|
+
|
110
|
+
# Return all terminus classes for a given indirection.
|
111
|
+
def terminus_classes(indirection_name)
|
112
|
+
setup_instance_loading indirection_name
|
113
|
+
|
114
|
+
# Load them all.
|
115
|
+
instance_loader(indirection_name).loadall
|
116
|
+
|
117
|
+
# And return the list of names.
|
118
|
+
loaded_instances(indirection_name)
|
119
|
+
end
|
120
|
+
|
121
|
+
private
|
122
|
+
|
123
|
+
def setup_instance_loading(type)
|
124
|
+
unless instance_loading?(type)
|
125
|
+
instance_load type, "puppet/indirector/%s" % type
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
# Do we have an update for this object? This compares the provided version
|
131
|
+
# to our version, and returns true if our version is at least as high
|
132
|
+
# as the asked-about version.
|
133
|
+
def has_most_recent?(key, vers)
|
134
|
+
raise Puppet::DevError.new("Cannot check update status when no 'version' method is defined") unless respond_to?(:version)
|
135
|
+
|
136
|
+
if existing_version = version(key)
|
137
|
+
#puts "%s fresh: %s (%s vs %s)" % [self.name, (existing_version.to_f >= vers.to_f).inspect, existing_version.to_f, vers.to_f]
|
138
|
+
existing_version.to_f >= vers.to_f
|
139
|
+
else
|
140
|
+
false
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
def indirection
|
145
|
+
self.class.indirection
|
146
|
+
end
|
147
|
+
|
148
|
+
def initialize
|
149
|
+
if self.class.abstract_terminus?
|
150
|
+
raise Puppet::DevError, "Cannot create instances of abstract terminus types"
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
def model
|
155
|
+
self.class.model
|
156
|
+
end
|
157
|
+
|
158
|
+
def name
|
159
|
+
self.class.name
|
160
|
+
end
|
161
|
+
|
162
|
+
def terminus_type
|
163
|
+
self.class.terminus_type
|
164
|
+
end
|
165
|
+
|
166
|
+
# Provide a default method for retrieving an instance's version.
|
167
|
+
# By default, just find the resource and get its version. Individual
|
168
|
+
# terminus types can override this method to provide custom definitions of
|
169
|
+
# 'versions'.
|
170
|
+
def version(name)
|
171
|
+
raise Puppet::DevError.new("Cannot retrieve an instance's version without a :find method") unless respond_to?(:find)
|
172
|
+
if instance = find(name)
|
173
|
+
instance.version
|
174
|
+
else
|
175
|
+
nil
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'puppet/indirector/terminus'
|
2
|
+
|
3
|
+
# The base class for YAML indirection termini.
|
4
|
+
class Puppet::Indirector::Yaml < Puppet::Indirector::Terminus
|
5
|
+
def initialize
|
6
|
+
# Make sure our base directory exists.
|
7
|
+
Puppet.settings.use(:yaml)
|
8
|
+
end
|
9
|
+
|
10
|
+
# Read a given name's file in and convert it from YAML.
|
11
|
+
def find(name)
|
12
|
+
raise ArgumentError.new("You must specify the name of the object to retrieve") unless name
|
13
|
+
file = path(name)
|
14
|
+
return nil unless FileTest.exist?(file)
|
15
|
+
|
16
|
+
begin
|
17
|
+
return from_yaml(File.read(file))
|
18
|
+
rescue => detail
|
19
|
+
raise Puppet::Error, "Could not read YAML data for %s %s: %s" % [indirection.name, name, detail]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# Convert our object to YAML and store it to the disk.
|
24
|
+
def save(object)
|
25
|
+
raise ArgumentError.new("You can only save objects that respond to :name") unless object.respond_to?(:name)
|
26
|
+
|
27
|
+
file = path(object.name)
|
28
|
+
|
29
|
+
basedir = File.dirname(file)
|
30
|
+
|
31
|
+
# This is quite likely a bad idea, since we're not managing ownership or modes.
|
32
|
+
unless FileTest.exist?(basedir)
|
33
|
+
Dir.mkdir(basedir)
|
34
|
+
end
|
35
|
+
|
36
|
+
begin
|
37
|
+
File.open(file, "w", 0660) { |f| f.print to_yaml(object) }
|
38
|
+
rescue TypeError => detail
|
39
|
+
Puppet.err "Could not save %s %s: %s" % [self.name, object.name, detail]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def from_yaml(text)
|
46
|
+
YAML.load(text)
|
47
|
+
end
|
48
|
+
|
49
|
+
def to_yaml(object)
|
50
|
+
YAML.dump(object)
|
51
|
+
end
|
52
|
+
|
53
|
+
# Return the path to a given node's file.
|
54
|
+
def path(name)
|
55
|
+
File.join(Puppet[:yamldir], self.class.indirection_name.to_s, name.to_s + ".yaml")
|
56
|
+
end
|
57
|
+
end
|
@@ -252,6 +252,8 @@ class Puppet::Type
|
|
252
252
|
param.required_features = options[:required_features]
|
253
253
|
end
|
254
254
|
|
255
|
+
param.isnamevar if options[:namevar]
|
256
|
+
|
255
257
|
# These might be enabled later.
|
256
258
|
# define_method(name) do
|
257
259
|
# @parameters[name].value
|
@@ -426,8 +428,7 @@ class Puppet::Type
|
|
426
428
|
if defined? @title and @title
|
427
429
|
hash[namevar] = @title
|
428
430
|
else
|
429
|
-
raise Puppet::Error,
|
430
|
-
"Was not passed a namevar or title"
|
431
|
+
raise Puppet::Error, "Was not passed a namevar or title"
|
431
432
|
end
|
432
433
|
end
|
433
434
|
|
@@ -686,4 +687,3 @@ class Puppet::Type
|
|
686
687
|
end
|
687
688
|
end
|
688
689
|
|
689
|
-
# $Id: attributes.rb 2676 2007-07-10 23:24:34Z luke $
|
@@ -1,19 +1,6 @@
|
|
1
1
|
class Puppet::Type
|
2
2
|
attr_writer :implicit
|
3
3
|
|
4
|
-
def self.implicitcreate(hash)
|
5
|
-
unless hash.include?(:implicit)
|
6
|
-
hash[:implicit] = true
|
7
|
-
end
|
8
|
-
if obj = self.create(hash)
|
9
|
-
obj.implicit = true
|
10
|
-
|
11
|
-
return obj
|
12
|
-
else
|
13
|
-
return nil
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
4
|
# Is this type's name isomorphic with the object? That is, if the
|
18
5
|
# name conflicts, does it necessarily mean that the objects conflict?
|
19
6
|
# Defaults to true.
|
@@ -55,57 +42,4 @@ class Puppet::Type
|
|
55
42
|
return @managed
|
56
43
|
end
|
57
44
|
end
|
58
|
-
|
59
|
-
# Merge new information with an existing object, checking for conflicts
|
60
|
-
# and such. This allows for two specifications of the same object and
|
61
|
-
# the same values, but it's pretty limited right now. The result of merging
|
62
|
-
# properties is very different from the result of merging parameters or
|
63
|
-
# metaparams. This is currently unused.
|
64
|
-
def merge(hash)
|
65
|
-
hash.each { |param, value|
|
66
|
-
if param.is_a?(String)
|
67
|
-
param = param.intern
|
68
|
-
end
|
69
|
-
|
70
|
-
# Of course names are the same, duh.
|
71
|
-
next if param == :name or param == self.class.namevar
|
72
|
-
|
73
|
-
unless value.is_a?(Array)
|
74
|
-
value = [value]
|
75
|
-
end
|
76
|
-
|
77
|
-
if @parameters.include?(param) and oldvals = @parameters[param].shouldorig
|
78
|
-
unless oldvals.is_a?(Array)
|
79
|
-
oldvals = [oldvals]
|
80
|
-
end
|
81
|
-
# If the values are exactly the same, order and everything,
|
82
|
-
# then it's okay.
|
83
|
-
if oldvals == value
|
84
|
-
return true
|
85
|
-
end
|
86
|
-
# take the intersection
|
87
|
-
newvals = oldvals & value
|
88
|
-
if newvals.empty?
|
89
|
-
self.fail "No common values for %s on %s(%s)" %
|
90
|
-
[param, self.class.name, self.title]
|
91
|
-
elsif newvals.length > 1
|
92
|
-
self.fail "Too many values for %s on %s(%s)" %
|
93
|
-
[param, self.class.name, self.title]
|
94
|
-
else
|
95
|
-
self.debug "Reduced old values %s and new values %s to %s" %
|
96
|
-
[oldvals.inspect, value.inspect, newvals.inspect]
|
97
|
-
@parameters[param].should = newvals
|
98
|
-
#self.should = newvals
|
99
|
-
return true
|
100
|
-
end
|
101
|
-
else
|
102
|
-
self[param] = value
|
103
|
-
end
|
104
|
-
}
|
105
|
-
|
106
|
-
# Set the defaults again, just in case.
|
107
|
-
self.setdefaults
|
108
|
-
end
|
109
45
|
end
|
110
|
-
|
111
|
-
# $Id: closure.rb 2169 2007-02-07 06:47:10Z luke $
|
@@ -14,14 +14,6 @@ class Puppet::Type
|
|
14
14
|
self.class.depthfirst?
|
15
15
|
end
|
16
16
|
|
17
|
-
def parent=(parent)
|
18
|
-
if self.parentof?(parent)
|
19
|
-
devfail "%s[%s] is already the parent of %s[%s]" %
|
20
|
-
[self.class.name, self.title, parent.class.name, parent.title]
|
21
|
-
end
|
22
|
-
@parent = parent
|
23
|
-
end
|
24
|
-
|
25
17
|
# Add a hook for testing for recursion.
|
26
18
|
def parentof?(child)
|
27
19
|
if (self == child)
|
@@ -56,4 +48,3 @@ class Puppet::Type
|
|
56
48
|
end
|
57
49
|
end
|
58
50
|
|
59
|
-
# $Id: container.rb 2499 2007-05-09 21:30:44Z luke $
|
@@ -29,7 +29,16 @@ class Puppet::Type
|
|
29
29
|
self.debug "%s change(s)" %
|
30
30
|
[changes.length]
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
|
+
# If we're in noop mode, we don't want to store the checked time,
|
34
|
+
# because it will result in the resource not getting scheduled if
|
35
|
+
# someone were to apply the catalog in non-noop mode.
|
36
|
+
# We're going to go ahead and record that we checked if there were
|
37
|
+
# no changes, since it's unlikely it will affect the scheduling.
|
38
|
+
noop = noop?
|
39
|
+
if ! noop or (noop && changes.length == 0)
|
40
|
+
self.cache(:checked, Time.now)
|
41
|
+
end
|
33
42
|
return changes.flatten
|
34
43
|
end
|
35
44
|
|
@@ -153,4 +162,3 @@ class Puppet::Type
|
|
153
162
|
end
|
154
163
|
end
|
155
164
|
|
156
|
-
# $Id: evaluation.rb 2678 2007-07-11 19:30:42Z luke $
|
@@ -79,8 +79,7 @@ class Puppet::Type
|
|
79
79
|
end
|
80
80
|
|
81
81
|
# Force users to call this, so that we can merge objects if
|
82
|
-
# necessary.
|
83
|
-
# error handling.
|
82
|
+
# necessary.
|
84
83
|
def self.create(args)
|
85
84
|
# Don't modify the original hash; instead, create a duplicate and modify it.
|
86
85
|
# We have to dup and use the ! so that it stays a TransObject if it is
|
@@ -100,6 +99,8 @@ class Puppet::Type
|
|
100
99
|
end
|
101
100
|
end
|
102
101
|
|
102
|
+
# If they've specified a type and called on the base, then
|
103
|
+
# delegate to the subclass.
|
103
104
|
if type
|
104
105
|
if typeklass = self.type(type)
|
105
106
|
return typeklass.create(hash)
|
@@ -125,8 +126,6 @@ class Puppet::Type
|
|
125
126
|
# XXX This will have to change when transobjects change to using titles
|
126
127
|
title = hash.name
|
127
128
|
|
128
|
-
#Puppet.debug "Creating %s[%s]" % [self.name, title]
|
129
|
-
|
130
129
|
# if the object already exists
|
131
130
|
if self.isomorphic? and retobj = self[title]
|
132
131
|
# if only one of our objects is implicit, then it's easy to see
|
@@ -138,23 +137,10 @@ class Puppet::Type
|
|
138
137
|
|
139
138
|
# now pass through and create the new object
|
140
139
|
elsif implicit
|
141
|
-
Puppet.
|
142
|
-
|
143
|
-
return retobj
|
140
|
+
Puppet.debug "Ignoring implicit %s[%s]" % [self.name, title]
|
141
|
+
return nil
|
144
142
|
else
|
145
|
-
|
146
|
-
if retobj.managed?
|
147
|
-
raise Puppet::Error, "%s '%s' is already being managed" %
|
148
|
-
[self.name, title]
|
149
|
-
else
|
150
|
-
retobj.merge(hash)
|
151
|
-
return retobj
|
152
|
-
end
|
153
|
-
# We will probably want to support merging of some kind in
|
154
|
-
# the future, but for now, just throw an error.
|
155
|
-
#retobj.merge(hash)
|
156
|
-
|
157
|
-
#return retobj
|
143
|
+
raise Puppet::Error, "%s is already being managed" % retobj.ref
|
158
144
|
end
|
159
145
|
end
|
160
146
|
|
@@ -235,19 +221,22 @@ class Puppet::Type
|
|
235
221
|
hash.delete :name
|
236
222
|
end
|
237
223
|
|
238
|
-
|
239
|
-
|
240
|
-
"You must specify a title for objects of type %s" % self.to_s
|
224
|
+
if catalog = hash[:catalog]
|
225
|
+
hash.delete(:catalog)
|
241
226
|
end
|
242
227
|
|
228
|
+
raise(Puppet::Error, "You must specify a title for objects of type %s" % self.to_s) unless title
|
229
|
+
|
243
230
|
if hash.include? :type
|
244
231
|
unless self.validattr? :type
|
245
232
|
hash.delete :type
|
246
233
|
end
|
247
234
|
end
|
235
|
+
|
248
236
|
# okay, now make a transobject out of hash
|
249
237
|
begin
|
250
238
|
trans = Puppet::TransObject.new(title, self.name.to_s)
|
239
|
+
trans.catalog = catalog if catalog
|
251
240
|
hash.each { |param, value|
|
252
241
|
trans[param] = value
|
253
242
|
}
|
@@ -270,10 +259,8 @@ class Puppet::Type
|
|
270
259
|
providers_by_source.collect do |provider|
|
271
260
|
provider.instances.collect do |instance|
|
272
261
|
# First try to get the resource if it already exists
|
273
|
-
|
274
|
-
|
275
|
-
next
|
276
|
-
end
|
262
|
+
# Skip instances that map to a managed resource with a different provider
|
263
|
+
next if resource = self[instance.name] and resource.provider.class != instance.class
|
277
264
|
|
278
265
|
# We always want to use the "first" provider instance we find, unless the resource
|
279
266
|
# is already managed and has a different provider set
|
@@ -308,12 +295,11 @@ class Puppet::Type
|
|
308
295
|
|
309
296
|
# Create the path for logging and such.
|
310
297
|
def pathbuilder
|
311
|
-
if
|
312
|
-
[
|
298
|
+
if p = parent
|
299
|
+
[p.pathbuilder, self.ref].flatten
|
313
300
|
else
|
314
301
|
[self.ref]
|
315
302
|
end
|
316
303
|
end
|
317
304
|
end
|
318
305
|
|
319
|
-
# $Id: instances.rb 2718 2007-07-19 22:12:51Z luke $
|