puppet 0.24.9 → 0.25.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 +18680 -1241
- data/CHANGELOG.old +1705 -0
- data/LICENSE +2 -2
- data/README +1 -1
- data/README.queueing +126 -0
- data/README.rst +4 -4
- data/Rakefile +62 -216
- data/bin/filebucket +6 -117
- data/bin/pi +50 -0
- data/bin/puppet +7 -188
- data/bin/puppetdoc +7 -198
- data/bin/ralsh +4 -191
- data/conf/auth.conf +94 -0
- data/conf/gentoo/init.d/puppetmaster +30 -30
- data/conf/osx/PackageInfo.plist +30 -30
- data/conf/osx/createpackage.sh +23 -18
- data/conf/osx/preflight +8 -0
- data/conf/puppet-queue.conf +10 -0
- data/conf/redhat/client.init +52 -41
- data/conf/redhat/logrotate +1 -0
- data/conf/redhat/puppet.spec +74 -36
- data/conf/redhat/rundir-perms.patch +28 -0
- data/conf/redhat/server.init +48 -43
- data/conf/redhat/server.sysconfig +4 -4
- data/conf/solaris/smf/puppetd.xml +53 -53
- data/conf/solaris/smf/puppetmasterd.xml +53 -53
- data/conf/solaris/smf/svc-puppetd +4 -4
- data/conf/solaris/smf/svc-puppetmasterd +3 -3
- data/conf/suse/client.init +4 -4
- data/conf/suse/puppet.spec +14 -14
- data/conf/suse/server.init +17 -17
- data/examples/etc/init.d/sleeper +8 -8
- data/examples/mac_dscl.pp +2 -2
- data/examples/mac_dscl_revert.pp +1 -1
- data/examples/mcx_dock_default.pp +108 -108
- data/examples/mcx_dock_full.pp +108 -108
- data/examples/mcx_nogroup.pp +108 -108
- data/examples/modules/sample-module/lib/puppet/parser/functions/hostname_to_dn.rb +5 -5
- data/examples/modules/sample-module/manifests/init.pp +2 -2
- data/examples/relationships +1 -1
- data/ext/autotest/config +6 -6
- data/ext/bin/sleeper +12 -12
- data/ext/dbfix.sql +21 -21
- data/ext/emacs/puppet-mode.el +42 -41
- data/ext/extlookup.rb +183 -0
- data/ext/ldap/puppet.schema +2 -1
- data/ext/logcheck/puppet +1 -1
- data/ext/module_puppet +7 -7
- data/ext/nagios/check_puppet.rb +83 -83
- data/ext/nagios/naggen +302 -0
- data/ext/puppet-test +61 -18
- data/ext/puppetlisten/puppetlisten.rb +76 -0
- data/ext/puppetlisten/puppetrun.rb +39 -0
- data/ext/puppetstoredconfigclean.rb +29 -29
- data/ext/rack/README +73 -0
- data/ext/rack/files/apache2.conf +38 -0
- data/ext/rack/files/config.ru +18 -0
- data/ext/rack/manifest.pp +59 -0
- data/ext/vim/syntax/puppet.vim +54 -35
- data/install.rb +37 -26
- data/lib/puppet.rb +15 -227
- data/lib/puppet/agent.rb +134 -0
- data/lib/puppet/agent/locker.rb +42 -0
- data/lib/puppet/agent/runner.rb +65 -0
- data/lib/puppet/application.rb +313 -0
- data/lib/puppet/application/filebucket.rb +87 -0
- data/lib/puppet/application/pi.rb +214 -0
- data/lib/puppet/application/puppet.rb +177 -0
- data/lib/puppet/application/puppetca.rb +71 -0
- data/lib/puppet/application/puppetd.rb +256 -0
- data/lib/puppet/application/puppetdoc.rb +222 -0
- data/lib/puppet/application/puppetmasterd.rb +168 -0
- data/lib/puppet/application/puppetqd.rb +96 -0
- data/lib/puppet/application/puppetrun.rb +219 -0
- data/lib/puppet/application/ralsh.rb +168 -0
- data/lib/puppet/configurer.rb +177 -0
- data/lib/puppet/configurer/downloader.rb +79 -0
- data/lib/puppet/configurer/fact_handler.rb +68 -0
- data/lib/puppet/configurer/plugin_handler.rb +26 -0
- data/lib/puppet/daemon.rb +78 -28
- data/lib/puppet/defaults.rb +239 -166
- data/lib/puppet/dsl.rb +7 -7
- data/lib/puppet/external/dot.rb +271 -271
- data/lib/puppet/external/event-loop/better-definers.rb +298 -298
- data/lib/puppet/external/event-loop/event-loop.rb +274 -274
- data/lib/puppet/external/event-loop/signal-system.rb +163 -163
- data/lib/puppet/external/lock.rb +1 -1
- data/lib/puppet/external/nagios.rb +20 -20
- data/lib/puppet/external/nagios/base.rb +3 -3
- data/lib/puppet/external/nagios/grammar.ry +185 -0
- data/lib/puppet/external/nagios/makefile +9 -0
- data/lib/puppet/external/nagios/parser.rb +1 -1
- data/lib/puppet/feature/json.rb +2 -0
- data/lib/puppet/feature/rack.rb +24 -0
- data/lib/puppet/feature/rails.rb +23 -33
- data/lib/puppet/feature/rubygems.rb +6 -0
- data/lib/puppet/feature/stomp.rb +6 -0
- data/lib/puppet/file_serving/{file_base.rb → base.rb} +10 -9
- data/lib/puppet/file_serving/configuration.rb +61 -61
- data/lib/puppet/file_serving/configuration/parser.rb +24 -29
- data/lib/puppet/file_serving/content.rb +26 -11
- data/lib/puppet/file_serving/fileset.rb +54 -19
- data/lib/puppet/file_serving/indirection_hooks.rb +12 -24
- data/lib/puppet/file_serving/metadata.rb +8 -8
- data/lib/puppet/file_serving/mount.rb +9 -151
- data/lib/puppet/file_serving/mount/file.rb +126 -0
- data/lib/puppet/file_serving/mount/modules.rb +25 -0
- data/lib/puppet/file_serving/mount/plugins.rb +27 -0
- data/lib/puppet/file_serving/terminus_helper.rb +9 -4
- data/lib/puppet/indirector.rb +6 -4
- data/lib/puppet/indirector/active_record.rb +28 -0
- data/lib/puppet/indirector/catalog/active_record.rb +36 -0
- data/lib/puppet/indirector/catalog/compiler.rb +50 -24
- data/lib/puppet/indirector/catalog/queue.rb +5 -0
- data/lib/puppet/indirector/catalog/rest.rb +6 -0
- data/lib/puppet/indirector/catalog/yaml.rb +2 -4
- data/lib/puppet/indirector/certificate/ca.rb +9 -0
- data/lib/puppet/indirector/certificate/file.rb +9 -0
- data/lib/puppet/indirector/certificate/rest.rb +9 -0
- data/lib/puppet/indirector/certificate_request/ca.rb +14 -0
- data/lib/puppet/indirector/certificate_request/file.rb +8 -0
- data/lib/puppet/indirector/certificate_request/rest.rb +9 -0
- data/lib/puppet/indirector/certificate_revocation_list/ca.rb +8 -0
- data/lib/puppet/indirector/certificate_revocation_list/file.rb +8 -0
- data/lib/puppet/indirector/certificate_revocation_list/rest.rb +9 -0
- data/lib/puppet/indirector/direct_file_server.rb +4 -8
- data/lib/puppet/indirector/exec.rb +2 -6
- data/lib/puppet/indirector/facts/active_record.rb +36 -0
- data/lib/puppet/indirector/facts/facter.rb +30 -22
- data/lib/puppet/indirector/facts/rest.rb +6 -0
- data/lib/puppet/indirector/file.rb +1 -0
- data/lib/puppet/indirector/file_content/rest.rb +0 -1
- data/lib/puppet/indirector/file_metadata/file.rb +2 -2
- data/lib/puppet/indirector/file_metadata/rest.rb +0 -1
- data/lib/puppet/indirector/file_server.rb +31 -18
- data/lib/puppet/indirector/indirection.rb +46 -33
- data/lib/puppet/indirector/key/ca.rb +12 -0
- data/lib/puppet/indirector/key/file.rb +42 -0
- data/lib/puppet/indirector/node/active_record.rb +13 -0
- data/lib/puppet/indirector/node/ldap.rb +1 -1
- data/lib/puppet/indirector/queue.rb +83 -0
- data/lib/puppet/indirector/report/processor.rb +1 -1
- data/lib/puppet/indirector/report/rest.rb +7 -0
- data/lib/puppet/indirector/request.rb +158 -15
- data/lib/puppet/indirector/rest.rb +74 -36
- data/lib/puppet/indirector/runner/rest.rb +7 -0
- data/lib/puppet/indirector/ssl_file.rb +174 -0
- data/lib/puppet/indirector/terminus.rb +4 -4
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/metatype/manager.rb +3 -3
- data/lib/puppet/module.rb +99 -124
- data/lib/puppet/network/authconfig.rb +57 -42
- data/lib/puppet/network/authstore.rb +58 -10
- data/lib/puppet/network/client.rb +0 -2
- data/lib/puppet/network/client/ca.rb +1 -1
- data/lib/puppet/network/client/dipper.rb +7 -2
- data/lib/puppet/network/format.rb +123 -0
- data/lib/puppet/network/format_handler.rb +156 -0
- data/lib/puppet/network/formats.rb +123 -0
- data/lib/puppet/network/handler/filebucket.rb +1 -1
- data/lib/puppet/network/handler/fileserver.rb +43 -35
- data/lib/puppet/network/handler/master.rb +4 -4
- data/lib/puppet/network/handler/report.rb +1 -1
- data/lib/puppet/network/handler/resource.rb +16 -20
- data/lib/puppet/network/handler/runner.rb +9 -42
- data/lib/puppet/network/http.rb +4 -4
- data/lib/puppet/network/http/api.rb +4 -0
- data/lib/puppet/network/http/api/v1.rb +65 -0
- data/lib/puppet/network/http/handler.rb +163 -56
- data/lib/puppet/network/http/mongrel.rb +19 -15
- data/lib/puppet/network/http/mongrel/rest.rb +35 -17
- data/lib/puppet/network/http/rack.rb +62 -0
- data/lib/puppet/network/http/rack/httphandler.rb +34 -0
- data/lib/puppet/network/http/rack/rest.rb +79 -0
- data/lib/puppet/network/http/rack/xmlrpc.rb +65 -0
- data/lib/puppet/network/http/webrick.rb +89 -16
- data/lib/puppet/network/http/webrick/rest.rb +24 -11
- data/lib/puppet/network/http_pool.rb +28 -29
- data/lib/puppet/network/http_server/mongrel.rb +8 -10
- data/lib/puppet/network/http_server/webrick.rb +1 -3
- data/lib/puppet/network/rest_authconfig.rb +89 -0
- data/lib/puppet/network/rest_authorization.rb +25 -0
- data/lib/puppet/network/rights.rb +230 -27
- data/lib/puppet/network/server.rb +133 -31
- data/lib/puppet/network/xmlrpc/client.rb +5 -5
- data/lib/puppet/network/xmlrpc/webrick_servlet.rb +6 -6
- data/lib/puppet/node.rb +28 -21
- data/lib/puppet/node/environment.rb +48 -0
- data/lib/puppet/node/facts.rb +21 -0
- data/lib/puppet/parameter.rb +291 -219
- data/lib/puppet/parser/ast.rb +1 -0
- data/lib/puppet/parser/ast/astarray.rb +5 -1
- data/lib/puppet/parser/ast/boolean_operator.rb +3 -3
- data/lib/puppet/parser/ast/caseopt.rb +10 -0
- data/lib/puppet/parser/ast/casestatement.rb +12 -27
- data/lib/puppet/parser/ast/collection.rb +31 -0
- data/lib/puppet/parser/ast/collexpr.rb +18 -11
- data/lib/puppet/parser/ast/comparison_operator.rb +1 -1
- data/lib/puppet/parser/ast/definition.rb +6 -2
- data/lib/puppet/parser/ast/function.rb +7 -2
- data/lib/puppet/parser/ast/ifstatement.rb +11 -6
- data/lib/puppet/parser/ast/leaf.rb +106 -3
- data/lib/puppet/parser/ast/match_operator.rb +31 -0
- data/lib/puppet/parser/ast/node.rb +10 -6
- data/lib/puppet/parser/ast/resource_defaults.rb +2 -2
- data/lib/puppet/parser/ast/resource_override.rb +1 -1
- data/lib/puppet/parser/ast/resource_reference.rb +11 -3
- data/lib/puppet/parser/ast/selector.rb +14 -32
- data/lib/puppet/parser/ast/vardef.rb +1 -1
- data/lib/puppet/parser/collector.rb +67 -15
- data/lib/puppet/parser/compiler.rb +21 -53
- data/lib/puppet/parser/files.rb +92 -0
- data/lib/puppet/parser/functions.rb +3 -3
- data/lib/puppet/parser/functions/defined.rb +3 -3
- data/lib/puppet/parser/functions/fqdn_rand.rb +3 -3
- data/lib/puppet/parser/functions/inline_template.rb +4 -4
- data/lib/puppet/parser/functions/regsubst.rb +37 -35
- data/lib/puppet/parser/functions/require.rb +34 -0
- data/lib/puppet/parser/functions/shellquote.rb +41 -0
- data/lib/puppet/parser/functions/split.rb +29 -0
- data/lib/puppet/parser/functions/sprintf.rb +6 -6
- data/lib/puppet/parser/functions/template.rb +4 -4
- data/lib/puppet/parser/functions/versioncmp.rb +22 -1
- data/lib/puppet/parser/grammar.ra +812 -0
- data/lib/puppet/parser/interpreter.rb +4 -4
- data/lib/puppet/parser/lexer.rb +44 -15
- data/lib/puppet/parser/loaded_code.rb +115 -0
- data/lib/puppet/parser/makefile +8 -0
- data/lib/puppet/parser/parser.rb +1080 -928
- data/lib/puppet/parser/parser_support.rb +118 -96
- data/lib/puppet/parser/resource.rb +56 -126
- data/lib/puppet/parser/resource/param.rb +2 -76
- data/lib/puppet/parser/resource/reference.rb +15 -8
- data/lib/puppet/parser/scope.rb +68 -35
- data/lib/puppet/parser/templatewrapper.rb +8 -8
- data/lib/puppet/parser/yaml_trimmer.rb +11 -0
- data/lib/puppet/property.rb +69 -124
- data/lib/puppet/property/list.rb +3 -3
- data/lib/puppet/provider.rb +5 -5
- data/lib/puppet/provider/augeas/augeas.rb +119 -118
- data/lib/puppet/provider/computer/computer.rb +3 -3
- data/lib/puppet/provider/confine/variable.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +8 -7
- data/lib/puppet/provider/group/directoryservice.rb +2 -2
- data/lib/puppet/provider/group/groupadd.rb +1 -1
- data/lib/puppet/provider/group/ldap.rb +3 -3
- data/lib/puppet/provider/group/pw.rb +1 -1
- data/lib/puppet/provider/host/parsed.rb +3 -3
- data/lib/puppet/provider/ldap.rb +1 -3
- data/lib/puppet/provider/macauthorization/macauthorization.rb +62 -55
- data/lib/puppet/provider/mailalias/aliases.rb +9 -1
- data/lib/puppet/provider/maillist/mailman.rb +8 -4
- data/lib/puppet/provider/mcx/mcxcontent.rb +11 -11
- data/lib/puppet/provider/mount/parsed.rb +2 -2
- data/lib/puppet/provider/nameservice.rb +6 -6
- data/lib/puppet/provider/nameservice/directoryservice.rb +83 -87
- data/lib/puppet/provider/package/appdmg.rb +10 -9
- data/lib/puppet/provider/package/apple.rb +1 -3
- data/lib/puppet/provider/package/apt.rb +5 -5
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/aptrpm.rb +1 -1
- data/lib/puppet/provider/package/darwinport.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +2 -2
- data/lib/puppet/provider/package/fink.rb +6 -6
- data/lib/puppet/provider/package/freebsd.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +2 -2
- data/lib/puppet/provider/package/hpux.rb +5 -5
- data/lib/puppet/provider/package/pkgdmg.rb +30 -22
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/ports.rb +1 -1
- data/lib/puppet/provider/package/rpm.rb +5 -5
- data/lib/puppet/provider/package/rug.rb +1 -1
- data/lib/puppet/provider/package/sun.rb +7 -7
- data/lib/puppet/provider/package/up2date.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +2 -2
- data/lib/puppet/provider/package/yumhelper.py +2 -2
- data/lib/puppet/provider/port/parsed.rb +1 -1
- data/lib/puppet/provider/selmodule/semodule.rb +3 -3
- data/lib/puppet/provider/service/base.rb +21 -12
- data/lib/puppet/provider/service/daemontools.rb +86 -49
- data/lib/puppet/provider/service/debian.rb +20 -12
- data/lib/puppet/provider/service/freebsd.rb +5 -5
- data/lib/puppet/provider/service/gentoo.rb +2 -2
- data/lib/puppet/provider/service/init.rb +21 -33
- data/lib/puppet/provider/service/launchd.rb +120 -48
- data/lib/puppet/provider/service/redhat.rb +12 -21
- data/lib/puppet/provider/service/runit.rb +19 -9
- data/lib/puppet/provider/service/smf.rb +49 -34
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +34 -0
- data/lib/puppet/provider/sshkey/parsed.rb +2 -2
- data/lib/puppet/provider/user/directoryservice.rb +12 -29
- data/lib/puppet/provider/user/hpux.rb +3 -3
- data/lib/puppet/provider/user/ldap.rb +2 -2
- data/lib/puppet/provider/zfs/solaris.rb +1 -1
- data/lib/puppet/provider/zone/solaris.rb +4 -4
- data/lib/puppet/provider/zpool/solaris.rb +3 -3
- data/lib/puppet/rails.rb +9 -9
- data/lib/puppet/rails/benchmark.rb +69 -0
- data/lib/puppet/rails/database/001_add_created_at_to_all_tables.rb +5 -5
- data/lib/puppet/rails/database/002_remove_duplicated_index_on_all_tables.rb +2 -2
- data/lib/puppet/rails/database/003_add_environment_to_host.rb +1 -1
- data/lib/puppet/rails/database/schema.rb +8 -8
- data/lib/puppet/rails/fact_value.rb +1 -1
- data/lib/puppet/rails/host.rb +211 -93
- data/lib/puppet/rails/param_name.rb +5 -1
- data/lib/puppet/rails/param_value.rb +29 -2
- data/lib/puppet/rails/puppet_tag.rb +5 -0
- data/lib/puppet/rails/resource.rb +120 -20
- data/lib/puppet/rails/resource_tag.rb +1 -1
- data/lib/puppet/rails/source_file.rb +1 -1
- data/lib/puppet/reference/configuration.rb +14 -14
- data/lib/puppet/reference/function.rb +1 -1
- data/lib/puppet/reference/metaparameter.rb +48 -0
- data/lib/puppet/reference/providers.rb +6 -6
- data/lib/puppet/reference/type.rb +1 -37
- data/lib/puppet/relationship.rb +57 -30
- data/lib/puppet/reports/rrdgraph.rb +4 -4
- data/lib/puppet/reports/store.rb +3 -3
- data/lib/puppet/reports/tagmail.rb +15 -15
- data/lib/puppet/resource.rb +265 -0
- data/lib/puppet/{node → resource}/catalog.rb +188 -112
- data/lib/puppet/{resource_reference.rb → resource/reference.rb} +46 -24
- data/lib/puppet/simple_graph.rb +165 -27
- data/lib/puppet/ssl.rb +7 -0
- data/lib/puppet/ssl/base.rb +62 -0
- data/lib/puppet/ssl/certificate.rb +34 -0
- data/lib/puppet/ssl/certificate_authority.rb +298 -0
- data/lib/puppet/ssl/certificate_authority/interface.rb +118 -0
- data/lib/puppet/ssl/certificate_factory.rb +145 -0
- data/lib/puppet/ssl/certificate_request.rb +51 -0
- data/lib/puppet/ssl/certificate_revocation_list.rb +86 -0
- data/lib/puppet/ssl/host.rb +271 -0
- data/lib/puppet/ssl/inventory.rb +52 -0
- data/lib/puppet/ssl/key.rb +56 -0
- data/lib/puppet/sslcertificates.rb +6 -6
- data/lib/puppet/sslcertificates/ca.rb +15 -15
- data/lib/puppet/sslcertificates/certificate.rb +4 -4
- data/lib/puppet/sslcertificates/inventory.rb +3 -3
- data/lib/puppet/transaction.rb +113 -139
- data/lib/puppet/transaction/change.rb +6 -6
- data/lib/puppet/transaction/event.rb +1 -1
- data/lib/puppet/transaction/report.rb +7 -1
- data/lib/puppet/transportable.rb +28 -28
- data/lib/puppet/type.rb +263 -688
- data/lib/puppet/type/augeas.rb +3 -2
- data/lib/puppet/type/component.rb +28 -95
- data/lib/puppet/type/computer.rb +10 -10
- data/lib/puppet/type/cron.rb +19 -14
- data/lib/puppet/type/exec.rb +21 -20
- data/lib/puppet/type/file.rb +306 -633
- data/lib/puppet/type/file/checksum.rb +10 -11
- data/lib/puppet/type/file/content.rb +83 -22
- data/lib/puppet/type/file/ensure.rb +15 -9
- data/lib/puppet/type/file/group.rb +7 -1
- data/lib/puppet/type/file/mode.rb +1 -1
- data/lib/puppet/type/file/owner.rb +9 -3
- data/lib/puppet/type/file/selcontext.rb +4 -4
- data/lib/puppet/type/file/source.rb +78 -179
- data/lib/puppet/type/file/target.rb +3 -3
- data/lib/puppet/type/file/type.rb +2 -2
- data/lib/puppet/type/filebucket.rb +33 -54
- data/lib/puppet/type/group.rb +8 -8
- data/lib/puppet/type/host.rb +7 -7
- data/lib/puppet/type/k5login.rb +2 -2
- data/lib/puppet/type/macauthorization.rb +77 -52
- data/lib/puppet/type/mailalias.rb +2 -2
- data/lib/puppet/type/maillist.rb +2 -2
- data/lib/puppet/type/mcx.rb +3 -3
- data/lib/puppet/type/mount.rb +16 -11
- data/lib/puppet/type/notify.rb +4 -4
- data/lib/puppet/type/package.rb +6 -28
- data/lib/puppet/type/port.rb +1 -1
- data/lib/puppet/type/resources.rb +19 -19
- data/lib/puppet/type/schedule.rb +18 -20
- data/lib/puppet/type/selmodule.rb +1 -1
- data/lib/puppet/type/service.rb +11 -7
- data/lib/puppet/type/ssh_authorized_key.rb +26 -9
- data/lib/puppet/type/sshkey.rb +2 -2
- data/lib/puppet/type/tidy.rb +285 -289
- data/lib/puppet/type/user.rb +9 -7
- data/lib/puppet/type/yumrepo.rb +17 -16
- data/lib/puppet/type/zone.rb +8 -7
- data/lib/puppet/util.rb +11 -36
- data/lib/puppet/util/autoload.rb +31 -19
- data/lib/puppet/util/autoload/file_cache.rb +115 -0
- data/lib/puppet/util/backups.rb +86 -0
- data/lib/puppet/util/cacher.rb +135 -0
- data/lib/puppet/util/checksums.rb +11 -1
- data/lib/puppet/util/classgen.rb +1 -1
- data/lib/puppet/util/config_store.rb +2 -2
- data/lib/puppet/util/constant_inflector.rb +1 -1
- data/lib/puppet/util/diff.rb +2 -2
- data/lib/puppet/util/docs.rb +9 -3
- data/lib/puppet/util/execution.rb +1 -1
- data/lib/puppet/util/feature.rb +27 -20
- data/lib/puppet/util/fileparsing.rb +3 -3
- data/lib/puppet/util/filetype.rb +8 -6
- data/lib/puppet/util/graph.rb +5 -5
- data/lib/puppet/util/inifile.rb +5 -5
- data/lib/puppet/util/json.rb +13 -0
- data/lib/puppet/util/ldap/connection.rb +2 -2
- data/lib/puppet/util/log.rb +48 -31
- data/lib/puppet/util/metric.rb +4 -4
- data/lib/puppet/util/monkey_patches.rb +43 -0
- data/lib/puppet/util/nagios_maker.rb +1 -1
- data/lib/puppet/util/package.rb +4 -4
- data/lib/puppet/util/pidlock.rb +59 -59
- data/lib/puppet/util/posix.rb +13 -52
- data/lib/puppet/util/provider_features.rb +3 -3
- data/lib/puppet/util/queue.rb +96 -0
- data/lib/puppet/util/queue/stomp.rb +47 -0
- data/lib/puppet/util/rails/cache_accumulator.rb +65 -0
- data/lib/puppet/util/rails/collection_merger.rb +0 -39
- data/lib/puppet/util/rails/reference_serializer.rb +17 -3
- data/lib/puppet/util/rdoc.rb +1 -0
- data/lib/puppet/util/rdoc/code_objects.rb +5 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +5 -5
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +13 -13
- data/lib/puppet/util/rdoc/parser.rb +28 -32
- data/lib/puppet/util/reference.rb +29 -8
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/selinux.rb +12 -6
- data/lib/puppet/util/settings.rb +203 -578
- data/lib/puppet/util/settings/boolean_setting.rb +33 -0
- data/lib/puppet/util/settings/file_setting.rb +119 -0
- data/lib/puppet/util/settings/setting.rb +110 -0
- data/lib/puppet/util/subclass_loader.rb +1 -1
- data/lib/puppet/util/suidmanager.rb +2 -2
- data/lib/puppet/util/tagging.rb +1 -1
- data/lib/puppet/util/warnings.rb +17 -9
- data/man/man8/filebucket.8 +2 -2
- data/man/man8/pi.8 +2 -2
- data/man/man8/puppet.8 +3 -4
- data/man/man8/puppet.conf.8 +63 -63
- data/man/man8/puppetca.8 +2 -2
- data/man/man8/puppetd.8 +2 -2
- data/man/man8/puppetdoc.8 +2 -2
- data/man/man8/puppetmasterd.8 +2 -2
- data/man/man8/puppetrun.8 +2 -2
- data/man/man8/ralsh.8 +3 -3
- data/sbin/puppetca +102 -0
- data/sbin/puppetd +159 -0
- data/sbin/puppetmasterd +66 -0
- data/sbin/puppetqd +53 -0
- data/sbin/puppetrun +130 -0
- data/spec/Rakefile +2 -2
- data/spec/integration/application/puppet.rb +33 -0
- data/spec/integration/bin/puppetmasterd.rb +110 -0
- data/spec/integration/configurer.rb +18 -0
- data/spec/integration/defaults.rb +158 -7
- data/spec/integration/file_serving/content.rb +2 -0
- data/spec/integration/file_serving/fileset.rb +14 -0
- data/spec/integration/file_serving/metadata.rb +2 -0
- data/spec/integration/file_serving/terminus_helper.rb +22 -0
- data/spec/integration/indirector/catalog/compiler.rb +67 -0
- data/spec/integration/indirector/catalog/queue.rb +61 -0
- data/spec/integration/indirector/certificate/rest.rb +69 -0
- data/spec/integration/indirector/certificate_request/rest.rb +89 -0
- data/spec/integration/indirector/certificate_revocation_list/rest.rb +77 -0
- data/spec/integration/indirector/direct_file_server.rb +16 -23
- data/spec/integration/indirector/file_content/file_server.rb +75 -0
- data/spec/integration/indirector/report/rest.rb +95 -0
- data/spec/integration/indirector/rest.rb +207 -147
- data/spec/integration/network/client.rb +19 -0
- data/spec/integration/network/formats.rb +110 -0
- data/spec/integration/network/handler.rb +25 -0
- data/spec/integration/network/server/mongrel.rb +26 -8
- data/spec/integration/network/server/webrick.rb +49 -11
- data/spec/integration/node/environment.rb +58 -0
- data/spec/integration/node/facts.rb +4 -2
- data/spec/integration/parser/compiler.rb +29 -0
- data/spec/integration/parser/functions/require.rb +67 -0
- data/spec/integration/provider/mailalias/aliases.rb +25 -0
- data/spec/integration/{node → resource}/catalog.rb +17 -10
- data/spec/integration/ssl/certificate_authority.rb +135 -0
- data/spec/integration/ssl/certificate_request.rb +59 -0
- data/spec/integration/ssl/certificate_revocation_list.rb +42 -0
- data/spec/integration/ssl/host.rb +90 -0
- data/spec/integration/transaction.rb +66 -0
- data/spec/integration/transaction/report.rb +2 -5
- data/spec/integration/type.rb +22 -0
- data/spec/integration/type/file.rb +458 -0
- data/spec/integration/type/package.rb +1 -1
- data/spec/integration/type/tidy.rb +27 -0
- data/spec/integration/util/autoload.rb +114 -0
- data/spec/integration/util/feature.rb +54 -0
- data/spec/integration/util/file_locking.rb +2 -1
- data/spec/integration/util/settings.rb +27 -0
- data/spec/lib/puppet_spec/files.rb +9 -0
- data/spec/monkey_patches/add_confine_and_runnable_to_rspec_dsl.rb +1 -0
- data/spec/monkey_patches/alias_should_to_must.rb +1 -0
- data/spec/shared_behaviours/file_server_terminus.rb +14 -11
- data/spec/shared_behaviours/file_serving.rb +13 -17
- data/spec/spec_helper.rb +22 -5
- data/spec/unit/agent.rb +259 -0
- data/spec/unit/agent/locker.rb +100 -0
- data/spec/unit/agent/runner.rb +118 -0
- data/spec/unit/application.rb +420 -0
- data/spec/unit/application/filebucket.rb +220 -0
- data/spec/unit/application/pi.rb +84 -0
- data/spec/unit/application/puppet.rb +404 -0
- data/spec/unit/application/puppetca.rb +142 -0
- data/spec/unit/application/puppetd.rb +502 -0
- data/spec/unit/application/puppetdoc.rb +345 -0
- data/spec/unit/application/puppetmasterd.rb +456 -0
- data/spec/unit/application/puppetqd.rb +186 -0
- data/spec/unit/application/puppetrun.rb +279 -0
- data/spec/unit/application/ralsh.rb +237 -0
- data/spec/unit/configurer.rb +232 -0
- data/spec/unit/configurer/downloader.rb +188 -0
- data/spec/unit/configurer/fact_handler.rb +150 -0
- data/spec/unit/configurer/plugin_handler.rb +112 -0
- data/spec/unit/daemon.rb +287 -0
- data/spec/unit/file_serving/{file_base.rb → base.rb} +39 -31
- data/spec/unit/file_serving/configuration.rb +104 -93
- data/spec/unit/file_serving/configuration/parser.rb +64 -18
- data/spec/unit/file_serving/content.rb +65 -26
- data/spec/unit/file_serving/fileset.rb +116 -14
- data/spec/unit/file_serving/indirection_hooks.rb +34 -95
- data/spec/unit/file_serving/metadata.rb +27 -40
- data/spec/unit/file_serving/mount.rb +7 -118
- data/spec/unit/file_serving/mount/file.rb +188 -0
- data/spec/unit/file_serving/mount/modules.rb +63 -0
- data/spec/unit/file_serving/mount/plugins.rb +61 -0
- data/spec/unit/file_serving/terminus_helper.rb +39 -27
- data/spec/unit/indirector.rb +6 -1
- data/spec/unit/indirector/active_record.rb +76 -0
- data/spec/unit/indirector/catalog/active_record.rb +122 -0
- data/spec/unit/indirector/catalog/compiler.rb +222 -118
- data/spec/unit/indirector/catalog/queue.rb +20 -0
- data/spec/unit/indirector/catalog/rest.rb +11 -0
- data/spec/unit/indirector/catalog/yaml.rb +6 -6
- data/spec/unit/indirector/certificate/ca.rb +28 -0
- data/spec/unit/indirector/certificate/file.rb +28 -0
- data/spec/unit/indirector/certificate/rest.rb +23 -0
- data/spec/unit/indirector/certificate_request/ca.rb +19 -0
- data/spec/unit/indirector/certificate_request/file.rb +19 -0
- data/spec/unit/indirector/certificate_request/rest.rb +23 -0
- data/spec/unit/indirector/certificate_revocation_list/ca.rb +21 -0
- data/spec/unit/indirector/certificate_revocation_list/file.rb +20 -0
- data/spec/unit/indirector/certificate_revocation_list/rest.rb +23 -0
- data/spec/unit/indirector/direct_file_server.rb +3 -8
- data/spec/unit/indirector/exec.rb +6 -1
- data/spec/unit/indirector/facts/active_record.rb +104 -0
- data/spec/unit/indirector/facts/facter.rb +53 -12
- data/spec/unit/indirector/facts/rest.rb +11 -0
- data/spec/unit/indirector/file.rb +8 -1
- data/spec/unit/indirector/file_metadata/file.rb +5 -5
- data/spec/unit/indirector/file_server.rb +181 -98
- data/spec/unit/indirector/indirection.rb +102 -38
- data/spec/unit/indirector/key/ca.rb +28 -0
- data/spec/unit/indirector/key/file.rb +104 -0
- data/spec/unit/indirector/node/active_record.rb +34 -0
- data/spec/unit/indirector/node/ldap.rb +1 -1
- data/spec/unit/indirector/node/rest.rb +2 -2
- data/spec/unit/indirector/queue.rb +123 -0
- data/spec/unit/indirector/report/rest.rb +28 -0
- data/spec/unit/indirector/request.rb +221 -0
- data/spec/unit/indirector/rest.rb +343 -334
- data/spec/unit/indirector/runner/rest.rb +11 -0
- data/spec/unit/indirector/ssl_file.rb +280 -0
- data/spec/unit/module.rb +180 -180
- data/spec/unit/network/authconfig.rb +292 -0
- data/spec/unit/network/authstore.rb +94 -0
- data/spec/unit/network/client.rb +2 -2
- data/spec/unit/network/client/dipper.rb +16 -0
- data/spec/unit/network/format.rb +191 -0
- data/spec/unit/network/format_handler.rb +306 -0
- data/spec/unit/network/formats.rb +249 -0
- data/spec/unit/network/handler/fileserver.rb +2 -5
- data/spec/unit/network/http.rb +3 -3
- data/spec/unit/network/http/api/v1.rb +122 -0
- data/spec/unit/network/http/handler.rb +448 -0
- data/spec/unit/network/http/mongrel.rb +46 -32
- data/spec/unit/network/http/mongrel/rest.rb +174 -319
- data/spec/unit/network/http/rack.rb +102 -0
- data/spec/unit/network/http/rack/rest.rb +199 -0
- data/spec/unit/network/http/rack/xmlrpc.rb +157 -0
- data/spec/unit/network/http/webrick.rb +249 -37
- data/spec/unit/network/http/webrick/rest.rb +113 -279
- data/spec/unit/network/http_pool.rb +86 -110
- data/spec/unit/network/rest_authconfig.rb +146 -0
- data/spec/unit/network/rest_authorization.rb +43 -0
- data/spec/unit/network/rights.rb +519 -0
- data/spec/unit/network/server.rb +475 -257
- data/spec/unit/node.rb +43 -10
- data/spec/unit/node/environment.rb +143 -9
- data/spec/unit/node/facts.rb +77 -24
- data/spec/unit/other/selinux.rb +85 -0
- data/spec/unit/other/transbucket.rb +29 -13
- data/spec/unit/other/transobject.rb +35 -15
- data/spec/unit/parameter.rb +378 -5
- data/spec/unit/parser/ast.rb +1 -1
- data/spec/unit/parser/ast/arithmetic_operator.rb +17 -17
- data/spec/unit/parser/ast/astarray.rb +16 -10
- data/spec/unit/parser/ast/boolean_operator.rb +2 -2
- data/spec/unit/parser/ast/casestatement.rb +143 -0
- data/spec/unit/parser/ast/collection.rb +63 -0
- data/spec/unit/parser/ast/collexpr.rb +31 -8
- data/spec/unit/parser/ast/comparison_operator.rb +9 -9
- data/spec/unit/parser/ast/definition.rb +18 -0
- data/spec/unit/parser/ast/function.rb +6 -0
- data/spec/unit/parser/ast/ifstatement.rb +75 -0
- data/spec/unit/parser/ast/leaf.rb +261 -0
- data/spec/unit/parser/ast/match_operator.rb +50 -0
- data/spec/unit/parser/ast/minus.rb +1 -1
- data/spec/unit/parser/ast/node.rb +20 -0
- data/spec/unit/parser/ast/not.rb +1 -1
- data/spec/unit/parser/ast/resource_override.rb +5 -5
- data/spec/unit/parser/ast/resource_reference.rb +11 -5
- data/spec/unit/parser/ast/selector.rb +156 -0
- data/spec/unit/parser/ast/vardef.rb +11 -11
- data/spec/unit/parser/collector.rb +167 -48
- data/spec/unit/parser/compiler.rb +128 -104
- data/spec/unit/parser/files.rb +190 -0
- data/spec/unit/parser/functions/inline_template.rb +0 -0
- data/spec/unit/parser/functions/regsubst.rb +42 -42
- data/spec/unit/parser/functions/require.rb +36 -0
- data/spec/unit/parser/functions/shellquote.rb +92 -0
- data/spec/unit/parser/functions/split.rb +51 -0
- data/spec/unit/parser/functions/sprintf.rb +11 -11
- data/spec/unit/parser/functions/template.rb +0 -0
- data/spec/unit/parser/functions/versioncmp.rb +2 -2
- data/spec/unit/parser/interpreter.rb +16 -7
- data/spec/unit/parser/lexer.rb +72 -12
- data/spec/unit/parser/loaded_code.rb +198 -0
- data/spec/unit/parser/parser.rb +215 -28
- data/spec/unit/parser/resource.rb +131 -22
- data/spec/unit/parser/scope.rb +207 -12
- data/spec/unit/parser/templatewrapper.rb +8 -3
- data/spec/unit/property.rb +270 -16
- data/spec/unit/property/list.rb +12 -6
- data/spec/unit/provider.rb +31 -0
- data/spec/unit/provider/augeas/augeas.rb +61 -33
- data/spec/unit/provider/macauthorization.rb +29 -29
- data/spec/unit/provider/mcx/mcxcontent.rb +4 -4
- data/spec/unit/provider/mount/parsed.rb +5 -8
- data/spec/unit/provider/naginator.rb +0 -0
- data/spec/unit/provider/package/apt.rb +6 -6
- data/spec/unit/provider/package/pkgdmg.rb +73 -0
- data/spec/unit/provider/selboolean.rb +1 -1
- data/spec/unit/provider/selmodule.rb +2 -2
- data/spec/unit/provider/service/daemontools.rb +40 -15
- data/spec/unit/provider/service/debian.rb +89 -0
- data/spec/unit/provider/service/init.rb +106 -0
- data/spec/unit/provider/service/launchd.rb +71 -13
- data/spec/unit/provider/service/redhat.rb +94 -0
- data/spec/unit/provider/service/runit.rb +14 -2
- data/spec/unit/provider/ssh_authorized_key/parsed.rb +66 -2
- data/spec/unit/provider/user/ldap.rb +1 -1
- data/spec/unit/provider/user/user_role_add.rb +1 -1
- data/spec/unit/provider/zfs/solaris.rb +18 -6
- data/spec/unit/provider/zone/solaris.rb +1 -1
- data/spec/unit/rails.rb +16 -22
- data/spec/unit/rails/host.rb +163 -0
- data/spec/unit/rails/param_value.rb +49 -0
- data/spec/unit/rails/resource.rb +87 -0
- data/spec/unit/relationship.rb +141 -29
- data/spec/unit/resource.rb +504 -0
- data/spec/unit/resource/catalog.rb +1061 -0
- data/spec/unit/resource/reference.rb +111 -0
- data/spec/unit/simple_graph.rb +448 -191
- data/spec/unit/ssl/certificate.rb +124 -0
- data/spec/unit/ssl/certificate_authority.rb +741 -0
- data/spec/unit/ssl/certificate_authority/interface.rb +269 -0
- data/spec/unit/ssl/certificate_factory.rb +107 -0
- data/spec/unit/ssl/certificate_request.rb +193 -0
- data/spec/unit/ssl/certificate_revocation_list.rb +180 -0
- data/spec/unit/ssl/host.rb +704 -0
- data/spec/unit/ssl/inventory.rb +180 -0
- data/spec/unit/ssl/key.rb +198 -0
- data/spec/unit/transaction.rb +65 -2
- data/spec/unit/transaction/change.rb +1 -1
- data/spec/unit/transaction/report.rb +1 -1
- data/spec/unit/type.rb +361 -8
- data/spec/unit/type/augeas.rb +30 -37
- data/spec/unit/type/component.rb +63 -0
- data/spec/unit/type/computer.rb +17 -21
- data/spec/unit/type/exec.rb +27 -2
- data/spec/unit/type/file.rb +704 -83
- data/spec/unit/type/file/content.rb +253 -15
- data/spec/unit/type/file/ensure.rb +65 -2
- data/spec/unit/type/file/group.rb +5 -0
- data/spec/unit/type/file/owner.rb +5 -0
- data/spec/unit/type/file/selinux.rb +12 -16
- data/spec/unit/type/file/source.rb +264 -0
- data/spec/unit/type/filebucket.rb +74 -0
- data/spec/unit/type/group.rb +1 -5
- data/spec/unit/type/macauthorization.rb +59 -26
- data/spec/unit/type/mcx.rb +8 -16
- data/spec/unit/type/mount.rb +8 -16
- data/spec/unit/type/noop_metaparam.rb +0 -2
- data/spec/unit/type/package.rb +13 -23
- data/spec/unit/type/resources.rb +4 -7
- data/spec/unit/type/schedule.rb +1 -7
- data/spec/unit/type/selboolean.rb +4 -6
- data/spec/unit/type/service.rb +23 -33
- data/spec/unit/type/ssh_authorized_key.rb +25 -14
- data/spec/unit/type/tidy.rb +329 -21
- data/spec/unit/type/user.rb +18 -10
- data/spec/unit/type/zfs.rb +6 -6
- data/spec/unit/util/autoload.rb +94 -3
- data/spec/unit/util/autoload/file_cache.rb +183 -0
- data/spec/unit/util/backups.rb +159 -0
- data/spec/unit/util/cache_accumulator.rb +69 -0
- data/spec/unit/util/cacher.rb +185 -0
- data/spec/unit/util/checksums.rb +9 -1
- data/spec/unit/util/feature.rb +72 -0
- data/spec/unit/util/filetype.rb +1 -11
- data/spec/unit/util/json.rb +21 -0
- data/spec/unit/util/log.rb +45 -0
- data/spec/unit/util/package.rb +2 -2
- data/spec/unit/util/queue.rb +88 -0
- data/spec/unit/util/queue/stomp.rb +140 -0
- data/spec/unit/util/reference_serializer.rb +52 -0
- data/spec/unit/util/selinux.rb +5 -3
- data/spec/unit/util/settings.rb +413 -264
- data/spec/unit/util/settings/file_setting.rb +223 -0
- data/spec/unit/util/storage.rb +11 -11
- data/spec/unit/util/warnings.rb +21 -17
- data/test/Rakefile +6 -5
- data/test/certmgr/ca.rb +5 -5
- data/test/certmgr/certmgr.rb +4 -4
- data/test/data/providers/cron/crontab.allthree +2 -2
- data/test/data/providers/cron/crontab.envNcomment +1 -1
- data/test/data/providers/cron/crontab.envNname +1 -1
- data/test/data/providers/cron/crontab.multirecords +1 -1
- data/test/data/providers/cron/crontab_collections.yaml +14 -14
- data/test/data/providers/cron/crontab_multiple_with_env.yaml +6 -6
- data/test/data/providers/cron/crontab_sample_records.yaml +102 -102
- data/test/data/providers/mailalias/aliases/test1 +28 -0
- data/test/data/providers/package/testpackages.yaml +6 -6
- data/test/data/reports/1.yaml +17 -17
- data/test/data/reports/tagmail_passers.conf +2 -2
- data/test/data/snippets/append.pp +5 -5
- data/test/data/snippets/casestatement.pp +9 -2
- data/test/data/snippets/classincludes.pp +1 -1
- data/test/data/snippets/collection_override.pp +8 -0
- data/test/data/snippets/fqparents.pp +2 -2
- data/test/data/snippets/ifexpression.pp +12 -0
- data/test/data/snippets/multilinecomments.pp +5 -1
- data/test/data/snippets/selectorvalues.pp +7 -0
- data/test/data/types/hosts/1 +1 -1
- data/test/data/types/hosts/2 +3 -3
- data/test/data/types/hosts/solaris +2 -2
- data/test/data/types/mount/freebsd.fstab +7 -7
- data/test/data/types/mount/solaris.fstab +10 -10
- data/test/data/types/port/1 +472 -472
- data/test/data/types/port/darwin +4347 -4347
- data/test/language/ast.rb +3 -2
- data/test/language/ast/casestatement.rb +12 -12
- data/test/language/ast/resource.rb +4 -4
- data/test/language/ast/resource_reference.rb +5 -5
- data/test/language/ast/selector.rb +11 -11
- data/test/language/ast/variable.rb +4 -4
- data/test/language/functions.rb +16 -16
- data/test/language/parser.rb +89 -111
- data/test/language/resource.rb +3 -88
- data/test/language/scope.rb +14 -55
- data/test/language/snippets.rb +31 -31
- data/test/lib/puppettest.rb +12 -12
- data/test/lib/puppettest/certificates.rb +2 -2
- data/test/lib/puppettest/exetest.rb +0 -1
- data/test/lib/puppettest/fakes.rb +1 -1
- data/test/lib/puppettest/parsertesting.rb +9 -4
- data/test/lib/puppettest/railstesting.rb +3 -3
- data/test/lib/puppettest/servertest.rb +1 -1
- data/test/lib/puppettest/support/assertions.rb +2 -2
- data/test/lib/puppettest/support/collection.rb +1 -1
- data/test/lib/puppettest/support/resources.rb +7 -7
- data/test/lib/puppettest/support/utils.rb +10 -16
- data/test/lib/puppettest/testcase.rb +2 -1
- data/test/network/authconfig.rb +1 -1
- data/test/network/authorization.rb +1 -1
- data/test/network/authstore.rb +57 -14
- data/test/network/client/ca.rb +1 -0
- data/test/network/client/resource.rb +12 -50
- data/test/network/client_request.rb +1 -1
- data/test/network/handler/bucket.rb +2 -2
- data/test/network/handler/fileserver.rb +17 -21
- data/test/network/handler/master.rb +5 -5
- data/test/network/handler/report.rb +3 -3
- data/test/network/handler/resource.rb +29 -75
- data/test/network/handler/runner.rb +8 -58
- data/test/network/rights.rb +1 -1
- data/test/network/server/mongrel_test.rb +15 -1
- data/test/network/server/webrick.rb +0 -36
- data/test/network/xmlrpc/webrick_servlet.rb +5 -5
- data/test/other/dsl.rb +3 -3
- data/test/other/events.rb +15 -15
- data/test/other/puppet.rb +2 -32
- data/test/other/relationships.rb +21 -148
- data/test/other/report.rb +20 -23
- data/test/other/transactions.rb +110 -298
- data/test/puppet/defaults.rb +1 -1
- data/test/puppet/tc_suidmanager.rb +1 -1
- data/test/rails/railsparameter.rb +4 -4
- data/test/ral/manager/attributes.rb +12 -68
- data/test/ral/manager/instances.rb +3 -19
- data/test/ral/manager/manager.rb +7 -7
- data/test/ral/manager/provider.rb +7 -7
- data/test/ral/manager/type.rb +54 -349
- data/test/ral/providers/cron/crontab.rb +14 -14
- data/test/ral/providers/group.rb +5 -6
- data/test/ral/providers/host/parsed.rb +3 -3
- data/test/ral/providers/mailalias/aliases.rb +4 -4
- data/test/ral/providers/package.rb +3 -3
- data/test/ral/providers/package/aptitude.rb +55 -55
- data/test/ral/providers/package/aptrpm.rb +7 -7
- data/test/ral/providers/parsedfile.rb +10 -14
- data/test/ral/providers/port/parsed.rb +6 -6
- data/test/ral/providers/provider.rb +10 -10
- data/test/ral/providers/service/base.rb +32 -32
- data/test/ral/providers/sshkey/parsed.rb +14 -14
- data/test/ral/providers/user.rb +16 -17
- data/test/ral/providers/user/useradd.rb +19 -22
- data/test/ral/type/cron.rb +21 -28
- data/test/ral/type/exec.rb +57 -60
- data/test/ral/type/file.rb +88 -862
- data/test/ral/type/file/target.rb +21 -70
- data/test/ral/type/fileignoresource.rb +37 -44
- data/test/ral/type/filesources.rb +43 -473
- data/test/ral/type/group.rb +6 -7
- data/test/ral/type/host.rb +14 -30
- data/test/ral/type/mailalias.rb +3 -3
- data/test/ral/type/port.rb +5 -5
- data/test/ral/type/resources.rb +37 -37
- data/test/ral/type/service.rb +3 -3
- data/test/ral/type/sshkey.rb +34 -39
- data/test/ral/type/user.rb +15 -14
- data/test/ral/type/yumrepo.rb +18 -17
- data/test/ral/type/zone.rb +4 -6
- data/test/test +9 -9
- data/test/util/fileparsing.rb +10 -10
- data/test/util/inifile.rb +6 -6
- data/test/util/instance_loader.rb +1 -1
- data/test/util/log.rb +2 -2
- data/test/util/metrics.rb +1 -6
- data/test/util/package.rb +1 -1
- data/test/util/pidlock.rb +116 -116
- data/test/util/settings.rb +40 -429
- data/test/util/storage.rb +5 -5
- data/test/util/subclass_loader.rb +0 -7
- data/test/util/utiltest.rb +10 -29
- metadata +1369 -941
- data/bin/puppetca +0 -363
- data/bin/puppetd +0 -439
- data/bin/puppetmasterd +0 -289
- data/bin/puppetrun +0 -369
- data/conf/redhat/lsb-config.patch +0 -51
- data/conf/redhat/no-chuser-0.15.1.patch +0 -38
- data/conf/redhat/no-lockdir.patch +0 -13
- data/examples/mac_netinfo.pp +0 -5
- data/ext/passenger/README +0 -63
- data/ext/passenger/apache2.conf +0 -29
- data/ext/passenger/config.ru +0 -40
- data/lib/puppet/config_stores/rest.rb +0 -60
- data/lib/puppet/executables/client/certhandler.rb +0 -82
- data/lib/puppet/indirector/file_content/modules.rb +0 -11
- data/lib/puppet/indirector/file_metadata/modules.rb +0 -17
- data/lib/puppet/indirector/module_files.rb +0 -82
- data/lib/puppet/indirector/ssl_rsa.rb +0 -5
- data/lib/puppet/indirector/ssl_rsa/file.rb +0 -33
- data/lib/puppet/network/client/master.rb +0 -524
- data/lib/puppet/network/http_server/rack.rb +0 -148
- data/lib/puppet/pgraph.rb +0 -121
- data/lib/puppet/provider/group/netinfo.rb +0 -15
- data/lib/puppet/provider/host/netinfo.rb +0 -19
- data/lib/puppet/provider/mount/netinfo.rb +0 -37
- data/lib/puppet/provider/nameservice/netinfo.rb +0 -224
- data/lib/puppet/provider/user/netinfo.rb +0 -111
- data/lib/puppet/util/fact_store.rb +0 -59
- data/lib/puppet/util/uri_helper.rb +0 -22
- data/spec/integration/file_serving/configuration.rb +0 -43
- data/spec/integration/indirector/module_files.rb +0 -57
- data/spec/unit/executables/client/certhandler.rb +0 -135
- data/spec/unit/indirector/file_content/modules.rb +0 -18
- data/spec/unit/indirector/file_metadata/modules.rb +0 -42
- data/spec/unit/indirector/module_files.rb +0 -259
- data/spec/unit/indirector/ssl_rsa/file.rb +0 -121
- data/spec/unit/network/client/master.rb +0 -442
- data/spec/unit/node/catalog.rb +0 -865
- data/spec/unit/other/pgraph.rb +0 -210
- data/spec/unit/resource_reference.rb +0 -73
- data/spec/unit/util/uri_helper.rb +0 -41
- data/test/data/snippets/ifexpression.rb +0 -6
- data/test/executables/filebucket.rb +0 -51
- data/test/executables/puppetbin.rb +0 -104
- data/test/executables/puppetca.rb +0 -115
- data/test/executables/puppetd.rb +0 -55
- data/test/executables/puppetmasterd.rb +0 -147
- data/test/network/client/client.rb +0 -195
- data/test/network/client/master.rb +0 -490
- data/test/network/daemon.rb +0 -70
- data/test/network/handler/handler.rb +0 -63
- data/test/other/overrides.rb +0 -107
- data/test/puppet/conffiles.rb +0 -107
- data/test/rails/ast.rb +0 -73
- data/test/rails/configuration.rb +0 -71
- data/test/rails/host.rb +0 -154
- data/test/rails/railsresource.rb +0 -251
- data/test/ral/providers/host/netinfo.rb +0 -56
- data/test/ral/providers/mount/netinfo.rb +0 -79
- data/test/ral/type/basic.rb +0 -85
- data/test/ral/type/filebucket.rb +0 -157
- data/test/ral/type/parameter.rb +0 -174
- data/test/ral/type/property.rb +0 -388
- data/test/ral/type/tidy.rb +0 -291
- data/test/util/autoload.rb +0 -145
- data/test/util/features.rb +0 -95
@@ -0,0 +1,87 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
describe "Puppet::Rails::Resource" do
|
6
|
+
confine "Cannot test without ActiveRecord" => Puppet.features.rails?
|
7
|
+
|
8
|
+
def column(name, type)
|
9
|
+
ActiveRecord::ConnectionAdapters::Column.new(name, nil, type, false)
|
10
|
+
end
|
11
|
+
|
12
|
+
before do
|
13
|
+
require 'puppet/rails/resource'
|
14
|
+
|
15
|
+
# Stub this so we don't need access to the DB.
|
16
|
+
Puppet::Rails::Resource.stubs(:columns).returns([column("title", "string"), column("restype", "string"), column("exported", "boolean")])
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "when creating initial resource arguments" do
|
20
|
+
it "should set the restype to the resource's type" do
|
21
|
+
Puppet::Rails::Resource.rails_resource_initial_args(Puppet::Resource.new(:file, "/file"))[:restype].should == "File"
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should set the title to the resource's title" do
|
25
|
+
Puppet::Rails::Resource.rails_resource_initial_args(Puppet::Resource.new(:file, "/file"))[:title].should == "/file"
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should set the line to the resource's line if one is available" do
|
29
|
+
resource = Puppet::Resource.new(:file, "/file")
|
30
|
+
resource.line = 50
|
31
|
+
|
32
|
+
Puppet::Rails::Resource.rails_resource_initial_args(resource)[:line].should == 50
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should set 'exported' to true of the resource is exported" do
|
36
|
+
resource = Puppet::Resource.new(:file, "/file")
|
37
|
+
resource.exported = true
|
38
|
+
|
39
|
+
Puppet::Rails::Resource.rails_resource_initial_args(resource)[:exported].should be_true
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should set 'exported' to false of the resource is not exported" do
|
43
|
+
resource = Puppet::Resource.new(:file, "/file")
|
44
|
+
resource.exported = false
|
45
|
+
|
46
|
+
Puppet::Rails::Resource.rails_resource_initial_args(resource)[:exported].should be_false
|
47
|
+
|
48
|
+
resource = Puppet::Resource.new(:file, "/file")
|
49
|
+
resource.exported = nil
|
50
|
+
|
51
|
+
Puppet::Rails::Resource.rails_resource_initial_args(resource)[:exported].should be_false
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "when merging in a parser resource" do
|
56
|
+
before do
|
57
|
+
@parser = mock 'parser resource'
|
58
|
+
|
59
|
+
@resource = Puppet::Rails::Resource.new
|
60
|
+
[:merge_attributes, :merge_parameters, :merge_tags, :save].each { |m| @resource.stubs(m) }
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should merge the attributes" do
|
64
|
+
@resource.expects(:merge_attributes).with(@parser)
|
65
|
+
|
66
|
+
@resource.merge_parser_resource(@parser)
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should merge the parameters" do
|
70
|
+
@resource.expects(:merge_parameters).with(@parser)
|
71
|
+
|
72
|
+
@resource.merge_parser_resource(@parser)
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should merge the tags" do
|
76
|
+
@resource.expects(:merge_tags).with(@parser)
|
77
|
+
|
78
|
+
@resource.merge_parser_resource(@parser)
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should save itself" do
|
82
|
+
@resource.expects(:save)
|
83
|
+
|
84
|
+
@resource.merge_parser_resource(@parser)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
data/spec/unit/relationship.rb
CHANGED
@@ -19,6 +19,20 @@ describe Puppet::Relationship do
|
|
19
19
|
@edge.should respond_to(:target)
|
20
20
|
end
|
21
21
|
|
22
|
+
it "should have a :callback attribute" do
|
23
|
+
@edge.callback = :foo
|
24
|
+
@edge.callback.should == :foo
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should have an :event attribute" do
|
28
|
+
@edge.event = :NONE
|
29
|
+
@edge.event.should == :NONE
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should require a callback if a non-NONE event is specified" do
|
33
|
+
proc { @edge.event = :something }.should raise_error(ArgumentError)
|
34
|
+
end
|
35
|
+
|
22
36
|
it "should have a :label attribute" do
|
23
37
|
@edge.should respond_to(:label)
|
24
38
|
end
|
@@ -27,11 +41,22 @@ describe Puppet::Relationship do
|
|
27
41
|
@edge = Puppet::Relationship.new("a", "b")
|
28
42
|
@edge.ref.should == "a => b"
|
29
43
|
end
|
44
|
+
|
45
|
+
it "should be able to produce a label as a hash with its event and callback" do
|
46
|
+
@edge.callback = :foo
|
47
|
+
@edge.event = :bar
|
48
|
+
|
49
|
+
@edge.label.should == {:callback => :foo, :event => :bar}
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should work if nil options are provided" do
|
53
|
+
lambda { Puppet::Relationship.new("a", "b", nil) }.should_not raise_error
|
54
|
+
end
|
30
55
|
end
|
31
56
|
|
32
57
|
describe Puppet::Relationship, " when initializing" do
|
33
58
|
before do
|
34
|
-
@edge = Puppet::Relationship.new(:a, :b
|
59
|
+
@edge = Puppet::Relationship.new(:a, :b)
|
35
60
|
end
|
36
61
|
|
37
62
|
it "should use the first argument as the source" do
|
@@ -42,38 +67,20 @@ describe Puppet::Relationship, " when initializing" do
|
|
42
67
|
@edge.target.should == :b
|
43
68
|
end
|
44
69
|
|
45
|
-
it "should
|
46
|
-
@edge.
|
47
|
-
|
48
|
-
|
49
|
-
it "should require a callback if a non-NONE event is specified" do
|
50
|
-
proc { Puppet::Relationship.new(:a, :b, :event => :something) }.should raise_error(ArgumentError)
|
51
|
-
end
|
52
|
-
|
53
|
-
it "should require the label to be a hash" do
|
54
|
-
proc { Puppet::Relationship.new(:a, :b, :event) }.should raise_error(ArgumentError)
|
70
|
+
it "should set the rest of the arguments as the event and callback" do
|
71
|
+
@edge = Puppet::Relationship.new(:a, :b, :callback => :foo, :event => :bar)
|
72
|
+
@edge.callback.should == :foo
|
73
|
+
@edge.event.should == :bar
|
55
74
|
end
|
56
|
-
end
|
57
75
|
|
58
|
-
|
59
|
-
|
60
|
-
@edge
|
61
|
-
@edge.event.should be_nil
|
76
|
+
it "should accept events specified as strings" do
|
77
|
+
@edge = Puppet::Relationship.new(:a, :b, "event" => :NONE)
|
78
|
+
@edge.event.should == :NONE
|
62
79
|
end
|
63
80
|
|
64
|
-
it "should
|
65
|
-
@edge = Puppet::Relationship.new(:a, :b,
|
66
|
-
@edge.
|
67
|
-
end
|
68
|
-
|
69
|
-
it "should default to a nil callback" do
|
70
|
-
@edge = Puppet::Relationship.new(:a, :b)
|
71
|
-
@edge.callback.should be_nil
|
72
|
-
end
|
73
|
-
|
74
|
-
it "should expose a provided callback via the :callback method" do
|
75
|
-
@edge = Puppet::Relationship.new(:a, :b, :callback => :testing)
|
76
|
-
@edge.callback.should == :testing
|
81
|
+
it "should accept callbacks specified as strings" do
|
82
|
+
@edge = Puppet::Relationship.new(:a, :b, "callback" => :foo)
|
83
|
+
@edge.callback.should == :foo
|
77
84
|
end
|
78
85
|
end
|
79
86
|
|
@@ -147,3 +154,108 @@ describe Puppet::Relationship, " when matching edges with a non-standard event"
|
|
147
154
|
@edge.should be_match(:random)
|
148
155
|
end
|
149
156
|
end
|
157
|
+
|
158
|
+
describe Puppet::Relationship, "when converting to json" do
|
159
|
+
confine "Missing 'json' library" => Puppet.features.json?
|
160
|
+
|
161
|
+
before do
|
162
|
+
@edge = Puppet::Relationship.new(:a, :b, :event => :random, :callback => :whatever)
|
163
|
+
end
|
164
|
+
|
165
|
+
def json_output_should
|
166
|
+
@edge.class.expects(:json_create).with { |hash| yield hash }
|
167
|
+
end
|
168
|
+
|
169
|
+
# LAK:NOTE For all of these tests, we convert back to the edge so we can
|
170
|
+
# trap the actual data structure then.
|
171
|
+
it "should set the 'json_class' to Puppet::Relationship" do
|
172
|
+
json_output_should { |hash| hash['json_class'] == "Puppet::Relationship" }
|
173
|
+
|
174
|
+
JSON.parse @edge.to_json
|
175
|
+
end
|
176
|
+
|
177
|
+
it "should store the stringified source as the source in the data" do
|
178
|
+
json_output_should { |hash| hash['data']['source'] == "a" }
|
179
|
+
|
180
|
+
JSON.parse @edge.to_json
|
181
|
+
end
|
182
|
+
|
183
|
+
it "should store the stringified target as the target in the data" do
|
184
|
+
json_output_should { |hash| hash['data']['target'] == "b" }
|
185
|
+
|
186
|
+
JSON.parse @edge.to_json
|
187
|
+
end
|
188
|
+
|
189
|
+
it "should store the jsonified event as the event in the data" do
|
190
|
+
@edge.event = :random
|
191
|
+
json_output_should { |hash| hash['data']['event'] == "random" }
|
192
|
+
|
193
|
+
JSON.parse @edge.to_json
|
194
|
+
end
|
195
|
+
|
196
|
+
it "should not store an event when none is set" do
|
197
|
+
@edge.event = nil
|
198
|
+
json_output_should { |hash| hash['data']['event'].nil? }
|
199
|
+
|
200
|
+
JSON.parse @edge.to_json
|
201
|
+
end
|
202
|
+
|
203
|
+
it "should store the jsonified callback as the callback in the data" do
|
204
|
+
@edge.callback = "whatever"
|
205
|
+
json_output_should { |hash| hash['data']['callback'] == "whatever" }
|
206
|
+
|
207
|
+
JSON.parse @edge.to_json
|
208
|
+
end
|
209
|
+
|
210
|
+
it "should not store a callback when none is set in the edge" do
|
211
|
+
@edge.callback = nil
|
212
|
+
json_output_should { |hash| hash['data']['callback'].nil? }
|
213
|
+
|
214
|
+
JSON.parse @edge.to_json
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
describe Puppet::Relationship, "when converting from json" do
|
219
|
+
confine "Missing 'json' library" => Puppet.features.json?
|
220
|
+
|
221
|
+
before do
|
222
|
+
@event = "random"
|
223
|
+
@callback = "whatever"
|
224
|
+
@data = {
|
225
|
+
"source" => "mysource",
|
226
|
+
"target" => "mytarget",
|
227
|
+
"event" => @event,
|
228
|
+
"callback" => @callback
|
229
|
+
}
|
230
|
+
@json = {
|
231
|
+
"json_class" => "Puppet::Relationship",
|
232
|
+
"data" => @data
|
233
|
+
}
|
234
|
+
end
|
235
|
+
|
236
|
+
def json_result_should
|
237
|
+
Puppet::Relationship.expects(:new).with { |*args| yield args }
|
238
|
+
end
|
239
|
+
|
240
|
+
it "should be extended with the JSON utility module" do
|
241
|
+
Puppet::Relationship.metaclass.ancestors.should be_include(Puppet::Util::Json)
|
242
|
+
end
|
243
|
+
|
244
|
+
# LAK:NOTE For all of these tests, we convert back to the edge so we can
|
245
|
+
# trap the actual data structure then.
|
246
|
+
it "should pass the source in as the first argument" do
|
247
|
+
Puppet::Relationship.from_json("source" => "mysource", "target" => "mytarget").source.should == "mysource"
|
248
|
+
end
|
249
|
+
|
250
|
+
it "should pass the target in as the second argument" do
|
251
|
+
Puppet::Relationship.from_json("source" => "mysource", "target" => "mytarget").target.should == "mytarget"
|
252
|
+
end
|
253
|
+
|
254
|
+
it "should pass the event as an argument if it's provided" do
|
255
|
+
Puppet::Relationship.from_json("source" => "mysource", "target" => "mytarget", "event" => "myevent", "callback" => "eh").event.should == "myevent"
|
256
|
+
end
|
257
|
+
|
258
|
+
it "should pass the callback as an argument if it's provided" do
|
259
|
+
Puppet::Relationship.from_json("source" => "mysource", "target" => "mytarget", "callback" => "mycallback").callback.should == "mycallback"
|
260
|
+
end
|
261
|
+
end
|
@@ -0,0 +1,504 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
4
|
+
require 'puppet/resource'
|
5
|
+
|
6
|
+
describe Puppet::Resource do
|
7
|
+
[:catalog, :file, :line].each do |attr|
|
8
|
+
it "should have an #{attr} attribute" do
|
9
|
+
resource = Puppet::Resource.new("file", "/my/file")
|
10
|
+
resource.should respond_to(attr)
|
11
|
+
resource.should respond_to(attr.to_s + "=")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "when initializing" do
|
16
|
+
it "should require the type and title" do
|
17
|
+
lambda { Puppet::Resource.new }.should raise_error(ArgumentError)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should create a resource reference with its type and title" do
|
21
|
+
ref = Puppet::Resource::Reference.new("file", "/f")
|
22
|
+
Puppet::Resource::Reference.expects(:new).with("file", "/f").returns ref
|
23
|
+
Puppet::Resource.new("file", "/f")
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should allow setting of parameters" do
|
27
|
+
Puppet::Resource.new("file", "/f", :noop => true)[:noop].should be_true
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should tag itself with its type" do
|
31
|
+
Puppet::Resource.new("file", "/f").should be_tagged("file")
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should tag itself with its title if the title is a valid tag" do
|
35
|
+
Puppet::Resource.new("file", "bar").should be_tagged("bar")
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should not tag itself with its title if the title is a not valid tag" do
|
39
|
+
Puppet::Resource.new("file", "/bar").should_not be_tagged("/bar")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should use the resource reference to determine its type" do
|
44
|
+
ref = Puppet::Resource::Reference.new("file", "/f")
|
45
|
+
Puppet::Resource::Reference.expects(:new).returns ref
|
46
|
+
resource = Puppet::Resource.new("file", "/f")
|
47
|
+
ref.expects(:type).returns "mytype"
|
48
|
+
resource.type.should == "mytype"
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should use its resource reference to determine its title" do
|
52
|
+
ref = Puppet::Resource::Reference.new("file", "/f")
|
53
|
+
Puppet::Resource::Reference.expects(:new).returns ref
|
54
|
+
resource = Puppet::Resource.new("file", "/f")
|
55
|
+
ref.expects(:title).returns "mytitle"
|
56
|
+
resource.title.should == "mytitle"
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should use its resource reference to determine whether it is builtin" do
|
60
|
+
ref = Puppet::Resource::Reference.new("file", "/f")
|
61
|
+
Puppet::Resource::Reference.expects(:new).returns ref
|
62
|
+
resource = Puppet::Resource.new("file", "/f")
|
63
|
+
ref.expects(:builtin_type?).returns "yep"
|
64
|
+
resource.builtin_type?.should == "yep"
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should call its builtin_type? method when 'builtin?' is called" do
|
68
|
+
resource = Puppet::Resource.new("file", "/f")
|
69
|
+
resource.expects(:builtin_type?).returns "foo"
|
70
|
+
resource.builtin?.should == "foo"
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should use its resource reference to produce its canonical reference string" do
|
74
|
+
ref = Puppet::Resource::Reference.new("file", "/f")
|
75
|
+
Puppet::Resource::Reference.expects(:new).returns ref
|
76
|
+
resource = Puppet::Resource.new("file", "/f")
|
77
|
+
ref.expects(:to_s).returns "Foo[bar]"
|
78
|
+
resource.ref.should == "Foo[bar]"
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should be taggable" do
|
82
|
+
Puppet::Resource.ancestors.should be_include(Puppet::Util::Tagging)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should have an 'exported' attribute" do
|
86
|
+
resource = Puppet::Resource.new("file", "/f")
|
87
|
+
resource.exported = true
|
88
|
+
resource.exported.should == true
|
89
|
+
resource.should be_exported
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "when managing parameters" do
|
93
|
+
before do
|
94
|
+
@resource = Puppet::Resource.new("file", "/my/file")
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should allow setting and retrieving of parameters" do
|
98
|
+
@resource[:foo] = "bar"
|
99
|
+
@resource[:foo].should == "bar"
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should canonicalize retrieved parameter names to treat symbols and strings equivalently" do
|
103
|
+
@resource[:foo] = "bar"
|
104
|
+
@resource["foo"].should == "bar"
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should canonicalize set parameter names to treat symbols and strings equivalently" do
|
108
|
+
@resource["foo"] = "bar"
|
109
|
+
@resource[:foo].should == "bar"
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should set the namevar when asked to set the name" do
|
113
|
+
Puppet::Type.type(:file).stubs(:namevar).returns :myvar
|
114
|
+
@resource[:name] = "/foo"
|
115
|
+
@resource[:myvar].should == "/foo"
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should return the namevar when asked to return the name" do
|
119
|
+
Puppet::Type.type(:file).stubs(:namevar).returns :myvar
|
120
|
+
@resource[:myvar] = "/foo"
|
121
|
+
@resource[:name].should == "/foo"
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should be able to set the name for non-builtin types" do
|
125
|
+
resource = Puppet::Resource.new(:foo, "bar")
|
126
|
+
lambda { resource[:name] = "eh" }.should_not raise_error
|
127
|
+
end
|
128
|
+
|
129
|
+
it "should be able to return the name for non-builtin types" do
|
130
|
+
resource = Puppet::Resource.new(:foo, "bar")
|
131
|
+
resource[:name] = "eh"
|
132
|
+
resource[:name].should == "eh"
|
133
|
+
end
|
134
|
+
|
135
|
+
it "should be able to iterate over parameters" do
|
136
|
+
@resource[:foo] = "bar"
|
137
|
+
@resource[:fee] = "bare"
|
138
|
+
params = {}
|
139
|
+
@resource.each do |key, value|
|
140
|
+
params[key] = value
|
141
|
+
end
|
142
|
+
params.should == {:foo => "bar", :fee => "bare"}
|
143
|
+
end
|
144
|
+
|
145
|
+
it "should include Enumerable" do
|
146
|
+
@resource.class.ancestors.should be_include(Enumerable)
|
147
|
+
end
|
148
|
+
|
149
|
+
it "should have a method for testing whether a parameter is included" do
|
150
|
+
@resource[:foo] = "bar"
|
151
|
+
@resource.should be_has_key(:foo)
|
152
|
+
@resource.should_not be_has_key(:eh)
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should have a method for providing the list of parameters" do
|
156
|
+
@resource[:foo] = "bar"
|
157
|
+
@resource[:bar] = "foo"
|
158
|
+
keys = @resource.keys
|
159
|
+
keys.should be_include(:foo)
|
160
|
+
keys.should be_include(:bar)
|
161
|
+
end
|
162
|
+
|
163
|
+
it "should have a method for providing the number of parameters" do
|
164
|
+
@resource[:foo] = "bar"
|
165
|
+
@resource.length.should == 1
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should have a method for deleting parameters" do
|
169
|
+
@resource[:foo] = "bar"
|
170
|
+
@resource.delete(:foo)
|
171
|
+
@resource[:foo].should be_nil
|
172
|
+
end
|
173
|
+
|
174
|
+
it "should have a method for testing whether the parameter list is empty" do
|
175
|
+
@resource.should be_empty
|
176
|
+
@resource[:foo] = "bar"
|
177
|
+
@resource.should_not be_empty
|
178
|
+
end
|
179
|
+
|
180
|
+
it "should be able to produce a hash of all existing parameters" do
|
181
|
+
@resource[:foo] = "bar"
|
182
|
+
@resource[:fee] = "yay"
|
183
|
+
|
184
|
+
hash = @resource.to_hash
|
185
|
+
hash[:foo].should == "bar"
|
186
|
+
hash[:fee].should == "yay"
|
187
|
+
end
|
188
|
+
|
189
|
+
it "should not provide direct access to the internal parameters hash when producing a hash" do
|
190
|
+
hash = @resource.to_hash
|
191
|
+
hash[:foo] = "bar"
|
192
|
+
@resource[:foo].should be_nil
|
193
|
+
end
|
194
|
+
|
195
|
+
it "should use the title as the namevar to the hash if no namevar is present" do
|
196
|
+
Puppet::Type.type(:file).stubs(:namevar).returns :myvar
|
197
|
+
@resource.to_hash[:myvar].should == "/my/file"
|
198
|
+
end
|
199
|
+
|
200
|
+
it "should set :name to the title if :name is not present for non-builtin types" do
|
201
|
+
resource = Puppet::Resource.new :foo, "bar"
|
202
|
+
resource.to_hash[:name].should == "bar"
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
describe "when serializing" do
|
207
|
+
before do
|
208
|
+
@resource = Puppet::Resource.new("file", "/my/file")
|
209
|
+
@resource["one"] = "test"
|
210
|
+
@resource["two"] = "other"
|
211
|
+
end
|
212
|
+
|
213
|
+
it "should be able to be dumped to yaml" do
|
214
|
+
proc { YAML.dump(@resource) }.should_not raise_error
|
215
|
+
end
|
216
|
+
|
217
|
+
it "should produce an equivalent yaml object" do
|
218
|
+
text = YAML.dump(@resource)
|
219
|
+
|
220
|
+
newresource = YAML.load(text)
|
221
|
+
newresource.title.should == @resource.title
|
222
|
+
newresource.type.should == @resource.type
|
223
|
+
%w{one two}.each do |param|
|
224
|
+
newresource[param].should == @resource[param]
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
describe "when converting to a RAL resource" do
|
230
|
+
before do
|
231
|
+
@resource = Puppet::Resource.new("file", "/my/file")
|
232
|
+
@resource["one"] = "test"
|
233
|
+
@resource["two"] = "other"
|
234
|
+
end
|
235
|
+
|
236
|
+
it "should use the resource type's :create method to create the resource if the resource is of a builtin type" do
|
237
|
+
type = mock 'resource type'
|
238
|
+
type.expects(:new).with(@resource).returns(:myresource)
|
239
|
+
Puppet::Type.expects(:type).with(@resource.type).returns(type)
|
240
|
+
@resource.to_ral.should == :myresource
|
241
|
+
end
|
242
|
+
|
243
|
+
it "should convert to a component instance if the resource type is not of a builtin type" do
|
244
|
+
component = mock 'component type'
|
245
|
+
Puppet::Type::Component.expects(:new).with(@resource).returns "meh"
|
246
|
+
|
247
|
+
Puppet::Type.expects(:type).with(@resource.type).returns(nil)
|
248
|
+
@resource.to_ral.should == "meh"
|
249
|
+
end
|
250
|
+
end
|
251
|
+
|
252
|
+
it "should be able to convert itself to Puppet code" do
|
253
|
+
Puppet::Resource.new("one::two", "/my/file").should respond_to(:to_manifest)
|
254
|
+
end
|
255
|
+
|
256
|
+
describe "when converting to puppet code" do
|
257
|
+
before do
|
258
|
+
@resource = Puppet::Resource.new("one::two", "/my/file", :noop => true, :foo => %w{one two})
|
259
|
+
end
|
260
|
+
|
261
|
+
it "should print the type and title" do
|
262
|
+
@resource.to_manifest.should be_include("one::two { '/my/file':\n")
|
263
|
+
end
|
264
|
+
|
265
|
+
it "should print each parameter, with the value single-quoted" do
|
266
|
+
@resource.to_manifest.should be_include(" noop => 'true'")
|
267
|
+
end
|
268
|
+
|
269
|
+
it "should print array values appropriately" do
|
270
|
+
@resource.to_manifest.should be_include(" foo => ['one','two']")
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
274
|
+
it "should be able to convert itself to a TransObject instance" do
|
275
|
+
Puppet::Resource.new("one::two", "/my/file").should respond_to(:to_trans)
|
276
|
+
end
|
277
|
+
|
278
|
+
describe "when converting to a TransObject" do
|
279
|
+
describe "and the resource is not an instance of a builtin type" do
|
280
|
+
before do
|
281
|
+
@resource = Puppet::Resource.new("foo", "bar")
|
282
|
+
end
|
283
|
+
|
284
|
+
it "should return a simple TransBucket if it is not an instance of a builtin type" do
|
285
|
+
bucket = @resource.to_trans
|
286
|
+
bucket.should be_instance_of(Puppet::TransBucket)
|
287
|
+
bucket.type.should == @resource.type
|
288
|
+
bucket.name.should == @resource.title
|
289
|
+
end
|
290
|
+
|
291
|
+
it "should copy over the resource's file" do
|
292
|
+
@resource.file = "/foo/bar"
|
293
|
+
@resource.to_trans.file.should == "/foo/bar"
|
294
|
+
end
|
295
|
+
|
296
|
+
it "should copy over the resource's line" do
|
297
|
+
@resource.line = 50
|
298
|
+
@resource.to_trans.line.should == 50
|
299
|
+
end
|
300
|
+
end
|
301
|
+
|
302
|
+
describe "and the resource is an instance of a builtin type" do
|
303
|
+
before do
|
304
|
+
@resource = Puppet::Resource.new("file", "bar")
|
305
|
+
end
|
306
|
+
|
307
|
+
it "should return a TransObject if it is an instance of a builtin resource type" do
|
308
|
+
trans = @resource.to_trans
|
309
|
+
trans.should be_instance_of(Puppet::TransObject)
|
310
|
+
trans.type.should == "file"
|
311
|
+
trans.name.should == @resource.title
|
312
|
+
end
|
313
|
+
|
314
|
+
it "should copy over the resource's file" do
|
315
|
+
@resource.file = "/foo/bar"
|
316
|
+
@resource.to_trans.file.should == "/foo/bar"
|
317
|
+
end
|
318
|
+
|
319
|
+
it "should copy over the resource's line" do
|
320
|
+
@resource.line = 50
|
321
|
+
@resource.to_trans.line.should == 50
|
322
|
+
end
|
323
|
+
|
324
|
+
# Only TransObjects support tags, annoyingly
|
325
|
+
it "should copy over the resource's tags" do
|
326
|
+
@resource.tag "foo"
|
327
|
+
@resource.to_trans.tags.should == @resource.tags
|
328
|
+
end
|
329
|
+
|
330
|
+
it "should copy the resource's parameters into the transobject and convert the parameter name to a string" do
|
331
|
+
@resource[:foo] = "bar"
|
332
|
+
@resource.to_trans["foo"].should == "bar"
|
333
|
+
end
|
334
|
+
|
335
|
+
it "should be able to copy arrays of values" do
|
336
|
+
@resource[:foo] = %w{yay fee}
|
337
|
+
@resource.to_trans["foo"].should == %w{yay fee}
|
338
|
+
end
|
339
|
+
|
340
|
+
it "should reduce single-value arrays to just a value" do
|
341
|
+
@resource[:foo] = %w{yay}
|
342
|
+
@resource.to_trans["foo"].should == "yay"
|
343
|
+
end
|
344
|
+
|
345
|
+
it "should convert resource references into the backward-compatible form" do
|
346
|
+
@resource[:foo] = Puppet::Resource::Reference.new(:file, "/f")
|
347
|
+
@resource.to_trans["foo"].should == %w{file /f}
|
348
|
+
end
|
349
|
+
|
350
|
+
it "should convert resource references into the backward-compatible form even when within arrays" do
|
351
|
+
@resource[:foo] = ["a", Puppet::Resource::Reference.new(:file, "/f")]
|
352
|
+
@resource.to_trans["foo"].should == ["a", %w{file /f}]
|
353
|
+
end
|
354
|
+
end
|
355
|
+
end
|
356
|
+
|
357
|
+
describe "when converting to json" do
|
358
|
+
confine "Missing 'json' library" => Puppet.features.json?
|
359
|
+
|
360
|
+
def json_output_should
|
361
|
+
@resource.class.expects(:json_create).with { |hash| yield hash }
|
362
|
+
end
|
363
|
+
|
364
|
+
it "should include the json util module" do
|
365
|
+
Puppet::Resource.metaclass.ancestors.should be_include(Puppet::Util::Json)
|
366
|
+
end
|
367
|
+
|
368
|
+
# LAK:NOTE For all of these tests, we convert back to the resource so we can
|
369
|
+
# trap the actual data structure then.
|
370
|
+
it "should set its json_class to 'Puppet::Resource'" do
|
371
|
+
JSON.parse(Puppet::Resource.new("file", "yay").to_json).should be_instance_of(Puppet::Resource)
|
372
|
+
end
|
373
|
+
|
374
|
+
it "should set its type to the provided type" do
|
375
|
+
JSON.parse(Puppet::Resource.new("File", "/foo").to_json).type.should == "File"
|
376
|
+
end
|
377
|
+
|
378
|
+
it "should set its title to the provided title" do
|
379
|
+
JSON.parse(Puppet::Resource.new("File", "/foo").to_json).title.should == "/foo"
|
380
|
+
end
|
381
|
+
|
382
|
+
it "should include all tags from the resource" do
|
383
|
+
resource = Puppet::Resource.new("File", "/foo")
|
384
|
+
resource.tag("yay")
|
385
|
+
|
386
|
+
JSON.parse(resource.to_json).tags.should == resource.tags
|
387
|
+
end
|
388
|
+
|
389
|
+
it "should include the file if one is set" do
|
390
|
+
resource = Puppet::Resource.new("File", "/foo")
|
391
|
+
resource.file = "/my/file"
|
392
|
+
|
393
|
+
JSON.parse(resource.to_json).file.should == "/my/file"
|
394
|
+
end
|
395
|
+
|
396
|
+
it "should include the line if one is set" do
|
397
|
+
resource = Puppet::Resource.new("File", "/foo")
|
398
|
+
resource.line = 50
|
399
|
+
|
400
|
+
JSON.parse(resource.to_json).line.should == 50
|
401
|
+
end
|
402
|
+
|
403
|
+
it "should include the 'exported' value if one is set" do
|
404
|
+
resource = Puppet::Resource.new("File", "/foo")
|
405
|
+
resource.exported = true
|
406
|
+
|
407
|
+
JSON.parse(resource.to_json).exported.should be_true
|
408
|
+
end
|
409
|
+
|
410
|
+
it "should set 'exported' to false if no value is set" do
|
411
|
+
resource = Puppet::Resource.new("File", "/foo")
|
412
|
+
|
413
|
+
JSON.parse(resource.to_json).exported.should be_false
|
414
|
+
end
|
415
|
+
|
416
|
+
it "should set all of its parameters as the 'parameters' entry" do
|
417
|
+
resource = Puppet::Resource.new("File", "/foo")
|
418
|
+
resource[:foo] = %w{bar eh}
|
419
|
+
resource[:fee] = %w{baz}
|
420
|
+
|
421
|
+
result = JSON.parse(resource.to_json)
|
422
|
+
result["foo"].should == %w{bar eh}
|
423
|
+
result["fee"].should == %w{baz}
|
424
|
+
end
|
425
|
+
|
426
|
+
it "should set all parameter values as arrays" do
|
427
|
+
resource = Puppet::Resource.new("File", "/foo")
|
428
|
+
resource[:foo] = "bar"
|
429
|
+
JSON.parse(resource.to_json)["foo"].should == %w{bar}
|
430
|
+
end
|
431
|
+
end
|
432
|
+
|
433
|
+
describe "when converting from json" do
|
434
|
+
confine "Missing 'json' library" => Puppet.features.json?
|
435
|
+
|
436
|
+
def json_result_should
|
437
|
+
Puppet::Resource.expects(:new).with { |hash| yield hash }
|
438
|
+
end
|
439
|
+
|
440
|
+
before do
|
441
|
+
@data = {
|
442
|
+
'type' => "file",
|
443
|
+
'title' => "yay",
|
444
|
+
}
|
445
|
+
end
|
446
|
+
|
447
|
+
it "should set its type to the provided type" do
|
448
|
+
Puppet::Resource.from_json(@data).type.should == "File"
|
449
|
+
end
|
450
|
+
|
451
|
+
it "should set its title to the provided title" do
|
452
|
+
Puppet::Resource.from_json(@data).title.should == "yay"
|
453
|
+
end
|
454
|
+
|
455
|
+
it "should tag the resource with any provided tags" do
|
456
|
+
@data['tags'] = %w{foo bar}
|
457
|
+
resource = Puppet::Resource.from_json(@data)
|
458
|
+
resource.tags.should be_include("foo")
|
459
|
+
resource.tags.should be_include("bar")
|
460
|
+
end
|
461
|
+
|
462
|
+
it "should set its file to the provided file" do
|
463
|
+
@data['file'] = "/foo/bar"
|
464
|
+
Puppet::Resource.from_json(@data).file.should == "/foo/bar"
|
465
|
+
end
|
466
|
+
|
467
|
+
it "should set its line to the provided line" do
|
468
|
+
@data['line'] = 50
|
469
|
+
Puppet::Resource.from_json(@data).line.should == 50
|
470
|
+
end
|
471
|
+
|
472
|
+
it "should 'exported' to true if set in the json data" do
|
473
|
+
@data['exported'] = true
|
474
|
+
Puppet::Resource.from_json(@data).exported.should be_true
|
475
|
+
end
|
476
|
+
|
477
|
+
it "should 'exported' to false if not set in the json data" do
|
478
|
+
Puppet::Resource.from_json(@data).exported.should be_false
|
479
|
+
end
|
480
|
+
|
481
|
+
it "should fail if no title is provided" do
|
482
|
+
@data.delete('title')
|
483
|
+
lambda { Puppet::Resource.from_json(@data) }.should raise_error(ArgumentError)
|
484
|
+
end
|
485
|
+
|
486
|
+
it "should fail if no type is provided" do
|
487
|
+
@data.delete('type')
|
488
|
+
lambda { Puppet::Resource.from_json(@data) }.should raise_error(ArgumentError)
|
489
|
+
end
|
490
|
+
|
491
|
+
it "should set each of the provided parameters" do
|
492
|
+
@data['parameters'] = {'foo' => %w{one two}, 'fee' => %w{three four}}
|
493
|
+
resource = Puppet::Resource.from_json(@data)
|
494
|
+
resource['foo'].should == %w{one two}
|
495
|
+
resource['fee'].should == %w{three four}
|
496
|
+
end
|
497
|
+
|
498
|
+
it "should convert single-value array parameters to normal values" do
|
499
|
+
@data['parameters'] = {'foo' => %w{one}}
|
500
|
+
resource = Puppet::Resource.from_json(@data)
|
501
|
+
resource['foo'].should == %w{one}
|
502
|
+
end
|
503
|
+
end
|
504
|
+
end
|