puppet-parse 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +0 -5
- data/README.md +1 -3
- data/lib/puppet-parse/version.rb +1 -1
- data/lib/puppet-parse.rb +2 -2
- data/lib/vendor/puppet/agent/locker.rb +46 -0
- data/lib/vendor/puppet/agent.rb +99 -0
- data/lib/vendor/puppet/application/agent.rb +489 -0
- data/lib/vendor/puppet/application/apply.rb +266 -0
- data/lib/vendor/puppet/application/ca.rb +5 -0
- data/lib/vendor/puppet/application/catalog.rb +4 -0
- data/lib/vendor/puppet/application/cert.rb +240 -0
- data/lib/vendor/puppet/application/certificate.rb +13 -0
- data/lib/vendor/puppet/application/certificate_request.rb +4 -0
- data/lib/vendor/puppet/application/certificate_revocation_list.rb +4 -0
- data/lib/vendor/puppet/application/config.rb +4 -0
- data/lib/vendor/puppet/application/describe.rb +256 -0
- data/lib/vendor/puppet/application/device.rb +242 -0
- data/lib/vendor/puppet/application/doc.rb +275 -0
- data/lib/vendor/puppet/application/face_base.rb +264 -0
- data/lib/vendor/puppet/application/facts.rb +4 -0
- data/lib/vendor/puppet/application/file.rb +4 -0
- data/lib/vendor/puppet/application/filebucket.rb +191 -0
- data/lib/vendor/puppet/application/help.rb +4 -0
- data/lib/vendor/puppet/application/indirection_base.rb +4 -0
- data/lib/vendor/puppet/application/inspect.rb +191 -0
- data/lib/vendor/puppet/application/instrumentation_data.rb +4 -0
- data/lib/vendor/puppet/application/instrumentation_listener.rb +4 -0
- data/lib/vendor/puppet/application/instrumentation_probe.rb +4 -0
- data/lib/vendor/puppet/application/key.rb +4 -0
- data/lib/vendor/puppet/application/kick.rb +351 -0
- data/lib/vendor/puppet/application/man.rb +4 -0
- data/lib/vendor/puppet/application/master.rb +263 -0
- data/lib/vendor/puppet/application/module.rb +11 -0
- data/lib/vendor/puppet/application/node.rb +4 -0
- data/lib/vendor/puppet/application/parser.rb +5 -0
- data/lib/vendor/puppet/application/plugin.rb +3 -0
- data/lib/vendor/puppet/application/queue.rb +161 -0
- data/lib/vendor/puppet/application/report.rb +4 -0
- data/lib/vendor/puppet/application/resource.rb +237 -0
- data/lib/vendor/puppet/application/resource_type.rb +4 -0
- data/lib/vendor/puppet/application/secret_agent.rb +6 -0
- data/lib/vendor/puppet/application/status.rb +4 -0
- data/lib/vendor/puppet/application.rb +421 -0
- data/lib/vendor/puppet/configurer/downloader.rb +86 -0
- data/lib/vendor/puppet/configurer/fact_handler.rb +56 -0
- data/lib/vendor/puppet/configurer/plugin_handler.rb +37 -0
- data/lib/vendor/puppet/configurer.rb +249 -0
- data/lib/vendor/puppet/daemon.rb +200 -0
- data/lib/vendor/puppet/defaults.rb +970 -0
- data/lib/vendor/puppet/dsl/resource_api.rb +120 -0
- data/lib/vendor/puppet/dsl/resource_type_api.rb +34 -0
- data/lib/vendor/puppet/dsl.rb +7 -0
- data/lib/vendor/puppet/error.rb +43 -0
- data/lib/vendor/puppet/external/base64.rb +19 -0
- data/lib/vendor/puppet/external/dot.rb +326 -0
- data/lib/vendor/puppet/external/lock.rb +63 -0
- data/lib/vendor/puppet/external/nagios/base.rb +472 -0
- data/lib/vendor/puppet/external/nagios/grammar.ry +185 -0
- data/lib/vendor/puppet/external/nagios/makefile +9 -0
- data/lib/vendor/puppet/external/nagios/parser.rb +775 -0
- data/lib/vendor/puppet/external/nagios.rb +48 -0
- data/lib/vendor/puppet/external/pson/common.rb +370 -0
- data/lib/vendor/puppet/external/pson/pure/generator.rb +401 -0
- data/lib/vendor/puppet/external/pson/pure/parser.rb +264 -0
- data/lib/vendor/puppet/external/pson/pure.rb +77 -0
- data/lib/vendor/puppet/external/pson/version.rb +8 -0
- data/lib/vendor/puppet/face/ca.rb +242 -0
- data/lib/vendor/puppet/face/catalog/select.rb +49 -0
- data/lib/vendor/puppet/face/catalog.rb +131 -0
- data/lib/vendor/puppet/face/certificate.rb +148 -0
- data/lib/vendor/puppet/face/certificate_request.rb +53 -0
- data/lib/vendor/puppet/face/certificate_revocation_list.rb +58 -0
- data/lib/vendor/puppet/face/config.rb +45 -0
- data/lib/vendor/puppet/face/facts.rb +81 -0
- data/lib/vendor/puppet/face/file/download.rb +54 -0
- data/lib/vendor/puppet/face/file/store.rb +21 -0
- data/lib/vendor/puppet/face/file.rb +47 -0
- data/lib/vendor/puppet/face/help/action.erb +53 -0
- data/lib/vendor/puppet/face/help/face.erb +79 -0
- data/lib/vendor/puppet/face/help/global.erb +19 -0
- data/lib/vendor/puppet/face/help/man.erb +136 -0
- data/lib/vendor/puppet/face/help.rb +131 -0
- data/lib/vendor/puppet/face/instrumentation_data.rb +28 -0
- data/lib/vendor/puppet/face/instrumentation_listener.rb +96 -0
- data/lib/vendor/puppet/face/instrumentation_probe.rb +77 -0
- data/lib/vendor/puppet/face/key.rb +15 -0
- data/lib/vendor/puppet/face/man.rb +93 -0
- data/lib/vendor/puppet/face/module/build.rb +37 -0
- data/lib/vendor/puppet/face/module/changes.rb +38 -0
- data/lib/vendor/puppet/face/module/generate.rb +42 -0
- data/lib/vendor/puppet/face/module/install.rb +174 -0
- data/lib/vendor/puppet/face/module/list.rb +285 -0
- data/lib/vendor/puppet/face/module/search.rb +88 -0
- data/lib/vendor/puppet/face/module/uninstall.rb +86 -0
- data/lib/vendor/puppet/face/module/upgrade.rb +84 -0
- data/lib/vendor/puppet/face/module.rb +17 -0
- data/lib/vendor/puppet/face/node/clean.rb +156 -0
- data/lib/vendor/puppet/face/node.rb +43 -0
- data/lib/vendor/puppet/face/parser.rb +51 -0
- data/lib/vendor/puppet/face/plugin.rb +55 -0
- data/lib/vendor/puppet/face/report.rb +56 -0
- data/lib/vendor/puppet/face/resource.rb +53 -0
- data/lib/vendor/puppet/face/resource_type.rb +81 -0
- data/lib/vendor/puppet/face/secret_agent.rb +54 -0
- data/lib/vendor/puppet/face/status.rb +53 -0
- data/lib/vendor/puppet/face.rb +12 -0
- data/lib/vendor/puppet/feature/base.rb +67 -0
- data/lib/vendor/puppet/feature/eventlog.rb +6 -0
- data/lib/vendor/puppet/feature/pson.rb +6 -0
- data/lib/vendor/puppet/feature/rack.rb +24 -0
- data/lib/vendor/puppet/feature/rails.rb +30 -0
- data/lib/vendor/puppet/feature/rubygems.rb +3 -0
- data/lib/vendor/puppet/feature/selinux.rb +3 -0
- data/lib/vendor/puppet/feature/ssh.rb +4 -0
- data/lib/vendor/puppet/feature/stomp.rb +6 -0
- data/lib/vendor/puppet/feature/zlib.rb +6 -0
- data/lib/vendor/puppet/file_bucket/dipper.rb +107 -0
- data/lib/vendor/puppet/file_bucket/file.rb +55 -0
- data/lib/vendor/puppet/file_bucket.rb +4 -0
- data/lib/vendor/puppet/file_collection/lookup.rb +10 -0
- data/lib/vendor/puppet/file_collection.rb +19 -0
- data/lib/vendor/puppet/file_serving/base.rb +88 -0
- data/lib/vendor/puppet/file_serving/configuration/parser.rb +115 -0
- data/lib/vendor/puppet/file_serving/configuration.rb +122 -0
- data/lib/vendor/puppet/file_serving/content.rb +45 -0
- data/lib/vendor/puppet/file_serving/fileset.rb +173 -0
- data/lib/vendor/puppet/file_serving/metadata.rb +155 -0
- data/lib/vendor/puppet/file_serving/mount/file.rb +121 -0
- data/lib/vendor/puppet/file_serving/mount/modules.rb +24 -0
- data/lib/vendor/puppet/file_serving/mount/plugins.rb +26 -0
- data/lib/vendor/puppet/file_serving/mount.rb +39 -0
- data/lib/vendor/puppet/file_serving/terminus_helper.rb +21 -0
- data/lib/vendor/puppet/file_serving/terminus_selector.rb +28 -0
- data/lib/vendor/puppet/file_serving.rb +3 -0
- data/lib/vendor/puppet/forge/cache.rb +55 -0
- data/lib/vendor/puppet/forge/repository.rb +102 -0
- data/lib/vendor/puppet/forge.rb +98 -0
- data/lib/vendor/puppet/indirector/active_record.rb +28 -0
- data/lib/vendor/puppet/indirector/catalog/active_record.rb +41 -0
- data/lib/vendor/puppet/indirector/catalog/compiler.rb +153 -0
- data/lib/vendor/puppet/indirector/catalog/queue.rb +5 -0
- data/lib/vendor/puppet/indirector/catalog/rest.rb +6 -0
- data/lib/vendor/puppet/indirector/catalog/static_compiler.rb +136 -0
- data/lib/vendor/puppet/indirector/catalog/store_configs.rb +5 -0
- data/lib/vendor/puppet/indirector/catalog/yaml.rb +22 -0
- data/lib/vendor/puppet/indirector/certificate/ca.rb +9 -0
- data/lib/vendor/puppet/indirector/certificate/disabled_ca.rb +22 -0
- data/lib/vendor/puppet/indirector/certificate/file.rb +9 -0
- data/lib/vendor/puppet/indirector/certificate/rest.rb +15 -0
- data/lib/vendor/puppet/indirector/certificate_request/ca.rb +22 -0
- data/lib/vendor/puppet/indirector/certificate_request/disabled_ca.rb +22 -0
- data/lib/vendor/puppet/indirector/certificate_request/file.rb +8 -0
- data/lib/vendor/puppet/indirector/certificate_request/rest.rb +9 -0
- data/lib/vendor/puppet/indirector/certificate_revocation_list/ca.rb +8 -0
- data/lib/vendor/puppet/indirector/certificate_revocation_list/disabled_ca.rb +22 -0
- data/lib/vendor/puppet/indirector/certificate_revocation_list/file.rb +8 -0
- data/lib/vendor/puppet/indirector/certificate_revocation_list/rest.rb +9 -0
- data/lib/vendor/puppet/indirector/certificate_status/file.rb +82 -0
- data/lib/vendor/puppet/indirector/certificate_status/rest.rb +10 -0
- data/lib/vendor/puppet/indirector/certificate_status.rb +4 -0
- data/lib/vendor/puppet/indirector/code.rb +6 -0
- data/lib/vendor/puppet/indirector/couch.rb +78 -0
- data/lib/vendor/puppet/indirector/direct_file_server.rb +19 -0
- data/lib/vendor/puppet/indirector/envelope.rb +11 -0
- data/lib/vendor/puppet/indirector/exec.rb +48 -0
- data/lib/vendor/puppet/indirector/face.rb +137 -0
- data/lib/vendor/puppet/indirector/facts/active_record.rb +36 -0
- data/lib/vendor/puppet/indirector/facts/couch.rb +31 -0
- data/lib/vendor/puppet/indirector/facts/facter.rb +96 -0
- data/lib/vendor/puppet/indirector/facts/inventory_active_record.rb +100 -0
- data/lib/vendor/puppet/indirector/facts/inventory_service.rb +20 -0
- data/lib/vendor/puppet/indirector/facts/memory.rb +9 -0
- data/lib/vendor/puppet/indirector/facts/network_device.rb +25 -0
- data/lib/vendor/puppet/indirector/facts/rest.rb +8 -0
- data/lib/vendor/puppet/indirector/facts/store_configs.rb +5 -0
- data/lib/vendor/puppet/indirector/facts/yaml.rb +82 -0
- data/lib/vendor/puppet/indirector/file_bucket_file/file.rb +136 -0
- data/lib/vendor/puppet/indirector/file_bucket_file/rest.rb +8 -0
- data/lib/vendor/puppet/indirector/file_bucket_file/selector.rb +49 -0
- data/lib/vendor/puppet/indirector/file_content/file.rb +7 -0
- data/lib/vendor/puppet/indirector/file_content/file_server.rb +7 -0
- data/lib/vendor/puppet/indirector/file_content/rest.rb +7 -0
- data/lib/vendor/puppet/indirector/file_content/selector.rb +30 -0
- data/lib/vendor/puppet/indirector/file_content.rb +5 -0
- data/lib/vendor/puppet/indirector/file_metadata/file.rb +22 -0
- data/lib/vendor/puppet/indirector/file_metadata/file_server.rb +7 -0
- data/lib/vendor/puppet/indirector/file_metadata/rest.rb +7 -0
- data/lib/vendor/puppet/indirector/file_metadata/selector.rb +30 -0
- data/lib/vendor/puppet/indirector/file_metadata.rb +5 -0
- data/lib/vendor/puppet/indirector/file_server.rb +65 -0
- data/lib/vendor/puppet/indirector/indirection.rb +323 -0
- data/lib/vendor/puppet/indirector/instrumentation_data/local.rb +19 -0
- data/lib/vendor/puppet/indirector/instrumentation_data/rest.rb +5 -0
- data/lib/vendor/puppet/indirector/instrumentation_data.rb +3 -0
- data/lib/vendor/puppet/indirector/instrumentation_listener/local.rb +23 -0
- data/lib/vendor/puppet/indirector/instrumentation_listener/rest.rb +5 -0
- data/lib/vendor/puppet/indirector/instrumentation_listener.rb +3 -0
- data/lib/vendor/puppet/indirector/instrumentation_probe/local.rb +24 -0
- data/lib/vendor/puppet/indirector/instrumentation_probe/rest.rb +5 -0
- data/lib/vendor/puppet/indirector/instrumentation_probe.rb +3 -0
- data/lib/vendor/puppet/indirector/inventory/yaml.rb +81 -0
- data/lib/vendor/puppet/indirector/key/ca.rb +12 -0
- data/lib/vendor/puppet/indirector/key/disabled_ca.rb +22 -0
- data/lib/vendor/puppet/indirector/key/file.rb +42 -0
- data/lib/vendor/puppet/indirector/ldap.rb +78 -0
- data/lib/vendor/puppet/indirector/memory.rb +21 -0
- data/lib/vendor/puppet/indirector/node/active_record.rb +13 -0
- data/lib/vendor/puppet/indirector/node/exec.rb +60 -0
- data/lib/vendor/puppet/indirector/node/ldap.rb +256 -0
- data/lib/vendor/puppet/indirector/node/memory.rb +10 -0
- data/lib/vendor/puppet/indirector/node/plain.rb +19 -0
- data/lib/vendor/puppet/indirector/node/rest.rb +7 -0
- data/lib/vendor/puppet/indirector/node/store_configs.rb +5 -0
- data/lib/vendor/puppet/indirector/node/yaml.rb +7 -0
- data/lib/vendor/puppet/indirector/plain.rb +9 -0
- data/lib/vendor/puppet/indirector/queue.rb +81 -0
- data/lib/vendor/puppet/indirector/report/processor.rb +61 -0
- data/lib/vendor/puppet/indirector/report/rest.rb +7 -0
- data/lib/vendor/puppet/indirector/report/yaml.rb +11 -0
- data/lib/vendor/puppet/indirector/request.rb +204 -0
- data/lib/vendor/puppet/indirector/resource/active_record.rb +93 -0
- data/lib/vendor/puppet/indirector/resource/ral.rb +53 -0
- data/lib/vendor/puppet/indirector/resource/rest.rb +5 -0
- data/lib/vendor/puppet/indirector/resource/store_configs.rb +3 -0
- data/lib/vendor/puppet/indirector/resource_type/parser.rb +43 -0
- data/lib/vendor/puppet/indirector/resource_type/rest.rb +7 -0
- data/lib/vendor/puppet/indirector/resource_type.rb +5 -0
- data/lib/vendor/puppet/indirector/rest.rb +166 -0
- data/lib/vendor/puppet/indirector/run/local.rb +8 -0
- data/lib/vendor/puppet/indirector/run/rest.rb +6 -0
- data/lib/vendor/puppet/indirector/ssl_file.rb +178 -0
- data/lib/vendor/puppet/indirector/status/local.rb +7 -0
- data/lib/vendor/puppet/indirector/status/rest.rb +5 -0
- data/lib/vendor/puppet/indirector/status.rb +3 -0
- data/lib/vendor/puppet/indirector/store_configs.rb +30 -0
- data/lib/vendor/puppet/indirector/terminus.rb +145 -0
- data/lib/vendor/puppet/indirector/yaml.rb +75 -0
- data/lib/vendor/puppet/indirector.rb +57 -0
- data/lib/vendor/puppet/interface/action.rb +322 -0
- data/lib/vendor/puppet/interface/action_builder.rb +74 -0
- data/lib/vendor/puppet/interface/action_manager.rb +74 -0
- data/lib/vendor/puppet/interface/documentation.rb +230 -0
- data/lib/vendor/puppet/interface/face_collection.rb +128 -0
- data/lib/vendor/puppet/interface/option.rb +127 -0
- data/lib/vendor/puppet/interface/option_builder.rb +67 -0
- data/lib/vendor/puppet/interface/option_manager.rb +68 -0
- data/lib/vendor/puppet/interface.rb +161 -0
- data/lib/vendor/puppet/metatype/manager.rb +141 -0
- data/lib/vendor/puppet/module.rb +314 -0
- data/lib/vendor/puppet/module_tool/applications/application.rb +82 -0
- data/lib/vendor/puppet/module_tool/applications/builder.rb +91 -0
- data/lib/vendor/puppet/module_tool/applications/checksummer.rb +56 -0
- data/lib/vendor/puppet/module_tool/applications/generator.rb +141 -0
- data/lib/vendor/puppet/module_tool/applications/installer.rb +183 -0
- data/lib/vendor/puppet/module_tool/applications/searcher.rb +15 -0
- data/lib/vendor/puppet/module_tool/applications/uninstaller.rb +107 -0
- data/lib/vendor/puppet/module_tool/applications/unpacker.rb +67 -0
- data/lib/vendor/puppet/module_tool/applications/upgrader.rb +109 -0
- data/lib/vendor/puppet/module_tool/applications.rb +15 -0
- data/lib/vendor/puppet/module_tool/checksums.rb +52 -0
- data/lib/vendor/puppet/module_tool/contents_description.rb +82 -0
- data/lib/vendor/puppet/module_tool/dependency.rb +24 -0
- data/lib/vendor/puppet/module_tool/errors/base.rb +15 -0
- data/lib/vendor/puppet/module_tool/errors/installer.rb +90 -0
- data/lib/vendor/puppet/module_tool/errors/shared.rb +115 -0
- data/lib/vendor/puppet/module_tool/errors/uninstaller.rb +45 -0
- data/lib/vendor/puppet/module_tool/errors/upgrader.rb +72 -0
- data/lib/vendor/puppet/module_tool/errors.rb +9 -0
- data/lib/vendor/puppet/module_tool/metadata.rb +141 -0
- data/lib/vendor/puppet/module_tool/modulefile.rb +75 -0
- data/lib/vendor/puppet/module_tool/shared_behaviors.rb +161 -0
- data/lib/vendor/puppet/module_tool/skeleton/templates/generator/Modulefile.erb +11 -0
- data/lib/vendor/puppet/module_tool/skeleton/templates/generator/README.erb +16 -0
- data/lib/vendor/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +41 -0
- data/lib/vendor/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +17 -0
- data/lib/vendor/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +11 -0
- data/lib/vendor/puppet/module_tool/skeleton.rb +34 -0
- data/lib/vendor/puppet/module_tool.rb +99 -0
- data/lib/vendor/puppet/network/authconfig.rb +174 -0
- data/lib/vendor/puppet/network/authorization.rb +76 -0
- data/lib/vendor/puppet/network/authstore.rb +267 -0
- data/lib/vendor/puppet/network/client_request.rb +29 -0
- data/lib/vendor/puppet/network/format.rb +111 -0
- data/lib/vendor/puppet/network/format_handler.rb +181 -0
- data/lib/vendor/puppet/network/formats.rb +171 -0
- data/lib/vendor/puppet/network/handler/ca.rb +61 -0
- data/lib/vendor/puppet/network/handler/filebucket.rb +53 -0
- data/lib/vendor/puppet/network/handler/fileserver.rb +732 -0
- data/lib/vendor/puppet/network/handler/master.rb +87 -0
- data/lib/vendor/puppet/network/handler/report.rb +82 -0
- data/lib/vendor/puppet/network/handler/runner.rb +33 -0
- data/lib/vendor/puppet/network/handler/status.rb +18 -0
- data/lib/vendor/puppet/network/handler.rb +50 -0
- data/lib/vendor/puppet/network/http/api/v1.rb +83 -0
- data/lib/vendor/puppet/network/http/api.rb +4 -0
- data/lib/vendor/puppet/network/http/compression.rb +114 -0
- data/lib/vendor/puppet/network/http/handler.rb +247 -0
- data/lib/vendor/puppet/network/http/mongrel/rest.rb +99 -0
- data/lib/vendor/puppet/network/http/mongrel.rb +55 -0
- data/lib/vendor/puppet/network/http/rack/httphandler.rb +16 -0
- data/lib/vendor/puppet/network/http/rack/rest.rb +100 -0
- data/lib/vendor/puppet/network/http/rack/xmlrpc.rb +65 -0
- data/lib/vendor/puppet/network/http/rack.rb +65 -0
- data/lib/vendor/puppet/network/http/webrick/rest.rb +81 -0
- data/lib/vendor/puppet/network/http/webrick.rb +141 -0
- data/lib/vendor/puppet/network/http.rb +15 -0
- data/lib/vendor/puppet/network/http_pool.rb +57 -0
- data/lib/vendor/puppet/network/http_server/mongrel.rb +129 -0
- data/lib/vendor/puppet/network/http_server.rb +3 -0
- data/lib/vendor/puppet/network/rest_authconfig.rb +102 -0
- data/lib/vendor/puppet/network/rest_authorization.rb +23 -0
- data/lib/vendor/puppet/network/rest_controller.rb +2 -0
- data/lib/vendor/puppet/network/rights.rb +275 -0
- data/lib/vendor/puppet/network/server.rb +164 -0
- data/lib/vendor/puppet/network/xmlrpc/processor.rb +86 -0
- data/lib/vendor/puppet/network/xmlrpc/server.rb +19 -0
- data/lib/vendor/puppet/network/xmlrpc/webrick_servlet.rb +114 -0
- data/lib/vendor/puppet/network.rb +3 -0
- data/lib/vendor/puppet/node/environment.rb +216 -0
- data/lib/vendor/puppet/node/facts.rb +99 -0
- data/lib/vendor/puppet/node/inventory.rb +7 -0
- data/lib/vendor/puppet/node.rb +120 -0
- data/lib/vendor/puppet/parameter/path.rb +34 -0
- data/lib/vendor/puppet/parameter/value.rb +69 -0
- data/lib/vendor/puppet/parameter/value_collection.rb +143 -0
- data/lib/vendor/puppet/parameter.rb +316 -0
- data/lib/vendor/puppet/parser/ast/arithmetic_operator.rb +39 -0
- data/lib/vendor/puppet/parser/ast/astarray.rb +50 -0
- data/lib/vendor/puppet/parser/ast/asthash.rb +37 -0
- data/lib/vendor/puppet/parser/ast/boolean_operator.rb +46 -0
- data/lib/vendor/puppet/parser/ast/branch.rb +37 -0
- data/lib/vendor/puppet/parser/ast/caseopt.rb +52 -0
- data/lib/vendor/puppet/parser/ast/casestatement.rb +44 -0
- data/lib/vendor/puppet/parser/ast/collection.rb +49 -0
- data/lib/vendor/puppet/parser/ast/collexpr.rb +57 -0
- data/lib/vendor/puppet/parser/ast/comparison_operator.rb +38 -0
- data/lib/vendor/puppet/parser/ast/definition.rb +17 -0
- data/lib/vendor/puppet/parser/ast/else.rb +22 -0
- data/lib/vendor/puppet/parser/ast/function.rb +50 -0
- data/lib/vendor/puppet/parser/ast/hostclass.rb +29 -0
- data/lib/vendor/puppet/parser/ast/ifstatement.rb +34 -0
- data/lib/vendor/puppet/parser/ast/in_operator.rb +24 -0
- data/lib/vendor/puppet/parser/ast/leaf.rb +221 -0
- data/lib/vendor/puppet/parser/ast/match_operator.rb +28 -0
- data/lib/vendor/puppet/parser/ast/minus.rb +23 -0
- data/lib/vendor/puppet/parser/ast/node.rb +20 -0
- data/lib/vendor/puppet/parser/ast/nop.rb +11 -0
- data/lib/vendor/puppet/parser/ast/not.rb +19 -0
- data/lib/vendor/puppet/parser/ast/relationship.rb +47 -0
- data/lib/vendor/puppet/parser/ast/resource.rb +74 -0
- data/lib/vendor/puppet/parser/ast/resource_defaults.rb +24 -0
- data/lib/vendor/puppet/parser/ast/resource_instance.rb +9 -0
- data/lib/vendor/puppet/parser/ast/resource_override.rb +67 -0
- data/lib/vendor/puppet/parser/ast/resource_reference.rb +28 -0
- data/lib/vendor/puppet/parser/ast/resourceparam.rb +29 -0
- data/lib/vendor/puppet/parser/ast/selector.rb +44 -0
- data/lib/vendor/puppet/parser/ast/tag.rb +24 -0
- data/lib/vendor/puppet/parser/ast/top_level_construct.rb +4 -0
- data/lib/vendor/puppet/parser/ast/vardef.rb +33 -0
- data/lib/vendor/puppet/parser/ast.rb +139 -0
- data/lib/vendor/puppet/parser/collector.rb +176 -0
- data/lib/vendor/puppet/parser/compiler.rb +476 -0
- data/lib/vendor/puppet/parser/files.rb +88 -0
- data/lib/vendor/puppet/parser/functions/create_resources.rb +75 -0
- data/lib/vendor/puppet/parser/functions/defined.rb +49 -0
- data/lib/vendor/puppet/parser/functions/extlookup.rb +152 -0
- data/lib/vendor/puppet/parser/functions/fail.rb +4 -0
- data/lib/vendor/puppet/parser/functions/file.rb +23 -0
- data/lib/vendor/puppet/parser/functions/fqdn_rand.rb +13 -0
- data/lib/vendor/puppet/parser/functions/generate.rb +37 -0
- data/lib/vendor/puppet/parser/functions/include.rb +24 -0
- data/lib/vendor/puppet/parser/functions/inline_template.rb +21 -0
- data/lib/vendor/puppet/parser/functions/md5.rb +5 -0
- data/lib/vendor/puppet/parser/functions/realize.rb +14 -0
- data/lib/vendor/puppet/parser/functions/regsubst.rb +119 -0
- data/lib/vendor/puppet/parser/functions/require.rb +57 -0
- data/lib/vendor/puppet/parser/functions/search.rb +7 -0
- data/lib/vendor/puppet/parser/functions/sha1.rb +5 -0
- data/lib/vendor/puppet/parser/functions/shellquote.rb +61 -0
- data/lib/vendor/puppet/parser/functions/split.rb +29 -0
- data/lib/vendor/puppet/parser/functions/sprintf.rb +39 -0
- data/lib/vendor/puppet/parser/functions/tag.rb +6 -0
- data/lib/vendor/puppet/parser/functions/tagged.rb +18 -0
- data/lib/vendor/puppet/parser/functions/template.rb +23 -0
- data/lib/vendor/puppet/parser/functions/versioncmp.rb +37 -0
- data/lib/vendor/puppet/parser/functions.rb +165 -0
- data/lib/vendor/puppet/parser/grammar.ra +771 -0
- data/lib/vendor/puppet/parser/lexer.rb +617 -0
- data/lib/vendor/puppet/parser/makefile +8 -0
- data/lib/vendor/puppet/parser/parser.rb +2421 -0
- data/lib/vendor/puppet/parser/parser_support.rb +211 -0
- data/lib/vendor/puppet/parser/relationship.rb +62 -0
- data/lib/vendor/puppet/parser/resource/param.rb +25 -0
- data/lib/vendor/puppet/parser/resource.rb +341 -0
- data/lib/vendor/puppet/parser/scope.rb +497 -0
- data/lib/vendor/puppet/parser/templatewrapper.rb +115 -0
- data/lib/vendor/puppet/parser/type_loader.rb +172 -0
- data/lib/vendor/puppet/parser/yaml_trimmer.rb +9 -0
- data/lib/vendor/puppet/parser.rb +4 -0
- data/lib/vendor/puppet/property/ensure.rb +92 -0
- data/lib/vendor/puppet/property/keyvalue.rb +86 -0
- data/lib/vendor/puppet/property/list.rb +75 -0
- data/lib/vendor/puppet/property/ordered_list.rb +22 -0
- data/lib/vendor/puppet/property.rb +373 -0
- data/lib/vendor/puppet/provider/aixobject.rb +393 -0
- data/lib/vendor/puppet/provider/augeas/augeas.rb +418 -0
- data/lib/vendor/puppet/provider/cisco.rb +9 -0
- data/lib/vendor/puppet/provider/computer/computer.rb +20 -0
- data/lib/vendor/puppet/provider/confine/exists.rb +19 -0
- data/lib/vendor/puppet/provider/confine/false.rb +19 -0
- data/lib/vendor/puppet/provider/confine/feature.rb +17 -0
- data/lib/vendor/puppet/provider/confine/true.rb +20 -0
- data/lib/vendor/puppet/provider/confine/variable.rb +59 -0
- data/lib/vendor/puppet/provider/confine.rb +80 -0
- data/lib/vendor/puppet/provider/confine_collection.rb +50 -0
- data/lib/vendor/puppet/provider/confiner.rb +16 -0
- data/lib/vendor/puppet/provider/cron/crontab.rb +200 -0
- data/lib/vendor/puppet/provider/exec/posix.rb +39 -0
- data/lib/vendor/puppet/provider/exec/shell.rb +25 -0
- data/lib/vendor/puppet/provider/exec/windows.rb +56 -0
- data/lib/vendor/puppet/provider/exec.rb +84 -0
- data/lib/vendor/puppet/provider/file/posix.rb +135 -0
- data/lib/vendor/puppet/provider/file/windows.rb +88 -0
- data/lib/vendor/puppet/provider/group/aix.rb +141 -0
- data/lib/vendor/puppet/provider/group/directoryservice.rb +12 -0
- data/lib/vendor/puppet/provider/group/groupadd.rb +29 -0
- data/lib/vendor/puppet/provider/group/ldap.rb +45 -0
- data/lib/vendor/puppet/provider/group/pw.rb +48 -0
- data/lib/vendor/puppet/provider/group/windows_adsi.rb +54 -0
- data/lib/vendor/puppet/provider/host/parsed.rb +44 -0
- data/lib/vendor/puppet/provider/interface/base.rb +0 -0
- data/lib/vendor/puppet/provider/interface/cisco.rb +27 -0
- data/lib/vendor/puppet/provider/ldap.rb +137 -0
- data/lib/vendor/puppet/provider/macauthorization/macauthorization.rb +313 -0
- data/lib/vendor/puppet/provider/mailalias/aliases.rb +44 -0
- data/lib/vendor/puppet/provider/maillist/mailman.rb +108 -0
- data/lib/vendor/puppet/provider/mcx/mcxcontent.rb +166 -0
- data/lib/vendor/puppet/provider/mount/parsed.rb +124 -0
- data/lib/vendor/puppet/provider/mount.rb +46 -0
- data/lib/vendor/puppet/provider/naginator.rb +63 -0
- data/lib/vendor/puppet/provider/nameservice/directoryservice.rb +652 -0
- data/lib/vendor/puppet/provider/nameservice/objectadd.rb +33 -0
- data/lib/vendor/puppet/provider/nameservice/pw.rb +21 -0
- data/lib/vendor/puppet/provider/nameservice.rb +276 -0
- data/lib/vendor/puppet/provider/network_device.rb +68 -0
- data/lib/vendor/puppet/provider/package/aix.rb +128 -0
- data/lib/vendor/puppet/provider/package/appdmg.rb +109 -0
- data/lib/vendor/puppet/provider/package/apple.rb +47 -0
- data/lib/vendor/puppet/provider/package/apt.rb +111 -0
- data/lib/vendor/puppet/provider/package/aptitude.rb +29 -0
- data/lib/vendor/puppet/provider/package/aptrpm.rb +83 -0
- data/lib/vendor/puppet/provider/package/blastwave.rb +111 -0
- data/lib/vendor/puppet/provider/package/dpkg.rb +155 -0
- data/lib/vendor/puppet/provider/package/fink.rb +81 -0
- data/lib/vendor/puppet/provider/package/freebsd.rb +49 -0
- data/lib/vendor/puppet/provider/package/gem.rb +127 -0
- data/lib/vendor/puppet/provider/package/hpux.rb +44 -0
- data/lib/vendor/puppet/provider/package/macports.rb +105 -0
- data/lib/vendor/puppet/provider/package/msi.rb +141 -0
- data/lib/vendor/puppet/provider/package/nim.rb +35 -0
- data/lib/vendor/puppet/provider/package/openbsd.rb +112 -0
- data/lib/vendor/puppet/provider/package/pacman.rb +94 -0
- data/lib/vendor/puppet/provider/package/pip.rb +111 -0
- data/lib/vendor/puppet/provider/package/pkg.rb +112 -0
- data/lib/vendor/puppet/provider/package/pkgdmg.rb +123 -0
- data/lib/vendor/puppet/provider/package/pkgutil.rb +174 -0
- data/lib/vendor/puppet/provider/package/portage.rb +124 -0
- data/lib/vendor/puppet/provider/package/ports.rb +94 -0
- data/lib/vendor/puppet/provider/package/portupgrade.rb +241 -0
- data/lib/vendor/puppet/provider/package/rpm.rb +132 -0
- data/lib/vendor/puppet/provider/package/rug.rb +52 -0
- data/lib/vendor/puppet/provider/package/sun.rb +154 -0
- data/lib/vendor/puppet/provider/package/sunfreeware.rb +9 -0
- data/lib/vendor/puppet/provider/package/up2date.rb +41 -0
- data/lib/vendor/puppet/provider/package/urpmi.rb +59 -0
- data/lib/vendor/puppet/provider/package/yum.rb +106 -0
- data/lib/vendor/puppet/provider/package/yumhelper.py +129 -0
- data/lib/vendor/puppet/provider/package/zypper.rb +84 -0
- data/lib/vendor/puppet/provider/package.rb +28 -0
- data/lib/vendor/puppet/provider/parsedfile.rb +374 -0
- data/lib/vendor/puppet/provider/port/parsed.rb +173 -0
- data/lib/vendor/puppet/provider/scheduled_task/win32_taskscheduler.rb +565 -0
- data/lib/vendor/puppet/provider/selboolean/getsetsebool.rb +47 -0
- data/lib/vendor/puppet/provider/selmodule/semodule.rb +134 -0
- data/lib/vendor/puppet/provider/service/base.rb +105 -0
- data/lib/vendor/puppet/provider/service/bsd.rb +49 -0
- data/lib/vendor/puppet/provider/service/daemontools.rb +194 -0
- data/lib/vendor/puppet/provider/service/debian.rb +68 -0
- data/lib/vendor/puppet/provider/service/freebsd.rb +139 -0
- data/lib/vendor/puppet/provider/service/gentoo.rb +54 -0
- data/lib/vendor/puppet/provider/service/init.rb +140 -0
- data/lib/vendor/puppet/provider/service/launchd.rb +303 -0
- data/lib/vendor/puppet/provider/service/openrc.rb +69 -0
- data/lib/vendor/puppet/provider/service/redhat.rb +76 -0
- data/lib/vendor/puppet/provider/service/runit.rb +103 -0
- data/lib/vendor/puppet/provider/service/service.rb +43 -0
- data/lib/vendor/puppet/provider/service/smf.rb +104 -0
- data/lib/vendor/puppet/provider/service/src.rb +86 -0
- data/lib/vendor/puppet/provider/service/systemd.rb +64 -0
- data/lib/vendor/puppet/provider/service/upstart.rb +347 -0
- data/lib/vendor/puppet/provider/service/windows.rb +106 -0
- data/lib/vendor/puppet/provider/ssh_authorized_key/parsed.rb +88 -0
- data/lib/vendor/puppet/provider/sshkey/parsed.rb +37 -0
- data/lib/vendor/puppet/provider/user/aix.rb +357 -0
- data/lib/vendor/puppet/provider/user/directoryservice.rb +86 -0
- data/lib/vendor/puppet/provider/user/hpux.rb +31 -0
- data/lib/vendor/puppet/provider/user/ldap.rb +129 -0
- data/lib/vendor/puppet/provider/user/pw.rb +101 -0
- data/lib/vendor/puppet/provider/user/user_role_add.rb +207 -0
- data/lib/vendor/puppet/provider/user/useradd.rb +127 -0
- data/lib/vendor/puppet/provider/user/windows_adsi.rb +99 -0
- data/lib/vendor/puppet/provider/vlan/cisco.rb +28 -0
- data/lib/vendor/puppet/provider/zfs/solaris.rb +45 -0
- data/lib/vendor/puppet/provider/zone/solaris.rb +260 -0
- data/lib/vendor/puppet/provider/zpool/solaris.rb +116 -0
- data/lib/vendor/puppet/provider.rb +290 -0
- data/lib/vendor/puppet/rails/benchmark.rb +63 -0
- data/lib/vendor/puppet/rails/database/001_add_created_at_to_all_tables.rb +13 -0
- data/lib/vendor/puppet/rails/database/002_remove_duplicated_index_on_all_tables.rb +13 -0
- data/lib/vendor/puppet/rails/database/003_add_environment_to_host.rb +9 -0
- data/lib/vendor/puppet/rails/database/004_add_inventory_service_tables.rb +36 -0
- data/lib/vendor/puppet/rails/database/schema.rb +131 -0
- data/lib/vendor/puppet/rails/fact_name.rb +6 -0
- data/lib/vendor/puppet/rails/fact_value.rb +8 -0
- data/lib/vendor/puppet/rails/host.rb +258 -0
- data/lib/vendor/puppet/rails/inventory_fact.rb +5 -0
- data/lib/vendor/puppet/rails/inventory_node.rb +43 -0
- data/lib/vendor/puppet/rails/param_name.rb +25 -0
- data/lib/vendor/puppet/rails/param_value.rb +74 -0
- data/lib/vendor/puppet/rails/puppet_tag.rb +10 -0
- data/lib/vendor/puppet/rails/resource.rb +231 -0
- data/lib/vendor/puppet/rails/resource_tag.rb +26 -0
- data/lib/vendor/puppet/rails/source_file.rb +8 -0
- data/lib/vendor/puppet/rails.rb +132 -0
- data/lib/vendor/puppet/rb_tree_map.rb +388 -0
- data/lib/vendor/puppet/reference/configuration.rb +69 -0
- data/lib/vendor/puppet/reference/function.rb +17 -0
- data/lib/vendor/puppet/reference/indirection.rb +32 -0
- data/lib/vendor/puppet/reference/metaparameter.rb +43 -0
- data/lib/vendor/puppet/reference/network.rb +39 -0
- data/lib/vendor/puppet/reference/providers.rb +119 -0
- data/lib/vendor/puppet/reference/report.rb +23 -0
- data/lib/vendor/puppet/reference/type.rb +116 -0
- data/lib/vendor/puppet/relationship.rb +95 -0
- data/lib/vendor/puppet/reports/http.rb +25 -0
- data/lib/vendor/puppet/reports/log.rb +14 -0
- data/lib/vendor/puppet/reports/rrdgraph.rb +128 -0
- data/lib/vendor/puppet/reports/store.rb +74 -0
- data/lib/vendor/puppet/reports/tagmail.rb +179 -0
- data/lib/vendor/puppet/reports.rb +49 -0
- data/lib/vendor/puppet/resource/catalog.rb +661 -0
- data/lib/vendor/puppet/resource/status.rb +79 -0
- data/lib/vendor/puppet/resource/type.rb +344 -0
- data/lib/vendor/puppet/resource/type_collection.rb +215 -0
- data/lib/vendor/puppet/resource/type_collection_helper.rb +7 -0
- data/lib/vendor/puppet/resource.rb +467 -0
- data/lib/vendor/puppet/run.rb +77 -0
- data/lib/vendor/puppet/simple_graph.rb +550 -0
- data/lib/vendor/puppet/ssl/base.rb +86 -0
- data/lib/vendor/puppet/ssl/certificate.rb +40 -0
- data/lib/vendor/puppet/ssl/certificate_authority/interface.rb +182 -0
- data/lib/vendor/puppet/ssl/certificate_authority.rb +374 -0
- data/lib/vendor/puppet/ssl/certificate_factory.rb +166 -0
- data/lib/vendor/puppet/ssl/certificate_request.rb +149 -0
- data/lib/vendor/puppet/ssl/certificate_revocation_list.rb +84 -0
- data/lib/vendor/puppet/ssl/host.rb +365 -0
- data/lib/vendor/puppet/ssl/inventory.rb +54 -0
- data/lib/vendor/puppet/ssl/key.rb +56 -0
- data/lib/vendor/puppet/ssl.rb +8 -0
- data/lib/vendor/puppet/status.rb +28 -0
- data/lib/vendor/puppet/test/test_helper.rb +141 -0
- data/lib/vendor/puppet/transaction/event.rb +66 -0
- data/lib/vendor/puppet/transaction/event_manager.rb +115 -0
- data/lib/vendor/puppet/transaction/report.rb +200 -0
- data/lib/vendor/puppet/transaction/resource_harness.rb +178 -0
- data/lib/vendor/puppet/transaction.rb +493 -0
- data/lib/vendor/puppet/transportable.rb +248 -0
- data/lib/vendor/puppet/type/augeas.rb +218 -0
- data/lib/vendor/puppet/type/component.rb +85 -0
- data/lib/vendor/puppet/type/computer.rb +66 -0
- data/lib/vendor/puppet/type/cron.rb +421 -0
- data/lib/vendor/puppet/type/exec.rb +520 -0
- data/lib/vendor/puppet/type/file/checksum.rb +33 -0
- data/lib/vendor/puppet/type/file/content.rb +230 -0
- data/lib/vendor/puppet/type/file/ctime.rb +18 -0
- data/lib/vendor/puppet/type/file/ensure.rb +172 -0
- data/lib/vendor/puppet/type/file/group.rb +41 -0
- data/lib/vendor/puppet/type/file/mode.rb +148 -0
- data/lib/vendor/puppet/type/file/mtime.rb +17 -0
- data/lib/vendor/puppet/type/file/owner.rb +44 -0
- data/lib/vendor/puppet/type/file/selcontext.rb +123 -0
- data/lib/vendor/puppet/type/file/source.rb +195 -0
- data/lib/vendor/puppet/type/file/target.rb +87 -0
- data/lib/vendor/puppet/type/file/type.rb +19 -0
- data/lib/vendor/puppet/type/file.rb +829 -0
- data/lib/vendor/puppet/type/filebucket.rb +114 -0
- data/lib/vendor/puppet/type/group.rb +149 -0
- data/lib/vendor/puppet/type/host.rb +87 -0
- data/lib/vendor/puppet/type/interface.rb +112 -0
- data/lib/vendor/puppet/type/k5login.rb +88 -0
- data/lib/vendor/puppet/type/macauthorization.rb +167 -0
- data/lib/vendor/puppet/type/mailalias.rb +48 -0
- data/lib/vendor/puppet/type/maillist.rb +62 -0
- data/lib/vendor/puppet/type/mcx.rb +99 -0
- data/lib/vendor/puppet/type/mount.rb +241 -0
- data/lib/vendor/puppet/type/nagios_command.rb +3 -0
- data/lib/vendor/puppet/type/nagios_contact.rb +3 -0
- data/lib/vendor/puppet/type/nagios_contactgroup.rb +3 -0
- data/lib/vendor/puppet/type/nagios_host.rb +3 -0
- data/lib/vendor/puppet/type/nagios_hostdependency.rb +3 -0
- data/lib/vendor/puppet/type/nagios_hostescalation.rb +3 -0
- data/lib/vendor/puppet/type/nagios_hostextinfo.rb +3 -0
- data/lib/vendor/puppet/type/nagios_hostgroup.rb +3 -0
- data/lib/vendor/puppet/type/nagios_service.rb +3 -0
- data/lib/vendor/puppet/type/nagios_servicedependency.rb +3 -0
- data/lib/vendor/puppet/type/nagios_serviceescalation.rb +3 -0
- data/lib/vendor/puppet/type/nagios_serviceextinfo.rb +3 -0
- data/lib/vendor/puppet/type/nagios_servicegroup.rb +3 -0
- data/lib/vendor/puppet/type/nagios_timeperiod.rb +3 -0
- data/lib/vendor/puppet/type/notify.rb +44 -0
- data/lib/vendor/puppet/type/package.rb +357 -0
- data/lib/vendor/puppet/type/port.rb +119 -0
- data/lib/vendor/puppet/type/resources.rb +131 -0
- data/lib/vendor/puppet/type/router.rb +17 -0
- data/lib/vendor/puppet/type/schedule.rb +360 -0
- data/lib/vendor/puppet/type/scheduled_task.rb +166 -0
- data/lib/vendor/puppet/type/selboolean.rb +26 -0
- data/lib/vendor/puppet/type/selmodule.rb +59 -0
- data/lib/vendor/puppet/type/service.rb +221 -0
- data/lib/vendor/puppet/type/ssh_authorized_key.rb +112 -0
- data/lib/vendor/puppet/type/sshkey.rb +72 -0
- data/lib/vendor/puppet/type/stage.rb +19 -0
- data/lib/vendor/puppet/type/tidy.rb +333 -0
- data/lib/vendor/puppet/type/user.rb +524 -0
- data/lib/vendor/puppet/type/vlan.rb +26 -0
- data/lib/vendor/puppet/type/whit.rb +34 -0
- data/lib/vendor/puppet/type/yumrepo.rb +361 -0
- data/lib/vendor/puppet/type/zfs.rb +146 -0
- data/lib/vendor/puppet/type/zone.rb +492 -0
- data/lib/vendor/puppet/type/zpool.rb +91 -0
- data/lib/vendor/puppet/type.rb +1979 -0
- data/lib/vendor/puppet/util/adsi.rb +296 -0
- data/lib/vendor/puppet/util/autoload/file_cache.rb +92 -0
- data/lib/vendor/puppet/util/autoload.rb +158 -0
- data/lib/vendor/puppet/util/backups.rb +87 -0
- data/lib/vendor/puppet/util/cacher.rb +80 -0
- data/lib/vendor/puppet/util/checksums.rb +143 -0
- data/lib/vendor/puppet/util/classgen.rb +209 -0
- data/lib/vendor/puppet/util/colors.rb +128 -0
- data/lib/vendor/puppet/util/command_line.rb +185 -0
- data/lib/vendor/puppet/util/constant_inflector.rb +15 -0
- data/lib/vendor/puppet/util/diff.rb +77 -0
- data/lib/vendor/puppet/util/docs.rb +123 -0
- data/lib/vendor/puppet/util/errors.rb +63 -0
- data/lib/vendor/puppet/util/execution.rb +20 -0
- data/lib/vendor/puppet/util/execution_stub.rb +26 -0
- data/lib/vendor/puppet/util/feature.rb +83 -0
- data/lib/vendor/puppet/util/file_locking.rb +47 -0
- data/lib/vendor/puppet/util/fileparsing.rb +373 -0
- data/lib/vendor/puppet/util/filetype.rb +296 -0
- data/lib/vendor/puppet/util/graph.rb +27 -0
- data/lib/vendor/puppet/util/inifile.rb +203 -0
- data/lib/vendor/puppet/util/inline_docs.rb +26 -0
- data/lib/vendor/puppet/util/instance_loader.rb +81 -0
- data/lib/vendor/puppet/util/instrumentation/data.rb +34 -0
- data/lib/vendor/puppet/util/instrumentation/indirection_probe.rb +29 -0
- data/lib/vendor/puppet/util/instrumentation/instrumentable.rb +143 -0
- data/lib/vendor/puppet/util/instrumentation/listener.rb +60 -0
- data/lib/vendor/puppet/util/instrumentation/listeners/log.rb +29 -0
- data/lib/vendor/puppet/util/instrumentation/listeners/performance.rb +30 -0
- data/lib/vendor/puppet/util/instrumentation.rb +171 -0
- data/lib/vendor/puppet/util/ldap/connection.rb +74 -0
- data/lib/vendor/puppet/util/ldap/generator.rb +42 -0
- data/lib/vendor/puppet/util/ldap/manager.rb +279 -0
- data/lib/vendor/puppet/util/ldap.rb +2 -0
- data/lib/vendor/puppet/util/loadedfile.rb +61 -0
- data/lib/vendor/puppet/util/log/destination.rb +49 -0
- data/lib/vendor/puppet/util/log/destinations.rb +268 -0
- data/lib/vendor/puppet/util/log.rb +275 -0
- data/lib/vendor/puppet/util/log_paths.rb +22 -0
- data/lib/vendor/puppet/util/logging.rb +51 -0
- data/lib/vendor/puppet/util/metaid.rb +21 -0
- data/lib/vendor/puppet/util/methodhelper.rb +32 -0
- data/lib/vendor/puppet/util/metric.rb +186 -0
- data/lib/vendor/puppet/util/monkey_patches.rb +243 -0
- data/lib/vendor/puppet/util/nagios_maker.rb +60 -0
- data/lib/vendor/puppet/util/network_device/base.rb +27 -0
- data/lib/vendor/puppet/util/network_device/cisco/device.rb +257 -0
- data/lib/vendor/puppet/util/network_device/cisco/facts.rb +72 -0
- data/lib/vendor/puppet/util/network_device/cisco/interface.rb +82 -0
- data/lib/vendor/puppet/util/network_device/cisco.rb +4 -0
- data/lib/vendor/puppet/util/network_device/config.rb +92 -0
- data/lib/vendor/puppet/util/network_device/ipcalc.rb +68 -0
- data/lib/vendor/puppet/util/network_device/transport/base.rb +26 -0
- data/lib/vendor/puppet/util/network_device/transport/ssh.rb +121 -0
- data/lib/vendor/puppet/util/network_device/transport/telnet.rb +42 -0
- data/lib/vendor/puppet/util/network_device/transport.rb +3 -0
- data/lib/vendor/puppet/util/network_device.rb +17 -0
- data/lib/vendor/puppet/util/package.rb +31 -0
- data/lib/vendor/puppet/util/pidlock.rb +117 -0
- data/lib/vendor/puppet/util/platform.rb +22 -0
- data/lib/vendor/puppet/util/plugins.rb +82 -0
- data/lib/vendor/puppet/util/posix.rb +137 -0
- data/lib/vendor/puppet/util/provider_features.rb +168 -0
- data/lib/vendor/puppet/util/pson.rb +13 -0
- data/lib/vendor/puppet/util/queue/stomp.rb +60 -0
- data/lib/vendor/puppet/util/queue.rb +96 -0
- data/lib/vendor/puppet/util/rails/cache_accumulator.rb +65 -0
- data/lib/vendor/puppet/util/rails/collection_merger.rb +17 -0
- data/lib/vendor/puppet/util/rails/reference_serializer.rb +32 -0
- data/lib/vendor/puppet/util/rdoc.rb +87 -0
- data/lib/vendor/puppet/util/reference.rb +124 -0
- data/lib/vendor/puppet/util/resource_template.rb +61 -0
- data/lib/vendor/puppet/util/retryaction.rb +48 -0
- data/lib/vendor/puppet/util/run_mode.rb +82 -0
- data/lib/vendor/puppet/util/selinux.rb +211 -0
- data/lib/vendor/puppet/util/settings/boolean_setting.rb +30 -0
- data/lib/vendor/puppet/util/settings/file_setting.rb +135 -0
- data/lib/vendor/puppet/util/settings/setting.rb +94 -0
- data/lib/vendor/puppet/util/settings.rb +926 -0
- data/lib/vendor/puppet/util/storage.rb +96 -0
- data/lib/vendor/puppet/util/subclass_loader.rb +82 -0
- data/lib/vendor/puppet/util/suidmanager.rb +173 -0
- data/lib/vendor/puppet/util/symbolic_file_mode.rb +140 -0
- data/lib/vendor/puppet/util/tagging.rb +78 -0
- data/lib/vendor/puppet/util/terminal.rb +16 -0
- data/lib/vendor/puppet/util/user_attr.rb +21 -0
- data/lib/vendor/puppet/util/warnings.rb +29 -0
- data/lib/vendor/puppet/util/windows/error.rb +16 -0
- data/lib/vendor/puppet/util/windows/file.rb +27 -0
- data/lib/vendor/puppet/util/windows/process.rb +33 -0
- data/lib/vendor/puppet/util/windows/security.rb +622 -0
- data/lib/vendor/puppet/util/windows/sid.rb +96 -0
- data/lib/vendor/puppet/util/windows/user.rb +106 -0
- data/lib/vendor/puppet/util/windows.rb +8 -0
- data/lib/vendor/puppet/util/zaml.rb +407 -0
- data/lib/vendor/puppet/util.rb +646 -0
- data/lib/vendor/puppet/version.rb +18 -0
- data/lib/vendor/puppet.rb +125 -0
- data/lib/vendor/semver.rb +124 -0
- data/puppet-parse.gemspec +2 -8
- metadata +812 -94
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
require 'puppet/network/authstore'
|
|
2
|
+
require 'puppet/error'
|
|
3
|
+
|
|
4
|
+
module Puppet::Network
|
|
5
|
+
|
|
6
|
+
# this exception is thrown when a request is not authenticated
|
|
7
|
+
class AuthorizationError < Puppet::Error; end
|
|
8
|
+
|
|
9
|
+
# Define a set of rights and who has access to them.
|
|
10
|
+
# There are two types of rights:
|
|
11
|
+
# * named rights (ie a common string)
|
|
12
|
+
# * path based rights (which are matched on a longest prefix basis)
|
|
13
|
+
class Rights
|
|
14
|
+
|
|
15
|
+
# We basically just proxy directly to our rights. Each Right stores
|
|
16
|
+
# its own auth abilities.
|
|
17
|
+
[:allow, :deny, :restrict_method, :restrict_environment, :restrict_authenticated].each do |method|
|
|
18
|
+
define_method(method) do |name, *args|
|
|
19
|
+
if obj = self[name]
|
|
20
|
+
obj.send(method, *args)
|
|
21
|
+
else
|
|
22
|
+
raise ArgumentError, "Unknown right '#{name}'"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Check that name is allowed or not
|
|
28
|
+
def allowed?(name, *args)
|
|
29
|
+
!is_forbidden_and_why?(name, :node => args[0], :ip => args[1])
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def is_request_forbidden_and_why?(indirection, method, key, params)
|
|
33
|
+
methods_to_check = if method == :head
|
|
34
|
+
# :head is ok if either :find or :save is ok.
|
|
35
|
+
[:find, :save]
|
|
36
|
+
else
|
|
37
|
+
[method]
|
|
38
|
+
end
|
|
39
|
+
authorization_failure_exceptions = methods_to_check.map do |method|
|
|
40
|
+
is_forbidden_and_why?("/#{indirection}/#{key}", params.merge({:method => method}))
|
|
41
|
+
end
|
|
42
|
+
if authorization_failure_exceptions.include? nil
|
|
43
|
+
# One of the methods we checked is ok, therefore this request is ok.
|
|
44
|
+
nil
|
|
45
|
+
else
|
|
46
|
+
# Just need to return any of the failure exceptions.
|
|
47
|
+
authorization_failure_exceptions.first
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def is_forbidden_and_why?(name, args = {})
|
|
52
|
+
res = :nomatch
|
|
53
|
+
right = @rights.find do |acl|
|
|
54
|
+
found = false
|
|
55
|
+
# an acl can return :dunno, which means "I'm not qualified to answer your question,
|
|
56
|
+
# please ask someone else". This is used when for instance an acl matches, but not for the
|
|
57
|
+
# current rest method, where we might think some other acl might be more specific.
|
|
58
|
+
if match = acl.match?(name)
|
|
59
|
+
args[:match] = match
|
|
60
|
+
if (res = acl.allowed?(args[:node], args[:ip], args)) != :dunno
|
|
61
|
+
# return early if we're allowed
|
|
62
|
+
return nil if res
|
|
63
|
+
# we matched, select this acl
|
|
64
|
+
found = true
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
found
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# if we end here, then that means we either didn't match
|
|
71
|
+
# or failed, in any case will throw an error to the outside world
|
|
72
|
+
if name =~ /^\// or right
|
|
73
|
+
# we're a patch ACL, let's fail
|
|
74
|
+
msg = "#{(args[:node].nil? ? args[:ip] : "#{args[:node]}(#{args[:ip]})")} access to #{name} [#{args[:method]}]"
|
|
75
|
+
|
|
76
|
+
msg += " authenticated " if args[:authenticated]
|
|
77
|
+
|
|
78
|
+
error = AuthorizationError.new("Forbidden request: #{msg}")
|
|
79
|
+
if right
|
|
80
|
+
error.file = right.file
|
|
81
|
+
error.line = right.line
|
|
82
|
+
end
|
|
83
|
+
else
|
|
84
|
+
# there were no rights allowing/denying name
|
|
85
|
+
# if name is not a path, let's throw
|
|
86
|
+
raise ArgumentError, "Unknown namespace right '#{name}'"
|
|
87
|
+
end
|
|
88
|
+
error
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def initialize
|
|
92
|
+
@rights = []
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def [](name)
|
|
96
|
+
@rights.find { |acl| acl == name }
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def include?(name)
|
|
100
|
+
@rights.include?(name)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def each
|
|
104
|
+
@rights.each { |r| yield r.name,r }
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# Define a new right to which access can be provided.
|
|
108
|
+
def newright(name, line=nil, file=nil)
|
|
109
|
+
add_right( Right.new(name, line, file) )
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
private
|
|
113
|
+
|
|
114
|
+
def add_right(right)
|
|
115
|
+
if right.acl_type == :name and include?(right.key)
|
|
116
|
+
raise ArgumentError, "Right '%s' already exists"
|
|
117
|
+
end
|
|
118
|
+
@rights << right
|
|
119
|
+
sort_rights
|
|
120
|
+
right
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def sort_rights
|
|
124
|
+
@rights.sort!
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Retrieve a right by name.
|
|
128
|
+
def right(name)
|
|
129
|
+
self[name]
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
# A right.
|
|
133
|
+
class Right < Puppet::Network::AuthStore
|
|
134
|
+
attr_accessor :name, :key, :acl_type
|
|
135
|
+
attr_accessor :methods, :environment, :authentication
|
|
136
|
+
attr_accessor :line, :file
|
|
137
|
+
|
|
138
|
+
ALL = [:save, :destroy, :find, :search]
|
|
139
|
+
|
|
140
|
+
Puppet::Util.logmethods(self, true)
|
|
141
|
+
|
|
142
|
+
def initialize(name, line, file)
|
|
143
|
+
@methods = []
|
|
144
|
+
@environment = []
|
|
145
|
+
@authentication = true # defaults to authenticated
|
|
146
|
+
@name = name
|
|
147
|
+
@line = line || 0
|
|
148
|
+
@file = file
|
|
149
|
+
|
|
150
|
+
case name
|
|
151
|
+
when Symbol
|
|
152
|
+
@acl_type = :name
|
|
153
|
+
@key = name
|
|
154
|
+
when /^\[(.+)\]$/
|
|
155
|
+
@acl_type = :name
|
|
156
|
+
@key = $1.intern if name.is_a?(String)
|
|
157
|
+
when /^\//
|
|
158
|
+
@acl_type = :regex
|
|
159
|
+
@key = Regexp.new("^" + Regexp.escape(name))
|
|
160
|
+
@methods = ALL
|
|
161
|
+
when /^~/ # this is a regex
|
|
162
|
+
@acl_type = :regex
|
|
163
|
+
@name = name.gsub(/^~\s+/,'')
|
|
164
|
+
@key = Regexp.new(@name)
|
|
165
|
+
@methods = ALL
|
|
166
|
+
else
|
|
167
|
+
raise ArgumentError, "Unknown right type '#{name}'"
|
|
168
|
+
end
|
|
169
|
+
super()
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def to_s
|
|
173
|
+
"access[#{@name}]"
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# There's no real check to do at this point
|
|
177
|
+
def valid?
|
|
178
|
+
true
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
def regex?
|
|
182
|
+
acl_type == :regex
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
# does this right is allowed for this triplet?
|
|
186
|
+
# if this right is too restrictive (ie we don't match this access method)
|
|
187
|
+
# then return :dunno so that upper layers have a chance to try another right
|
|
188
|
+
# tailored to the given method
|
|
189
|
+
def allowed?(name, ip, args = {})
|
|
190
|
+
return :dunno if acl_type == :regex and not @methods.include?(args[:method])
|
|
191
|
+
return :dunno if acl_type == :regex and @environment.size > 0 and not @environment.include?(args[:environment])
|
|
192
|
+
return :dunno if acl_type == :regex and not @authentication.nil? and args[:authenticated] != @authentication
|
|
193
|
+
|
|
194
|
+
begin
|
|
195
|
+
# make sure any capture are replaced if needed
|
|
196
|
+
interpolate(args[:match]) if acl_type == :regex and args[:match]
|
|
197
|
+
res = super(name,ip)
|
|
198
|
+
ensure
|
|
199
|
+
reset_interpolation if acl_type == :regex
|
|
200
|
+
end
|
|
201
|
+
res
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
# restrict this right to some method only
|
|
205
|
+
def restrict_method(m)
|
|
206
|
+
m = m.intern if m.is_a?(String)
|
|
207
|
+
|
|
208
|
+
raise ArgumentError, "'#{m}' is not an allowed value for method directive" unless ALL.include?(m)
|
|
209
|
+
|
|
210
|
+
# if we were allowing all methods, then starts from scratch
|
|
211
|
+
if @methods === ALL
|
|
212
|
+
@methods = []
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
raise ArgumentError, "'#{m}' is already in the '#{name}' ACL" if @methods.include?(m)
|
|
216
|
+
|
|
217
|
+
@methods << m
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
def restrict_environment(env)
|
|
221
|
+
env = Puppet::Node::Environment.new(env)
|
|
222
|
+
raise ArgumentError, "'#{env}' is already in the '#{name}' ACL" if @environment.include?(env)
|
|
223
|
+
|
|
224
|
+
@environment << env
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
def restrict_authenticated(authentication)
|
|
228
|
+
case authentication
|
|
229
|
+
when "yes", "on", "true", true
|
|
230
|
+
authentication = true
|
|
231
|
+
when "no", "off", "false", false
|
|
232
|
+
authentication = false
|
|
233
|
+
when "all","any", :all, :any
|
|
234
|
+
authentication = nil
|
|
235
|
+
else
|
|
236
|
+
raise ArgumentError, "'#{name}' incorrect authenticated value: #{authentication}"
|
|
237
|
+
end
|
|
238
|
+
@authentication = authentication
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
def match?(key)
|
|
242
|
+
# if we are a namespace compare directly
|
|
243
|
+
return self.key == namespace_to_key(key) if acl_type == :name
|
|
244
|
+
|
|
245
|
+
# otherwise match with the regex
|
|
246
|
+
self.key.match(key)
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
def namespace_to_key(key)
|
|
250
|
+
key = key.intern if key.is_a?(String)
|
|
251
|
+
key
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
# this is where all the magic happens.
|
|
255
|
+
# we're sorting the rights array with this scheme:
|
|
256
|
+
# * namespace rights are all in front
|
|
257
|
+
# * regex path rights are then all queued in file order
|
|
258
|
+
def <=>(rhs)
|
|
259
|
+
# move namespace rights at front
|
|
260
|
+
return self.acl_type == :name ? -1 : 1 if self.acl_type != rhs.acl_type
|
|
261
|
+
|
|
262
|
+
# sort by creation order (ie first match appearing in the file will win)
|
|
263
|
+
# that is don't sort, in which case the sort algorithm will order in the
|
|
264
|
+
# natural array order (ie the creation order)
|
|
265
|
+
0
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
def ==(name)
|
|
269
|
+
return(acl_type == :name ? self.key == namespace_to_key(name) : self.name == name.gsub(/^~\s+/,''))
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
end
|
|
275
|
+
end
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
require 'puppet/network/http'
|
|
2
|
+
require 'puppet/util/pidlock'
|
|
3
|
+
|
|
4
|
+
class Puppet::Network::Server
|
|
5
|
+
attr_reader :server_type, :protocols, :address, :port
|
|
6
|
+
|
|
7
|
+
# Put the daemon into the background.
|
|
8
|
+
def daemonize
|
|
9
|
+
if pid = fork
|
|
10
|
+
Process.detach(pid)
|
|
11
|
+
exit(0)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Get rid of console logging
|
|
15
|
+
Puppet::Util::Log.close(:console)
|
|
16
|
+
|
|
17
|
+
Process.setsid
|
|
18
|
+
Dir.chdir("/")
|
|
19
|
+
begin
|
|
20
|
+
$stdin.reopen "/dev/null"
|
|
21
|
+
$stdout.reopen "/dev/null", "a"
|
|
22
|
+
$stderr.reopen $stdout
|
|
23
|
+
Puppet::Util::Log.reopen
|
|
24
|
+
rescue => detail
|
|
25
|
+
Puppet::Util.replace_file("/tmp/daemonout", 0644) { |f|
|
|
26
|
+
f.puts "Could not start #{Puppet[:name]}: #{detail}"
|
|
27
|
+
}
|
|
28
|
+
raise "Could not start #{Puppet[:name]}: #{detail}"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Create a pidfile for our daemon, so we can be stopped and others
|
|
33
|
+
# don't try to start.
|
|
34
|
+
def create_pidfile
|
|
35
|
+
Puppet::Util.synchronize_on(Puppet[:name],Sync::EX) do
|
|
36
|
+
raise "Could not create PID file: #{pidfile}" unless Puppet::Util::Pidlock.new(pidfile).lock
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Remove the pid file for our daemon.
|
|
41
|
+
def remove_pidfile
|
|
42
|
+
Puppet::Util.synchronize_on(Puppet[:name],Sync::EX) do
|
|
43
|
+
Puppet::Util::Pidlock.new(pidfile).unlock
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Provide the path to our pidfile.
|
|
48
|
+
def pidfile
|
|
49
|
+
Puppet[:pidfile]
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def initialize(args = {})
|
|
53
|
+
valid_args = [:handlers, :xmlrpc_handlers, :port]
|
|
54
|
+
bad_args = args.keys.find_all { |p| ! valid_args.include?(p) }.collect { |p| p.to_s }.join(",")
|
|
55
|
+
raise ArgumentError, "Invalid argument(s) #{bad_args}" unless bad_args == ""
|
|
56
|
+
@server_type = Puppet[:servertype] or raise "No servertype configuration found." # e.g., WEBrick, Mongrel, etc.
|
|
57
|
+
http_server_class || raise(ArgumentError, "Could not determine HTTP Server class for server type [#{@server_type}]")
|
|
58
|
+
|
|
59
|
+
@port = args[:port] || Puppet[:masterport] || raise(ArgumentError, "Must specify :port or configure Puppet :masterport")
|
|
60
|
+
@address = determine_bind_address
|
|
61
|
+
|
|
62
|
+
@protocols = [ :rest, :xmlrpc ]
|
|
63
|
+
@listening = false
|
|
64
|
+
@routes = {}
|
|
65
|
+
@xmlrpc_routes = {}
|
|
66
|
+
self.register(args[:handlers]) if args[:handlers]
|
|
67
|
+
self.register_xmlrpc(args[:xmlrpc_handlers]) if args[:xmlrpc_handlers]
|
|
68
|
+
|
|
69
|
+
# Make sure we have all of the directories we need to function.
|
|
70
|
+
Puppet.settings.use(:main, :ssl, Puppet[:name])
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Register handlers for REST networking, based on the Indirector.
|
|
74
|
+
def register(*indirections)
|
|
75
|
+
raise ArgumentError, "Indirection names are required." if indirections.empty?
|
|
76
|
+
indirections.flatten.each do |name|
|
|
77
|
+
Puppet::Indirector::Indirection.model(name) || raise(ArgumentError, "Cannot locate indirection '#{name}'.")
|
|
78
|
+
@routes[name.to_sym] = true
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Unregister Indirector handlers.
|
|
83
|
+
def unregister(*indirections)
|
|
84
|
+
raise "Cannot unregister indirections while server is listening." if listening?
|
|
85
|
+
indirections = @routes.keys if indirections.empty?
|
|
86
|
+
|
|
87
|
+
indirections.flatten.each do |i|
|
|
88
|
+
raise(ArgumentError, "Indirection [#{i}] is unknown.") unless @routes[i.to_sym]
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
indirections.flatten.each do |i|
|
|
92
|
+
@routes.delete(i.to_sym)
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Register xmlrpc handlers for backward compatibility.
|
|
97
|
+
def register_xmlrpc(*namespaces)
|
|
98
|
+
raise ArgumentError, "XMLRPC namespaces are required." if namespaces.empty?
|
|
99
|
+
namespaces.flatten.each do |name|
|
|
100
|
+
Puppet::Network::Handler.handler(name) || raise(ArgumentError, "Cannot locate XMLRPC handler for namespace '#{name}'.")
|
|
101
|
+
@xmlrpc_routes[name.to_sym] = true
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Unregister xmlrpc handlers.
|
|
106
|
+
def unregister_xmlrpc(*namespaces)
|
|
107
|
+
raise "Cannot unregister xmlrpc handlers while server is listening." if listening?
|
|
108
|
+
namespaces = @xmlrpc_routes.keys if namespaces.empty?
|
|
109
|
+
|
|
110
|
+
namespaces.flatten.each do |i|
|
|
111
|
+
raise(ArgumentError, "XMLRPC handler '#{i}' is unknown.") unless @xmlrpc_routes[i.to_sym]
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
namespaces.flatten.each do |i|
|
|
115
|
+
@xmlrpc_routes.delete(i.to_sym)
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def listening?
|
|
120
|
+
@listening
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def listen
|
|
124
|
+
raise "Cannot listen -- already listening." if listening?
|
|
125
|
+
@listening = true
|
|
126
|
+
http_server.listen(:address => address, :port => port, :handlers => @routes.keys, :xmlrpc_handlers => @xmlrpc_routes.keys, :protocols => protocols)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def unlisten
|
|
130
|
+
raise "Cannot unlisten -- not currently listening." unless listening?
|
|
131
|
+
http_server.unlisten
|
|
132
|
+
@listening = false
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def http_server_class
|
|
136
|
+
http_server_class_by_type(@server_type)
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def start
|
|
140
|
+
create_pidfile
|
|
141
|
+
listen
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def stop
|
|
145
|
+
unlisten
|
|
146
|
+
remove_pidfile
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
private
|
|
150
|
+
|
|
151
|
+
def http_server
|
|
152
|
+
@http_server ||= http_server_class.new
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def http_server_class_by_type(kind)
|
|
156
|
+
Puppet::Network::HTTP.server_class_by_type(kind)
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def determine_bind_address
|
|
160
|
+
tmp = Puppet[:bindaddress]
|
|
161
|
+
return tmp if tmp != ""
|
|
162
|
+
server_type.to_s == "webrick" ? "0.0.0.0" : "127.0.0.1"
|
|
163
|
+
end
|
|
164
|
+
end
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
require 'puppet/network/authorization'
|
|
2
|
+
require 'xmlrpc/server'
|
|
3
|
+
|
|
4
|
+
# Just silly.
|
|
5
|
+
class ::XMLRPC::FaultException
|
|
6
|
+
def to_s
|
|
7
|
+
self.message
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
module Puppet::Network
|
|
12
|
+
# Most of our subclassing is just so that we can get
|
|
13
|
+
# access to information from the request object, like
|
|
14
|
+
# the client name and IP address.
|
|
15
|
+
module XMLRPCProcessor
|
|
16
|
+
include Puppet::Network::Authorization
|
|
17
|
+
|
|
18
|
+
ERR_UNAUTHORIZED = 30
|
|
19
|
+
|
|
20
|
+
def add_handler(interface, handler)
|
|
21
|
+
@loadedhandlers << interface.prefix
|
|
22
|
+
super(interface, handler)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def handler_loaded?(handler)
|
|
26
|
+
@loadedhandlers.include?(handler.to_s)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Convert our data and client request into xmlrpc calls, and verify
|
|
30
|
+
# they're authorized and such-like. This method differs from the
|
|
31
|
+
# default in that it expects a ClientRequest object in addition to the
|
|
32
|
+
# data.
|
|
33
|
+
def process(data, request)
|
|
34
|
+
call, params = parser.parseMethodCall(data)
|
|
35
|
+
params << request.name << request.ip
|
|
36
|
+
handler, method = call.split(".")
|
|
37
|
+
request.handler = handler
|
|
38
|
+
request.method = method
|
|
39
|
+
begin
|
|
40
|
+
verify(request)
|
|
41
|
+
rescue InvalidClientRequest => detail
|
|
42
|
+
raise ::XMLRPC::FaultException.new(ERR_UNAUTHORIZED, detail.to_s)
|
|
43
|
+
end
|
|
44
|
+
handle(request.call, *params)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
|
|
49
|
+
# Provide error handling for method calls.
|
|
50
|
+
def protect_service(obj, *args)
|
|
51
|
+
begin
|
|
52
|
+
obj.call(*args)
|
|
53
|
+
rescue ::XMLRPC::FaultException
|
|
54
|
+
raise
|
|
55
|
+
rescue Puppet::AuthorizationError => detail
|
|
56
|
+
Puppet.err "Permission denied: #{detail}"
|
|
57
|
+
raise ::XMLRPC::FaultException.new(
|
|
58
|
+
1, detail.to_s
|
|
59
|
+
)
|
|
60
|
+
rescue Puppet::Error => detail
|
|
61
|
+
puts detail.backtrace if Puppet[:trace]
|
|
62
|
+
Puppet.err detail.to_s
|
|
63
|
+
error = ::XMLRPC::FaultException.new(
|
|
64
|
+
1, detail.to_s
|
|
65
|
+
)
|
|
66
|
+
error.set_backtrace detail.backtrace
|
|
67
|
+
raise error
|
|
68
|
+
rescue => detail
|
|
69
|
+
puts detail.backtrace if Puppet[:trace]
|
|
70
|
+
Puppet.err "Could not call: #{detail}"
|
|
71
|
+
error = ::XMLRPC::FaultException.new(1, detail.to_s)
|
|
72
|
+
error.set_backtrace detail.backtrace
|
|
73
|
+
raise error
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Set up our service hook and init our handler list.
|
|
78
|
+
def setup_processor
|
|
79
|
+
@loadedhandlers = []
|
|
80
|
+
self.set_service_hook do |obj, *args|
|
|
81
|
+
protect_service(obj, *args)
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'xmlrpc/server'
|
|
2
|
+
require 'puppet/network/authorization'
|
|
3
|
+
require 'puppet/network/xmlrpc/processor'
|
|
4
|
+
|
|
5
|
+
module Puppet::Network
|
|
6
|
+
# Most of our subclassing is just so that we can get
|
|
7
|
+
# access to information from the request object, like
|
|
8
|
+
# the client name and IP address.
|
|
9
|
+
class XMLRPCServer < ::XMLRPC::BasicServer
|
|
10
|
+
include Puppet::Util
|
|
11
|
+
include Puppet::Network::XMLRPCProcessor
|
|
12
|
+
|
|
13
|
+
def initialize
|
|
14
|
+
super()
|
|
15
|
+
setup_processor
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
require 'xmlrpc/server'
|
|
2
|
+
require 'puppet/network/authorization'
|
|
3
|
+
require 'puppet/network/xmlrpc/processor'
|
|
4
|
+
|
|
5
|
+
module Puppet::Network::XMLRPC
|
|
6
|
+
class ServletError < RuntimeError; end
|
|
7
|
+
class WEBrickServlet < ::XMLRPC::WEBrickServlet
|
|
8
|
+
include Puppet::Network::XMLRPCProcessor
|
|
9
|
+
|
|
10
|
+
# This is a hackish way to avoid an auth message every time we have a
|
|
11
|
+
# normal operation
|
|
12
|
+
def self.log(msg)
|
|
13
|
+
@logs ||= {}
|
|
14
|
+
if @logs.include?(msg)
|
|
15
|
+
@logs[msg] += 1
|
|
16
|
+
else
|
|
17
|
+
Puppet.info msg
|
|
18
|
+
@logs[msg] = 1
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Accept a list of handlers and register them all.
|
|
23
|
+
def initialize(handlers)
|
|
24
|
+
# the servlet base class does not consume any arguments
|
|
25
|
+
# and its BasicServer base class only accepts a 'class_delim'
|
|
26
|
+
# option which won't change in Puppet at all
|
|
27
|
+
# thus, we don't need to pass any args to our base class,
|
|
28
|
+
# and we can consume them all ourselves
|
|
29
|
+
super()
|
|
30
|
+
|
|
31
|
+
setup_processor
|
|
32
|
+
|
|
33
|
+
# Set up each of the passed handlers.
|
|
34
|
+
handlers.each do |handler|
|
|
35
|
+
add_handler(handler.class.interface, handler)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Handle the actual request. We can't use the super() method, because
|
|
40
|
+
# we need to pass a ClientRequest object to process so we can do
|
|
41
|
+
# authorization. It's the only way to stay thread-safe.
|
|
42
|
+
def service(request, response)
|
|
43
|
+
if @valid_ip
|
|
44
|
+
raise WEBrick::HTTPStatus::Forbidden unless @valid_ip.any? { |ip| request.peeraddr[3] =~ ip }
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
if request.request_method != "POST"
|
|
48
|
+
raise WEBrick::HTTPStatus::MethodNotAllowed,
|
|
49
|
+
"unsupported method `#{request.request_method}'."
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
raise WEBrick::HTTPStatus::BadRequest if parse_content_type(request['Content-type']).first != "text/xml"
|
|
53
|
+
|
|
54
|
+
length = (request['Content-length'] || 0).to_i
|
|
55
|
+
|
|
56
|
+
raise WEBrick::HTTPStatus::LengthRequired unless length > 0
|
|
57
|
+
|
|
58
|
+
data = request.body
|
|
59
|
+
|
|
60
|
+
raise WEBrick::HTTPStatus::BadRequest if data.nil? or data.size != length
|
|
61
|
+
|
|
62
|
+
resp = process(data, client_request(request))
|
|
63
|
+
raise WEBrick::HTTPStatus::InternalServerError if resp.nil? or resp.size <= 0
|
|
64
|
+
|
|
65
|
+
response.status = 200
|
|
66
|
+
response['Content-Length'] = resp.size
|
|
67
|
+
response['Content-Type'] = "text/xml; charset=utf-8"
|
|
68
|
+
response.body = resp
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
private
|
|
72
|
+
|
|
73
|
+
# Generate a ClientRequest object for later validation.
|
|
74
|
+
def client_request(request)
|
|
75
|
+
if peer = request.peeraddr
|
|
76
|
+
client = peer[2]
|
|
77
|
+
clientip = peer[3]
|
|
78
|
+
else
|
|
79
|
+
|
|
80
|
+
raise ::XMLRPC::FaultException.new(
|
|
81
|
+
|
|
82
|
+
ERR_UNCAUGHT_EXCEPTION,
|
|
83
|
+
|
|
84
|
+
"Could not retrieve client information"
|
|
85
|
+
)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# If they have a certificate (which will almost always be true)
|
|
89
|
+
# then we get the hostname from the cert, instead of via IP
|
|
90
|
+
# info
|
|
91
|
+
valid = false
|
|
92
|
+
if cert = request.client_cert
|
|
93
|
+
nameary = cert.subject.to_a.find { |ary|
|
|
94
|
+
ary[0] == "CN"
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if nameary.nil?
|
|
98
|
+
Puppet.warning "Could not retrieve server name from cert"
|
|
99
|
+
else
|
|
100
|
+
unless client == nameary[1]
|
|
101
|
+
Puppet.debug "Overriding #{client} with cert name #{nameary[1]}"
|
|
102
|
+
client = nameary[1]
|
|
103
|
+
end
|
|
104
|
+
valid = true
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
info = Puppet::Network::ClientRequest.new(client, clientip, valid)
|
|
109
|
+
|
|
110
|
+
info
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|