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,646 @@
|
|
|
1
|
+
# A module to collect utility functions.
|
|
2
|
+
|
|
3
|
+
require 'English'
|
|
4
|
+
require 'puppet/util/monkey_patches'
|
|
5
|
+
require 'puppet/external/lock'
|
|
6
|
+
require 'puppet/util/execution_stub'
|
|
7
|
+
require 'uri'
|
|
8
|
+
require 'sync'
|
|
9
|
+
require 'monitor'
|
|
10
|
+
require 'tempfile'
|
|
11
|
+
require 'pathname'
|
|
12
|
+
require 'ostruct'
|
|
13
|
+
require 'puppet/util/platform'
|
|
14
|
+
|
|
15
|
+
module Puppet
|
|
16
|
+
# A command failed to execute.
|
|
17
|
+
require 'puppet/error'
|
|
18
|
+
class ExecutionFailure < Puppet::Error
|
|
19
|
+
end
|
|
20
|
+
module Util
|
|
21
|
+
require 'benchmark'
|
|
22
|
+
|
|
23
|
+
# These are all for backward compatibility -- these are methods that used
|
|
24
|
+
# to be in Puppet::Util but have been moved into external modules.
|
|
25
|
+
require 'puppet/util/posix'
|
|
26
|
+
extend Puppet::Util::POSIX
|
|
27
|
+
|
|
28
|
+
@@sync_objects = {}.extend MonitorMixin
|
|
29
|
+
|
|
30
|
+
def self.activerecord_version
|
|
31
|
+
if (defined?(::ActiveRecord) and defined?(::ActiveRecord::VERSION) and defined?(::ActiveRecord::VERSION::MAJOR) and defined?(::ActiveRecord::VERSION::MINOR))
|
|
32
|
+
([::ActiveRecord::VERSION::MAJOR, ::ActiveRecord::VERSION::MINOR].join('.').to_f)
|
|
33
|
+
else
|
|
34
|
+
0
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.synchronize_on(x,type)
|
|
39
|
+
sync_object,users = 0,1
|
|
40
|
+
begin
|
|
41
|
+
@@sync_objects.synchronize {
|
|
42
|
+
(@@sync_objects[x] ||= [Sync.new,0])[users] += 1
|
|
43
|
+
}
|
|
44
|
+
@@sync_objects[x][sync_object].synchronize(type) { yield }
|
|
45
|
+
ensure
|
|
46
|
+
@@sync_objects.synchronize {
|
|
47
|
+
@@sync_objects.delete(x) unless (@@sync_objects[x][users] -= 1) > 0
|
|
48
|
+
}
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Change the process to a different user
|
|
53
|
+
def self.chuser
|
|
54
|
+
if group = Puppet[:group]
|
|
55
|
+
begin
|
|
56
|
+
Puppet::Util::SUIDManager.change_group(group, true)
|
|
57
|
+
rescue => detail
|
|
58
|
+
Puppet.warning "could not change to group #{group.inspect}: #{detail}"
|
|
59
|
+
$stderr.puts "could not change to group #{group.inspect}"
|
|
60
|
+
|
|
61
|
+
# Don't exit on failed group changes, since it's
|
|
62
|
+
# not fatal
|
|
63
|
+
#exit(74)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
if user = Puppet[:user]
|
|
68
|
+
begin
|
|
69
|
+
Puppet::Util::SUIDManager.change_user(user, true)
|
|
70
|
+
rescue => detail
|
|
71
|
+
$stderr.puts "Could not change to user #{user}: #{detail}"
|
|
72
|
+
exit(74)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Create instance methods for each of the log levels. This allows
|
|
78
|
+
# the messages to be a little richer. Most classes will be calling this
|
|
79
|
+
# method.
|
|
80
|
+
def self.logmethods(klass, useself = true)
|
|
81
|
+
Puppet::Util::Log.eachlevel { |level|
|
|
82
|
+
klass.send(:define_method, level, proc { |args|
|
|
83
|
+
args = args.join(" ") if args.is_a?(Array)
|
|
84
|
+
if useself
|
|
85
|
+
|
|
86
|
+
Puppet::Util::Log.create(
|
|
87
|
+
:level => level,
|
|
88
|
+
:source => self,
|
|
89
|
+
:message => args
|
|
90
|
+
)
|
|
91
|
+
else
|
|
92
|
+
|
|
93
|
+
Puppet::Util::Log.create(
|
|
94
|
+
:level => level,
|
|
95
|
+
:message => args
|
|
96
|
+
)
|
|
97
|
+
end
|
|
98
|
+
})
|
|
99
|
+
}
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# Proxy a bunch of methods to another object.
|
|
103
|
+
def self.classproxy(klass, objmethod, *methods)
|
|
104
|
+
classobj = class << klass; self; end
|
|
105
|
+
methods.each do |method|
|
|
106
|
+
classobj.send(:define_method, method) do |*args|
|
|
107
|
+
obj = self.send(objmethod)
|
|
108
|
+
|
|
109
|
+
obj.send(method, *args)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# Proxy a bunch of methods to another object.
|
|
115
|
+
def self.proxy(klass, objmethod, *methods)
|
|
116
|
+
methods.each do |method|
|
|
117
|
+
klass.send(:define_method, method) do |*args|
|
|
118
|
+
obj = self.send(objmethod)
|
|
119
|
+
|
|
120
|
+
obj.send(method, *args)
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
# Execute a given chunk of code with a new umask.
|
|
126
|
+
def self.withumask(mask)
|
|
127
|
+
cur = File.umask(mask)
|
|
128
|
+
|
|
129
|
+
begin
|
|
130
|
+
yield
|
|
131
|
+
ensure
|
|
132
|
+
File.umask(cur)
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def benchmark(*args)
|
|
137
|
+
msg = args.pop
|
|
138
|
+
level = args.pop
|
|
139
|
+
object = nil
|
|
140
|
+
|
|
141
|
+
if args.empty?
|
|
142
|
+
if respond_to?(level)
|
|
143
|
+
object = self
|
|
144
|
+
else
|
|
145
|
+
object = Puppet
|
|
146
|
+
end
|
|
147
|
+
else
|
|
148
|
+
object = args.pop
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
raise Puppet::DevError, "Failed to provide level to :benchmark" unless level
|
|
152
|
+
|
|
153
|
+
unless level == :none or object.respond_to? level
|
|
154
|
+
raise Puppet::DevError, "Benchmarked object does not respond to #{level}"
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
# Only benchmark if our log level is high enough
|
|
158
|
+
if level != :none and Puppet::Util::Log.sendlevel?(level)
|
|
159
|
+
result = nil
|
|
160
|
+
seconds = Benchmark.realtime {
|
|
161
|
+
yield
|
|
162
|
+
}
|
|
163
|
+
object.send(level, msg + (" in %0.2f seconds" % seconds))
|
|
164
|
+
return seconds
|
|
165
|
+
else
|
|
166
|
+
yield
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
def which(bin)
|
|
171
|
+
if absolute_path?(bin)
|
|
172
|
+
return bin if FileTest.file? bin and FileTest.executable? bin
|
|
173
|
+
else
|
|
174
|
+
ENV['PATH'].split(File::PATH_SEPARATOR).each do |dir|
|
|
175
|
+
begin
|
|
176
|
+
dest = File.expand_path(File.join(dir, bin))
|
|
177
|
+
if Puppet.features.microsoft_windows? && File.extname(dest).empty?
|
|
178
|
+
exts = ENV['PATHEXT']
|
|
179
|
+
exts = exts ? exts.split(File::PATH_SEPARATOR) : %w[.COM .EXE .BAT .CMD]
|
|
180
|
+
exts.each do |ext|
|
|
181
|
+
destext = File.expand_path(dest + ext)
|
|
182
|
+
return destext if FileTest.file? destext and FileTest.executable? destext
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
return dest if FileTest.file? dest and FileTest.executable? dest
|
|
186
|
+
rescue ArgumentError => e
|
|
187
|
+
raise unless e.to_s =~ /doesn't exist|can't find user/
|
|
188
|
+
# ...otherwise, we just skip the non-existent entry, and do nothing.
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
nil
|
|
193
|
+
end
|
|
194
|
+
module_function :which
|
|
195
|
+
|
|
196
|
+
# Determine in a platform-specific way whether a path is absolute. This
|
|
197
|
+
# defaults to the local platform if none is specified.
|
|
198
|
+
#
|
|
199
|
+
# Escape once for the string literal, and once for the regex.
|
|
200
|
+
slash = '[\\\\/]'
|
|
201
|
+
label = '[^\\\\/]+'
|
|
202
|
+
AbsolutePathWindows = %r!^(?:(?:[A-Z]:#{slash})|(?:#{slash}#{slash}#{label}#{slash}#{label})|(?:#{slash}#{slash}\?#{slash}#{label}))!io
|
|
203
|
+
AbsolutePathPosix = %r!^/!
|
|
204
|
+
def absolute_path?(path, platform=nil)
|
|
205
|
+
# When running an internal subcommand (Application), the app requires puppet
|
|
206
|
+
# which loads features, which creates an autoloader, which calls this method.
|
|
207
|
+
# In that case, it isn't necessary to require puppet. When running an external
|
|
208
|
+
# subcommand or if none was specified, then the CommandLine will call the
|
|
209
|
+
# `which` method to resolve the external executable, and that requires features.
|
|
210
|
+
# Rather then moving this require to handle the external subcommand case, or
|
|
211
|
+
# no subcommand case, I'm undoing the performance change from 20efe94. This
|
|
212
|
+
# code has been eliminated in 3.x since puppet can be required before loading
|
|
213
|
+
# the application (since the default vardir/confdir locations are solely
|
|
214
|
+
# based on user vs. system user, and not the application's run_mode).
|
|
215
|
+
require 'puppet'
|
|
216
|
+
|
|
217
|
+
# Ruby only sets File::ALT_SEPARATOR on Windows and the Ruby standard
|
|
218
|
+
# library uses that to test what platform it's on. Normally in Puppet we
|
|
219
|
+
# would use Puppet.features.microsoft_windows?, but this method needs to
|
|
220
|
+
# be called during the initialization of features so it can't depend on
|
|
221
|
+
# that.
|
|
222
|
+
platform ||= Puppet::Util::Platform.windows? ? :windows : :posix
|
|
223
|
+
regex = case platform
|
|
224
|
+
when :windows
|
|
225
|
+
AbsolutePathWindows
|
|
226
|
+
when :posix
|
|
227
|
+
AbsolutePathPosix
|
|
228
|
+
else
|
|
229
|
+
raise Puppet::DevError, "unknown platform #{platform} in absolute_path"
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
!! (path =~ regex)
|
|
233
|
+
end
|
|
234
|
+
module_function :absolute_path?
|
|
235
|
+
|
|
236
|
+
# Convert a path to a file URI
|
|
237
|
+
def path_to_uri(path)
|
|
238
|
+
return unless path
|
|
239
|
+
|
|
240
|
+
params = { :scheme => 'file' }
|
|
241
|
+
|
|
242
|
+
if Puppet.features.microsoft_windows?
|
|
243
|
+
path = path.gsub(/\\/, '/')
|
|
244
|
+
|
|
245
|
+
if unc = /^\/\/([^\/]+)(\/[^\/]+)/.match(path)
|
|
246
|
+
params[:host] = unc[1]
|
|
247
|
+
path = unc[2]
|
|
248
|
+
elsif path =~ /^[a-z]:\//i
|
|
249
|
+
path = '/' + path
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
params[:path] = URI.escape(path)
|
|
254
|
+
|
|
255
|
+
begin
|
|
256
|
+
URI::Generic.build(params)
|
|
257
|
+
rescue => detail
|
|
258
|
+
raise Puppet::Error, "Failed to convert '#{path}' to URI: #{detail}"
|
|
259
|
+
end
|
|
260
|
+
end
|
|
261
|
+
module_function :path_to_uri
|
|
262
|
+
|
|
263
|
+
# Get the path component of a URI
|
|
264
|
+
def uri_to_path(uri)
|
|
265
|
+
return unless uri.is_a?(URI)
|
|
266
|
+
|
|
267
|
+
path = URI.unescape(uri.path)
|
|
268
|
+
|
|
269
|
+
if Puppet.features.microsoft_windows? and uri.scheme == 'file'
|
|
270
|
+
if uri.host
|
|
271
|
+
path = "//#{uri.host}" + path # UNC
|
|
272
|
+
else
|
|
273
|
+
path.sub!(/^\//, '')
|
|
274
|
+
end
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
path
|
|
278
|
+
end
|
|
279
|
+
module_function :uri_to_path
|
|
280
|
+
|
|
281
|
+
# Execute the provided command with STDIN connected to a pipe, yielding the
|
|
282
|
+
# pipe object. That allows data to be fed to that subprocess.
|
|
283
|
+
#
|
|
284
|
+
# The command can be a simple string, which is executed as-is, or an Array,
|
|
285
|
+
# which is treated as a set of command arguments to pass through.#
|
|
286
|
+
#
|
|
287
|
+
# In all cases this is passed directly to the shell, and STDOUT and STDERR
|
|
288
|
+
# are connected together during execution.
|
|
289
|
+
def execpipe(command, failonfail = true)
|
|
290
|
+
if respond_to? :debug
|
|
291
|
+
debug "Executing '#{command}'"
|
|
292
|
+
else
|
|
293
|
+
Puppet.debug "Executing '#{command}'"
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
# Paste together an array with spaces. We used to paste directly
|
|
297
|
+
# together, no spaces, which made for odd invocations; the user had to
|
|
298
|
+
# include whitespace between arguments.
|
|
299
|
+
#
|
|
300
|
+
# Having two spaces is really not a big drama, since this passes to the
|
|
301
|
+
# shell anyhow, while no spaces makes for a small developer cost every
|
|
302
|
+
# time this is invoked. --daniel 2012-02-13
|
|
303
|
+
command_str = command.respond_to?(:join) ? command.join(' ') : command
|
|
304
|
+
output = open("| #{command_str} 2>&1") do |pipe|
|
|
305
|
+
yield pipe
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
if failonfail
|
|
309
|
+
unless $CHILD_STATUS == 0
|
|
310
|
+
raise ExecutionFailure, output
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
output
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
def execfail(command, exception)
|
|
318
|
+
output = execute(command)
|
|
319
|
+
return output
|
|
320
|
+
rescue ExecutionFailure
|
|
321
|
+
raise exception, output
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
def execute_posix(command, arguments, stdin, stdout, stderr)
|
|
325
|
+
child_pid = safe_posix_fork(stdin, stdout, stderr) do
|
|
326
|
+
# We can't just call Array(command), and rely on it returning
|
|
327
|
+
# things like ['foo'], when passed ['foo'], because
|
|
328
|
+
# Array(command) will call command.to_a internally, which when
|
|
329
|
+
# given a string can end up doing Very Bad Things(TM), such as
|
|
330
|
+
# turning "/tmp/foo;\r\n /bin/echo" into ["/tmp/foo;\r\n", " /bin/echo"]
|
|
331
|
+
command = [command].flatten
|
|
332
|
+
Process.setsid
|
|
333
|
+
begin
|
|
334
|
+
Puppet::Util::SUIDManager.change_privileges(arguments[:uid], arguments[:gid], true)
|
|
335
|
+
|
|
336
|
+
ENV['LANG'] = ENV['LC_ALL'] = ENV['LC_MESSAGES'] = ENV['LANGUAGE'] = 'C'
|
|
337
|
+
Kernel.exec(*command)
|
|
338
|
+
rescue => detail
|
|
339
|
+
puts detail.to_s
|
|
340
|
+
exit!(1)
|
|
341
|
+
end
|
|
342
|
+
end
|
|
343
|
+
child_pid
|
|
344
|
+
end
|
|
345
|
+
module_function :execute_posix
|
|
346
|
+
|
|
347
|
+
def safe_posix_fork(stdin=$stdin, stdout=$stdout, stderr=$stderr, &block)
|
|
348
|
+
child_pid = Kernel.fork do
|
|
349
|
+
$stdin.reopen(stdin)
|
|
350
|
+
$stdout.reopen(stdout)
|
|
351
|
+
$stderr.reopen(stderr)
|
|
352
|
+
|
|
353
|
+
3.upto(256){|fd| IO::new(fd).close rescue nil}
|
|
354
|
+
|
|
355
|
+
block.call if block
|
|
356
|
+
end
|
|
357
|
+
child_pid
|
|
358
|
+
end
|
|
359
|
+
module_function :safe_posix_fork
|
|
360
|
+
|
|
361
|
+
def execute_windows(command, arguments, stdin, stdout, stderr)
|
|
362
|
+
command = command.map do |part|
|
|
363
|
+
part.include?(' ') ? %Q["#{part.gsub(/"/, '\"')}"] : part
|
|
364
|
+
end.join(" ") if command.is_a?(Array)
|
|
365
|
+
|
|
366
|
+
Puppet::Util::Windows::Process.execute(command, arguments, stdin, stdout, stderr)
|
|
367
|
+
end
|
|
368
|
+
module_function :execute_windows
|
|
369
|
+
|
|
370
|
+
# Execute the desired command, and return the status and output.
|
|
371
|
+
# def execute(command, failonfail = true, uid = nil, gid = nil)
|
|
372
|
+
# :combine sets whether or not to combine stdout/stderr in the output
|
|
373
|
+
# :stdinfile sets a file that can be used for stdin. Passing a string
|
|
374
|
+
# for stdin is not currently supported.
|
|
375
|
+
def execute(command, arguments = {:failonfail => true, :combine => true})
|
|
376
|
+
if command.is_a?(Array)
|
|
377
|
+
command = command.flatten.map(&:to_s)
|
|
378
|
+
str = command.join(" ")
|
|
379
|
+
elsif command.is_a?(String)
|
|
380
|
+
str = command
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
if respond_to? :debug
|
|
384
|
+
debug "Executing '#{str}'"
|
|
385
|
+
else
|
|
386
|
+
Puppet.debug "Executing '#{str}'"
|
|
387
|
+
end
|
|
388
|
+
|
|
389
|
+
null_file = Puppet.features.microsoft_windows? ? 'NUL' : '/dev/null'
|
|
390
|
+
|
|
391
|
+
stdin = File.open(arguments[:stdinfile] || null_file, 'r')
|
|
392
|
+
stdout = arguments[:squelch] ? File.open(null_file, 'w') : Tempfile.new('puppet')
|
|
393
|
+
stderr = arguments[:combine] ? stdout : File.open(null_file, 'w')
|
|
394
|
+
|
|
395
|
+
exec_args = [command, arguments, stdin, stdout, stderr]
|
|
396
|
+
|
|
397
|
+
if execution_stub = Puppet::Util::ExecutionStub.current_value
|
|
398
|
+
return execution_stub.call(*exec_args)
|
|
399
|
+
elsif Puppet.features.posix?
|
|
400
|
+
child_pid = execute_posix(*exec_args)
|
|
401
|
+
exit_status = Process.waitpid2(child_pid).last.exitstatus
|
|
402
|
+
elsif Puppet.features.microsoft_windows?
|
|
403
|
+
process_info = execute_windows(*exec_args)
|
|
404
|
+
begin
|
|
405
|
+
exit_status = Puppet::Util::Windows::Process.wait_process(process_info.process_handle)
|
|
406
|
+
ensure
|
|
407
|
+
Process.CloseHandle(process_info.process_handle)
|
|
408
|
+
Process.CloseHandle(process_info.thread_handle)
|
|
409
|
+
end
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
[stdin, stdout, stderr].each {|io| io.close rescue nil}
|
|
413
|
+
|
|
414
|
+
# read output in if required
|
|
415
|
+
unless arguments[:squelch]
|
|
416
|
+
output = wait_for_output(stdout)
|
|
417
|
+
Puppet.warning "Could not get output" unless output
|
|
418
|
+
end
|
|
419
|
+
|
|
420
|
+
if arguments[:failonfail] and exit_status != 0
|
|
421
|
+
raise ExecutionFailure, "Execution of '#{str}' returned #{exit_status}: #{output}"
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
output
|
|
425
|
+
end
|
|
426
|
+
|
|
427
|
+
module_function :execute
|
|
428
|
+
|
|
429
|
+
def wait_for_output(stdout)
|
|
430
|
+
# Make sure the file's actually been written. This is basically a race
|
|
431
|
+
# condition, and is probably a horrible way to handle it, but, well, oh
|
|
432
|
+
# well.
|
|
433
|
+
2.times do |try|
|
|
434
|
+
if File.exists?(stdout.path)
|
|
435
|
+
stdout.open
|
|
436
|
+
begin
|
|
437
|
+
return stdout.read
|
|
438
|
+
ensure
|
|
439
|
+
stdout.close
|
|
440
|
+
stdout.unlink
|
|
441
|
+
end
|
|
442
|
+
else
|
|
443
|
+
time_to_sleep = try / 2.0
|
|
444
|
+
Puppet.warning "Waiting for output; will sleep #{time_to_sleep} seconds"
|
|
445
|
+
sleep(time_to_sleep)
|
|
446
|
+
end
|
|
447
|
+
end
|
|
448
|
+
nil
|
|
449
|
+
end
|
|
450
|
+
module_function :wait_for_output
|
|
451
|
+
|
|
452
|
+
# Create an exclusive lock.
|
|
453
|
+
def threadlock(resource, type = Sync::EX)
|
|
454
|
+
Puppet::Util.synchronize_on(resource,type) { yield }
|
|
455
|
+
end
|
|
456
|
+
|
|
457
|
+
# Because some modules provide their own version of this method.
|
|
458
|
+
alias util_execute execute
|
|
459
|
+
|
|
460
|
+
module_function :benchmark
|
|
461
|
+
|
|
462
|
+
def memory
|
|
463
|
+
unless defined?(@pmap)
|
|
464
|
+
@pmap = which('pmap')
|
|
465
|
+
end
|
|
466
|
+
if @pmap
|
|
467
|
+
%x{#{@pmap} #{Process.pid}| grep total}.chomp.sub(/^\s*total\s+/, '').sub(/K$/, '').to_i
|
|
468
|
+
else
|
|
469
|
+
0
|
|
470
|
+
end
|
|
471
|
+
end
|
|
472
|
+
|
|
473
|
+
def symbolize(value)
|
|
474
|
+
Puppet.deprecation_warning "symbolize is deprecated. Call the intern method on the object instead."
|
|
475
|
+
if value.respond_to? :intern
|
|
476
|
+
value.intern
|
|
477
|
+
else
|
|
478
|
+
value
|
|
479
|
+
end
|
|
480
|
+
end
|
|
481
|
+
|
|
482
|
+
def symbolizehash(hash)
|
|
483
|
+
newhash = {}
|
|
484
|
+
hash.each do |name, val|
|
|
485
|
+
if name.is_a? String
|
|
486
|
+
newhash[name.intern] = val
|
|
487
|
+
else
|
|
488
|
+
newhash[name] = val
|
|
489
|
+
end
|
|
490
|
+
end
|
|
491
|
+
newhash
|
|
492
|
+
end
|
|
493
|
+
|
|
494
|
+
def symbolizehash!(hash)
|
|
495
|
+
Puppet.deprecation_warning "symbolizehash! is deprecated. Use the non-destructive symbolizehash method instead."
|
|
496
|
+
# this is not the most memory-friendly way to accomplish this, but the
|
|
497
|
+
# code re-use and clarity seems worthwhile.
|
|
498
|
+
newhash = symbolizehash(hash)
|
|
499
|
+
hash.clear
|
|
500
|
+
hash.merge!(newhash)
|
|
501
|
+
|
|
502
|
+
hash
|
|
503
|
+
end
|
|
504
|
+
module_function :symbolize, :symbolizehash, :symbolizehash!
|
|
505
|
+
|
|
506
|
+
# Just benchmark, with no logging.
|
|
507
|
+
def thinmark
|
|
508
|
+
seconds = Benchmark.realtime {
|
|
509
|
+
yield
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
seconds
|
|
513
|
+
end
|
|
514
|
+
|
|
515
|
+
module_function :memory, :thinmark
|
|
516
|
+
|
|
517
|
+
# Because IO#binread is only available in 1.9
|
|
518
|
+
def binread(file)
|
|
519
|
+
File.open(file, 'rb') { |f| f.read }
|
|
520
|
+
end
|
|
521
|
+
module_function :binread
|
|
522
|
+
|
|
523
|
+
# Replace a file, securely. This takes a block, and passes it the file
|
|
524
|
+
# handle of a file open for writing. Write the replacement content inside
|
|
525
|
+
# the block and it will safely replace the target file.
|
|
526
|
+
#
|
|
527
|
+
# This method will make no changes to the target file until the content is
|
|
528
|
+
# successfully written and the block returns without raising an error.
|
|
529
|
+
#
|
|
530
|
+
# As far as possible the state of the existing file, such as mode, is
|
|
531
|
+
# preserved. This works hard to avoid loss of any metadata, but will result
|
|
532
|
+
# in an inode change for the file.
|
|
533
|
+
#
|
|
534
|
+
# Arguments: `filename`, `default_mode`
|
|
535
|
+
#
|
|
536
|
+
# The filename is the file we are going to replace.
|
|
537
|
+
#
|
|
538
|
+
# The default_mode is the mode to use when the target file doesn't already
|
|
539
|
+
# exist; if the file is present we copy the existing mode/owner/group values
|
|
540
|
+
# across.
|
|
541
|
+
def replace_file(file, default_mode, &block)
|
|
542
|
+
raise Puppet::DevError, "replace_file requires a block" unless block_given?
|
|
543
|
+
|
|
544
|
+
file = Pathname(file)
|
|
545
|
+
tempfile = Tempfile.new(file.basename.to_s, file.dirname.to_s)
|
|
546
|
+
|
|
547
|
+
file_exists = file.exist?
|
|
548
|
+
|
|
549
|
+
# Set properties of the temporary file before we write the content, because
|
|
550
|
+
# Tempfile doesn't promise to be safe from reading by other people, just
|
|
551
|
+
# that it avoids races around creating the file.
|
|
552
|
+
#
|
|
553
|
+
# Our Windows emulation is pretty limited, and so we have to carefully
|
|
554
|
+
# and specifically handle the platform, which has all sorts of magic.
|
|
555
|
+
# So, unlike Unix, we don't pre-prep security; we use the default "quite
|
|
556
|
+
# secure" tempfile permissions instead. Magic happens later.
|
|
557
|
+
unless Puppet.features.microsoft_windows?
|
|
558
|
+
# Grab the current file mode, and fall back to the defaults.
|
|
559
|
+
stat = file.lstat rescue OpenStruct.new(:mode => default_mode,
|
|
560
|
+
:uid => Process.euid,
|
|
561
|
+
:gid => Process.egid)
|
|
562
|
+
|
|
563
|
+
# We only care about the bottom four slots, which make the real mode,
|
|
564
|
+
# and not the rest of the platform stat call fluff and stuff.
|
|
565
|
+
tempfile.chmod(stat.mode & 07777)
|
|
566
|
+
tempfile.chown(stat.uid, stat.gid)
|
|
567
|
+
end
|
|
568
|
+
|
|
569
|
+
# OK, now allow the caller to write the content of the file.
|
|
570
|
+
yield tempfile
|
|
571
|
+
|
|
572
|
+
# Now, make sure the data (which includes the mode) is safe on disk.
|
|
573
|
+
tempfile.flush
|
|
574
|
+
begin
|
|
575
|
+
tempfile.fsync
|
|
576
|
+
rescue NotImplementedError
|
|
577
|
+
# fsync may not be implemented by Ruby on all platforms, but
|
|
578
|
+
# there is absolutely no recovery path if we detect that. So, we just
|
|
579
|
+
# ignore the return code.
|
|
580
|
+
#
|
|
581
|
+
# However, don't be fooled: that is accepting that we are running in
|
|
582
|
+
# an unsafe fashion. If you are porting to a new platform don't stub
|
|
583
|
+
# that out.
|
|
584
|
+
end
|
|
585
|
+
|
|
586
|
+
tempfile.close
|
|
587
|
+
|
|
588
|
+
if Puppet.features.microsoft_windows?
|
|
589
|
+
# This will appropriately clone the file, but only if the file we are
|
|
590
|
+
# replacing exists. Which is kind of annoying; thanks Microsoft.
|
|
591
|
+
#
|
|
592
|
+
# So, to avoid getting into an infinite loop we will retry once if the
|
|
593
|
+
# file doesn't exist, but only the once...
|
|
594
|
+
have_retried = false
|
|
595
|
+
|
|
596
|
+
begin
|
|
597
|
+
# Yes, the arguments are reversed compared to the rename in the rest
|
|
598
|
+
# of the world.
|
|
599
|
+
Puppet::Util::Windows::File.replace_file(file, tempfile.path)
|
|
600
|
+
rescue Puppet::Util::Windows::Error => e
|
|
601
|
+
# This might race, but there are enough possible cases that there
|
|
602
|
+
# isn't a good, solid "better" way to do this, and the next call
|
|
603
|
+
# should fail in the same way anyhow.
|
|
604
|
+
raise if have_retried or File.exist?(file)
|
|
605
|
+
have_retried = true
|
|
606
|
+
|
|
607
|
+
# OK, so, we can't replace a file that doesn't exist, so let us put
|
|
608
|
+
# one in place and set the permissions. Then we can retry and the
|
|
609
|
+
# magic makes this all work.
|
|
610
|
+
#
|
|
611
|
+
# This is the least-worst option for handling Windows, as far as we
|
|
612
|
+
# can determine.
|
|
613
|
+
File.open(file, 'a') do |fh|
|
|
614
|
+
# this space deliberately left empty for auto-close behaviour,
|
|
615
|
+
# append mode, and not actually changing any of the content.
|
|
616
|
+
end
|
|
617
|
+
|
|
618
|
+
# Set the permissions to what we want.
|
|
619
|
+
Puppet::Util::Windows::Security.set_mode(default_mode, file.to_s)
|
|
620
|
+
|
|
621
|
+
# ...and finally retry the operation.
|
|
622
|
+
retry
|
|
623
|
+
end
|
|
624
|
+
else
|
|
625
|
+
File.rename(tempfile.path, file)
|
|
626
|
+
end
|
|
627
|
+
|
|
628
|
+
# Ideally, we would now fsync the directory as well, but Ruby doesn't
|
|
629
|
+
# have support for that, and it doesn't matter /that/ much...
|
|
630
|
+
|
|
631
|
+
# Return something true, and possibly useful.
|
|
632
|
+
file
|
|
633
|
+
end
|
|
634
|
+
module_function :replace_file
|
|
635
|
+
end
|
|
636
|
+
end
|
|
637
|
+
|
|
638
|
+
require 'puppet/util/errors'
|
|
639
|
+
require 'puppet/util/methodhelper'
|
|
640
|
+
require 'puppet/util/metaid'
|
|
641
|
+
require 'puppet/util/classgen'
|
|
642
|
+
require 'puppet/util/docs'
|
|
643
|
+
require 'puppet/util/execution'
|
|
644
|
+
require 'puppet/util/logging'
|
|
645
|
+
require 'puppet/util/package'
|
|
646
|
+
require 'puppet/util/warnings'
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# The version method and constant are isolated in puppet/version.rb so that a
|
|
2
|
+
# simple `require 'puppet/version'` allows a rubygems gemspec or bundler
|
|
3
|
+
# Gemfile to get the Puppet version of the gem install.
|
|
4
|
+
#
|
|
5
|
+
# The version is programatically settable because we want to allow the
|
|
6
|
+
# Raketasks and such to set the version based on the output of `git describe`
|
|
7
|
+
#
|
|
8
|
+
module Puppet
|
|
9
|
+
PUPPETVERSION = '2.7.20'
|
|
10
|
+
|
|
11
|
+
def self.version
|
|
12
|
+
@puppet_version || PUPPETVERSION
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def self.version=(version)
|
|
16
|
+
@puppet_version = version
|
|
17
|
+
end
|
|
18
|
+
end
|