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,550 @@
|
|
|
1
|
+
require 'puppet/external/dot'
|
|
2
|
+
require 'puppet/relationship'
|
|
3
|
+
require 'set'
|
|
4
|
+
|
|
5
|
+
# A hopefully-faster graph class to replace the use of GRATR.
|
|
6
|
+
class Puppet::SimpleGraph
|
|
7
|
+
#
|
|
8
|
+
# All public methods of this class must maintain (assume ^ ensure) the following invariants, where "=~=" means
|
|
9
|
+
# equiv. up to order:
|
|
10
|
+
#
|
|
11
|
+
# @in_to.keys =~= @out_to.keys =~= all vertices
|
|
12
|
+
# @in_to.values.collect { |x| x.values }.flatten =~= @out_from.values.collect { |x| x.values }.flatten =~= all edges
|
|
13
|
+
# @in_to[v1][v2] =~= @out_from[v2][v1] =~= all edges from v1 to v2
|
|
14
|
+
# @in_to [v].keys =~= vertices with edges leading to v
|
|
15
|
+
# @out_from[v].keys =~= vertices with edges leading from v
|
|
16
|
+
# no operation may shed reference loops (for gc)
|
|
17
|
+
# recursive operation must scale with the depth of the spanning trees, or better (e.g. no recursion over the set
|
|
18
|
+
# of all vertices, etc.)
|
|
19
|
+
#
|
|
20
|
+
# This class is intended to be used with DAGs. However, if the
|
|
21
|
+
# graph has a cycle, it will not cause non-termination of any of the
|
|
22
|
+
# algorithms.
|
|
23
|
+
#
|
|
24
|
+
def initialize
|
|
25
|
+
@in_to = {}
|
|
26
|
+
@out_from = {}
|
|
27
|
+
@upstream_from = {}
|
|
28
|
+
@downstream_from = {}
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Clear our graph.
|
|
32
|
+
def clear
|
|
33
|
+
@in_to.clear
|
|
34
|
+
@out_from.clear
|
|
35
|
+
@upstream_from.clear
|
|
36
|
+
@downstream_from.clear
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Which resources depend upon the given resource.
|
|
40
|
+
def dependencies(resource)
|
|
41
|
+
vertex?(resource) ? upstream_from_vertex(resource).keys : []
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def dependents(resource)
|
|
45
|
+
vertex?(resource) ? downstream_from_vertex(resource).keys : []
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Whether our graph is directed. Always true. Used to produce dot files.
|
|
49
|
+
def directed?
|
|
50
|
+
true
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Determine all of the leaf nodes below a given vertex.
|
|
54
|
+
def leaves(vertex, direction = :out)
|
|
55
|
+
tree_from_vertex(vertex, direction).keys.find_all { |c| adjacent(c, :direction => direction).empty? }
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Collect all of the edges that the passed events match. Returns
|
|
59
|
+
# an array of edges.
|
|
60
|
+
def matching_edges(event, base = nil)
|
|
61
|
+
source = base || event.resource
|
|
62
|
+
|
|
63
|
+
unless vertex?(source)
|
|
64
|
+
Puppet.warning "Got an event from invalid vertex #{source.ref}"
|
|
65
|
+
return []
|
|
66
|
+
end
|
|
67
|
+
# Get all of the edges that this vertex should forward events
|
|
68
|
+
# to, which is the same thing as saying all edges directly below
|
|
69
|
+
# This vertex in the graph.
|
|
70
|
+
@out_from[source].values.flatten.find_all { |edge| edge.match?(event.name) }
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Return a reversed version of this graph.
|
|
74
|
+
def reversal
|
|
75
|
+
result = self.class.new
|
|
76
|
+
vertices.each { |vertex| result.add_vertex(vertex) }
|
|
77
|
+
edges.each do |edge|
|
|
78
|
+
result.add_edge edge.class.new(edge.target, edge.source, edge.label)
|
|
79
|
+
end
|
|
80
|
+
result
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Return the size of the graph.
|
|
84
|
+
def size
|
|
85
|
+
vertices.size
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def to_a
|
|
89
|
+
vertices
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# This is a simple implementation of Tarjan's algorithm to find strongly
|
|
93
|
+
# connected components in the graph; this is a fairly ugly implementation,
|
|
94
|
+
# because I can't just decorate the vertices themselves.
|
|
95
|
+
#
|
|
96
|
+
# This method has an unhealthy relationship with the find_cycles_in_graph
|
|
97
|
+
# method below, which contains the knowledge of how the state object is
|
|
98
|
+
# maintained.
|
|
99
|
+
def tarjan(root, s)
|
|
100
|
+
# initialize the recursion stack we use to work around the nasty lack of a
|
|
101
|
+
# decent Ruby stack.
|
|
102
|
+
recur = [{ :node => root }]
|
|
103
|
+
|
|
104
|
+
while not recur.empty? do
|
|
105
|
+
frame = recur.last
|
|
106
|
+
vertex = frame[:node]
|
|
107
|
+
|
|
108
|
+
case frame[:step]
|
|
109
|
+
when nil then
|
|
110
|
+
s[:index][vertex] = s[:number]
|
|
111
|
+
s[:lowlink][vertex] = s[:number]
|
|
112
|
+
s[:number] = s[:number] + 1
|
|
113
|
+
|
|
114
|
+
s[:stack].push(vertex)
|
|
115
|
+
s[:seen][vertex] = true
|
|
116
|
+
|
|
117
|
+
frame[:children] = adjacent(vertex)
|
|
118
|
+
frame[:step] = :children
|
|
119
|
+
|
|
120
|
+
when :children then
|
|
121
|
+
if frame[:children].length > 0 then
|
|
122
|
+
child = frame[:children].shift
|
|
123
|
+
if ! s[:index][child] then
|
|
124
|
+
# Never seen, need to recurse.
|
|
125
|
+
frame[:step] = :after_recursion
|
|
126
|
+
frame[:child] = child
|
|
127
|
+
recur.push({ :node => child })
|
|
128
|
+
elsif s[:seen][child] then
|
|
129
|
+
s[:lowlink][vertex] = [s[:lowlink][vertex], s[:index][child]].min
|
|
130
|
+
end
|
|
131
|
+
else
|
|
132
|
+
if s[:lowlink][vertex] == s[:index][vertex] then
|
|
133
|
+
this_scc = []
|
|
134
|
+
begin
|
|
135
|
+
top = s[:stack].pop
|
|
136
|
+
s[:seen][top] = false
|
|
137
|
+
this_scc << top
|
|
138
|
+
end until top == vertex
|
|
139
|
+
s[:scc] << this_scc
|
|
140
|
+
end
|
|
141
|
+
recur.pop # done with this node, finally.
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
when :after_recursion then
|
|
145
|
+
s[:lowlink][vertex] = [s[:lowlink][vertex], s[:lowlink][frame[:child]]].min
|
|
146
|
+
frame[:step] = :children
|
|
147
|
+
|
|
148
|
+
else
|
|
149
|
+
fail "#{frame[:step]} is an unknown step"
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
# Find all cycles in the graph by detecting all the strongly connected
|
|
155
|
+
# components, then eliminating everything with a size of one as
|
|
156
|
+
# uninteresting - which it is, because it can't be a cycle. :)
|
|
157
|
+
#
|
|
158
|
+
# This has an unhealthy relationship with the 'tarjan' method above, which
|
|
159
|
+
# it uses to implement the detection of strongly connected components.
|
|
160
|
+
def find_cycles_in_graph
|
|
161
|
+
state = {
|
|
162
|
+
:number => 0, :index => {}, :lowlink => {}, :scc => [],
|
|
163
|
+
:stack => [], :seen => {}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
# we usually have a disconnected graph, must walk all possible roots
|
|
167
|
+
vertices.each do |vertex|
|
|
168
|
+
if ! state[:index][vertex] then
|
|
169
|
+
tarjan vertex, state
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# To provide consistent results to the user, given that a hash is never
|
|
174
|
+
# assured to return the same order, and given our graph processing is
|
|
175
|
+
# based on hash tables, we need to sort the cycles internally, as well as
|
|
176
|
+
# the set of cycles.
|
|
177
|
+
#
|
|
178
|
+
# Given we are in a failure state here, any extra cost is more or less
|
|
179
|
+
# irrelevant compared to the cost of a fix - which is on a human
|
|
180
|
+
# time-scale.
|
|
181
|
+
state[:scc].select { |c| c.length > 1 }.map {|x| x.sort }.sort
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
# Perform a BFS on the sub graph representing the cycle, with a view to
|
|
185
|
+
# generating a sufficient set of paths to report the cycle meaningfully, and
|
|
186
|
+
# ideally usefully, for the end user.
|
|
187
|
+
#
|
|
188
|
+
# BFS is preferred because it will generally report the shortest paths
|
|
189
|
+
# through the graph first, which are more likely to be interesting to the
|
|
190
|
+
# user. I think; it would be interesting to verify that. --daniel 2011-01-23
|
|
191
|
+
def paths_in_cycle(cycle, max_paths = 1)
|
|
192
|
+
raise ArgumentError, "negative or zero max_paths" if max_paths < 1
|
|
193
|
+
|
|
194
|
+
# Calculate our filtered outbound vertex lists...
|
|
195
|
+
adj = {}
|
|
196
|
+
cycle.each do |vertex|
|
|
197
|
+
adj[vertex] = adjacent(vertex).select{|s| cycle.member? s}
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
found = []
|
|
201
|
+
|
|
202
|
+
# frame struct is vertex, [path]
|
|
203
|
+
stack = [[cycle.first, []]]
|
|
204
|
+
while frame = stack.shift do
|
|
205
|
+
if frame[1].member?(frame[0]) then
|
|
206
|
+
found << frame[1] + [frame[0]]
|
|
207
|
+
break if found.length >= max_paths
|
|
208
|
+
else
|
|
209
|
+
adj[frame[0]].each do |to|
|
|
210
|
+
stack.push [to, frame[1] + [frame[0]]]
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
return found.sort
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
def report_cycles_in_graph
|
|
219
|
+
cycles = find_cycles_in_graph
|
|
220
|
+
n = cycles.length # where is "pluralize"? --daniel 2011-01-22
|
|
221
|
+
return if n == 0
|
|
222
|
+
s = n == 1 ? '' : 's'
|
|
223
|
+
|
|
224
|
+
message = "Found #{n} dependency cycle#{s}:\n"
|
|
225
|
+
cycles.each do |cycle|
|
|
226
|
+
paths = paths_in_cycle(cycle)
|
|
227
|
+
message += paths.map{ |path| '(' + path.join(" => ") + ')'}.join("\n") + "\n"
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
if Puppet[:graph] then
|
|
231
|
+
filename = write_cycles_to_graph(cycles)
|
|
232
|
+
message += "Cycle graph written to #{filename}."
|
|
233
|
+
else
|
|
234
|
+
message += "Try the '--graph' option and opening the "
|
|
235
|
+
message += "resulting '.dot' file in OmniGraffle or GraphViz"
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
raise Puppet::Error, message
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
def write_cycles_to_graph(cycles)
|
|
242
|
+
# This does not use the DOT graph library, just writes the content
|
|
243
|
+
# directly. Given the complexity of this, there didn't seem much point
|
|
244
|
+
# using a heavy library to generate exactly the same content. --daniel 2011-01-27
|
|
245
|
+
Puppet.settings.use(:graphing)
|
|
246
|
+
|
|
247
|
+
graph = ["digraph Resource_Cycles {"]
|
|
248
|
+
graph << ' label = "Resource Cycles"'
|
|
249
|
+
|
|
250
|
+
cycles.each do |cycle|
|
|
251
|
+
paths_in_cycle(cycle, 10).each do |path|
|
|
252
|
+
graph << path.map { |v| '"' + v.to_s.gsub(/"/, '\\"') + '"' }.join(" -> ")
|
|
253
|
+
end
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
graph << '}'
|
|
257
|
+
|
|
258
|
+
filename = File.join(Puppet[:graphdir], "cycles.dot")
|
|
259
|
+
File.open(filename, "w") { |f| f.puts graph }
|
|
260
|
+
return filename
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
# Add a new vertex to the graph.
|
|
264
|
+
def add_vertex(vertex)
|
|
265
|
+
@in_to[vertex] ||= {}
|
|
266
|
+
@out_from[vertex] ||= {}
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
# Remove a vertex from the graph.
|
|
270
|
+
def remove_vertex!(v)
|
|
271
|
+
return unless vertex?(v)
|
|
272
|
+
@upstream_from.clear
|
|
273
|
+
@downstream_from.clear
|
|
274
|
+
(@in_to[v].values+@out_from[v].values).flatten.each { |e| remove_edge!(e) }
|
|
275
|
+
@in_to.delete(v)
|
|
276
|
+
@out_from.delete(v)
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
# Test whether a given vertex is in the graph.
|
|
280
|
+
def vertex?(v)
|
|
281
|
+
@in_to.include?(v)
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
# Return a list of all vertices.
|
|
285
|
+
def vertices
|
|
286
|
+
@in_to.keys
|
|
287
|
+
end
|
|
288
|
+
|
|
289
|
+
# Add a new edge. The graph user has to create the edge instance,
|
|
290
|
+
# since they have to specify what kind of edge it is.
|
|
291
|
+
def add_edge(e,*a)
|
|
292
|
+
return add_relationship(e,*a) unless a.empty?
|
|
293
|
+
@upstream_from.clear
|
|
294
|
+
@downstream_from.clear
|
|
295
|
+
add_vertex(e.source)
|
|
296
|
+
add_vertex(e.target)
|
|
297
|
+
@in_to[ e.target][e.source] ||= []; @in_to[ e.target][e.source] |= [e]
|
|
298
|
+
@out_from[e.source][e.target] ||= []; @out_from[e.source][e.target] |= [e]
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
def add_relationship(source, target, label = nil)
|
|
302
|
+
add_edge Puppet::Relationship.new(source, target, label)
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
# Find all matching edges.
|
|
306
|
+
def edges_between(source, target)
|
|
307
|
+
(@out_from[source] || {})[target] || []
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
# Is there an edge between the two vertices?
|
|
311
|
+
def edge?(source, target)
|
|
312
|
+
vertex?(source) and vertex?(target) and @out_from[source][target]
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
def edges
|
|
316
|
+
@in_to.values.collect { |x| x.values }.flatten
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
def each_edge
|
|
320
|
+
@in_to.each { |t,ns| ns.each { |s,es| es.each { |e| yield e }}}
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
# Remove an edge from our graph.
|
|
324
|
+
def remove_edge!(e)
|
|
325
|
+
if edge?(e.source,e.target)
|
|
326
|
+
@upstream_from.clear
|
|
327
|
+
@downstream_from.clear
|
|
328
|
+
@in_to [e.target].delete e.source if (@in_to [e.target][e.source] -= [e]).empty?
|
|
329
|
+
@out_from[e.source].delete e.target if (@out_from[e.source][e.target] -= [e]).empty?
|
|
330
|
+
end
|
|
331
|
+
end
|
|
332
|
+
|
|
333
|
+
# Find adjacent edges.
|
|
334
|
+
def adjacent(v, options = {})
|
|
335
|
+
return [] unless ns = (options[:direction] == :in) ? @in_to[v] : @out_from[v]
|
|
336
|
+
(options[:type] == :edges) ? ns.values.flatten : ns.keys
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
# Just walk the tree and pass each edge.
|
|
340
|
+
def walk(source, direction)
|
|
341
|
+
# Use an iterative, breadth-first traversal of the graph. One could do
|
|
342
|
+
# this recursively, but Ruby's slow function calls and even slower
|
|
343
|
+
# recursion make the shorter, recursive algorithm cost-prohibitive.
|
|
344
|
+
stack = [source]
|
|
345
|
+
seen = Set.new
|
|
346
|
+
until stack.empty?
|
|
347
|
+
node = stack.shift
|
|
348
|
+
next if seen.member? node
|
|
349
|
+
connected = adjacent(node, :direction => direction)
|
|
350
|
+
connected.each do |target|
|
|
351
|
+
yield node, target
|
|
352
|
+
end
|
|
353
|
+
stack.concat(connected)
|
|
354
|
+
seen << node
|
|
355
|
+
end
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
# A different way of walking a tree, and a much faster way than the
|
|
359
|
+
# one that comes with GRATR.
|
|
360
|
+
def tree_from_vertex(start, direction = :out)
|
|
361
|
+
predecessor={}
|
|
362
|
+
walk(start, direction) do |parent, child|
|
|
363
|
+
predecessor[child] = parent
|
|
364
|
+
end
|
|
365
|
+
predecessor
|
|
366
|
+
end
|
|
367
|
+
|
|
368
|
+
def downstream_from_vertex(v)
|
|
369
|
+
return @downstream_from[v] if @downstream_from[v]
|
|
370
|
+
result = @downstream_from[v] = {}
|
|
371
|
+
@out_from[v].keys.each do |node|
|
|
372
|
+
result[node] = 1
|
|
373
|
+
result.update(downstream_from_vertex(node))
|
|
374
|
+
end
|
|
375
|
+
result
|
|
376
|
+
end
|
|
377
|
+
|
|
378
|
+
def direct_dependents_of(v)
|
|
379
|
+
(@out_from[v] || {}).keys
|
|
380
|
+
end
|
|
381
|
+
|
|
382
|
+
def upstream_from_vertex(v)
|
|
383
|
+
return @upstream_from[v] if @upstream_from[v]
|
|
384
|
+
result = @upstream_from[v] = {}
|
|
385
|
+
@in_to[v].keys.each do |node|
|
|
386
|
+
result[node] = 1
|
|
387
|
+
result.update(upstream_from_vertex(node))
|
|
388
|
+
end
|
|
389
|
+
result
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
def direct_dependencies_of(v)
|
|
393
|
+
(@in_to[v] || {}).keys
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
# Return an array of the edge-sets between a series of n+1 vertices (f=v0,v1,v2...t=vn)
|
|
397
|
+
# connecting the two given verticies. The ith edge set is an array containing all the
|
|
398
|
+
# edges between v(i) and v(i+1); these are (by definition) never empty.
|
|
399
|
+
#
|
|
400
|
+
# * if f == t, the list is empty
|
|
401
|
+
# * if they are adjacent the result is an array consisting of
|
|
402
|
+
# a single array (the edges from f to t)
|
|
403
|
+
# * and so on by induction on a vertex m between them
|
|
404
|
+
# * if there is no path from f to t, the result is nil
|
|
405
|
+
#
|
|
406
|
+
# This implementation is not particularly efficient; it's used in testing where clarity
|
|
407
|
+
# is more important than last-mile efficiency.
|
|
408
|
+
#
|
|
409
|
+
def path_between(f,t)
|
|
410
|
+
if f==t
|
|
411
|
+
[]
|
|
412
|
+
elsif direct_dependents_of(f).include?(t)
|
|
413
|
+
[edges_between(f,t)]
|
|
414
|
+
elsif dependents(f).include?(t)
|
|
415
|
+
m = (dependents(f) & direct_dependencies_of(t)).first
|
|
416
|
+
path_between(f,m) + path_between(m,t)
|
|
417
|
+
else
|
|
418
|
+
nil
|
|
419
|
+
end
|
|
420
|
+
end
|
|
421
|
+
|
|
422
|
+
# LAK:FIXME This is just a paste of the GRATR code with slight modifications.
|
|
423
|
+
|
|
424
|
+
# Return a DOT::DOTDigraph for directed graphs or a DOT::DOTSubgraph for an
|
|
425
|
+
# undirected Graph. _params_ can contain any graph property specified in
|
|
426
|
+
# rdot.rb. If an edge or vertex label is a kind of Hash then the keys
|
|
427
|
+
# which match +dot+ properties will be used as well.
|
|
428
|
+
def to_dot_graph (params = {})
|
|
429
|
+
params['name'] ||= self.class.name.gsub(/:/,'_')
|
|
430
|
+
fontsize = params['fontsize'] ? params['fontsize'] : '8'
|
|
431
|
+
graph = (directed? ? DOT::DOTDigraph : DOT::DOTSubgraph).new(params)
|
|
432
|
+
edge_klass = directed? ? DOT::DOTDirectedEdge : DOT::DOTEdge
|
|
433
|
+
vertices.each do |v|
|
|
434
|
+
name = v.to_s
|
|
435
|
+
params = {'name' => '"'+name+'"',
|
|
436
|
+
'fontsize' => fontsize,
|
|
437
|
+
'label' => name}
|
|
438
|
+
v_label = v.to_s
|
|
439
|
+
params.merge!(v_label) if v_label and v_label.kind_of? Hash
|
|
440
|
+
graph << DOT::DOTNode.new(params)
|
|
441
|
+
end
|
|
442
|
+
edges.each do |e|
|
|
443
|
+
params = {'from' => '"'+ e.source.to_s + '"',
|
|
444
|
+
'to' => '"'+ e.target.to_s + '"',
|
|
445
|
+
'fontsize' => fontsize }
|
|
446
|
+
e_label = e.to_s
|
|
447
|
+
params.merge!(e_label) if e_label and e_label.kind_of? Hash
|
|
448
|
+
graph << edge_klass.new(params)
|
|
449
|
+
end
|
|
450
|
+
graph
|
|
451
|
+
end
|
|
452
|
+
|
|
453
|
+
# Output the dot format as a string
|
|
454
|
+
def to_dot (params={}) to_dot_graph(params).to_s; end
|
|
455
|
+
|
|
456
|
+
# Call +dotty+ for the graph which is written to the file 'graph.dot'
|
|
457
|
+
# in the # current directory.
|
|
458
|
+
def dotty (params = {}, dotfile = 'graph.dot')
|
|
459
|
+
File.open(dotfile, 'w') {|f| f << to_dot(params) }
|
|
460
|
+
system('dotty', dotfile)
|
|
461
|
+
end
|
|
462
|
+
|
|
463
|
+
# Produce the graph files if requested.
|
|
464
|
+
def write_graph(name)
|
|
465
|
+
return unless Puppet[:graph]
|
|
466
|
+
|
|
467
|
+
Puppet.settings.use(:graphing)
|
|
468
|
+
|
|
469
|
+
file = File.join(Puppet[:graphdir], "#{name}.dot")
|
|
470
|
+
File.open(file, "w") { |f|
|
|
471
|
+
f.puts to_dot("name" => name.to_s.capitalize)
|
|
472
|
+
}
|
|
473
|
+
end
|
|
474
|
+
|
|
475
|
+
# This flag may be set to true to use the new YAML serialzation
|
|
476
|
+
# format (where @vertices is a simple list of vertices rather than a
|
|
477
|
+
# list of VertexWrapper objects). Deserialization supports both
|
|
478
|
+
# formats regardless of the setting of this flag.
|
|
479
|
+
class << self
|
|
480
|
+
attr_accessor :use_new_yaml_format
|
|
481
|
+
end
|
|
482
|
+
self.use_new_yaml_format = false
|
|
483
|
+
|
|
484
|
+
# Stub class to allow graphs to be represented in YAML using the old
|
|
485
|
+
# (version 2.6) format.
|
|
486
|
+
class VertexWrapper
|
|
487
|
+
attr_reader :vertex, :adjacencies
|
|
488
|
+
def initialize(vertex, adjacencies)
|
|
489
|
+
@vertex = vertex
|
|
490
|
+
@adjacencies = adjacencies
|
|
491
|
+
end
|
|
492
|
+
|
|
493
|
+
def inspect
|
|
494
|
+
{ :@adjacencies => @adjacencies, :@vertex => @vertex.to_s }.inspect
|
|
495
|
+
end
|
|
496
|
+
end
|
|
497
|
+
|
|
498
|
+
# instance_variable_get is used by Object.to_zaml to get instance
|
|
499
|
+
# variables. Override it so that we can simulate the presence of
|
|
500
|
+
# instance variables @edges and @vertices for serialization.
|
|
501
|
+
def instance_variable_get(v)
|
|
502
|
+
case v.to_s
|
|
503
|
+
when '@edges' then
|
|
504
|
+
edges
|
|
505
|
+
when '@vertices' then
|
|
506
|
+
if self.class.use_new_yaml_format
|
|
507
|
+
vertices
|
|
508
|
+
else
|
|
509
|
+
result = {}
|
|
510
|
+
vertices.each do |vertex|
|
|
511
|
+
adjacencies = {}
|
|
512
|
+
[:in, :out].each do |direction|
|
|
513
|
+
adjacencies[direction] = {}
|
|
514
|
+
adjacent(vertex, :direction => direction, :type => :edges).each do |edge|
|
|
515
|
+
other_vertex = direction == :in ? edge.source : edge.target
|
|
516
|
+
(adjacencies[direction][other_vertex] ||= Set.new).add(edge)
|
|
517
|
+
end
|
|
518
|
+
end
|
|
519
|
+
result[vertex] = Puppet::SimpleGraph::VertexWrapper.new(vertex, adjacencies)
|
|
520
|
+
end
|
|
521
|
+
result
|
|
522
|
+
end
|
|
523
|
+
else
|
|
524
|
+
super(v)
|
|
525
|
+
end
|
|
526
|
+
end
|
|
527
|
+
|
|
528
|
+
def to_yaml_properties
|
|
529
|
+
other_vars = instance_variables.
|
|
530
|
+
map {|v| v.to_s}.
|
|
531
|
+
reject { |v| %w{@in_to @out_from @upstream_from @downstream_from}.include?(v) }
|
|
532
|
+
|
|
533
|
+
(other_vars + %w{@vertices @edges}).sort.uniq
|
|
534
|
+
end
|
|
535
|
+
|
|
536
|
+
def yaml_initialize(tag, var)
|
|
537
|
+
initialize()
|
|
538
|
+
vertices = var.delete('vertices')
|
|
539
|
+
edges = var.delete('edges')
|
|
540
|
+
if vertices.is_a?(Hash)
|
|
541
|
+
# Support old (2.6) format
|
|
542
|
+
vertices = vertices.keys
|
|
543
|
+
end
|
|
544
|
+
vertices.each { |v| add_vertex(v) }
|
|
545
|
+
edges.each { |e| add_edge(e) }
|
|
546
|
+
var.each do |varname, value|
|
|
547
|
+
instance_variable_set("@#{varname}", value)
|
|
548
|
+
end
|
|
549
|
+
end
|
|
550
|
+
end
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
require 'openssl/digest'
|
|
2
|
+
require 'puppet/ssl'
|
|
3
|
+
|
|
4
|
+
# The base class for wrapping SSL instances.
|
|
5
|
+
class Puppet::SSL::Base
|
|
6
|
+
# For now, use the YAML separator.
|
|
7
|
+
SEPARATOR = "\n---\n"
|
|
8
|
+
|
|
9
|
+
# Only allow printing ascii characters, excluding /
|
|
10
|
+
VALID_CERTNAME = /\A[ -.0-~]+\Z/
|
|
11
|
+
|
|
12
|
+
def self.from_multiple_s(text)
|
|
13
|
+
text.split(SEPARATOR).collect { |inst| from_s(inst) }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.to_multiple_s(instances)
|
|
17
|
+
instances.collect { |inst| inst.to_s }.join(SEPARATOR)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.wraps(klass)
|
|
21
|
+
@wrapped_class = klass
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.wrapped_class
|
|
25
|
+
raise(Puppet::DevError, "#{self} has not declared what class it wraps") unless defined?(@wrapped_class)
|
|
26
|
+
@wrapped_class
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.validate_certname(name)
|
|
30
|
+
raise "Certname #{name.inspect} must not contain unprintable or non-ASCII characters" unless name =~ VALID_CERTNAME
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
attr_accessor :name, :content
|
|
34
|
+
|
|
35
|
+
# Is this file for the CA?
|
|
36
|
+
def ca?
|
|
37
|
+
name == Puppet::SSL::Host.ca_name
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def generate
|
|
41
|
+
raise Puppet::DevError, "#{self.class} did not override 'generate'"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def initialize(name)
|
|
45
|
+
@name = name.to_s.downcase
|
|
46
|
+
self.class.validate_certname(@name)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Read content from disk appropriately.
|
|
50
|
+
def read(path)
|
|
51
|
+
@content = wrapped_class.new(File.read(path))
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Convert our thing to pem.
|
|
55
|
+
def to_s
|
|
56
|
+
return "" unless content
|
|
57
|
+
content.to_pem
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Provide the full text of the thing we're dealing with.
|
|
61
|
+
def to_text
|
|
62
|
+
return "" unless content
|
|
63
|
+
content.to_text
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def fingerprint(md = :MD5)
|
|
67
|
+
# ruby 1.8.x openssl digest constants are string
|
|
68
|
+
# but in 1.9.x they are symbols
|
|
69
|
+
mds = md.to_s.upcase
|
|
70
|
+
if OpenSSL::Digest.constants.include?(mds)
|
|
71
|
+
md = mds
|
|
72
|
+
elsif OpenSSL::Digest.constants.include?(mds.to_sym)
|
|
73
|
+
md = mds.to_sym
|
|
74
|
+
else
|
|
75
|
+
raise ArgumentError, "#{md} is not a valid digest algorithm for fingerprinting certificate #{name}"
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
OpenSSL::Digest.const_get(md).hexdigest(content.to_der).scan(/../).join(':').upcase
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
private
|
|
82
|
+
|
|
83
|
+
def wrapped_class
|
|
84
|
+
self.class.wrapped_class
|
|
85
|
+
end
|
|
86
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require 'puppet/ssl/base'
|
|
2
|
+
|
|
3
|
+
# Manage certificates themselves. This class has no
|
|
4
|
+
# 'generate' method because the CA is responsible
|
|
5
|
+
# for turning CSRs into certificates; we can only
|
|
6
|
+
# retrieve them from the CA (or not, as is often
|
|
7
|
+
# the case).
|
|
8
|
+
class Puppet::SSL::Certificate < Puppet::SSL::Base
|
|
9
|
+
# This is defined from the base class
|
|
10
|
+
wraps OpenSSL::X509::Certificate
|
|
11
|
+
|
|
12
|
+
extend Puppet::Indirector
|
|
13
|
+
indirects :certificate, :terminus_class => :file
|
|
14
|
+
|
|
15
|
+
# Convert a string into an instance.
|
|
16
|
+
def self.from_s(string)
|
|
17
|
+
instance = wrapped_class.new(string)
|
|
18
|
+
name = instance.subject.to_s.sub(/\/CN=/i, '').downcase
|
|
19
|
+
result = new(name)
|
|
20
|
+
result.content = instance
|
|
21
|
+
result
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Because of how the format handler class is included, this
|
|
25
|
+
# can't be in the base class.
|
|
26
|
+
def self.supported_formats
|
|
27
|
+
[:s]
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def subject_alt_names
|
|
31
|
+
alts = content.extensions.find{|ext| ext.oid == "subjectAltName"}
|
|
32
|
+
return [] unless alts
|
|
33
|
+
alts.value.split(/\s*,\s*/)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def expiration
|
|
37
|
+
return nil unless content
|
|
38
|
+
content.not_after
|
|
39
|
+
end
|
|
40
|
+
end
|