bolt 0.0.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of bolt might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.gitignore +33 -0
- data/.gitmodules +12 -0
- data/.rspec +2 -0
- data/.rubocop.yml +61 -0
- data/.travis.yml +18 -0
- data/Gemfile +9 -0
- data/INSTALL.md +70 -0
- data/LICENSE +201 -0
- data/README.md +372 -0
- data/Rakefile +27 -0
- data/Vagrantfile +13 -0
- data/appveyor.yml +29 -0
- data/bolt.gemspec +50 -0
- data/docs/writing_tasks_and_plans.pdf +0 -0
- data/exe/bolt +15 -0
- data/lib/bolt.rb +13 -0
- data/lib/bolt/cli.rb +409 -0
- data/lib/bolt/executor.rb +71 -0
- data/lib/bolt/node.rb +79 -0
- data/lib/bolt/node/formatter.rb +15 -0
- data/lib/bolt/node/orch.rb +118 -0
- data/lib/bolt/node/result.rb +110 -0
- data/lib/bolt/node/ssh.rb +145 -0
- data/lib/bolt/node/winrm.rb +237 -0
- data/lib/bolt/node_uri.rb +42 -0
- data/lib/bolt/result.rb +139 -0
- data/lib/bolt/version.rb +3 -0
- data/metadata.json +13 -0
- data/tasks/init.json +3 -0
- data/tasks/init.rb +44 -0
- data/ux/bolt-CLI-spec.md +186 -0
- data/vendored/facter/lib/facter.rb +261 -0
- data/vendored/facter/lib/facter/Cfkey.rb +42 -0
- data/vendored/facter/lib/facter/application.rb +206 -0
- data/vendored/facter/lib/facter/architecture.rb +50 -0
- data/vendored/facter/lib/facter/augeasversion.rb +28 -0
- data/vendored/facter/lib/facter/blockdevices.rb +105 -0
- data/vendored/facter/lib/facter/core/aggregate.rb +220 -0
- data/vendored/facter/lib/facter/core/directed_graph.rb +46 -0
- data/vendored/facter/lib/facter/core/execution.rb +123 -0
- data/vendored/facter/lib/facter/core/execution/base.rb +81 -0
- data/vendored/facter/lib/facter/core/execution/posix.rb +50 -0
- data/vendored/facter/lib/facter/core/execution/windows.rb +57 -0
- data/vendored/facter/lib/facter/core/logging.rb +197 -0
- data/vendored/facter/lib/facter/core/resolvable.rb +94 -0
- data/vendored/facter/lib/facter/core/suitable.rb +113 -0
- data/vendored/facter/lib/facter/dhcp_servers.rb +45 -0
- data/vendored/facter/lib/facter/domain.rb +99 -0
- data/vendored/facter/lib/facter/ec2.rb +68 -0
- data/vendored/facter/lib/facter/ec2/rest.rb +137 -0
- data/vendored/facter/lib/facter/facterversion.rb +15 -0
- data/vendored/facter/lib/facter/filesystems.rb +45 -0
- data/vendored/facter/lib/facter/fqdn.rb +24 -0
- data/vendored/facter/lib/facter/gce.rb +16 -0
- data/vendored/facter/lib/facter/gce/metadata.rb +87 -0
- data/vendored/facter/lib/facter/gid.rb +25 -0
- data/vendored/facter/lib/facter/hardwareisa.rb +20 -0
- data/vendored/facter/lib/facter/hardwaremodel.rb +67 -0
- data/vendored/facter/lib/facter/hostname.rb +31 -0
- data/vendored/facter/lib/facter/id.rb +21 -0
- data/vendored/facter/lib/facter/interfaces.rb +58 -0
- data/vendored/facter/lib/facter/ipaddress.rb +169 -0
- data/vendored/facter/lib/facter/ipaddress6.rb +82 -0
- data/vendored/facter/lib/facter/iphostnumber.rb +29 -0
- data/vendored/facter/lib/facter/kernel.rb +22 -0
- data/vendored/facter/lib/facter/kernelmajversion.rb +23 -0
- data/vendored/facter/lib/facter/kernelrelease.rb +45 -0
- data/vendored/facter/lib/facter/kernelversion.rb +22 -0
- data/vendored/facter/lib/facter/ldom.rb +51 -0
- data/vendored/facter/lib/facter/lsbdistcodename.rb +20 -0
- data/vendored/facter/lib/facter/lsbdistdescription.rb +21 -0
- data/vendored/facter/lib/facter/lsbdistid.rb +20 -0
- data/vendored/facter/lib/facter/lsbdistrelease.rb +20 -0
- data/vendored/facter/lib/facter/lsbmajdistrelease.rb +22 -0
- data/vendored/facter/lib/facter/lsbminordistrelease.rb +22 -0
- data/vendored/facter/lib/facter/lsbrelease.rb +20 -0
- data/vendored/facter/lib/facter/macaddress.rb +99 -0
- data/vendored/facter/lib/facter/macosx.rb +56 -0
- data/vendored/facter/lib/facter/manufacturer.rb +68 -0
- data/vendored/facter/lib/facter/memory.rb +168 -0
- data/vendored/facter/lib/facter/netmask.rb +43 -0
- data/vendored/facter/lib/facter/network.rb +20 -0
- data/vendored/facter/lib/facter/operatingsystem.rb +24 -0
- data/vendored/facter/lib/facter/operatingsystem/base.rb +61 -0
- data/vendored/facter/lib/facter/operatingsystem/cumuluslinux.rb +27 -0
- data/vendored/facter/lib/facter/operatingsystem/implementation.rb +33 -0
- data/vendored/facter/lib/facter/operatingsystem/linux.rb +484 -0
- data/vendored/facter/lib/facter/operatingsystem/osreleaselinux.rb +28 -0
- data/vendored/facter/lib/facter/operatingsystem/sunos.rb +54 -0
- data/vendored/facter/lib/facter/operatingsystem/vmkernel.rb +11 -0
- data/vendored/facter/lib/facter/operatingsystem/windows.rb +43 -0
- data/vendored/facter/lib/facter/operatingsystemmajrelease.rb +31 -0
- data/vendored/facter/lib/facter/operatingsystemrelease.rb +29 -0
- data/vendored/facter/lib/facter/os.rb +98 -0
- data/vendored/facter/lib/facter/osfamily.rb +18 -0
- data/vendored/facter/lib/facter/partitions.rb +39 -0
- data/vendored/facter/lib/facter/path.rb +14 -0
- data/vendored/facter/lib/facter/physicalprocessorcount.rb +27 -0
- data/vendored/facter/lib/facter/processor.rb +52 -0
- data/vendored/facter/lib/facter/processors.rb +66 -0
- data/vendored/facter/lib/facter/processors/os.rb +244 -0
- data/vendored/facter/lib/facter/ps.rb +31 -0
- data/vendored/facter/lib/facter/puppetversion.rb +20 -0
- data/vendored/facter/lib/facter/rackspace.rb +37 -0
- data/vendored/facter/lib/facter/rubyplatform.rb +12 -0
- data/vendored/facter/lib/facter/rubysitedir.rb +15 -0
- data/vendored/facter/lib/facter/rubyversion.rb +12 -0
- data/vendored/facter/lib/facter/selinux.rb +154 -0
- data/vendored/facter/lib/facter/ssh.rb +73 -0
- data/vendored/facter/lib/facter/system32.rb +21 -0
- data/vendored/facter/lib/facter/system_uptime.rb +44 -0
- data/vendored/facter/lib/facter/timezone.rb +14 -0
- data/vendored/facter/lib/facter/uniqueid.rb +4 -0
- data/vendored/facter/lib/facter/uptime.rb +16 -0
- data/vendored/facter/lib/facter/uptime_days.rb +13 -0
- data/vendored/facter/lib/facter/uptime_hours.rb +13 -0
- data/vendored/facter/lib/facter/uptime_seconds.rb +20 -0
- data/vendored/facter/lib/facter/util/architecture.rb +19 -0
- data/vendored/facter/lib/facter/util/collection.rb +161 -0
- data/vendored/facter/lib/facter/util/composite_loader.rb +12 -0
- data/vendored/facter/lib/facter/util/config.rb +88 -0
- data/vendored/facter/lib/facter/util/confine.rb +66 -0
- data/vendored/facter/lib/facter/util/dhcp_servers.rb +58 -0
- data/vendored/facter/lib/facter/util/directory_loader.rb +88 -0
- data/vendored/facter/lib/facter/util/ec2.rb +106 -0
- data/vendored/facter/lib/facter/util/fact.rb +204 -0
- data/vendored/facter/lib/facter/util/file_read.rb +37 -0
- data/vendored/facter/lib/facter/util/formatter.rb +39 -0
- data/vendored/facter/lib/facter/util/ip.rb +340 -0
- data/vendored/facter/lib/facter/util/ip/windows.rb +215 -0
- data/vendored/facter/lib/facter/util/loader.rb +155 -0
- data/vendored/facter/lib/facter/util/macaddress.rb +43 -0
- data/vendored/facter/lib/facter/util/macosx.rb +73 -0
- data/vendored/facter/lib/facter/util/manufacturer.rb +99 -0
- data/vendored/facter/lib/facter/util/memory.rb +228 -0
- data/vendored/facter/lib/facter/util/netmask.rb +40 -0
- data/vendored/facter/lib/facter/util/normalization.rb +94 -0
- data/vendored/facter/lib/facter/util/nothing_loader.rb +12 -0
- data/vendored/facter/lib/facter/util/operatingsystem.rb +21 -0
- data/vendored/facter/lib/facter/util/parser.rb +168 -0
- data/vendored/facter/lib/facter/util/partitions.rb +47 -0
- data/vendored/facter/lib/facter/util/partitions/linux.rb +71 -0
- data/vendored/facter/lib/facter/util/partitions/openbsd.rb +40 -0
- data/vendored/facter/lib/facter/util/plist.rb +24 -0
- data/vendored/facter/lib/facter/util/plist/generator.rb +228 -0
- data/vendored/facter/lib/facter/util/plist/parser.rb +226 -0
- data/vendored/facter/lib/facter/util/posix.rb +16 -0
- data/vendored/facter/lib/facter/util/processor.rb +289 -0
- data/vendored/facter/lib/facter/util/registry.rb +11 -0
- data/vendored/facter/lib/facter/util/resolution.rb +160 -0
- data/vendored/facter/lib/facter/util/solaris_zones.rb +158 -0
- data/vendored/facter/lib/facter/util/unix_root.rb +5 -0
- data/vendored/facter/lib/facter/util/uptime.rb +83 -0
- data/vendored/facter/lib/facter/util/values.rb +109 -0
- data/vendored/facter/lib/facter/util/virtual.rb +212 -0
- data/vendored/facter/lib/facter/util/vlans.rb +21 -0
- data/vendored/facter/lib/facter/util/windows.rb +10 -0
- data/vendored/facter/lib/facter/util/windows/api_types.rb +135 -0
- data/vendored/facter/lib/facter/util/windows/dir.rb +43 -0
- data/vendored/facter/lib/facter/util/windows/error.rb +87 -0
- data/vendored/facter/lib/facter/util/windows/process.rb +294 -0
- data/vendored/facter/lib/facter/util/windows/user.rb +186 -0
- data/vendored/facter/lib/facter/util/windows_root.rb +7 -0
- data/vendored/facter/lib/facter/util/wmi.rb +49 -0
- data/vendored/facter/lib/facter/util/xendomains.rb +28 -0
- data/vendored/facter/lib/facter/version.rb +86 -0
- data/vendored/facter/lib/facter/virtual.rb +328 -0
- data/vendored/facter/lib/facter/vlans.rb +17 -0
- data/vendored/facter/lib/facter/xendomains.rb +20 -0
- data/vendored/facter/lib/facter/zfs_version.rb +14 -0
- data/vendored/facter/lib/facter/zonename.rb +6 -0
- data/vendored/facter/lib/facter/zones.rb +18 -0
- data/vendored/facter/lib/facter/zpool_version.rb +10 -0
- data/vendored/hiera/lib/hiera.rb +119 -0
- data/vendored/hiera/lib/hiera/backend.rb +360 -0
- data/vendored/hiera/lib/hiera/backend/json_backend.rb +58 -0
- data/vendored/hiera/lib/hiera/backend/yaml_backend.rb +63 -0
- data/vendored/hiera/lib/hiera/config.rb +97 -0
- data/vendored/hiera/lib/hiera/console_logger.rb +13 -0
- data/vendored/hiera/lib/hiera/error.rb +4 -0
- data/vendored/hiera/lib/hiera/fallback_logger.rb +41 -0
- data/vendored/hiera/lib/hiera/filecache.rb +86 -0
- data/vendored/hiera/lib/hiera/interpolate.rb +121 -0
- data/vendored/hiera/lib/hiera/noop_logger.rb +8 -0
- data/vendored/hiera/lib/hiera/puppet_logger.rb +17 -0
- data/vendored/hiera/lib/hiera/recursive_guard.rb +20 -0
- data/vendored/hiera/lib/hiera/util.rb +65 -0
- data/vendored/hiera/lib/hiera/util/win32.rb +40 -0
- data/vendored/hiera/lib/hiera/version.rb +89 -0
- data/vendored/puppet/lib/hiera/puppet_function.rb +81 -0
- data/vendored/puppet/lib/hiera/scope.rb +61 -0
- data/vendored/puppet/lib/hiera_puppet.rb +79 -0
- data/vendored/puppet/lib/puppet.rb +311 -0
- data/vendored/puppet/lib/puppet/agent.rb +114 -0
- data/vendored/puppet/lib/puppet/agent/disabler.rb +53 -0
- data/vendored/puppet/lib/puppet/agent/locker.rb +52 -0
- data/vendored/puppet/lib/puppet/application.rb +485 -0
- data/vendored/puppet/lib/puppet/application/agent.rb +468 -0
- data/vendored/puppet/lib/puppet/application/apply.rb +358 -0
- data/vendored/puppet/lib/puppet/application/ca.rb +11 -0
- data/vendored/puppet/lib/puppet/application/catalog.rb +4 -0
- data/vendored/puppet/lib/puppet/application/cert.rb +334 -0
- data/vendored/puppet/lib/puppet/application/certificate.rb +17 -0
- data/vendored/puppet/lib/puppet/application/certificate_request.rb +7 -0
- data/vendored/puppet/lib/puppet/application/certificate_revocation_list.rb +7 -0
- data/vendored/puppet/lib/puppet/application/config.rb +4 -0
- data/vendored/puppet/lib/puppet/application/describe.rb +258 -0
- data/vendored/puppet/lib/puppet/application/device.rb +292 -0
- data/vendored/puppet/lib/puppet/application/doc.rb +230 -0
- data/vendored/puppet/lib/puppet/application/epp.rb +5 -0
- data/vendored/puppet/lib/puppet/application/face_base.rb +268 -0
- data/vendored/puppet/lib/puppet/application/facts.rb +4 -0
- data/vendored/puppet/lib/puppet/application/filebucket.rb +262 -0
- data/vendored/puppet/lib/puppet/application/generate.rb +5 -0
- data/vendored/puppet/lib/puppet/application/help.rb +4 -0
- data/vendored/puppet/lib/puppet/application/indirection_base.rb +4 -0
- data/vendored/puppet/lib/puppet/application/key.rb +4 -0
- data/vendored/puppet/lib/puppet/application/lookup.rb +361 -0
- data/vendored/puppet/lib/puppet/application/man.rb +4 -0
- data/vendored/puppet/lib/puppet/application/master.rb +317 -0
- data/vendored/puppet/lib/puppet/application/module.rb +4 -0
- data/vendored/puppet/lib/puppet/application/node.rb +4 -0
- data/vendored/puppet/lib/puppet/application/parser.rb +5 -0
- data/vendored/puppet/lib/puppet/application/plugin.rb +3 -0
- data/vendored/puppet/lib/puppet/application/report.rb +4 -0
- data/vendored/puppet/lib/puppet/application/resource.rb +231 -0
- data/vendored/puppet/lib/puppet/application/script.rb +255 -0
- data/vendored/puppet/lib/puppet/application/status.rb +4 -0
- data/vendored/puppet/lib/puppet/application_support.rb +57 -0
- data/vendored/puppet/lib/puppet/bindings.rb +147 -0
- data/vendored/puppet/lib/puppet/coercion.rb +40 -0
- data/vendored/puppet/lib/puppet/compilable_resource_type.rb +15 -0
- data/vendored/puppet/lib/puppet/configurer.rb +447 -0
- data/vendored/puppet/lib/puppet/configurer/downloader.rb +67 -0
- data/vendored/puppet/lib/puppet/configurer/downloader_factory.rb +34 -0
- data/vendored/puppet/lib/puppet/configurer/fact_handler.rb +46 -0
- data/vendored/puppet/lib/puppet/configurer/plugin_handler.rb +25 -0
- data/vendored/puppet/lib/puppet/confine.rb +80 -0
- data/vendored/puppet/lib/puppet/confine/any.rb +26 -0
- data/vendored/puppet/lib/puppet/confine/exists.rb +19 -0
- data/vendored/puppet/lib/puppet/confine/false.rb +19 -0
- data/vendored/puppet/lib/puppet/confine/feature.rb +17 -0
- data/vendored/puppet/lib/puppet/confine/true.rb +20 -0
- data/vendored/puppet/lib/puppet/confine/variable.rb +59 -0
- data/vendored/puppet/lib/puppet/confine_collection.rb +50 -0
- data/vendored/puppet/lib/puppet/confiner.rb +46 -0
- data/vendored/puppet/lib/puppet/context.rb +116 -0
- data/vendored/puppet/lib/puppet/context/trusted_information.rb +76 -0
- data/vendored/puppet/lib/puppet/daemon.rb +195 -0
- data/vendored/puppet/lib/puppet/data_binding.rb +14 -0
- data/vendored/puppet/lib/puppet/defaults.rb +1957 -0
- data/vendored/puppet/lib/puppet/environments.rb +509 -0
- data/vendored/puppet/lib/puppet/error.rb +117 -0
- data/vendored/puppet/lib/puppet/etc.rb +161 -0
- data/vendored/puppet/lib/puppet/external/dot.rb +326 -0
- data/vendored/puppet/lib/puppet/external/nagios.rb +46 -0
- data/vendored/puppet/lib/puppet/external/nagios/base.rb +472 -0
- data/vendored/puppet/lib/puppet/external/nagios/grammar.ry +248 -0
- data/vendored/puppet/lib/puppet/external/nagios/makefile +9 -0
- data/vendored/puppet/lib/puppet/external/nagios/parser.rb +400 -0
- data/vendored/puppet/lib/puppet/external/pson/common.rb +374 -0
- data/vendored/puppet/lib/puppet/external/pson/pure.rb +15 -0
- data/vendored/puppet/lib/puppet/external/pson/pure/generator.rb +395 -0
- data/vendored/puppet/lib/puppet/external/pson/pure/parser.rb +307 -0
- data/vendored/puppet/lib/puppet/external/pson/version.rb +8 -0
- data/vendored/puppet/lib/puppet/face.rb +12 -0
- data/vendored/puppet/lib/puppet/face/ca.rb +266 -0
- data/vendored/puppet/lib/puppet/face/catalog.rb +130 -0
- data/vendored/puppet/lib/puppet/face/catalog/select.rb +49 -0
- data/vendored/puppet/lib/puppet/face/certificate.rb +165 -0
- data/vendored/puppet/lib/puppet/face/certificate_request.rb +56 -0
- data/vendored/puppet/lib/puppet/face/certificate_revocation_list.rb +56 -0
- data/vendored/puppet/lib/puppet/face/config.rb +119 -0
- data/vendored/puppet/lib/puppet/face/epp.rb +527 -0
- data/vendored/puppet/lib/puppet/face/facts.rb +38 -0
- data/vendored/puppet/lib/puppet/face/generate.rb +64 -0
- data/vendored/puppet/lib/puppet/face/help.rb +205 -0
- data/vendored/puppet/lib/puppet/face/help/action.erb +86 -0
- data/vendored/puppet/lib/puppet/face/help/face.erb +114 -0
- data/vendored/puppet/lib/puppet/face/help/global.erb +16 -0
- data/vendored/puppet/lib/puppet/face/help/man.erb +152 -0
- data/vendored/puppet/lib/puppet/face/key.rb +16 -0
- data/vendored/puppet/lib/puppet/face/man.rb +101 -0
- data/vendored/puppet/lib/puppet/face/module.rb +19 -0
- data/vendored/puppet/lib/puppet/face/module/build.rb +63 -0
- data/vendored/puppet/lib/puppet/face/module/changes.rb +42 -0
- data/vendored/puppet/lib/puppet/face/module/generate.rb +251 -0
- data/vendored/puppet/lib/puppet/face/module/install.rb +149 -0
- data/vendored/puppet/lib/puppet/face/module/list.rb +279 -0
- data/vendored/puppet/lib/puppet/face/module/search.rb +94 -0
- data/vendored/puppet/lib/puppet/face/module/uninstall.rb +81 -0
- data/vendored/puppet/lib/puppet/face/module/upgrade.rb +90 -0
- data/vendored/puppet/lib/puppet/face/node.rb +42 -0
- data/vendored/puppet/lib/puppet/face/node/clean.rb +96 -0
- data/vendored/puppet/lib/puppet/face/parser.rb +161 -0
- data/vendored/puppet/lib/puppet/face/plugin.rb +58 -0
- data/vendored/puppet/lib/puppet/face/report.rb +54 -0
- data/vendored/puppet/lib/puppet/face/resource.rb +53 -0
- data/vendored/puppet/lib/puppet/face/status.rb +50 -0
- data/vendored/puppet/lib/puppet/feature/base.rb +95 -0
- data/vendored/puppet/lib/puppet/feature/bolt.rb +3 -0
- data/vendored/puppet/lib/puppet/feature/cfpropertylist.rb +3 -0
- data/vendored/puppet/lib/puppet/feature/eventlog.rb +5 -0
- data/vendored/puppet/lib/puppet/feature/hiera_eyaml.rb +3 -0
- data/vendored/puppet/lib/puppet/feature/hocon.rb +3 -0
- data/vendored/puppet/lib/puppet/feature/libuser.rb +8 -0
- data/vendored/puppet/lib/puppet/feature/msgpack.rb +3 -0
- data/vendored/puppet/lib/puppet/feature/pe_license.rb +4 -0
- data/vendored/puppet/lib/puppet/feature/rack.rb +19 -0
- data/vendored/puppet/lib/puppet/feature/selinux.rb +3 -0
- data/vendored/puppet/lib/puppet/feature/ssh.rb +3 -0
- data/vendored/puppet/lib/puppet/feature/telnet.rb +9 -0
- data/vendored/puppet/lib/puppet/feature/zlib.rb +5 -0
- data/vendored/puppet/lib/puppet/file_bucket.rb +4 -0
- data/vendored/puppet/lib/puppet/file_bucket/dipper.rb +174 -0
- data/vendored/puppet/lib/puppet/file_bucket/file.rb +131 -0
- data/vendored/puppet/lib/puppet/file_serving.rb +3 -0
- data/vendored/puppet/lib/puppet/file_serving/base.rb +85 -0
- data/vendored/puppet/lib/puppet/file_serving/configuration.rb +112 -0
- data/vendored/puppet/lib/puppet/file_serving/configuration/parser.rb +123 -0
- data/vendored/puppet/lib/puppet/file_serving/content.rb +43 -0
- data/vendored/puppet/lib/puppet/file_serving/fileset.rb +174 -0
- data/vendored/puppet/lib/puppet/file_serving/http_metadata.rb +46 -0
- data/vendored/puppet/lib/puppet/file_serving/metadata.rb +163 -0
- data/vendored/puppet/lib/puppet/file_serving/mount.rb +39 -0
- data/vendored/puppet/lib/puppet/file_serving/mount/file.rb +121 -0
- data/vendored/puppet/lib/puppet/file_serving/mount/modules.rb +24 -0
- data/vendored/puppet/lib/puppet/file_serving/mount/pluginfacts.rb +35 -0
- data/vendored/puppet/lib/puppet/file_serving/mount/plugins.rb +35 -0
- data/vendored/puppet/lib/puppet/file_serving/mount/tasks.rb +21 -0
- data/vendored/puppet/lib/puppet/file_serving/terminus_helper.rb +31 -0
- data/vendored/puppet/lib/puppet/file_serving/terminus_selector.rb +32 -0
- data/vendored/puppet/lib/puppet/file_system.rb +404 -0
- data/vendored/puppet/lib/puppet/file_system/file_impl.rb +154 -0
- data/vendored/puppet/lib/puppet/file_system/memory_file.rb +66 -0
- data/vendored/puppet/lib/puppet/file_system/memory_impl.rb +86 -0
- data/vendored/puppet/lib/puppet/file_system/path_pattern.rb +98 -0
- data/vendored/puppet/lib/puppet/file_system/posix.rb +46 -0
- data/vendored/puppet/lib/puppet/file_system/uniquefile.rb +190 -0
- data/vendored/puppet/lib/puppet/file_system/windows.rb +130 -0
- data/vendored/puppet/lib/puppet/forge.rb +229 -0
- data/vendored/puppet/lib/puppet/forge/cache.rb +60 -0
- data/vendored/puppet/lib/puppet/forge/errors.rb +112 -0
- data/vendored/puppet/lib/puppet/forge/repository.rb +155 -0
- data/vendored/puppet/lib/puppet/functions.rb +745 -0
- data/vendored/puppet/lib/puppet/functions/alert.rb +14 -0
- data/vendored/puppet/lib/puppet/functions/all.rb +104 -0
- data/vendored/puppet/lib/puppet/functions/annotate.rb +108 -0
- data/vendored/puppet/lib/puppet/functions/any.rb +109 -0
- data/vendored/puppet/lib/puppet/functions/assert_type.rb +93 -0
- data/vendored/puppet/lib/puppet/functions/binary_file.rb +19 -0
- data/vendored/puppet/lib/puppet/functions/break.rb +22 -0
- data/vendored/puppet/lib/puppet/functions/call.rb +42 -0
- data/vendored/puppet/lib/puppet/functions/contain.rb +39 -0
- data/vendored/puppet/lib/puppet/functions/crit.rb +14 -0
- data/vendored/puppet/lib/puppet/functions/debug.rb +14 -0
- data/vendored/puppet/lib/puppet/functions/defined.rb +160 -0
- data/vendored/puppet/lib/puppet/functions/dig.rb +23 -0
- data/vendored/puppet/lib/puppet/functions/each.rb +163 -0
- data/vendored/puppet/lib/puppet/functions/emerg.rb +14 -0
- data/vendored/puppet/lib/puppet/functions/epp.rb +48 -0
- data/vendored/puppet/lib/puppet/functions/err.rb +14 -0
- data/vendored/puppet/lib/puppet/functions/eyaml_lookup_key.rb +94 -0
- data/vendored/puppet/lib/puppet/functions/file_upload.rb +48 -0
- data/vendored/puppet/lib/puppet/functions/filter.rb +143 -0
- data/vendored/puppet/lib/puppet/functions/find_file.rb +31 -0
- data/vendored/puppet/lib/puppet/functions/hiera.rb +88 -0
- data/vendored/puppet/lib/puppet/functions/hiera_array.rb +81 -0
- data/vendored/puppet/lib/puppet/functions/hiera_hash.rb +92 -0
- data/vendored/puppet/lib/puppet/functions/hiera_include.rb +104 -0
- data/vendored/puppet/lib/puppet/functions/hocon_data.rb +41 -0
- data/vendored/puppet/lib/puppet/functions/import.rb +7 -0
- data/vendored/puppet/lib/puppet/functions/include.rb +27 -0
- data/vendored/puppet/lib/puppet/functions/info.rb +14 -0
- data/vendored/puppet/lib/puppet/functions/inline_epp.rb +59 -0
- data/vendored/puppet/lib/puppet/functions/json_data.rb +33 -0
- data/vendored/puppet/lib/puppet/functions/lest.rb +17 -0
- data/vendored/puppet/lib/puppet/functions/lookup.rb +223 -0
- data/vendored/puppet/lib/puppet/functions/map.rb +126 -0
- data/vendored/puppet/lib/puppet/functions/match.rb +120 -0
- data/vendored/puppet/lib/puppet/functions/new.rb +32 -0
- data/vendored/puppet/lib/puppet/functions/next.rb +23 -0
- data/vendored/puppet/lib/puppet/functions/notice.rb +14 -0
- data/vendored/puppet/lib/puppet/functions/reduce.rb +164 -0
- data/vendored/puppet/lib/puppet/functions/regsubst.rb +76 -0
- data/vendored/puppet/lib/puppet/functions/require.rb +43 -0
- data/vendored/puppet/lib/puppet/functions/return.rb +22 -0
- data/vendored/puppet/lib/puppet/functions/reverse_each.rb +25 -0
- data/vendored/puppet/lib/puppet/functions/run_command.rb +41 -0
- data/vendored/puppet/lib/puppet/functions/run_plan.rb +40 -0
- data/vendored/puppet/lib/puppet/functions/run_script.rb +50 -0
- data/vendored/puppet/lib/puppet/functions/run_task.rb +73 -0
- data/vendored/puppet/lib/puppet/functions/scanf.rb +44 -0
- data/vendored/puppet/lib/puppet/functions/slice.rb +111 -0
- data/vendored/puppet/lib/puppet/functions/split.rb +47 -0
- data/vendored/puppet/lib/puppet/functions/step.rb +26 -0
- data/vendored/puppet/lib/puppet/functions/strftime.rb +43 -0
- data/vendored/puppet/lib/puppet/functions/then.rb +14 -0
- data/vendored/puppet/lib/puppet/functions/tree_each.rb +200 -0
- data/vendored/puppet/lib/puppet/functions/type.rb +31 -0
- data/vendored/puppet/lib/puppet/functions/unique.rb +132 -0
- data/vendored/puppet/lib/puppet/functions/unwrap.rb +40 -0
- data/vendored/puppet/lib/puppet/functions/versioncmp.rb +36 -0
- data/vendored/puppet/lib/puppet/functions/warning.rb +14 -0
- data/vendored/puppet/lib/puppet/functions/with.rb +30 -0
- data/vendored/puppet/lib/puppet/functions/yaml_data.rb +42 -0
- data/vendored/puppet/lib/puppet/generate/models/type/property.rb +70 -0
- data/vendored/puppet/lib/puppet/generate/models/type/type.rb +62 -0
- data/vendored/puppet/lib/puppet/generate/templates/type/pcore.erb +42 -0
- data/vendored/puppet/lib/puppet/generate/type.rb +239 -0
- data/vendored/puppet/lib/puppet/gettext/config.rb +70 -0
- data/vendored/puppet/lib/puppet/gettext/stubs.rb +11 -0
- data/vendored/puppet/lib/puppet/graph.rb +11 -0
- data/vendored/puppet/lib/puppet/graph/key.rb +26 -0
- data/vendored/puppet/lib/puppet/graph/prioritizer.rb +29 -0
- data/vendored/puppet/lib/puppet/graph/random_prioritizer.rb +16 -0
- data/vendored/puppet/lib/puppet/graph/rb_tree_map.rb +388 -0
- data/vendored/puppet/lib/puppet/graph/relationship_graph.rb +277 -0
- data/vendored/puppet/lib/puppet/graph/sequential_prioritizer.rb +31 -0
- data/vendored/puppet/lib/puppet/graph/simple_graph.rb +539 -0
- data/vendored/puppet/lib/puppet/graph/title_hash_prioritizer.rb +16 -0
- data/vendored/puppet/lib/puppet/indirector.rb +61 -0
- data/vendored/puppet/lib/puppet/indirector/catalog/compiler.rb +384 -0
- data/vendored/puppet/lib/puppet/indirector/catalog/json.rb +24 -0
- data/vendored/puppet/lib/puppet/indirector/catalog/msgpack.rb +6 -0
- data/vendored/puppet/lib/puppet/indirector/catalog/rest.rb +6 -0
- data/vendored/puppet/lib/puppet/indirector/catalog/store_configs.rb +8 -0
- data/vendored/puppet/lib/puppet/indirector/catalog/yaml.rb +22 -0
- data/vendored/puppet/lib/puppet/indirector/certificate/ca.rb +9 -0
- data/vendored/puppet/lib/puppet/indirector/certificate/disabled_ca.rb +22 -0
- data/vendored/puppet/lib/puppet/indirector/certificate/file.rb +9 -0
- data/vendored/puppet/lib/puppet/indirector/certificate/rest.rb +16 -0
- data/vendored/puppet/lib/puppet/indirector/certificate_request/ca.rb +22 -0
- data/vendored/puppet/lib/puppet/indirector/certificate_request/disabled_ca.rb +22 -0
- data/vendored/puppet/lib/puppet/indirector/certificate_request/file.rb +8 -0
- data/vendored/puppet/lib/puppet/indirector/certificate_request/memory.rb +6 -0
- data/vendored/puppet/lib/puppet/indirector/certificate_request/rest.rb +10 -0
- data/vendored/puppet/lib/puppet/indirector/certificate_revocation_list/ca.rb +8 -0
- data/vendored/puppet/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +22 -0
- data/vendored/puppet/lib/puppet/indirector/certificate_revocation_list/file.rb +8 -0
- data/vendored/puppet/lib/puppet/indirector/certificate_revocation_list/rest.rb +22 -0
- data/vendored/puppet/lib/puppet/indirector/certificate_status.rb +4 -0
- data/vendored/puppet/lib/puppet/indirector/certificate_status/file.rb +91 -0
- data/vendored/puppet/lib/puppet/indirector/certificate_status/rest.rb +11 -0
- data/vendored/puppet/lib/puppet/indirector/code.rb +6 -0
- data/vendored/puppet/lib/puppet/indirector/data_binding/hiera.rb +7 -0
- data/vendored/puppet/lib/puppet/indirector/data_binding/none.rb +8 -0
- data/vendored/puppet/lib/puppet/indirector/direct_file_server.rb +17 -0
- data/vendored/puppet/lib/puppet/indirector/envelope.rb +11 -0
- data/vendored/puppet/lib/puppet/indirector/errors.rb +5 -0
- data/vendored/puppet/lib/puppet/indirector/exec.rb +38 -0
- data/vendored/puppet/lib/puppet/indirector/face.rb +153 -0
- data/vendored/puppet/lib/puppet/indirector/facts/facter.rb +90 -0
- data/vendored/puppet/lib/puppet/indirector/facts/memory.rb +9 -0
- data/vendored/puppet/lib/puppet/indirector/facts/network_device.rb +27 -0
- data/vendored/puppet/lib/puppet/indirector/facts/store_configs.rb +11 -0
- data/vendored/puppet/lib/puppet/indirector/facts/yaml.rb +86 -0
- data/vendored/puppet/lib/puppet/indirector/file_bucket_file/file.rb +255 -0
- data/vendored/puppet/lib/puppet/indirector/file_bucket_file/rest.rb +8 -0
- data/vendored/puppet/lib/puppet/indirector/file_bucket_file/selector.rb +53 -0
- data/vendored/puppet/lib/puppet/indirector/file_content.rb +5 -0
- data/vendored/puppet/lib/puppet/indirector/file_content/file.rb +7 -0
- data/vendored/puppet/lib/puppet/indirector/file_content/file_server.rb +7 -0
- data/vendored/puppet/lib/puppet/indirector/file_content/http.rb +15 -0
- data/vendored/puppet/lib/puppet/indirector/file_content/rest.rb +9 -0
- data/vendored/puppet/lib/puppet/indirector/file_content/selector.rb +30 -0
- data/vendored/puppet/lib/puppet/indirector/file_metadata.rb +5 -0
- data/vendored/puppet/lib/puppet/indirector/file_metadata/file.rb +7 -0
- data/vendored/puppet/lib/puppet/indirector/file_metadata/file_server.rb +7 -0
- data/vendored/puppet/lib/puppet/indirector/file_metadata/http.rb +27 -0
- data/vendored/puppet/lib/puppet/indirector/file_metadata/rest.rb +9 -0
- data/vendored/puppet/lib/puppet/indirector/file_metadata/selector.rb +30 -0
- data/vendored/puppet/lib/puppet/indirector/file_server.rb +59 -0
- data/vendored/puppet/lib/puppet/indirector/generic_http.rb +16 -0
- data/vendored/puppet/lib/puppet/indirector/hiera.rb +94 -0
- data/vendored/puppet/lib/puppet/indirector/indirection.rb +336 -0
- data/vendored/puppet/lib/puppet/indirector/json.rb +75 -0
- data/vendored/puppet/lib/puppet/indirector/key/ca.rb +16 -0
- data/vendored/puppet/lib/puppet/indirector/key/disabled_ca.rb +22 -0
- data/vendored/puppet/lib/puppet/indirector/key/file.rb +50 -0
- data/vendored/puppet/lib/puppet/indirector/key/memory.rb +6 -0
- data/vendored/puppet/lib/puppet/indirector/ldap.rb +80 -0
- data/vendored/puppet/lib/puppet/indirector/memory.rb +34 -0
- data/vendored/puppet/lib/puppet/indirector/msgpack.rb +83 -0
- data/vendored/puppet/lib/puppet/indirector/node/exec.rb +71 -0
- data/vendored/puppet/lib/puppet/indirector/node/ldap.rb +259 -0
- data/vendored/puppet/lib/puppet/indirector/node/memory.rb +10 -0
- data/vendored/puppet/lib/puppet/indirector/node/msgpack.rb +7 -0
- data/vendored/puppet/lib/puppet/indirector/node/plain.rb +21 -0
- data/vendored/puppet/lib/puppet/indirector/node/rest.rb +7 -0
- data/vendored/puppet/lib/puppet/indirector/node/store_configs.rb +8 -0
- data/vendored/puppet/lib/puppet/indirector/node/write_only_yaml.rb +37 -0
- data/vendored/puppet/lib/puppet/indirector/node/yaml.rb +13 -0
- data/vendored/puppet/lib/puppet/indirector/none.rb +9 -0
- data/vendored/puppet/lib/puppet/indirector/plain.rb +9 -0
- data/vendored/puppet/lib/puppet/indirector/report/msgpack.rb +11 -0
- data/vendored/puppet/lib/puppet/indirector/report/processor.rb +59 -0
- data/vendored/puppet/lib/puppet/indirector/report/rest.rb +28 -0
- data/vendored/puppet/lib/puppet/indirector/report/yaml.rb +11 -0
- data/vendored/puppet/lib/puppet/indirector/request.rb +274 -0
- data/vendored/puppet/lib/puppet/indirector/resource/ral.rb +63 -0
- data/vendored/puppet/lib/puppet/indirector/resource/store_configs.rb +12 -0
- data/vendored/puppet/lib/puppet/indirector/resource/validator.rb +8 -0
- data/vendored/puppet/lib/puppet/indirector/rest.rb +348 -0
- data/vendored/puppet/lib/puppet/indirector/ssl_file.rb +201 -0
- data/vendored/puppet/lib/puppet/indirector/status.rb +3 -0
- data/vendored/puppet/lib/puppet/indirector/status/local.rb +12 -0
- data/vendored/puppet/lib/puppet/indirector/status/rest.rb +9 -0
- data/vendored/puppet/lib/puppet/indirector/store_configs.rb +30 -0
- data/vendored/puppet/lib/puppet/indirector/terminus.rb +169 -0
- data/vendored/puppet/lib/puppet/indirector/yaml.rb +63 -0
- data/vendored/puppet/lib/puppet/info_service.rb +17 -0
- data/vendored/puppet/lib/puppet/info_service/class_information_service.rb +110 -0
- data/vendored/puppet/lib/puppet/info_service/task_information_service.rb +32 -0
- data/vendored/puppet/lib/puppet/interface.rb +236 -0
- data/vendored/puppet/lib/puppet/interface/action.rb +374 -0
- data/vendored/puppet/lib/puppet/interface/action_builder.rb +149 -0
- data/vendored/puppet/lib/puppet/interface/action_manager.rb +97 -0
- data/vendored/puppet/lib/puppet/interface/documentation.rb +342 -0
- data/vendored/puppet/lib/puppet/interface/face_collection.rb +130 -0
- data/vendored/puppet/lib/puppet/interface/option.rb +150 -0
- data/vendored/puppet/lib/puppet/interface/option_builder.rb +91 -0
- data/vendored/puppet/lib/puppet/interface/option_manager.rb +99 -0
- data/vendored/puppet/lib/puppet/loaders.rb +26 -0
- data/vendored/puppet/lib/puppet/metatype/manager.rb +195 -0
- data/vendored/puppet/lib/puppet/module.rb +473 -0
- data/vendored/puppet/lib/puppet/module/task.rb +90 -0
- data/vendored/puppet/lib/puppet/module_tool.rb +196 -0
- data/vendored/puppet/lib/puppet/module_tool/applications.rb +14 -0
- data/vendored/puppet/lib/puppet/module_tool/applications/application.rb +90 -0
- data/vendored/puppet/lib/puppet/module_tool/applications/builder.rb +148 -0
- data/vendored/puppet/lib/puppet/module_tool/applications/checksummer.rb +62 -0
- data/vendored/puppet/lib/puppet/module_tool/applications/installer.rb +352 -0
- data/vendored/puppet/lib/puppet/module_tool/applications/searcher.rb +29 -0
- data/vendored/puppet/lib/puppet/module_tool/applications/uninstaller.rb +118 -0
- data/vendored/puppet/lib/puppet/module_tool/applications/unpacker.rb +100 -0
- data/vendored/puppet/lib/puppet/module_tool/applications/upgrader.rb +278 -0
- data/vendored/puppet/lib/puppet/module_tool/checksums.rb +49 -0
- data/vendored/puppet/lib/puppet/module_tool/contents_description.rb +88 -0
- data/vendored/puppet/lib/puppet/module_tool/dependency.rb +41 -0
- data/vendored/puppet/lib/puppet/module_tool/errors.rb +11 -0
- data/vendored/puppet/lib/puppet/module_tool/errors/base.rb +15 -0
- data/vendored/puppet/lib/puppet/module_tool/errors/installer.rb +95 -0
- data/vendored/puppet/lib/puppet/module_tool/errors/shared.rb +190 -0
- data/vendored/puppet/lib/puppet/module_tool/errors/uninstaller.rb +49 -0
- data/vendored/puppet/lib/puppet/module_tool/errors/upgrader.rb +63 -0
- data/vendored/puppet/lib/puppet/module_tool/install_directory.rb +45 -0
- data/vendored/puppet/lib/puppet/module_tool/installed_modules.rb +96 -0
- data/vendored/puppet/lib/puppet/module_tool/local_tarball.rb +90 -0
- data/vendored/puppet/lib/puppet/module_tool/metadata.rb +224 -0
- data/vendored/puppet/lib/puppet/module_tool/shared_behaviors.rb +180 -0
- data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/.fixtures.yml.erb +7 -0
- data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/.gitignore +18 -0
- data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/.rubocop.yml +42 -0
- data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/.yardopts +1 -0
- data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +18 -0
- data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +89 -0
- data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +32 -0
- data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/examples/init.pp.erb +12 -0
- data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +48 -0
- data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/metadata.json.erb +1 -0
- data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +6 -0
- data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +1 -0
- data/vendored/puppet/lib/puppet/module_tool/tar.rb +18 -0
- data/vendored/puppet/lib/puppet/module_tool/tar/gnu.rb +19 -0
- data/vendored/puppet/lib/puppet/module_tool/tar/mini.rb +53 -0
- data/vendored/puppet/lib/puppet/network.rb +3 -0
- data/vendored/puppet/lib/puppet/network/auth_config_parser.rb +85 -0
- data/vendored/puppet/lib/puppet/network/authconfig.rb +112 -0
- data/vendored/puppet/lib/puppet/network/authorization.rb +41 -0
- data/vendored/puppet/lib/puppet/network/authstore.rb +282 -0
- data/vendored/puppet/lib/puppet/network/client_request.rb +29 -0
- data/vendored/puppet/lib/puppet/network/format.rb +110 -0
- data/vendored/puppet/lib/puppet/network/format_handler.rb +108 -0
- data/vendored/puppet/lib/puppet/network/format_support.rb +134 -0
- data/vendored/puppet/lib/puppet/network/formats.rb +171 -0
- data/vendored/puppet/lib/puppet/network/http.rb +30 -0
- data/vendored/puppet/lib/puppet/network/http/api.rb +44 -0
- data/vendored/puppet/lib/puppet/network/http/api/ca.rb +2 -0
- data/vendored/puppet/lib/puppet/network/http/api/ca/v1.rb +11 -0
- data/vendored/puppet/lib/puppet/network/http/api/indirected_routes.rb +278 -0
- data/vendored/puppet/lib/puppet/network/http/api/indirection_type.rb +32 -0
- data/vendored/puppet/lib/puppet/network/http/api/master.rb +2 -0
- data/vendored/puppet/lib/puppet/network/http/api/master/v3.rb +28 -0
- data/vendored/puppet/lib/puppet/network/http/api/master/v3/authorization.rb +18 -0
- data/vendored/puppet/lib/puppet/network/http/api/master/v3/environment.rb +82 -0
- data/vendored/puppet/lib/puppet/network/http/api/master/v3/environments.rb +35 -0
- data/vendored/puppet/lib/puppet/network/http/compression.rb +120 -0
- data/vendored/puppet/lib/puppet/network/http/connection.rb +332 -0
- data/vendored/puppet/lib/puppet/network/http/error.rb +73 -0
- data/vendored/puppet/lib/puppet/network/http/factory.rb +47 -0
- data/vendored/puppet/lib/puppet/network/http/handler.rb +183 -0
- data/vendored/puppet/lib/puppet/network/http/issues.rb +12 -0
- data/vendored/puppet/lib/puppet/network/http/memory_response.rb +13 -0
- data/vendored/puppet/lib/puppet/network/http/nocache_pool.rb +21 -0
- data/vendored/puppet/lib/puppet/network/http/pool.rb +129 -0
- data/vendored/puppet/lib/puppet/network/http/rack.rb +33 -0
- data/vendored/puppet/lib/puppet/network/http/rack/rest.rb +162 -0
- data/vendored/puppet/lib/puppet/network/http/request.rb +70 -0
- data/vendored/puppet/lib/puppet/network/http/response.rb +23 -0
- data/vendored/puppet/lib/puppet/network/http/route.rb +100 -0
- data/vendored/puppet/lib/puppet/network/http/session.rb +17 -0
- data/vendored/puppet/lib/puppet/network/http/site.rb +39 -0
- data/vendored/puppet/lib/puppet/network/http/webrick.rb +125 -0
- data/vendored/puppet/lib/puppet/network/http/webrick/rest.rb +114 -0
- data/vendored/puppet/lib/puppet/network/http_pool.rb +61 -0
- data/vendored/puppet/lib/puppet/network/resolver.rb +86 -0
- data/vendored/puppet/lib/puppet/network/rest_controller.rb +2 -0
- data/vendored/puppet/lib/puppet/network/rights.rb +209 -0
- data/vendored/puppet/lib/puppet/network/server.rb +39 -0
- data/vendored/puppet/lib/puppet/node.rb +262 -0
- data/vendored/puppet/lib/puppet/node/environment.rb +572 -0
- data/vendored/puppet/lib/puppet/node/facts.rb +128 -0
- data/vendored/puppet/lib/puppet/parameter.rb +567 -0
- data/vendored/puppet/lib/puppet/parameter/boolean.rb +15 -0
- data/vendored/puppet/lib/puppet/parameter/package_options.rb +31 -0
- data/vendored/puppet/lib/puppet/parameter/path.rb +57 -0
- data/vendored/puppet/lib/puppet/parameter/value.rb +91 -0
- data/vendored/puppet/lib/puppet/parameter/value_collection.rb +212 -0
- data/vendored/puppet/lib/puppet/parser.rb +20 -0
- data/vendored/puppet/lib/puppet/parser/abstract_compiler.rb +36 -0
- data/vendored/puppet/lib/puppet/parser/ast.rb +65 -0
- data/vendored/puppet/lib/puppet/parser/ast/block_expression.rb +15 -0
- data/vendored/puppet/lib/puppet/parser/ast/branch.rb +19 -0
- data/vendored/puppet/lib/puppet/parser/ast/hostclass.rb +27 -0
- data/vendored/puppet/lib/puppet/parser/ast/leaf.rb +75 -0
- data/vendored/puppet/lib/puppet/parser/ast/node.rb +17 -0
- data/vendored/puppet/lib/puppet/parser/ast/pops_bridge.rb +273 -0
- data/vendored/puppet/lib/puppet/parser/ast/resource.rb +66 -0
- data/vendored/puppet/lib/puppet/parser/ast/resource_instance.rb +10 -0
- data/vendored/puppet/lib/puppet/parser/ast/resourceparam.rb +31 -0
- data/vendored/puppet/lib/puppet/parser/ast/top_level_construct.rb +4 -0
- data/vendored/puppet/lib/puppet/parser/compiler.rb +788 -0
- data/vendored/puppet/lib/puppet/parser/compiler/catalog_validator.rb +33 -0
- data/vendored/puppet/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +64 -0
- data/vendored/puppet/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +57 -0
- data/vendored/puppet/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +20 -0
- data/vendored/puppet/lib/puppet/parser/e4_parser_adapter.rb +60 -0
- data/vendored/puppet/lib/puppet/parser/environment_compiler.rb +199 -0
- data/vendored/puppet/lib/puppet/parser/files.rb +92 -0
- data/vendored/puppet/lib/puppet/parser/functions.rb +278 -0
- data/vendored/puppet/lib/puppet/parser/functions/assert_type.rb +60 -0
- data/vendored/puppet/lib/puppet/parser/functions/binary_file.rb +24 -0
- data/vendored/puppet/lib/puppet/parser/functions/break.rb +39 -0
- data/vendored/puppet/lib/puppet/parser/functions/contain.rb +30 -0
- data/vendored/puppet/lib/puppet/parser/functions/create_resources.rb +112 -0
- data/vendored/puppet/lib/puppet/parser/functions/defined.rb +107 -0
- data/vendored/puppet/lib/puppet/parser/functions/dig.rb +38 -0
- data/vendored/puppet/lib/puppet/parser/functions/digest.rb +5 -0
- data/vendored/puppet/lib/puppet/parser/functions/each.rb +104 -0
- data/vendored/puppet/lib/puppet/parser/functions/epp.rb +39 -0
- data/vendored/puppet/lib/puppet/parser/functions/fail.rb +4 -0
- data/vendored/puppet/lib/puppet/parser/functions/file.rb +33 -0
- data/vendored/puppet/lib/puppet/parser/functions/filter.rb +78 -0
- data/vendored/puppet/lib/puppet/parser/functions/find_file.rb +28 -0
- data/vendored/puppet/lib/puppet/parser/functions/fqdn_rand.rb +21 -0
- data/vendored/puppet/lib/puppet/parser/functions/generate.rb +38 -0
- data/vendored/puppet/lib/puppet/parser/functions/hiera.rb +103 -0
- data/vendored/puppet/lib/puppet/parser/functions/hiera_array.rb +92 -0
- data/vendored/puppet/lib/puppet/parser/functions/hiera_hash.rb +102 -0
- data/vendored/puppet/lib/puppet/parser/functions/hiera_include.rb +102 -0
- data/vendored/puppet/lib/puppet/parser/functions/include.rb +34 -0
- data/vendored/puppet/lib/puppet/parser/functions/inline_epp.rb +51 -0
- data/vendored/puppet/lib/puppet/parser/functions/inline_template.rb +27 -0
- data/vendored/puppet/lib/puppet/parser/functions/lest.rb +49 -0
- data/vendored/puppet/lib/puppet/parser/functions/lookup.rb +132 -0
- data/vendored/puppet/lib/puppet/parser/functions/map.rb +76 -0
- data/vendored/puppet/lib/puppet/parser/functions/match.rb +43 -0
- data/vendored/puppet/lib/puppet/parser/functions/md5.rb +5 -0
- data/vendored/puppet/lib/puppet/parser/functions/new.rb +1006 -0
- data/vendored/puppet/lib/puppet/parser/functions/next.rb +38 -0
- data/vendored/puppet/lib/puppet/parser/functions/realize.rb +20 -0
- data/vendored/puppet/lib/puppet/parser/functions/reduce.rb +137 -0
- data/vendored/puppet/lib/puppet/parser/functions/regsubst.rb +62 -0
- data/vendored/puppet/lib/puppet/parser/functions/require.rb +40 -0
- data/vendored/puppet/lib/puppet/parser/functions/return.rb +71 -0
- data/vendored/puppet/lib/puppet/parser/functions/reverse_each.rb +83 -0
- data/vendored/puppet/lib/puppet/parser/functions/scanf.rb +38 -0
- data/vendored/puppet/lib/puppet/parser/functions/sha1.rb +5 -0
- data/vendored/puppet/lib/puppet/parser/functions/shellquote.rb +61 -0
- data/vendored/puppet/lib/puppet/parser/functions/slice.rb +39 -0
- data/vendored/puppet/lib/puppet/parser/functions/split.rb +28 -0
- data/vendored/puppet/lib/puppet/parser/functions/sprintf.rb +36 -0
- data/vendored/puppet/lib/puppet/parser/functions/step.rb +84 -0
- data/vendored/puppet/lib/puppet/parser/functions/strftime.rb +185 -0
- data/vendored/puppet/lib/puppet/parser/functions/tag.rb +12 -0
- data/vendored/puppet/lib/puppet/parser/functions/tagged.rb +24 -0
- data/vendored/puppet/lib/puppet/parser/functions/template.rb +35 -0
- data/vendored/puppet/lib/puppet/parser/functions/then.rb +73 -0
- data/vendored/puppet/lib/puppet/parser/functions/type.rb +53 -0
- data/vendored/puppet/lib/puppet/parser/functions/versioncmp.rb +30 -0
- data/vendored/puppet/lib/puppet/parser/functions/with.rb +28 -0
- data/vendored/puppet/lib/puppet/parser/parser_factory.rb +30 -0
- data/vendored/puppet/lib/puppet/parser/relationship.rb +83 -0
- data/vendored/puppet/lib/puppet/parser/resource.rb +418 -0
- data/vendored/puppet/lib/puppet/parser/resource/param.rb +22 -0
- data/vendored/puppet/lib/puppet/parser/scope.rb +1112 -0
- data/vendored/puppet/lib/puppet/parser/script_compiler.rb +117 -0
- data/vendored/puppet/lib/puppet/parser/templatewrapper.rb +101 -0
- data/vendored/puppet/lib/puppet/parser/type_loader.rb +149 -0
- data/vendored/puppet/lib/puppet/plugins.rb +9 -0
- data/vendored/puppet/lib/puppet/plugins/configuration.rb +25 -0
- data/vendored/puppet/lib/puppet/plugins/syntax_checkers.rb +98 -0
- data/vendored/puppet/lib/puppet/pops.rb +120 -0
- data/vendored/puppet/lib/puppet/pops/adaptable.rb +206 -0
- data/vendored/puppet/lib/puppet/pops/adapters.rb +138 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/access_operator.rb +706 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/callable_signature.rb +107 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/closure.rb +373 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/collector_transformer.rb +233 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +86 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +29 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/collectors/exported_collector.rb +69 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +37 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/compare_operator.rb +252 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/epp_evaluator.rb +94 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/evaluator_impl.rb +1258 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/external_syntax_support.rb +45 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +82 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/literal_evaluator.rb +87 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/puppet_proc.rb +69 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/relationship_operator.rb +185 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/runtime3_converter.rb +200 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/runtime3_resource_support.rb +117 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/runtime3_support.rb +538 -0
- data/vendored/puppet/lib/puppet/pops/functions/dispatch.rb +100 -0
- data/vendored/puppet/lib/puppet/pops/functions/dispatcher.rb +71 -0
- data/vendored/puppet/lib/puppet/pops/functions/function.rb +135 -0
- data/vendored/puppet/lib/puppet/pops/issue_reporter.rb +115 -0
- data/vendored/puppet/lib/puppet/pops/issues.rb +888 -0
- data/vendored/puppet/lib/puppet/pops/label_provider.rb +90 -0
- data/vendored/puppet/lib/puppet/pops/loader/base_loader.rb +166 -0
- data/vendored/puppet/lib/puppet/pops/loader/dependency_loader.rb +92 -0
- data/vendored/puppet/lib/puppet/pops/loader/gem_support.rb +49 -0
- data/vendored/puppet/lib/puppet/pops/loader/loader.rb +204 -0
- data/vendored/puppet/lib/puppet/pops/loader/loader_paths.rb +296 -0
- data/vendored/puppet/lib/puppet/pops/loader/module_loaders.rb +452 -0
- data/vendored/puppet/lib/puppet/pops/loader/null_loader.rb +60 -0
- data/vendored/puppet/lib/puppet/pops/loader/predefined_loader.rb +24 -0
- data/vendored/puppet/lib/puppet/pops/loader/puppet_function_instantiator.rb +84 -0
- data/vendored/puppet/lib/puppet/pops/loader/puppet_plan_instantiator.rb +84 -0
- data/vendored/puppet/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +79 -0
- data/vendored/puppet/lib/puppet/pops/loader/ruby_function_instantiator.rb +46 -0
- data/vendored/puppet/lib/puppet/pops/loader/runtime3_type_loader.rb +101 -0
- data/vendored/puppet/lib/puppet/pops/loader/simple_environment_loader.rb +20 -0
- data/vendored/puppet/lib/puppet/pops/loader/static_loader.rb +164 -0
- data/vendored/puppet/lib/puppet/pops/loader/task_instantiator.rb +117 -0
- data/vendored/puppet/lib/puppet/pops/loader/type_definition_instantiator.rb +97 -0
- data/vendored/puppet/lib/puppet/pops/loader/typed_name.rb +54 -0
- data/vendored/puppet/lib/puppet/pops/loader/uri_helper.rb +22 -0
- data/vendored/puppet/lib/puppet/pops/loaders.rb +517 -0
- data/vendored/puppet/lib/puppet/pops/lookup.rb +96 -0
- data/vendored/puppet/lib/puppet/pops/lookup/configured_data_provider.rb +93 -0
- data/vendored/puppet/lib/puppet/pops/lookup/context.rb +200 -0
- data/vendored/puppet/lib/puppet/pops/lookup/data_adapter.rb +27 -0
- data/vendored/puppet/lib/puppet/pops/lookup/data_dig_function_provider.rb +145 -0
- data/vendored/puppet/lib/puppet/pops/lookup/data_hash_function_provider.rb +126 -0
- data/vendored/puppet/lib/puppet/pops/lookup/data_provider.rb +92 -0
- data/vendored/puppet/lib/puppet/pops/lookup/environment_data_provider.rb +35 -0
- data/vendored/puppet/lib/puppet/pops/lookup/explainer.rb +594 -0
- data/vendored/puppet/lib/puppet/pops/lookup/function_provider.rb +110 -0
- data/vendored/puppet/lib/puppet/pops/lookup/global_data_provider.rb +75 -0
- data/vendored/puppet/lib/puppet/pops/lookup/hiera_config.rb +761 -0
- data/vendored/puppet/lib/puppet/pops/lookup/interpolation.rb +154 -0
- data/vendored/puppet/lib/puppet/pops/lookup/invocation.rb +261 -0
- data/vendored/puppet/lib/puppet/pops/lookup/location_resolver.rb +99 -0
- data/vendored/puppet/lib/puppet/pops/lookup/lookup_adapter.rb +472 -0
- data/vendored/puppet/lib/puppet/pops/lookup/lookup_key.rb +99 -0
- data/vendored/puppet/lib/puppet/pops/lookup/lookup_key_function_provider.rb +92 -0
- data/vendored/puppet/lib/puppet/pops/lookup/module_data_provider.rb +89 -0
- data/vendored/puppet/lib/puppet/pops/lookup/sub_lookup.rb +92 -0
- data/vendored/puppet/lib/puppet/pops/merge_strategy.rb +434 -0
- data/vendored/puppet/lib/puppet/pops/migration/migration_checker.rb +58 -0
- data/vendored/puppet/lib/puppet/pops/model/ast.pp +695 -0
- data/vendored/puppet/lib/puppet/pops/model/ast.rb +4870 -0
- data/vendored/puppet/lib/puppet/pops/model/ast_transformer.rb +131 -0
- data/vendored/puppet/lib/puppet/pops/model/factory.rb +1145 -0
- data/vendored/puppet/lib/puppet/pops/model/model_label_provider.rb +132 -0
- data/vendored/puppet/lib/puppet/pops/model/model_tree_dumper.rb +463 -0
- data/vendored/puppet/lib/puppet/pops/model/tree_dumper.rb +59 -0
- data/vendored/puppet/lib/puppet/pops/parser/code_merger.rb +29 -0
- data/vendored/puppet/lib/puppet/pops/parser/egrammar.ra +937 -0
- data/vendored/puppet/lib/puppet/pops/parser/eparser.rb +3347 -0
- data/vendored/puppet/lib/puppet/pops/parser/epp_parser.rb +51 -0
- data/vendored/puppet/lib/puppet/pops/parser/epp_support.rb +262 -0
- data/vendored/puppet/lib/puppet/pops/parser/evaluating_parser.rb +165 -0
- data/vendored/puppet/lib/puppet/pops/parser/heredoc_support.rb +143 -0
- data/vendored/puppet/lib/puppet/pops/parser/interpolation_support.rb +244 -0
- data/vendored/puppet/lib/puppet/pops/parser/lexer2.rb +796 -0
- data/vendored/puppet/lib/puppet/pops/parser/lexer_support.rb +220 -0
- data/vendored/puppet/lib/puppet/pops/parser/locatable.rb +23 -0
- data/vendored/puppet/lib/puppet/pops/parser/locator.rb +344 -0
- data/vendored/puppet/lib/puppet/pops/parser/parser_support.rb +247 -0
- data/vendored/puppet/lib/puppet/pops/parser/slurp_support.rb +120 -0
- data/vendored/puppet/lib/puppet/pops/patterns.rb +60 -0
- data/vendored/puppet/lib/puppet/pops/pcore.rb +107 -0
- data/vendored/puppet/lib/puppet/pops/puppet_stack.rb +43 -0
- data/vendored/puppet/lib/puppet/pops/resource/param.rb +55 -0
- data/vendored/puppet/lib/puppet/pops/resource/resource_type_impl.rb +314 -0
- data/vendored/puppet/lib/puppet/pops/resource/resource_type_set.pcore +22 -0
- data/vendored/puppet/lib/puppet/pops/semantic_error.rb +29 -0
- data/vendored/puppet/lib/puppet/pops/serialization.rb +41 -0
- data/vendored/puppet/lib/puppet/pops/serialization/abstract_reader.rb +176 -0
- data/vendored/puppet/lib/puppet/pops/serialization/abstract_writer.rb +215 -0
- data/vendored/puppet/lib/puppet/pops/serialization/deserializer.rb +80 -0
- data/vendored/puppet/lib/puppet/pops/serialization/extension.rb +157 -0
- data/vendored/puppet/lib/puppet/pops/serialization/from_data_converter.rb +169 -0
- data/vendored/puppet/lib/puppet/pops/serialization/instance_reader.rb +19 -0
- data/vendored/puppet/lib/puppet/pops/serialization/instance_writer.rb +14 -0
- data/vendored/puppet/lib/puppet/pops/serialization/json.rb +297 -0
- data/vendored/puppet/lib/puppet/pops/serialization/json_path.rb +126 -0
- data/vendored/puppet/lib/puppet/pops/serialization/object.rb +71 -0
- data/vendored/puppet/lib/puppet/pops/serialization/serializer.rb +139 -0
- data/vendored/puppet/lib/puppet/pops/serialization/time_factory.rb +67 -0
- data/vendored/puppet/lib/puppet/pops/serialization/to_data_converter.rb +301 -0
- data/vendored/puppet/lib/puppet/pops/time/timespan.rb +718 -0
- data/vendored/puppet/lib/puppet/pops/time/timestamp.rb +160 -0
- data/vendored/puppet/lib/puppet/pops/types/annotatable.rb +36 -0
- data/vendored/puppet/lib/puppet/pops/types/annotation.rb +71 -0
- data/vendored/puppet/lib/puppet/pops/types/class_loader.rb +129 -0
- data/vendored/puppet/lib/puppet/pops/types/enumeration.rb +16 -0
- data/vendored/puppet/lib/puppet/pops/types/execution_result.rb +126 -0
- data/vendored/puppet/lib/puppet/pops/types/implementation_registry.rb +141 -0
- data/vendored/puppet/lib/puppet/pops/types/iterable.rb +330 -0
- data/vendored/puppet/lib/puppet/pops/types/p_binary_type.rb +226 -0
- data/vendored/puppet/lib/puppet/pops/types/p_error_type.rb +146 -0
- data/vendored/puppet/lib/puppet/pops/types/p_init_type.rb +238 -0
- data/vendored/puppet/lib/puppet/pops/types/p_meta_type.rb +90 -0
- data/vendored/puppet/lib/puppet/pops/types/p_object_type.rb +976 -0
- data/vendored/puppet/lib/puppet/pops/types/p_runtime_type.rb +115 -0
- data/vendored/puppet/lib/puppet/pops/types/p_sem_ver_range_type.rb +191 -0
- data/vendored/puppet/lib/puppet/pops/types/p_sem_ver_type.rb +141 -0
- data/vendored/puppet/lib/puppet/pops/types/p_sensitive_type.rb +73 -0
- data/vendored/puppet/lib/puppet/pops/types/p_timespan_type.rb +192 -0
- data/vendored/puppet/lib/puppet/pops/types/p_timestamp_type.rb +73 -0
- data/vendored/puppet/lib/puppet/pops/types/p_type_set_type.rb +361 -0
- data/vendored/puppet/lib/puppet/pops/types/puppet_object.rb +30 -0
- data/vendored/puppet/lib/puppet/pops/types/recursion_guard.rb +136 -0
- data/vendored/puppet/lib/puppet/pops/types/ruby_generator.rb +432 -0
- data/vendored/puppet/lib/puppet/pops/types/ruby_method.rb +31 -0
- data/vendored/puppet/lib/puppet/pops/types/string_converter.rb +1102 -0
- data/vendored/puppet/lib/puppet/pops/types/task.rb +116 -0
- data/vendored/puppet/lib/puppet/pops/types/tree_iterators.rb +250 -0
- data/vendored/puppet/lib/puppet/pops/types/type_acceptor.rb +25 -0
- data/vendored/puppet/lib/puppet/pops/types/type_asserter.rb +47 -0
- data/vendored/puppet/lib/puppet/pops/types/type_assertion_error.rb +27 -0
- data/vendored/puppet/lib/puppet/pops/types/type_calculator.rb +799 -0
- data/vendored/puppet/lib/puppet/pops/types/type_conversion_error.rb +15 -0
- data/vendored/puppet/lib/puppet/pops/types/type_factory.rb +599 -0
- data/vendored/puppet/lib/puppet/pops/types/type_formatter.rb +769 -0
- data/vendored/puppet/lib/puppet/pops/types/type_mismatch_describer.rb +1062 -0
- data/vendored/puppet/lib/puppet/pops/types/type_parser.rb +602 -0
- data/vendored/puppet/lib/puppet/pops/types/type_set_reference.rb +59 -0
- data/vendored/puppet/lib/puppet/pops/types/types.rb +3519 -0
- data/vendored/puppet/lib/puppet/pops/utils.rb +119 -0
- data/vendored/puppet/lib/puppet/pops/validation.rb +464 -0
- data/vendored/puppet/lib/puppet/pops/validation/checker4_0.rb +996 -0
- data/vendored/puppet/lib/puppet/pops/validation/tasks_checker.rb +60 -0
- data/vendored/puppet/lib/puppet/pops/validation/validator_factory_4_0.rb +43 -0
- data/vendored/puppet/lib/puppet/pops/visitable.rb +6 -0
- data/vendored/puppet/lib/puppet/pops/visitor.rb +116 -0
- data/vendored/puppet/lib/puppet/property.rb +600 -0
- data/vendored/puppet/lib/puppet/property/boolean.rb +7 -0
- data/vendored/puppet/lib/puppet/property/ensure.rb +105 -0
- data/vendored/puppet/lib/puppet/property/keyvalue.rb +95 -0
- data/vendored/puppet/lib/puppet/property/list.rb +69 -0
- data/vendored/puppet/lib/puppet/property/ordered_list.rb +29 -0
- data/vendored/puppet/lib/puppet/provider.rb +603 -0
- data/vendored/puppet/lib/puppet/provider/aixobject.rb +392 -0
- data/vendored/puppet/lib/puppet/provider/augeas/augeas.rb +567 -0
- data/vendored/puppet/lib/puppet/provider/cisco.rb +9 -0
- data/vendored/puppet/lib/puppet/provider/command.rb +25 -0
- data/vendored/puppet/lib/puppet/provider/computer/computer.rb +20 -0
- data/vendored/puppet/lib/puppet/provider/confine.rb +6 -0
- data/vendored/puppet/lib/puppet/provider/cron/crontab.rb +297 -0
- data/vendored/puppet/lib/puppet/provider/exec.rb +98 -0
- data/vendored/puppet/lib/puppet/provider/exec/posix.rb +48 -0
- data/vendored/puppet/lib/puppet/provider/exec/shell.rb +25 -0
- data/vendored/puppet/lib/puppet/provider/exec/windows.rb +55 -0
- data/vendored/puppet/lib/puppet/provider/file/posix.rb +136 -0
- data/vendored/puppet/lib/puppet/provider/file/windows.rb +104 -0
- data/vendored/puppet/lib/puppet/provider/group/aix.rb +141 -0
- data/vendored/puppet/lib/puppet/provider/group/directoryservice.rb +22 -0
- data/vendored/puppet/lib/puppet/provider/group/groupadd.rb +85 -0
- data/vendored/puppet/lib/puppet/provider/group/ldap.rb +45 -0
- data/vendored/puppet/lib/puppet/provider/group/pw.rb +49 -0
- data/vendored/puppet/lib/puppet/provider/group/windows_adsi.rb +109 -0
- data/vendored/puppet/lib/puppet/provider/host/parsed.rb +46 -0
- data/vendored/puppet/lib/puppet/provider/interface/cisco.rb +27 -0
- data/vendored/puppet/lib/puppet/provider/ldap.rb +137 -0
- data/vendored/puppet/lib/puppet/provider/macauthorization/macauthorization.rb +298 -0
- data/vendored/puppet/lib/puppet/provider/mailalias/aliases.rb +50 -0
- data/vendored/puppet/lib/puppet/provider/maillist/mailman.rb +108 -0
- data/vendored/puppet/lib/puppet/provider/mcx/mcxcontent.rb +173 -0
- data/vendored/puppet/lib/puppet/provider/mount.rb +59 -0
- data/vendored/puppet/lib/puppet/provider/mount/parsed.rb +282 -0
- data/vendored/puppet/lib/puppet/provider/naginator.rb +63 -0
- data/vendored/puppet/lib/puppet/provider/nameservice.rb +317 -0
- data/vendored/puppet/lib/puppet/provider/nameservice/directoryservice.rb +507 -0
- data/vendored/puppet/lib/puppet/provider/nameservice/objectadd.rb +33 -0
- data/vendored/puppet/lib/puppet/provider/nameservice/pw.rb +21 -0
- data/vendored/puppet/lib/puppet/provider/network_device.rb +72 -0
- data/vendored/puppet/lib/puppet/provider/package.rb +56 -0
- data/vendored/puppet/lib/puppet/provider/package/aix.rb +152 -0
- data/vendored/puppet/lib/puppet/provider/package/appdmg.rb +110 -0
- data/vendored/puppet/lib/puppet/provider/package/apple.rb +47 -0
- data/vendored/puppet/lib/puppet/provider/package/apt.rb +116 -0
- data/vendored/puppet/lib/puppet/provider/package/aptitude.rb +29 -0
- data/vendored/puppet/lib/puppet/provider/package/aptrpm.rb +83 -0
- data/vendored/puppet/lib/puppet/provider/package/blastwave.rb +111 -0
- data/vendored/puppet/lib/puppet/provider/package/dnf.rb +46 -0
- data/vendored/puppet/lib/puppet/provider/package/dpkg.rb +165 -0
- data/vendored/puppet/lib/puppet/provider/package/fink.rb +79 -0
- data/vendored/puppet/lib/puppet/provider/package/freebsd.rb +47 -0
- data/vendored/puppet/lib/puppet/provider/package/gem.rb +175 -0
- data/vendored/puppet/lib/puppet/provider/package/hpux.rb +44 -0
- data/vendored/puppet/lib/puppet/provider/package/macports.rb +107 -0
- data/vendored/puppet/lib/puppet/provider/package/nim.rb +283 -0
- data/vendored/puppet/lib/puppet/provider/package/openbsd.rb +242 -0
- data/vendored/puppet/lib/puppet/provider/package/opkg.rb +81 -0
- data/vendored/puppet/lib/puppet/provider/package/pacman.rb +267 -0
- data/vendored/puppet/lib/puppet/provider/package/pip.rb +188 -0
- data/vendored/puppet/lib/puppet/provider/package/pip3.rb +20 -0
- data/vendored/puppet/lib/puppet/provider/package/pkg.rb +249 -0
- data/vendored/puppet/lib/puppet/provider/package/pkgdmg.rb +152 -0
- data/vendored/puppet/lib/puppet/provider/package/pkgin.rb +87 -0
- data/vendored/puppet/lib/puppet/provider/package/pkgng.rb +143 -0
- data/vendored/puppet/lib/puppet/provider/package/pkgutil.rb +186 -0
- data/vendored/puppet/lib/puppet/provider/package/portage.rb +301 -0
- data/vendored/puppet/lib/puppet/provider/package/ports.rb +91 -0
- data/vendored/puppet/lib/puppet/provider/package/portupgrade.rb +239 -0
- data/vendored/puppet/lib/puppet/provider/package/puppet_gem.rb +17 -0
- data/vendored/puppet/lib/puppet/provider/package/rpm.rb +405 -0
- data/vendored/puppet/lib/puppet/provider/package/rug.rb +51 -0
- data/vendored/puppet/lib/puppet/provider/package/sun.rb +133 -0
- data/vendored/puppet/lib/puppet/provider/package/sunfreeware.rb +9 -0
- data/vendored/puppet/lib/puppet/provider/package/tdnf.rb +28 -0
- data/vendored/puppet/lib/puppet/provider/package/up2date.rb +40 -0
- data/vendored/puppet/lib/puppet/provider/package/urpmi.rb +55 -0
- data/vendored/puppet/lib/puppet/provider/package/windows.rb +113 -0
- data/vendored/puppet/lib/puppet/provider/package/windows/exe_package.rb +71 -0
- data/vendored/puppet/lib/puppet/provider/package/windows/msi_package.rb +62 -0
- data/vendored/puppet/lib/puppet/provider/package/windows/package.rb +100 -0
- data/vendored/puppet/lib/puppet/provider/package/yum.rb +278 -0
- data/vendored/puppet/lib/puppet/provider/package/zypper.rb +145 -0
- data/vendored/puppet/lib/puppet/provider/parsedfile.rb +459 -0
- data/vendored/puppet/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +590 -0
- data/vendored/puppet/lib/puppet/provider/selboolean/getsetsebool.rb +47 -0
- data/vendored/puppet/lib/puppet/provider/selmodule/semodule.rb +138 -0
- data/vendored/puppet/lib/puppet/provider/service/base.rb +121 -0
- data/vendored/puppet/lib/puppet/provider/service/bsd.rb +51 -0
- data/vendored/puppet/lib/puppet/provider/service/daemontools.rb +194 -0
- data/vendored/puppet/lib/puppet/provider/service/debian.rb +74 -0
- data/vendored/puppet/lib/puppet/provider/service/freebsd.rb +143 -0
- data/vendored/puppet/lib/puppet/provider/service/gentoo.rb +45 -0
- data/vendored/puppet/lib/puppet/provider/service/init.rb +193 -0
- data/vendored/puppet/lib/puppet/provider/service/launchd.rb +346 -0
- data/vendored/puppet/lib/puppet/provider/service/openbsd.rb +100 -0
- data/vendored/puppet/lib/puppet/provider/service/openrc.rb +71 -0
- data/vendored/puppet/lib/puppet/provider/service/openwrt.rb +36 -0
- data/vendored/puppet/lib/puppet/provider/service/rcng.rb +51 -0
- data/vendored/puppet/lib/puppet/provider/service/redhat.rb +71 -0
- data/vendored/puppet/lib/puppet/provider/service/runit.rb +111 -0
- data/vendored/puppet/lib/puppet/provider/service/service.rb +42 -0
- data/vendored/puppet/lib/puppet/provider/service/smf.rb +167 -0
- data/vendored/puppet/lib/puppet/provider/service/src.rb +147 -0
- data/vendored/puppet/lib/puppet/provider/service/systemd.rb +186 -0
- data/vendored/puppet/lib/puppet/provider/service/upstart.rb +359 -0
- data/vendored/puppet/lib/puppet/provider/service/windows.rb +106 -0
- data/vendored/puppet/lib/puppet/provider/ssh_authorized_key/parsed.rb +105 -0
- data/vendored/puppet/lib/puppet/provider/sshkey/parsed.rb +50 -0
- data/vendored/puppet/lib/puppet/provider/user/aix.rb +375 -0
- data/vendored/puppet/lib/puppet/provider/user/directoryservice.rb +632 -0
- data/vendored/puppet/lib/puppet/provider/user/hpux.rb +95 -0
- data/vendored/puppet/lib/puppet/provider/user/ldap.rb +128 -0
- data/vendored/puppet/lib/puppet/provider/user/openbsd.rb +75 -0
- data/vendored/puppet/lib/puppet/provider/user/pw.rb +98 -0
- data/vendored/puppet/lib/puppet/provider/user/user_role_add.rb +227 -0
- data/vendored/puppet/lib/puppet/provider/user/useradd.rb +231 -0
- data/vendored/puppet/lib/puppet/provider/user/windows_adsi.rb +148 -0
- data/vendored/puppet/lib/puppet/provider/vlan/cisco.rb +28 -0
- data/vendored/puppet/lib/puppet/provider/yumrepo/inifile.rb +304 -0
- data/vendored/puppet/lib/puppet/provider/zfs/zfs.rb +84 -0
- data/vendored/puppet/lib/puppet/provider/zone/solaris.rb +364 -0
- data/vendored/puppet/lib/puppet/provider/zpool/zpool.rb +125 -0
- data/vendored/puppet/lib/puppet/reference/configuration.rb +82 -0
- data/vendored/puppet/lib/puppet/reference/function.rb +17 -0
- data/vendored/puppet/lib/puppet/reference/indirection.rb +71 -0
- data/vendored/puppet/lib/puppet/reference/metaparameter.rb +35 -0
- data/vendored/puppet/lib/puppet/reference/providers.rb +118 -0
- data/vendored/puppet/lib/puppet/reference/report.rb +20 -0
- data/vendored/puppet/lib/puppet/reference/type.rb +114 -0
- data/vendored/puppet/lib/puppet/relationship.rb +88 -0
- data/vendored/puppet/lib/puppet/reports.rb +93 -0
- data/vendored/puppet/lib/puppet/reports/http.rb +37 -0
- data/vendored/puppet/lib/puppet/reports/log.rb +14 -0
- data/vendored/puppet/lib/puppet/reports/store.rb +68 -0
- data/vendored/puppet/lib/puppet/resource.rb +669 -0
- data/vendored/puppet/lib/puppet/resource/capability_finder.rb +147 -0
- data/vendored/puppet/lib/puppet/resource/catalog.rb +667 -0
- data/vendored/puppet/lib/puppet/resource/status.rb +221 -0
- data/vendored/puppet/lib/puppet/resource/type.rb +524 -0
- data/vendored/puppet/lib/puppet/resource/type_collection.rb +263 -0
- data/vendored/puppet/lib/puppet/scheduler.rb +16 -0
- data/vendored/puppet/lib/puppet/scheduler/job.rb +53 -0
- data/vendored/puppet/lib/puppet/scheduler/scheduler.rb +44 -0
- data/vendored/puppet/lib/puppet/scheduler/splay_job.rb +32 -0
- data/vendored/puppet/lib/puppet/scheduler/timer.rb +13 -0
- data/vendored/puppet/lib/puppet/settings.rb +1457 -0
- data/vendored/puppet/lib/puppet/settings/array_setting.rb +17 -0
- data/vendored/puppet/lib/puppet/settings/autosign_setting.rb +22 -0
- data/vendored/puppet/lib/puppet/settings/base_setting.rb +177 -0
- data/vendored/puppet/lib/puppet/settings/boolean_setting.rb +32 -0
- data/vendored/puppet/lib/puppet/settings/certificate_revocation_setting.rb +21 -0
- data/vendored/puppet/lib/puppet/settings/config_file.rb +143 -0
- data/vendored/puppet/lib/puppet/settings/directory_setting.rb +18 -0
- data/vendored/puppet/lib/puppet/settings/duration_setting.rb +32 -0
- data/vendored/puppet/lib/puppet/settings/enum_setting.rb +16 -0
- data/vendored/puppet/lib/puppet/settings/environment_conf.rb +204 -0
- data/vendored/puppet/lib/puppet/settings/errors.rb +11 -0
- data/vendored/puppet/lib/puppet/settings/file_or_directory_setting.rb +40 -0
- data/vendored/puppet/lib/puppet/settings/file_setting.rb +245 -0
- data/vendored/puppet/lib/puppet/settings/ini_file.rb +200 -0
- data/vendored/puppet/lib/puppet/settings/path_setting.rb +8 -0
- data/vendored/puppet/lib/puppet/settings/priority_setting.rb +42 -0
- data/vendored/puppet/lib/puppet/settings/server_list_setting.rb +20 -0
- data/vendored/puppet/lib/puppet/settings/string_setting.rb +9 -0
- data/vendored/puppet/lib/puppet/settings/symbolic_enum_setting.rb +17 -0
- data/vendored/puppet/lib/puppet/settings/terminus_setting.rb +14 -0
- data/vendored/puppet/lib/puppet/settings/ttl_setting.rb +46 -0
- data/vendored/puppet/lib/puppet/settings/value_translator.rb +15 -0
- data/vendored/puppet/lib/puppet/ssl.rb +13 -0
- data/vendored/puppet/lib/puppet/ssl/base.rb +153 -0
- data/vendored/puppet/lib/puppet/ssl/certificate.rb +95 -0
- data/vendored/puppet/lib/puppet/ssl/certificate_authority.rb +553 -0
- data/vendored/puppet/lib/puppet/ssl/certificate_authority/autosign_command.rb +45 -0
- data/vendored/puppet/lib/puppet/ssl/certificate_authority/interface.rb +324 -0
- data/vendored/puppet/lib/puppet/ssl/certificate_factory.rb +219 -0
- data/vendored/puppet/lib/puppet/ssl/certificate_request.rb +327 -0
- data/vendored/puppet/lib/puppet/ssl/certificate_request_attributes.rb +37 -0
- data/vendored/puppet/lib/puppet/ssl/certificate_revocation_list.rb +111 -0
- data/vendored/puppet/lib/puppet/ssl/certificate_signer.rb +27 -0
- data/vendored/puppet/lib/puppet/ssl/configuration.rb +61 -0
- data/vendored/puppet/lib/puppet/ssl/digest.rb +20 -0
- data/vendored/puppet/lib/puppet/ssl/host.rb +400 -0
- data/vendored/puppet/lib/puppet/ssl/inventory.rb +55 -0
- data/vendored/puppet/lib/puppet/ssl/key.rb +63 -0
- data/vendored/puppet/lib/puppet/ssl/oids.rb +187 -0
- data/vendored/puppet/lib/puppet/ssl/validator.rb +60 -0
- data/vendored/puppet/lib/puppet/ssl/validator/default_validator.rb +173 -0
- data/vendored/puppet/lib/puppet/ssl/validator/no_validator.rb +20 -0
- data/vendored/puppet/lib/puppet/status.rb +40 -0
- data/vendored/puppet/lib/puppet/syntax_checkers.rb +3 -0
- data/vendored/puppet/lib/puppet/syntax_checkers/base64.rb +41 -0
- data/vendored/puppet/lib/puppet/syntax_checkers/json.rb +35 -0
- data/vendored/puppet/lib/puppet/test/test_helper.rb +252 -0
- data/vendored/puppet/lib/puppet/transaction.rb +417 -0
- data/vendored/puppet/lib/puppet/transaction/additional_resource_generator.rb +220 -0
- data/vendored/puppet/lib/puppet/transaction/event.rb +144 -0
- data/vendored/puppet/lib/puppet/transaction/event_manager.rb +167 -0
- data/vendored/puppet/lib/puppet/transaction/persistence.rb +84 -0
- data/vendored/puppet/lib/puppet/transaction/report.rb +460 -0
- data/vendored/puppet/lib/puppet/transaction/resource_harness.rb +318 -0
- data/vendored/puppet/lib/puppet/type.rb +2664 -0
- data/vendored/puppet/lib/puppet/type/augeas.rb +211 -0
- data/vendored/puppet/lib/puppet/type/component.rb +88 -0
- data/vendored/puppet/lib/puppet/type/computer.rb +66 -0
- data/vendored/puppet/lib/puppet/type/cron.rb +475 -0
- data/vendored/puppet/lib/puppet/type/exec.rb +622 -0
- data/vendored/puppet/lib/puppet/type/file.rb +1039 -0
- data/vendored/puppet/lib/puppet/type/file/checksum.rb +44 -0
- data/vendored/puppet/lib/puppet/type/file/checksum_value.rb +53 -0
- data/vendored/puppet/lib/puppet/type/file/content.rb +160 -0
- data/vendored/puppet/lib/puppet/type/file/ctime.rb +20 -0
- data/vendored/puppet/lib/puppet/type/file/data_sync.rb +92 -0
- data/vendored/puppet/lib/puppet/type/file/ensure.rb +192 -0
- data/vendored/puppet/lib/puppet/type/file/group.rb +41 -0
- data/vendored/puppet/lib/puppet/type/file/mode.rb +177 -0
- data/vendored/puppet/lib/puppet/type/file/mtime.rb +18 -0
- data/vendored/puppet/lib/puppet/type/file/owner.rb +44 -0
- data/vendored/puppet/lib/puppet/type/file/selcontext.rb +141 -0
- data/vendored/puppet/lib/puppet/type/file/source.rb +356 -0
- data/vendored/puppet/lib/puppet/type/file/target.rb +87 -0
- data/vendored/puppet/lib/puppet/type/file/type.rb +19 -0
- data/vendored/puppet/lib/puppet/type/filebucket.rb +117 -0
- data/vendored/puppet/lib/puppet/type/group.rb +206 -0
- data/vendored/puppet/lib/puppet/type/host.rb +95 -0
- data/vendored/puppet/lib/puppet/type/interface.rb +121 -0
- data/vendored/puppet/lib/puppet/type/k5login.rb +88 -0
- data/vendored/puppet/lib/puppet/type/macauthorization.rb +167 -0
- data/vendored/puppet/lib/puppet/type/mailalias.rb +46 -0
- data/vendored/puppet/lib/puppet/type/maillist.rb +62 -0
- data/vendored/puppet/lib/puppet/type/mcx.rb +98 -0
- data/vendored/puppet/lib/puppet/type/mount.rb +310 -0
- data/vendored/puppet/lib/puppet/type/nagios_command.rb +3 -0
- data/vendored/puppet/lib/puppet/type/nagios_contact.rb +3 -0
- data/vendored/puppet/lib/puppet/type/nagios_contactgroup.rb +3 -0
- data/vendored/puppet/lib/puppet/type/nagios_host.rb +3 -0
- data/vendored/puppet/lib/puppet/type/nagios_hostdependency.rb +3 -0
- data/vendored/puppet/lib/puppet/type/nagios_hostescalation.rb +3 -0
- data/vendored/puppet/lib/puppet/type/nagios_hostextinfo.rb +3 -0
- data/vendored/puppet/lib/puppet/type/nagios_hostgroup.rb +3 -0
- data/vendored/puppet/lib/puppet/type/nagios_service.rb +3 -0
- data/vendored/puppet/lib/puppet/type/nagios_servicedependency.rb +3 -0
- data/vendored/puppet/lib/puppet/type/nagios_serviceescalation.rb +3 -0
- data/vendored/puppet/lib/puppet/type/nagios_serviceextinfo.rb +3 -0
- data/vendored/puppet/lib/puppet/type/nagios_servicegroup.rb +3 -0
- data/vendored/puppet/lib/puppet/type/nagios_timeperiod.rb +3 -0
- data/vendored/puppet/lib/puppet/type/notify.rb +46 -0
- data/vendored/puppet/lib/puppet/type/package.rb +571 -0
- data/vendored/puppet/lib/puppet/type/resources.rb +180 -0
- data/vendored/puppet/lib/puppet/type/router.rb +17 -0
- data/vendored/puppet/lib/puppet/type/schedule.rb +469 -0
- data/vendored/puppet/lib/puppet/type/scheduled_task.rb +183 -0
- data/vendored/puppet/lib/puppet/type/selboolean.rb +26 -0
- data/vendored/puppet/lib/puppet/type/selmodule.rb +59 -0
- data/vendored/puppet/lib/puppet/type/service.rb +258 -0
- data/vendored/puppet/lib/puppet/type/ssh_authorized_key.rb +143 -0
- data/vendored/puppet/lib/puppet/type/sshkey.rb +83 -0
- data/vendored/puppet/lib/puppet/type/stage.rb +27 -0
- data/vendored/puppet/lib/puppet/type/tidy.rb +336 -0
- data/vendored/puppet/lib/puppet/type/user.rb +770 -0
- data/vendored/puppet/lib/puppet/type/vlan.rb +26 -0
- data/vendored/puppet/lib/puppet/type/whit.rb +34 -0
- data/vendored/puppet/lib/puppet/type/yumrepo.rb +409 -0
- data/vendored/puppet/lib/puppet/type/zfs.rb +150 -0
- data/vendored/puppet/lib/puppet/type/zone.rb +382 -0
- data/vendored/puppet/lib/puppet/type/zpool.rb +91 -0
- data/vendored/puppet/lib/puppet/util.rb +705 -0
- data/vendored/puppet/lib/puppet/util/at_fork.rb +35 -0
- data/vendored/puppet/lib/puppet/util/at_fork/noop.rb +18 -0
- data/vendored/puppet/lib/puppet/util/at_fork/solaris.rb +158 -0
- data/vendored/puppet/lib/puppet/util/autoload.rb +226 -0
- data/vendored/puppet/lib/puppet/util/backups.rb +86 -0
- data/vendored/puppet/lib/puppet/util/character_encoding.rb +98 -0
- data/vendored/puppet/lib/puppet/util/checksums.rb +282 -0
- data/vendored/puppet/lib/puppet/util/classgen.rb +228 -0
- data/vendored/puppet/lib/puppet/util/colors.rb +100 -0
- data/vendored/puppet/lib/puppet/util/command_line.rb +185 -0
- data/vendored/puppet/lib/puppet/util/command_line/puppet_option_parser.rb +87 -0
- data/vendored/puppet/lib/puppet/util/command_line/trollop.rb +824 -0
- data/vendored/puppet/lib/puppet/util/constant_inflector.rb +24 -0
- data/vendored/puppet/lib/puppet/util/diff.rb +79 -0
- data/vendored/puppet/lib/puppet/util/docs.rb +128 -0
- data/vendored/puppet/lib/puppet/util/errors.rb +108 -0
- data/vendored/puppet/lib/puppet/util/execution.rb +412 -0
- data/vendored/puppet/lib/puppet/util/execution_stub.rb +26 -0
- data/vendored/puppet/lib/puppet/util/feature.rb +95 -0
- data/vendored/puppet/lib/puppet/util/file_watcher.rb +28 -0
- data/vendored/puppet/lib/puppet/util/fileparsing.rb +377 -0
- data/vendored/puppet/lib/puppet/util/filetype.rb +309 -0
- data/vendored/puppet/lib/puppet/util/http_proxy.rb +197 -0
- data/vendored/puppet/lib/puppet/util/inifile.rb +341 -0
- data/vendored/puppet/lib/puppet/util/instance_loader.rb +81 -0
- data/vendored/puppet/lib/puppet/util/json_lockfile.rb +44 -0
- data/vendored/puppet/lib/puppet/util/ldap.rb +2 -0
- data/vendored/puppet/lib/puppet/util/ldap/connection.rb +71 -0
- data/vendored/puppet/lib/puppet/util/ldap/generator.rb +42 -0
- data/vendored/puppet/lib/puppet/util/ldap/manager.rb +278 -0
- data/vendored/puppet/lib/puppet/util/libuser.conf +15 -0
- data/vendored/puppet/lib/puppet/util/libuser.rb +12 -0
- data/vendored/puppet/lib/puppet/util/limits.rb +12 -0
- data/vendored/puppet/lib/puppet/util/lockfile.rb +66 -0
- data/vendored/puppet/lib/puppet/util/log.rb +423 -0
- data/vendored/puppet/lib/puppet/util/log/destination.rb +49 -0
- data/vendored/puppet/lib/puppet/util/log/destinations.rb +249 -0
- data/vendored/puppet/lib/puppet/util/logging.rb +318 -0
- data/vendored/puppet/lib/puppet/util/metaid.rb +21 -0
- data/vendored/puppet/lib/puppet/util/methodhelper.rb +32 -0
- data/vendored/puppet/lib/puppet/util/metric.rb +64 -0
- data/vendored/puppet/lib/puppet/util/monkey_patches.rb +108 -0
- data/vendored/puppet/lib/puppet/util/multi_match.rb +51 -0
- data/vendored/puppet/lib/puppet/util/nagios_maker.rb +85 -0
- data/vendored/puppet/lib/puppet/util/network_device.rb +17 -0
- data/vendored/puppet/lib/puppet/util/network_device/base.rb +23 -0
- data/vendored/puppet/lib/puppet/util/network_device/cisco.rb +4 -0
- data/vendored/puppet/lib/puppet/util/network_device/cisco/device.rb +285 -0
- data/vendored/puppet/lib/puppet/util/network_device/cisco/facts.rb +72 -0
- data/vendored/puppet/lib/puppet/util/network_device/cisco/interface.rb +94 -0
- data/vendored/puppet/lib/puppet/util/network_device/config.rb +98 -0
- data/vendored/puppet/lib/puppet/util/network_device/ipcalc.rb +68 -0
- data/vendored/puppet/lib/puppet/util/network_device/transport.rb +5 -0
- data/vendored/puppet/lib/puppet/util/network_device/transport/base.rb +26 -0
- data/vendored/puppet/lib/puppet/util/network_device/transport/ssh.rb +126 -0
- data/vendored/puppet/lib/puppet/util/network_device/transport/telnet.rb +47 -0
- data/vendored/puppet/lib/puppet/util/package.rb +31 -0
- data/vendored/puppet/lib/puppet/util/pidlock.rb +62 -0
- data/vendored/puppet/lib/puppet/util/platform.rb +22 -0
- data/vendored/puppet/lib/puppet/util/plist.rb +153 -0
- data/vendored/puppet/lib/puppet/util/posix.rb +137 -0
- data/vendored/puppet/lib/puppet/util/profiler.rb +53 -0
- data/vendored/puppet/lib/puppet/util/profiler/aggregate.rb +85 -0
- data/vendored/puppet/lib/puppet/util/profiler/around_profiler.rb +67 -0
- data/vendored/puppet/lib/puppet/util/profiler/logging.rb +48 -0
- data/vendored/puppet/lib/puppet/util/profiler/object_counts.rb +17 -0
- data/vendored/puppet/lib/puppet/util/profiler/wall_clock.rb +35 -0
- data/vendored/puppet/lib/puppet/util/provider_features.rb +184 -0
- data/vendored/puppet/lib/puppet/util/psych_support.rb +30 -0
- data/vendored/puppet/lib/puppet/util/rdoc.rb +60 -0
- data/vendored/puppet/lib/puppet/util/rdoc/code_objects.rb +294 -0
- data/vendored/puppet/lib/puppet/util/rdoc/generators/puppet_generator.rb +910 -0
- data/vendored/puppet/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1085 -0
- data/vendored/puppet/lib/puppet/util/rdoc/parser.rb +12 -0
- data/vendored/puppet/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +259 -0
- data/vendored/puppet/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +14 -0
- data/vendored/puppet/lib/puppet/util/reference.rb +126 -0
- data/vendored/puppet/lib/puppet/util/resource_template.rb +61 -0
- data/vendored/puppet/lib/puppet/util/retry_action.rb +46 -0
- data/vendored/puppet/lib/puppet/util/rubygems.rb +75 -0
- data/vendored/puppet/lib/puppet/util/run_mode.rb +110 -0
- data/vendored/puppet/lib/puppet/util/selinux.rb +264 -0
- data/vendored/puppet/lib/puppet/util/skip_tags.rb +9 -0
- data/vendored/puppet/lib/puppet/util/splayer.rb +18 -0
- data/vendored/puppet/lib/puppet/util/ssl.rb +53 -0
- data/vendored/puppet/lib/puppet/util/storage.rb +89 -0
- data/vendored/puppet/lib/puppet/util/suidmanager.rb +165 -0
- data/vendored/puppet/lib/puppet/util/symbolic_file_mode.rb +144 -0
- data/vendored/puppet/lib/puppet/util/tag_set.rb +27 -0
- data/vendored/puppet/lib/puppet/util/tagging.rb +118 -0
- data/vendored/puppet/lib/puppet/util/terminal.rb +16 -0
- data/vendored/puppet/lib/puppet/util/user_attr.rb +21 -0
- data/vendored/puppet/lib/puppet/util/warnings.rb +33 -0
- data/vendored/puppet/lib/puppet/util/watched_file.rb +37 -0
- data/vendored/puppet/lib/puppet/util/watcher.rb +17 -0
- data/vendored/puppet/lib/puppet/util/watcher/change_watcher.rb +33 -0
- data/vendored/puppet/lib/puppet/util/watcher/periodic_watcher.rb +37 -0
- data/vendored/puppet/lib/puppet/util/watcher/timer.rb +19 -0
- data/vendored/puppet/lib/puppet/util/windows.rb +35 -0
- data/vendored/puppet/lib/puppet/util/windows/access_control_entry.rb +84 -0
- data/vendored/puppet/lib/puppet/util/windows/access_control_list.rb +113 -0
- data/vendored/puppet/lib/puppet/util/windows/adsi.rb +548 -0
- data/vendored/puppet/lib/puppet/util/windows/api_types.rb +282 -0
- data/vendored/puppet/lib/puppet/util/windows/com.rb +224 -0
- data/vendored/puppet/lib/puppet/util/windows/error.rb +83 -0
- data/vendored/puppet/lib/puppet/util/windows/eventlog.rb +192 -0
- data/vendored/puppet/lib/puppet/util/windows/file.rb +488 -0
- data/vendored/puppet/lib/puppet/util/windows/principal.rb +191 -0
- data/vendored/puppet/lib/puppet/util/windows/process.rb +497 -0
- data/vendored/puppet/lib/puppet/util/windows/registry.rb +374 -0
- data/vendored/puppet/lib/puppet/util/windows/root_certs.rb +108 -0
- data/vendored/puppet/lib/puppet/util/windows/security.rb +857 -0
- data/vendored/puppet/lib/puppet/util/windows/security_descriptor.rb +62 -0
- data/vendored/puppet/lib/puppet/util/windows/sid.rb +231 -0
- data/vendored/puppet/lib/puppet/util/windows/string.rb +16 -0
- data/vendored/puppet/lib/puppet/util/windows/taskscheduler.rb +1276 -0
- data/vendored/puppet/lib/puppet/util/windows/user.rb +309 -0
- data/vendored/puppet/lib/puppet/util/yaml.rb +36 -0
- data/vendored/puppet/lib/puppet/vendor.rb +57 -0
- data/vendored/puppet/lib/puppet/vendor/deep_merge/CHANGELOG +45 -0
- data/vendored/puppet/lib/puppet/vendor/deep_merge/Gemfile +3 -0
- data/vendored/puppet/lib/puppet/vendor/deep_merge/LICENSE +21 -0
- data/vendored/puppet/lib/puppet/vendor/deep_merge/PUPPET_README.md +6 -0
- data/vendored/puppet/lib/puppet/vendor/deep_merge/README.md +113 -0
- data/vendored/puppet/lib/puppet/vendor/deep_merge/Rakefile +19 -0
- data/vendored/puppet/lib/puppet/vendor/deep_merge/deep_merge.gemspec +35 -0
- data/vendored/puppet/lib/puppet/vendor/deep_merge/lib/deep_merge.rb +2 -0
- data/vendored/puppet/lib/puppet/vendor/deep_merge/lib/deep_merge/core.rb +210 -0
- data/vendored/puppet/lib/puppet/vendor/deep_merge/lib/deep_merge/deep_merge_hash.rb +28 -0
- data/vendored/puppet/lib/puppet/vendor/deep_merge/lib/deep_merge/rails_compat.rb +27 -0
- data/vendored/puppet/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +608 -0
- data/vendored/puppet/lib/puppet/vendor/load_deep_merge.rb +1 -0
- data/vendored/puppet/lib/puppet/vendor/load_pathspec.rb +1 -0
- data/vendored/puppet/lib/puppet/vendor/load_semantic.rb +1 -0
- data/vendored/puppet/lib/puppet/vendor/load_semantic_puppet.rb +1 -0
- data/vendored/puppet/lib/puppet/vendor/pathspec/CHANGELOG.md +2 -0
- data/vendored/puppet/lib/puppet/vendor/pathspec/LICENSE +201 -0
- data/vendored/puppet/lib/puppet/vendor/pathspec/PUPPET_README.md +6 -0
- data/vendored/puppet/lib/puppet/vendor/pathspec/README.md +53 -0
- data/vendored/puppet/lib/puppet/vendor/pathspec/lib/pathspec.rb +122 -0
- data/vendored/puppet/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +275 -0
- data/vendored/puppet/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +17 -0
- data/vendored/puppet/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +14 -0
- data/vendored/puppet/lib/puppet/vendor/require_vendored.rb +6 -0
- data/vendored/puppet/lib/puppet/vendor/semantic/lib/semantic.rb +5 -0
- data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +7 -0
- data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency.rb +181 -0
- data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/graph.rb +60 -0
- data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/graph_node.rb +117 -0
- data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +58 -0
- data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/source.rb +25 -0
- data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/unsatisfiable_graph.rb +31 -0
- data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +3 -0
- data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version.rb +203 -0
- data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version_range.rb +758 -0
- data/vendored/puppet/lib/puppet/vendor/semantic_puppet/locales/config.yaml +21 -0
- data/vendored/puppet/lib/puppet/version.rb +93 -0
- data/vendored/puppet/lib/puppet_pal.rb +290 -0
- data/vendored/puppet/lib/puppet_x.rb +14 -0
- data/vendored/require_vendored.rb +11 -0
- metadata +1501 -9
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'uri'
|
2
|
+
|
3
|
+
require 'puppet/forge'
|
4
|
+
|
5
|
+
class Puppet::Forge
|
6
|
+
# = Cache
|
7
|
+
#
|
8
|
+
# Provides methods for reading files from local cache, filesystem or network.
|
9
|
+
class Cache
|
10
|
+
|
11
|
+
# Instantiate new cache for the +repository+ instance.
|
12
|
+
def initialize(repository, options = {})
|
13
|
+
@repository = repository
|
14
|
+
@options = options
|
15
|
+
end
|
16
|
+
|
17
|
+
# Return filename retrieved from +uri+ instance. Will download this file and
|
18
|
+
# cache it if needed.
|
19
|
+
#
|
20
|
+
# TODO: Add checksum support.
|
21
|
+
# TODO: Add error checking.
|
22
|
+
def retrieve(url)
|
23
|
+
(path + File.basename(url.to_s)).tap do |cached_file|
|
24
|
+
uri = url.is_a?(::URI) ? url : ::URI.parse(url)
|
25
|
+
unless cached_file.file?
|
26
|
+
if uri.scheme == 'file'
|
27
|
+
# CGI.unescape butchers Uris that are escaped properly
|
28
|
+
FileUtils.cp(URI.unescape(uri.path), cached_file)
|
29
|
+
else
|
30
|
+
# TODO: Handle HTTPS; probably should use repository.contact
|
31
|
+
data = read_retrieve(uri)
|
32
|
+
cached_file.open('wb') { |f| f.write data }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# Return contents of file at the given URI's +uri+.
|
39
|
+
def read_retrieve(uri)
|
40
|
+
return uri.read
|
41
|
+
end
|
42
|
+
|
43
|
+
# Return Pathname for repository's cache directory, create it if needed.
|
44
|
+
def path
|
45
|
+
(self.class.base_path + @repository.cache_key).tap{ |o| o.mkpath }
|
46
|
+
end
|
47
|
+
|
48
|
+
# Return the base Pathname for all the caches.
|
49
|
+
def self.base_path
|
50
|
+
(Pathname(Puppet.settings[:module_working_dir]) + 'cache').tap do |o|
|
51
|
+
o.mkpath unless o.exist?
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Clean out all the caches.
|
56
|
+
def self.clean
|
57
|
+
base_path.rmtree if base_path.exist?
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'puppet/error'
|
3
|
+
require 'puppet/forge'
|
4
|
+
|
5
|
+
# Puppet::Forge specific exceptions
|
6
|
+
module Puppet::Forge::Errors
|
7
|
+
|
8
|
+
# This exception is the parent for all Forge API errors
|
9
|
+
class ForgeError < Puppet::Error
|
10
|
+
# This is normally set by the child class, but if it is not this will
|
11
|
+
# fall back to displaying the message as a multiline.
|
12
|
+
#
|
13
|
+
# @return [String] the multiline version of the error message
|
14
|
+
def multiline
|
15
|
+
self.message
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# This exception is raised when there is an SSL verification error when
|
20
|
+
# communicating with the forge.
|
21
|
+
class SSLVerifyError < ForgeError
|
22
|
+
# @option options [String] :uri The URI that failed
|
23
|
+
# @option options [String] :original the original exception
|
24
|
+
def initialize(options)
|
25
|
+
@uri = options[:uri]
|
26
|
+
original = options[:original]
|
27
|
+
|
28
|
+
super(_("Unable to verify the SSL certificate at %{uri}") % { uri: @uri }, original)
|
29
|
+
end
|
30
|
+
|
31
|
+
# Return a multiline version of the error message
|
32
|
+
#
|
33
|
+
# @return [String] the multiline version of the error message
|
34
|
+
def multiline
|
35
|
+
_(<<-EOS).chomp % { uri: @uri }
|
36
|
+
Could not connect via HTTPS to %{uri}
|
37
|
+
Unable to verify the SSL certificate
|
38
|
+
The certificate may not be signed by a valid CA
|
39
|
+
The CA bundle included with OpenSSL may not be valid or up to date
|
40
|
+
EOS
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# This exception is raised when there is a communication error when connecting
|
45
|
+
# to the forge
|
46
|
+
class CommunicationError < ForgeError
|
47
|
+
# @option options [String] :uri The URI that failed
|
48
|
+
# @option options [String] :original the original exception
|
49
|
+
def initialize(options)
|
50
|
+
@uri = options[:uri]
|
51
|
+
original = options[:original]
|
52
|
+
@detail = original.message
|
53
|
+
|
54
|
+
message = _("Unable to connect to the server at %{uri}. Detail: %{detail}.") % { uri: @uri, detail: @detail }
|
55
|
+
super(message, original)
|
56
|
+
end
|
57
|
+
|
58
|
+
# Return a multiline version of the error message
|
59
|
+
#
|
60
|
+
# @return [String] the multiline version of the error message
|
61
|
+
def multiline
|
62
|
+
_(<<-EOS).chomp % { uri: @uri, detail: @detail }
|
63
|
+
Could not connect to %{uri}
|
64
|
+
There was a network communications problem
|
65
|
+
The error we caught said '%{detail}'
|
66
|
+
Check your network connection and try again
|
67
|
+
EOS
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# This exception is raised when there is a bad HTTP response from the forge
|
72
|
+
# and optionally a message in the response.
|
73
|
+
class ResponseError < ForgeError
|
74
|
+
# @option options [String] :uri The URI that failed
|
75
|
+
# @option options [String] :input The user's input (e.g. module name)
|
76
|
+
# @option options [String] :message Error from the API response (optional)
|
77
|
+
# @option options [Net::HTTPResponse] :response The original HTTP response
|
78
|
+
def initialize(options)
|
79
|
+
@uri = options[:uri]
|
80
|
+
@message = options[:message]
|
81
|
+
response = options[:response]
|
82
|
+
@response = "#{response.code} #{response.message.strip}"
|
83
|
+
|
84
|
+
begin
|
85
|
+
body = JSON.parse(response.body)
|
86
|
+
if body['message']
|
87
|
+
@message ||= body['message'].strip
|
88
|
+
end
|
89
|
+
rescue JSON::ParserError
|
90
|
+
end
|
91
|
+
|
92
|
+
message = _("Request to Puppet Forge failed. Detail: ")
|
93
|
+
message << @message << " / " if @message
|
94
|
+
message << @response << "."
|
95
|
+
super(message, original)
|
96
|
+
end
|
97
|
+
|
98
|
+
# Return a multiline version of the error message
|
99
|
+
#
|
100
|
+
# @return [String] the multiline version of the error message
|
101
|
+
def multiline
|
102
|
+
message = _(<<-EOS).chomp % { uri: @uri, response: @response }
|
103
|
+
Request to Puppet Forge failed.
|
104
|
+
The server being queried was %{uri}
|
105
|
+
The HTTP response we received was '%{response}'
|
106
|
+
EOS
|
107
|
+
message << _("\n The message we received said '%{message}'") % { message: @message } if @message
|
108
|
+
message
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
require 'net/https'
|
2
|
+
require 'digest/sha1'
|
3
|
+
require 'uri'
|
4
|
+
require 'puppet/util/http_proxy'
|
5
|
+
require 'puppet/forge'
|
6
|
+
require 'puppet/forge/errors'
|
7
|
+
require 'puppet/network/http'
|
8
|
+
|
9
|
+
class Puppet::Forge
|
10
|
+
# = Repository
|
11
|
+
#
|
12
|
+
# This class is a file for accessing remote repositories with modules.
|
13
|
+
class Repository
|
14
|
+
include Puppet::Forge::Errors
|
15
|
+
|
16
|
+
attr_reader :uri, :cache
|
17
|
+
|
18
|
+
# List of Net::HTTP exceptions to catch
|
19
|
+
NET_HTTP_EXCEPTIONS = [
|
20
|
+
EOFError,
|
21
|
+
Errno::ECONNABORTED,
|
22
|
+
Errno::ECONNREFUSED,
|
23
|
+
Errno::ECONNRESET,
|
24
|
+
Errno::EINVAL,
|
25
|
+
Errno::ETIMEDOUT,
|
26
|
+
Net::HTTPBadResponse,
|
27
|
+
Net::HTTPHeaderSyntaxError,
|
28
|
+
Net::ProtocolError,
|
29
|
+
SocketError,
|
30
|
+
]
|
31
|
+
|
32
|
+
if Puppet.features.zlib?
|
33
|
+
NET_HTTP_EXCEPTIONS << Zlib::GzipFile::Error
|
34
|
+
end
|
35
|
+
|
36
|
+
# Instantiate a new repository instance rooted at the +url+.
|
37
|
+
# The library will report +for_agent+ in the User-Agent to the repository.
|
38
|
+
def initialize(host, for_agent)
|
39
|
+
@host = host
|
40
|
+
@agent = for_agent
|
41
|
+
@cache = Cache.new(self)
|
42
|
+
@uri = URI.parse(host)
|
43
|
+
end
|
44
|
+
|
45
|
+
# Return a Net::HTTPResponse read for this +path+.
|
46
|
+
def make_http_request(path, io = nil)
|
47
|
+
Puppet.debug "HTTP GET #{@host}#{path}"
|
48
|
+
request = get_request_object(@uri.path.chomp('/')+path)
|
49
|
+
return read_response(request, io)
|
50
|
+
end
|
51
|
+
|
52
|
+
def forge_authorization
|
53
|
+
if Puppet[:forge_authorization]
|
54
|
+
Puppet[:forge_authorization]
|
55
|
+
elsif Puppet.features.pe_license?
|
56
|
+
PELicense.load_license_key.authorization_token
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# responsible for properly encoding a URI
|
61
|
+
def get_request_object(path)
|
62
|
+
headers = {
|
63
|
+
"User-Agent" => user_agent,
|
64
|
+
}
|
65
|
+
|
66
|
+
if Puppet.features.zlib?
|
67
|
+
headers = headers.merge({
|
68
|
+
"Accept-Encoding" => Puppet::Network::HTTP::Compression::ACCEPT_ENCODING
|
69
|
+
})
|
70
|
+
end
|
71
|
+
|
72
|
+
if forge_authorization
|
73
|
+
headers = headers.merge({"Authorization" => forge_authorization})
|
74
|
+
end
|
75
|
+
|
76
|
+
request = Net::HTTP::Get.new(Puppet::Util.uri_encode(path), headers)
|
77
|
+
|
78
|
+
unless @uri.user.nil? || @uri.password.nil? || forge_authorization
|
79
|
+
request.basic_auth(@uri.user, @uri.password)
|
80
|
+
end
|
81
|
+
|
82
|
+
return request
|
83
|
+
end
|
84
|
+
|
85
|
+
# Return a Net::HTTPResponse read from this HTTPRequest +request+.
|
86
|
+
#
|
87
|
+
# @param request [Net::HTTPRequest] request to make
|
88
|
+
# @return [Net::HTTPResponse] response from request
|
89
|
+
# @raise [Puppet::Forge::Errors::CommunicationError] if there is a network
|
90
|
+
# related error
|
91
|
+
# @raise [Puppet::Forge::Errors::SSLVerifyError] if there is a problem
|
92
|
+
# verifying the remote SSL certificate
|
93
|
+
def read_response(request, io = nil)
|
94
|
+
http_object = Puppet::Util::HttpProxy.get_http_object(uri)
|
95
|
+
|
96
|
+
http_object.start do |http|
|
97
|
+
response = http.request(request)
|
98
|
+
|
99
|
+
if Puppet.features.zlib?
|
100
|
+
if response && response.key?("content-encoding")
|
101
|
+
case response["content-encoding"]
|
102
|
+
when "gzip"
|
103
|
+
response.body = Zlib::GzipReader.new(StringIO.new(response.read_body), :encoding => "ASCII-8BIT").read
|
104
|
+
response.delete("content-encoding")
|
105
|
+
when "deflate"
|
106
|
+
response.body = Zlib::Inflate.inflate(response.read_body)
|
107
|
+
response.delete("content-encoding")
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
io.write(response.body) if io.respond_to? :write
|
113
|
+
response
|
114
|
+
end
|
115
|
+
rescue *NET_HTTP_EXCEPTIONS => e
|
116
|
+
raise CommunicationError.new(:uri => @uri.to_s, :original => e)
|
117
|
+
rescue OpenSSL::SSL::SSLError => e
|
118
|
+
if e.message =~ /certificate verify failed/
|
119
|
+
raise SSLVerifyError.new(:uri => @uri.to_s, :original => e)
|
120
|
+
else
|
121
|
+
raise e
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
# Return the local file name containing the data downloaded from the
|
126
|
+
# repository at +release+ (e.g. "myuser-mymodule").
|
127
|
+
def retrieve(release)
|
128
|
+
path = @host.chomp('/') + release
|
129
|
+
return cache.retrieve(path)
|
130
|
+
end
|
131
|
+
|
132
|
+
# Return the URI string for this repository.
|
133
|
+
def to_s
|
134
|
+
"#<#{self.class} #{@host}>"
|
135
|
+
end
|
136
|
+
|
137
|
+
# Return the cache key for this repository, this a hashed string based on
|
138
|
+
# the URI.
|
139
|
+
def cache_key
|
140
|
+
return @cache_key ||= [
|
141
|
+
@host.to_s.gsub(/[^[:alnum:]]+/, '_').sub(/_$/, ''),
|
142
|
+
Digest::SHA1.hexdigest(@host.to_s)
|
143
|
+
].join('-').freeze
|
144
|
+
end
|
145
|
+
|
146
|
+
private
|
147
|
+
|
148
|
+
def user_agent
|
149
|
+
@user_agent ||= [
|
150
|
+
@agent,
|
151
|
+
Puppet[:http_user_agent]
|
152
|
+
].join(' ').freeze
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
@@ -0,0 +1,745 @@
|
|
1
|
+
# Functions in the puppet language can be written in Ruby and distributed in
|
2
|
+
# puppet modules. The function is written by creating a file in the module's
|
3
|
+
# `lib/puppet/functions/<modulename>` directory, where `<modulename>` is
|
4
|
+
# replaced with the module's name. The file should have the name of the function.
|
5
|
+
# For example, to create a function named `min` in a module named `math` create
|
6
|
+
# a file named `lib/puppet/functions/math/min.rb` in the module.
|
7
|
+
#
|
8
|
+
# A function is implemented by calling {Puppet::Functions.create_function}, and
|
9
|
+
# passing it a block that defines the implementation of the function.
|
10
|
+
#
|
11
|
+
# Functions are namespaced inside the module that contains them. The name of
|
12
|
+
# the function is prefixed with the name of the module. For example,
|
13
|
+
# `math::min`.
|
14
|
+
#
|
15
|
+
# @example A simple function
|
16
|
+
# Puppet::Functions.create_function('math::min') do
|
17
|
+
# def min(a, b)
|
18
|
+
# a <= b ? a : b
|
19
|
+
# end
|
20
|
+
# end
|
21
|
+
#
|
22
|
+
# Anatomy of a function
|
23
|
+
# ---
|
24
|
+
#
|
25
|
+
# Functions are composed of four parts: the name, the implementation methods,
|
26
|
+
# the signatures, and the dispatches.
|
27
|
+
#
|
28
|
+
# The name is the string given to the {Puppet::Functions.create_function}
|
29
|
+
# method. It specifies the name to use when calling the function in the puppet
|
30
|
+
# language, or from other functions.
|
31
|
+
#
|
32
|
+
# The implementation methods are ruby methods (there can be one or more) that
|
33
|
+
# provide that actual implementation of the function's behavior. In the
|
34
|
+
# simplest case the name of the function (excluding any namespace) and the name
|
35
|
+
# of the method are the same. When that is done no other parts (signatures and
|
36
|
+
# dispatches) need to be used.
|
37
|
+
#
|
38
|
+
# Signatures are a way of specifying the types of the function's parameters.
|
39
|
+
# The types of any arguments will be checked against the types declared in the
|
40
|
+
# signature and an error will be produced if they don't match. The types are
|
41
|
+
# defined by using the same syntax for types as in the puppet language.
|
42
|
+
#
|
43
|
+
# Dispatches are how signatures and implementation methods are tied together.
|
44
|
+
# When the function is called, puppet searches the signatures for one that
|
45
|
+
# matches the supplied arguments. Each signature is part of a dispatch, which
|
46
|
+
# specifies the method that should be called for that signature. When a
|
47
|
+
# matching signature is found, the corresponding method is called.
|
48
|
+
#
|
49
|
+
# Special dispatches designed to create error messages for an argument mismatch
|
50
|
+
# can be added using the keyword `argument_mismatch` instead of `dispatch`. The
|
51
|
+
# method appointed by an `argument_mismatch` will be called with arguments
|
52
|
+
# just like a normal `dispatch` would, but the method must produce a string.
|
53
|
+
# The string is then used as the message in the `ArgumentError` that is raised
|
54
|
+
# when the method returns. A block parameter can be given, but it is not
|
55
|
+
# propagated in the method call.
|
56
|
+
#
|
57
|
+
# Documentation for the function should be placed as comments to the
|
58
|
+
# implementation method(s).
|
59
|
+
#
|
60
|
+
# @todo Documentation for individual instances of these new functions is not
|
61
|
+
# yet tied into the puppet doc system.
|
62
|
+
#
|
63
|
+
# @example Dispatching to different methods by type
|
64
|
+
# Puppet::Functions.create_function('math::min') do
|
65
|
+
# dispatch :numeric_min do
|
66
|
+
# param 'Numeric', :a
|
67
|
+
# param 'Numeric', :b
|
68
|
+
# end
|
69
|
+
#
|
70
|
+
# dispatch :string_min do
|
71
|
+
# param 'String', :a
|
72
|
+
# param 'String', :b
|
73
|
+
# end
|
74
|
+
#
|
75
|
+
# def numeric_min(a, b)
|
76
|
+
# a <= b ? a : b
|
77
|
+
# end
|
78
|
+
#
|
79
|
+
# def string_min(a, b)
|
80
|
+
# a.downcase <= b.downcase ? a : b
|
81
|
+
# end
|
82
|
+
# end
|
83
|
+
#
|
84
|
+
# @example Using an argument mismatch handler
|
85
|
+
# Puppet::Functions.create_function('math::min') do
|
86
|
+
# dispatch :numeric_min do
|
87
|
+
# param 'Numeric', :a
|
88
|
+
# param 'Numeric', :b
|
89
|
+
# end
|
90
|
+
#
|
91
|
+
# argument_mismatch :on_error do
|
92
|
+
# param 'Any', :a
|
93
|
+
# param 'Any', :b
|
94
|
+
# end
|
95
|
+
#
|
96
|
+
# def numeric_min(a, b)
|
97
|
+
# a <= b ? a : b
|
98
|
+
# end
|
99
|
+
#
|
100
|
+
# def on_error(a, b)
|
101
|
+
# 'both arguments must be of type Numeric'
|
102
|
+
# end
|
103
|
+
# end
|
104
|
+
#
|
105
|
+
# Specifying Signatures
|
106
|
+
# ---
|
107
|
+
#
|
108
|
+
# If nothing is specified, the number of arguments given to the function must
|
109
|
+
# be the same as the number of parameters, and all of the parameters are of
|
110
|
+
# type 'Any'.
|
111
|
+
#
|
112
|
+
# The following methods can be used to define a parameter
|
113
|
+
#
|
114
|
+
# - _param_ - the argument must be given in the call.
|
115
|
+
# - _optional_param_ - the argument may be missing in the call. May not be followed by a required parameter
|
116
|
+
# - _repeated_param_ - the type specifies a repeating type that occurs 0 to "infinite" number of times. It may only appear last or just before a block parameter.
|
117
|
+
# - _block_param_ - a block must be given in the call. May only appear last.
|
118
|
+
# - _optional_block_param_ - a block may be given in the call. May only appear last.
|
119
|
+
#
|
120
|
+
# The method name _required_param_ is an alias for _param_ and _required_block_param_ is an alias for _block_param_
|
121
|
+
#
|
122
|
+
# A parameter definition takes 2 arguments:
|
123
|
+
# - _type_ A string that must conform to a type in the puppet language
|
124
|
+
# - _name_ A symbol denoting the parameter name
|
125
|
+
#
|
126
|
+
# Both arguments are optional when defining a block parameter. The _type_ defaults to "Callable"
|
127
|
+
# and the _name_ to :block.
|
128
|
+
#
|
129
|
+
# Note that the dispatch definition is used to match arguments given in a call to the function with the defined
|
130
|
+
# parameters. It then dispatches the call to the implementation method simply passing the given arguments on to
|
131
|
+
# that method without any further processing and it is the responsibility of that method's implementor to ensure
|
132
|
+
# that it can handle those arguments.
|
133
|
+
#
|
134
|
+
# @example Variable number of arguments
|
135
|
+
# Puppet::Functions.create_function('foo') do
|
136
|
+
# dispatch :foo do
|
137
|
+
# param 'Numeric', :first
|
138
|
+
# repeated_param 'Numeric', :values
|
139
|
+
# end
|
140
|
+
#
|
141
|
+
# def foo(first, *values)
|
142
|
+
# # do something
|
143
|
+
# end
|
144
|
+
# end
|
145
|
+
#
|
146
|
+
# There is no requirement for direct mapping between parameter definitions and the parameters in the
|
147
|
+
# receiving implementation method so the following example is also legal. Here the dispatch will ensure
|
148
|
+
# that `*values` in the receiver will be an array with at least one entry of type String and that any
|
149
|
+
# remaining entries are of type Numeric:
|
150
|
+
#
|
151
|
+
# @example Inexact mapping or parameters
|
152
|
+
# Puppet::Functions.create_function('foo') do
|
153
|
+
# dispatch :foo do
|
154
|
+
# param 'String', :first
|
155
|
+
# repeated_param 'Numeric', :values
|
156
|
+
# end
|
157
|
+
#
|
158
|
+
# def foo(*values)
|
159
|
+
# # do something
|
160
|
+
# end
|
161
|
+
# end
|
162
|
+
#
|
163
|
+
# Access to Scope
|
164
|
+
# ---
|
165
|
+
# In general, functions should not need access to scope; they should be
|
166
|
+
# written to act on their given input only. If they absolutely must look up
|
167
|
+
# variable values, they should do so via the closure scope (the scope where
|
168
|
+
# they are defined) - this is done by calling `closure_scope()`.
|
169
|
+
#
|
170
|
+
# Calling other Functions
|
171
|
+
# ---
|
172
|
+
# Calling other functions by name is directly supported via
|
173
|
+
# {Puppet::Pops::Functions::Function#call_function}. This allows a function to
|
174
|
+
# call other functions visible from its loader.
|
175
|
+
#
|
176
|
+
# @api public
|
177
|
+
module Puppet::Functions
|
178
|
+
# @param func_name [String, Symbol] a simple or qualified function name
|
179
|
+
# @param block [Proc] the block that defines the methods and dispatch of the
|
180
|
+
# Function to create
|
181
|
+
# @return [Class<Function>] the newly created Function class
|
182
|
+
#
|
183
|
+
# @api public
|
184
|
+
def self.create_function(func_name, function_base = Function, &block)
|
185
|
+
# Ruby < 2.1.0 does not have method on Binding, can only do eval
|
186
|
+
# and it will fail unless protected with an if defined? if the local
|
187
|
+
# variable does not exist in the block's binder.
|
188
|
+
#
|
189
|
+
loader = block.binding.eval('loader_injected_arg if defined?(loader_injected_arg)')
|
190
|
+
create_loaded_function(func_name, loader, function_base, &block)
|
191
|
+
end
|
192
|
+
|
193
|
+
# Creates a function in, or in a local loader under the given loader.
|
194
|
+
# This method should only be used when manually creating functions
|
195
|
+
# for the sake of testing. Functions that are autoloaded should
|
196
|
+
# always use the `create_function` method and the autoloader will supply
|
197
|
+
# the correct loader.
|
198
|
+
#
|
199
|
+
# @param func_name [String, Symbol] a simple or qualified function name
|
200
|
+
# @param loader [Puppet::Pops::Loaders::Loader] the loader loading the function
|
201
|
+
# @param block [Proc] the block that defines the methods and dispatch of the
|
202
|
+
# Function to create
|
203
|
+
# @return [Class<Function>] the newly created Function class
|
204
|
+
#
|
205
|
+
# @api public
|
206
|
+
def self.create_loaded_function(func_name, loader, function_base = Function, &block)
|
207
|
+
if function_base.ancestors.none? { |s| s == Puppet::Pops::Functions::Function }
|
208
|
+
raise ArgumentError, _("Functions must be based on Puppet::Pops::Functions::Function. Got %{function_base}") % { function_base: function_base }
|
209
|
+
end
|
210
|
+
|
211
|
+
func_name = func_name.to_s
|
212
|
+
# Creates an anonymous class to represent the function
|
213
|
+
# The idea being that it is garbage collected when there are no more
|
214
|
+
# references to it.
|
215
|
+
#
|
216
|
+
# (Do not give the class the block here, as instance variables should be set first)
|
217
|
+
the_class = Class.new(function_base)
|
218
|
+
|
219
|
+
unless loader.nil?
|
220
|
+
the_class.instance_variable_set(:'@loader', loader.private_loader)
|
221
|
+
end
|
222
|
+
|
223
|
+
# Make the anonymous class appear to have the class-name <func_name>
|
224
|
+
# Even if this class is not bound to such a symbol in a global ruby scope and
|
225
|
+
# must be resolved via the loader.
|
226
|
+
# This also overrides any attempt to define a name method in the given block
|
227
|
+
# (Since it redefines it)
|
228
|
+
#
|
229
|
+
# TODO, enforce name in lower case (to further make it stand out since Ruby
|
230
|
+
# class names are upper case)
|
231
|
+
#
|
232
|
+
the_class.instance_eval do
|
233
|
+
@func_name = func_name
|
234
|
+
|
235
|
+
def name
|
236
|
+
@func_name
|
237
|
+
end
|
238
|
+
|
239
|
+
def loader
|
240
|
+
@loader
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
# The given block can now be evaluated and have access to name and loader
|
245
|
+
#
|
246
|
+
the_class.class_eval(&block)
|
247
|
+
|
248
|
+
# Automatically create an object dispatcher based on introspection if the
|
249
|
+
# loaded user code did not define any dispatchers. Fail if function name
|
250
|
+
# does not match a given method name in user code.
|
251
|
+
#
|
252
|
+
if the_class.dispatcher.empty?
|
253
|
+
simple_name = func_name.split(/::/)[-1]
|
254
|
+
type, names = default_dispatcher(the_class, simple_name)
|
255
|
+
last_captures_rest = (type.size_range[1] == Float::INFINITY)
|
256
|
+
the_class.dispatcher.add(Puppet::Pops::Functions::Dispatch.new(type, simple_name, names, last_captures_rest))
|
257
|
+
end
|
258
|
+
|
259
|
+
# The function class is returned as the result of the create function method
|
260
|
+
the_class
|
261
|
+
end
|
262
|
+
|
263
|
+
# Creates a default dispatcher configured from a method with the same name as the function
|
264
|
+
#
|
265
|
+
# @api private
|
266
|
+
def self.default_dispatcher(the_class, func_name)
|
267
|
+
unless the_class.method_defined?(func_name)
|
268
|
+
raise ArgumentError, _("Function Creation Error, cannot create a default dispatcher for function '%{func_name}', no method with this name found") % { func_name: func_name }
|
269
|
+
end
|
270
|
+
any_signature(*min_max_param(the_class.instance_method(func_name)))
|
271
|
+
end
|
272
|
+
|
273
|
+
# @api private
|
274
|
+
def self.min_max_param(method)
|
275
|
+
result = {:req => 0, :opt => 0, :rest => 0 }
|
276
|
+
# count per parameter kind, and get array of names
|
277
|
+
names = method.parameters.map { |p| result[p[0]] += 1 ; p[1].to_s }
|
278
|
+
from = result[:req]
|
279
|
+
to = result[:rest] > 0 ? :default : from + result[:opt]
|
280
|
+
[from, to, names]
|
281
|
+
end
|
282
|
+
|
283
|
+
# Construct a signature consisting of Object type, with min, and max, and given names.
|
284
|
+
# (there is only one type entry).
|
285
|
+
#
|
286
|
+
# @api private
|
287
|
+
def self.any_signature(from, to, names)
|
288
|
+
# Construct the type for the signature
|
289
|
+
# Tuple[Object, from, to]
|
290
|
+
param_types = Puppet::Pops::Types::PTupleType.new([Puppet::Pops::Types::PAnyType::DEFAULT], Puppet::Pops::Types::PIntegerType.new(from, to))
|
291
|
+
[Puppet::Pops::Types::PCallableType.new(param_types), names]
|
292
|
+
end
|
293
|
+
|
294
|
+
# Function
|
295
|
+
# ===
|
296
|
+
# This class is the base class for all Puppet 4x Function API functions. A
|
297
|
+
# specialized class is created for each puppet function.
|
298
|
+
#
|
299
|
+
# @api public
|
300
|
+
class Function < Puppet::Pops::Functions::Function
|
301
|
+
|
302
|
+
# @api private
|
303
|
+
def self.builder
|
304
|
+
DispatcherBuilder.new(dispatcher, Puppet::Pops::Types::PCallableType::DEFAULT, loader)
|
305
|
+
end
|
306
|
+
|
307
|
+
# Dispatch any calls that match the signature to the provided method name.
|
308
|
+
#
|
309
|
+
# @param meth_name [Symbol] The name of the implementation method to call
|
310
|
+
# when the signature defined in the block matches the arguments to a call
|
311
|
+
# to the function.
|
312
|
+
# @return [Void]
|
313
|
+
#
|
314
|
+
# @api public
|
315
|
+
def self.dispatch(meth_name, &block)
|
316
|
+
builder().instance_eval do
|
317
|
+
dispatch(meth_name, false, &block)
|
318
|
+
end
|
319
|
+
end
|
320
|
+
|
321
|
+
# Like `dispatch` but used for a specific type of argument mismatch. Will not be include in the list of valid
|
322
|
+
# parameter overloads for the function.
|
323
|
+
#
|
324
|
+
# @param meth_name [Symbol] The name of the implementation method to call
|
325
|
+
# when the signature defined in the block matches the arguments to a call
|
326
|
+
# to the function.
|
327
|
+
# @return [Void]
|
328
|
+
#
|
329
|
+
# @api public
|
330
|
+
def self.argument_mismatch(meth_name, &block)
|
331
|
+
builder().instance_eval do
|
332
|
+
dispatch(meth_name, true, &block)
|
333
|
+
end
|
334
|
+
end
|
335
|
+
|
336
|
+
# Allows types local to the function to be defined to ease the use of complex types
|
337
|
+
# in a 4.x function. Within the given block, calls to `type` can be made with a string
|
338
|
+
# 'AliasType = ExistingType` can be made to define aliases. The defined aliases are
|
339
|
+
# available for further aliases, and in all dispatchers.
|
340
|
+
#
|
341
|
+
# @since 4.5.0
|
342
|
+
# @api public
|
343
|
+
#
|
344
|
+
def self.local_types(&block)
|
345
|
+
if loader.nil?
|
346
|
+
raise ArgumentError, _("No loader present. Call create_loaded_function(:myname, loader,...), instead of 'create_function' if running tests")
|
347
|
+
end
|
348
|
+
aliases = LocalTypeAliasesBuilder.new(loader, name)
|
349
|
+
aliases.instance_eval(&block)
|
350
|
+
# Add the loaded types to the builder
|
351
|
+
aliases.local_types.each do |type_alias_expr|
|
352
|
+
# Bind the type alias to the local_loader using the alias
|
353
|
+
t = Puppet::Pops::Loader::TypeDefinitionInstantiator.create_from_model(type_alias_expr, aliases.loader)
|
354
|
+
|
355
|
+
# Also define a method for convenient access to the defined type alias.
|
356
|
+
# Since initial capital letter in Ruby means a Constant these names use a prefix of
|
357
|
+
# `type`. As an example, the type 'MyType' is accessed by calling `type_MyType`.
|
358
|
+
define_method("type_#{t.name}") { t }
|
359
|
+
end
|
360
|
+
# Store the loader in the class
|
361
|
+
@loader = aliases.loader
|
362
|
+
end
|
363
|
+
|
364
|
+
# Creates a new function instance in the given closure scope (visibility to variables), and a loader
|
365
|
+
# (visibility to other definitions). The created function will either use the `given_loader` or
|
366
|
+
# (if it has local type aliases) a loader that was constructed from the loader used when loading
|
367
|
+
# the function's class.
|
368
|
+
#
|
369
|
+
# TODO: It would be of value to get rid of the second parameter here, but that would break API.
|
370
|
+
#
|
371
|
+
def self.new(closure_scope, given_loader)
|
372
|
+
super(closure_scope, @loader || given_loader)
|
373
|
+
end
|
374
|
+
end
|
375
|
+
|
376
|
+
# Base class for all functions implemented in the puppet language
|
377
|
+
class PuppetFunction < Function
|
378
|
+
def self.init_dispatch(a_closure)
|
379
|
+
# A closure is compatible with a dispatcher - they are both callable signatures
|
380
|
+
dispatcher.add(a_closure)
|
381
|
+
end
|
382
|
+
end
|
383
|
+
|
384
|
+
# Public api methods of the DispatcherBuilder are available within dispatch()
|
385
|
+
# blocks declared in a Puppet::Function.create_function() call.
|
386
|
+
#
|
387
|
+
# @api public
|
388
|
+
class DispatcherBuilder
|
389
|
+
attr_reader :loader
|
390
|
+
|
391
|
+
# @api private
|
392
|
+
def initialize(dispatcher, all_callables, loader)
|
393
|
+
@all_callables = all_callables
|
394
|
+
@dispatcher = dispatcher
|
395
|
+
@loader = loader
|
396
|
+
end
|
397
|
+
|
398
|
+
# Defines a required positional parameter with _type_ and _name_.
|
399
|
+
#
|
400
|
+
# @param type [String] The type specification for the parameter.
|
401
|
+
# @param name [Symbol] The name of the parameter. This is primarily used
|
402
|
+
# for error message output and does not have to match an implementation
|
403
|
+
# method parameter.
|
404
|
+
# @return [Void]
|
405
|
+
#
|
406
|
+
# @api public
|
407
|
+
def param(type, name)
|
408
|
+
internal_param(type, name)
|
409
|
+
raise ArgumentError, _('A required parameter cannot be added after an optional parameter') if @min != @max
|
410
|
+
@min += 1
|
411
|
+
@max += 1
|
412
|
+
end
|
413
|
+
alias required_param param
|
414
|
+
|
415
|
+
# Defines an optional positional parameter with _type_ and _name_.
|
416
|
+
# May not be followed by a required parameter.
|
417
|
+
#
|
418
|
+
# @param type [String] The type specification for the parameter.
|
419
|
+
# @param name [Symbol] The name of the parameter. This is primarily used
|
420
|
+
# for error message output and does not have to match an implementation
|
421
|
+
# method parameter.
|
422
|
+
# @return [Void]
|
423
|
+
#
|
424
|
+
# @api public
|
425
|
+
def optional_param(type, name)
|
426
|
+
internal_param(type, name)
|
427
|
+
@max += 1
|
428
|
+
end
|
429
|
+
|
430
|
+
# Defines a repeated positional parameter with _type_ and _name_ that may occur 0 to "infinite" number of times.
|
431
|
+
# It may only appear last or just before a block parameter.
|
432
|
+
#
|
433
|
+
# @param type [String] The type specification for the parameter.
|
434
|
+
# @param name [Symbol] The name of the parameter. This is primarily used
|
435
|
+
# for error message output and does not have to match an implementation
|
436
|
+
# method parameter.
|
437
|
+
# @return [Void]
|
438
|
+
#
|
439
|
+
# @api public
|
440
|
+
def repeated_param(type, name)
|
441
|
+
internal_param(type, name, true)
|
442
|
+
@max = :default
|
443
|
+
end
|
444
|
+
alias optional_repeated_param repeated_param
|
445
|
+
|
446
|
+
# Defines a repeated positional parameter with _type_ and _name_ that may occur 1 to "infinite" number of times.
|
447
|
+
# It may only appear last or just before a block parameter.
|
448
|
+
#
|
449
|
+
# @param type [String] The type specification for the parameter.
|
450
|
+
# @param name [Symbol] The name of the parameter. This is primarily used
|
451
|
+
# for error message output and does not have to match an implementation
|
452
|
+
# method parameter.
|
453
|
+
# @return [Void]
|
454
|
+
#
|
455
|
+
# @api public
|
456
|
+
def required_repeated_param(type, name)
|
457
|
+
internal_param(type, name, true)
|
458
|
+
raise ArgumentError, _('A required repeated parameter cannot be added after an optional parameter') if @min != @max
|
459
|
+
@min += 1
|
460
|
+
@max = :default
|
461
|
+
end
|
462
|
+
|
463
|
+
# Defines one required block parameter that may appear last. If type and name is missing the
|
464
|
+
# default type is "Callable", and the name is "block". If only one
|
465
|
+
# parameter is given, then that is the name and the type is "Callable".
|
466
|
+
#
|
467
|
+
# @api public
|
468
|
+
def block_param(*type_and_name)
|
469
|
+
case type_and_name.size
|
470
|
+
when 0
|
471
|
+
type = @all_callables
|
472
|
+
name = :block
|
473
|
+
when 1
|
474
|
+
type = @all_callables
|
475
|
+
name = type_and_name[0]
|
476
|
+
when 2
|
477
|
+
type_string, name = type_and_name
|
478
|
+
type = Puppet::Pops::Types::TypeParser.singleton.parse(type_string, loader)
|
479
|
+
else
|
480
|
+
raise ArgumentError, _("block_param accepts max 2 arguments (type, name), got %{size}.") % { size: type_and_name.size }
|
481
|
+
end
|
482
|
+
|
483
|
+
unless Puppet::Pops::Types::TypeCalculator.is_kind_of_callable?(type, false)
|
484
|
+
raise ArgumentError, _("Expected PCallableType or PVariantType thereof, got %{type_class}") % { type_class: type.class }
|
485
|
+
end
|
486
|
+
|
487
|
+
unless name.is_a?(Symbol)
|
488
|
+
raise ArgumentError, _("Expected block_param name to be a Symbol, got %{name_class}") % { name_class: name.class }
|
489
|
+
end
|
490
|
+
|
491
|
+
if @block_type.nil?
|
492
|
+
@block_type = type
|
493
|
+
@block_name = name
|
494
|
+
else
|
495
|
+
raise ArgumentError, _('Attempt to redefine block')
|
496
|
+
end
|
497
|
+
end
|
498
|
+
alias required_block_param block_param
|
499
|
+
|
500
|
+
# Defines one optional block parameter that may appear last. If type or name is missing the
|
501
|
+
# defaults are "any callable", and the name is "block". The implementor of the dispatch target
|
502
|
+
# must use block = nil when it is optional (or an error is raised when the call is made).
|
503
|
+
#
|
504
|
+
# @api public
|
505
|
+
def optional_block_param(*type_and_name)
|
506
|
+
# same as required, only wrap the result in an optional type
|
507
|
+
required_block_param(*type_and_name)
|
508
|
+
@block_type = Puppet::Pops::Types::TypeFactory.optional(@block_type)
|
509
|
+
end
|
510
|
+
|
511
|
+
# Defines the return type. Defaults to 'Any'
|
512
|
+
# @param [String] type a reference to a Puppet Data Type
|
513
|
+
#
|
514
|
+
# @api public
|
515
|
+
def return_type(type)
|
516
|
+
raise ArgumentError, _("Argument to 'return_type' must be a String reference to a Puppet Data Type. Got %{type_class}") % { type_class: type.class } unless type.is_a?(String)
|
517
|
+
@return_type = type
|
518
|
+
end
|
519
|
+
|
520
|
+
private
|
521
|
+
|
522
|
+
# @api private
|
523
|
+
def internal_param(type, name, repeat = false)
|
524
|
+
raise ArgumentError, _('Parameters cannot be added after a block parameter') unless @block_type.nil?
|
525
|
+
raise ArgumentError, _('Parameters cannot be added after a repeated parameter') if @max == :default
|
526
|
+
|
527
|
+
if name.is_a?(String)
|
528
|
+
raise ArgumentError, _("Parameter name argument must be a Symbol. Got %{name_class}") % { name_class: name.class }
|
529
|
+
end
|
530
|
+
|
531
|
+
if type.is_a?(String)
|
532
|
+
@types << type
|
533
|
+
@names << name
|
534
|
+
# mark what should be picked for this position when dispatching
|
535
|
+
if repeat
|
536
|
+
@weaving << -@names.size()
|
537
|
+
else
|
538
|
+
@weaving << @names.size()-1
|
539
|
+
end
|
540
|
+
else
|
541
|
+
raise ArgumentError, _("Parameter 'type' must be a String reference to a Puppet Data Type. Got %{type_class}") % { type_class: type.class }
|
542
|
+
end
|
543
|
+
end
|
544
|
+
|
545
|
+
# @api private
|
546
|
+
def dispatch(meth_name, argument_mismatch_handler, &block)
|
547
|
+
# an array of either an index into names/types, or an array with
|
548
|
+
# injection information [type, name, injection_name] used when the call
|
549
|
+
# is being made to weave injections into the given arguments.
|
550
|
+
#
|
551
|
+
@types = []
|
552
|
+
@names = []
|
553
|
+
@weaving = []
|
554
|
+
@injections = []
|
555
|
+
@min = 0
|
556
|
+
@max = 0
|
557
|
+
@block_type = nil
|
558
|
+
@block_name = nil
|
559
|
+
@return_type = nil
|
560
|
+
@argument_mismatch_hander = argument_mismatch_handler
|
561
|
+
self.instance_eval &block
|
562
|
+
callable_t = create_callable(@types, @block_type, @return_type, @min, @max)
|
563
|
+
@dispatcher.add(Puppet::Pops::Functions::Dispatch.new(callable_t, meth_name, @names, @max == :default, @block_name, @injections, @weaving, @argument_mismatch_hander))
|
564
|
+
end
|
565
|
+
|
566
|
+
# Handles creation of a callable type from strings specifications of puppet
|
567
|
+
# types and allows the min/max occurs of the given types to be given as one
|
568
|
+
# or two integer values at the end. The given block_type should be
|
569
|
+
# Optional[Callable], Callable, or nil.
|
570
|
+
#
|
571
|
+
# @api private
|
572
|
+
def create_callable(types, block_type, return_type, from, to)
|
573
|
+
mapped_types = types.map do |t|
|
574
|
+
Puppet::Pops::Types::TypeParser.singleton.parse(t, loader)
|
575
|
+
end
|
576
|
+
param_types = Puppet::Pops::Types::PTupleType.new(mapped_types, from > 0 && from == to ? nil : Puppet::Pops::Types::PIntegerType.new(from, to))
|
577
|
+
return_type = Puppet::Pops::Types::TypeParser.singleton.parse(return_type, loader) unless return_type.nil?
|
578
|
+
Puppet::Pops::Types::PCallableType.new(param_types, block_type, return_type)
|
579
|
+
end
|
580
|
+
end
|
581
|
+
|
582
|
+
# The LocalTypeAliasBuilder is used by the 'local_types' method to collect the individual
|
583
|
+
# type aliases given by the function's author.
|
584
|
+
#
|
585
|
+
class LocalTypeAliasesBuilder
|
586
|
+
attr_reader :local_types, :parser, :loader
|
587
|
+
|
588
|
+
def initialize(loader, name)
|
589
|
+
@loader = Puppet::Pops::Loader::PredefinedLoader.new(loader, :"local_function_#{name}")
|
590
|
+
@local_types = []
|
591
|
+
# get the shared parser used by puppet's compiler
|
592
|
+
@parser = Puppet::Pops::Parser::EvaluatingParser.singleton()
|
593
|
+
end
|
594
|
+
|
595
|
+
# Defines a local type alias, the given string should be a Puppet Language type alias expression
|
596
|
+
# in string form without the leading 'type' keyword.
|
597
|
+
# Calls to local_type must be made before the first parameter definition or an error will
|
598
|
+
# be raised.
|
599
|
+
#
|
600
|
+
# @param assignment_string [String] a string on the form 'AliasType = ExistingType'
|
601
|
+
# @api public
|
602
|
+
#
|
603
|
+
def type(assignment_string)
|
604
|
+
result = parser.parse_string("type #{assignment_string}", nil) # no file source :-(
|
605
|
+
unless result.body.kind_of?(Puppet::Pops::Model::TypeAlias)
|
606
|
+
raise ArgumentError, _("Expected a type alias assignment on the form 'AliasType = T', got '%{assignment_string}'") % { assignment_string: assignment_string }
|
607
|
+
end
|
608
|
+
@local_types << result.body
|
609
|
+
end
|
610
|
+
end
|
611
|
+
|
612
|
+
private
|
613
|
+
|
614
|
+
# @note WARNING: This style of creating functions is not public. It is a system
|
615
|
+
# under development that will be used for creating "system" functions.
|
616
|
+
#
|
617
|
+
# This is a private, internal, system for creating functions. It supports
|
618
|
+
# everything that the public function definition system supports as well as a
|
619
|
+
# few extra features.
|
620
|
+
#
|
621
|
+
# Injection Support
|
622
|
+
# ===
|
623
|
+
# The Function API supports injection of data and services. It is possible to
|
624
|
+
# make injection that takes effect when the function is loaded (for services
|
625
|
+
# and runtime configuration that does not change depending on how/from where
|
626
|
+
# in what context the function is called. It is also possible to inject and
|
627
|
+
# weave argument values into a call.
|
628
|
+
#
|
629
|
+
# Injection of attributes
|
630
|
+
# ---
|
631
|
+
# Injection of attributes is performed by one of the methods `attr_injected`,
|
632
|
+
# and `attr_injected_producer`. The injected attributes are available via
|
633
|
+
# accessor method calls.
|
634
|
+
#
|
635
|
+
# @example using injected attributes
|
636
|
+
# Puppet::Functions.create_function('test') do
|
637
|
+
# attr_injected String, :larger, 'message_larger'
|
638
|
+
# attr_injected String, :smaller, 'message_smaller'
|
639
|
+
# def test(a, b)
|
640
|
+
# a > b ? larger() : smaller()
|
641
|
+
# end
|
642
|
+
# end
|
643
|
+
#
|
644
|
+
# @api private
|
645
|
+
class InternalFunction < Function
|
646
|
+
# @api private
|
647
|
+
def self.builder
|
648
|
+
InternalDispatchBuilder.new(dispatcher, Puppet::Pops::Types::PCallableType::DEFAULT, loader)
|
649
|
+
end
|
650
|
+
|
651
|
+
# Allows the implementation of a function to call other functions by name and pass the caller
|
652
|
+
# scope. The callable functions are those visible to the same loader that loaded this function
|
653
|
+
# (the calling function).
|
654
|
+
#
|
655
|
+
# @param scope [Puppet::Parser::Scope] The caller scope
|
656
|
+
# @param function_name [String] The name of the function
|
657
|
+
# @param *args [Object] splat of arguments
|
658
|
+
# @return [Object] The result returned by the called function
|
659
|
+
#
|
660
|
+
# @api public
|
661
|
+
def call_function_with_scope(scope, function_name, *args, &block)
|
662
|
+
internal_call_function(scope, function_name, args, &block)
|
663
|
+
end
|
664
|
+
end
|
665
|
+
|
666
|
+
# @note WARNING: This style of creating functions is not public. It is a system
|
667
|
+
# under development that will be used for creating "system" functions.
|
668
|
+
#
|
669
|
+
# Injection and Weaving of parameters
|
670
|
+
# ---
|
671
|
+
# It is possible to inject and weave parameters into a call. These extra
|
672
|
+
# parameters are not part of the parameters passed from the Puppet logic, and
|
673
|
+
# they can not be overridden by parameters given as arguments in the call.
|
674
|
+
# They are invisible to the Puppet Language.
|
675
|
+
#
|
676
|
+
# @example using injected parameters
|
677
|
+
# Puppet::Functions.create_function('test') do
|
678
|
+
# dispatch :test do
|
679
|
+
# param 'Scalar', 'a'
|
680
|
+
# param 'Scalar', 'b'
|
681
|
+
# injected_param 'String', 'larger', 'message_larger'
|
682
|
+
# injected_param 'String', 'smaller', 'message_smaller'
|
683
|
+
# end
|
684
|
+
# def test(a, b, larger, smaller)
|
685
|
+
# a > b ? larger : smaller
|
686
|
+
# end
|
687
|
+
# end
|
688
|
+
#
|
689
|
+
# The function in the example above is called like this:
|
690
|
+
#
|
691
|
+
# test(10, 20)
|
692
|
+
#
|
693
|
+
# Using injected value as default
|
694
|
+
# ---
|
695
|
+
# Default value assignment is handled by using the regular Ruby mechanism (a
|
696
|
+
# value is assigned to the variable). The dispatch simply indicates that the
|
697
|
+
# value is optional. If the default value should be injected, it can be
|
698
|
+
# handled different ways depending on what is desired:
|
699
|
+
#
|
700
|
+
# * by calling the accessor method for an injected Function class attribute.
|
701
|
+
# This is suitable if the value is constant across all instantiations of the
|
702
|
+
# function, and across all calls.
|
703
|
+
# * by injecting a parameter into the call
|
704
|
+
# to the left of the parameter, and then assigning that as the default value.
|
705
|
+
# * One of the above forms, but using an injected producer instead of a
|
706
|
+
# directly injected value.
|
707
|
+
#
|
708
|
+
# @example method with injected default values
|
709
|
+
# Puppet::Functions.create_function('test') do
|
710
|
+
# dispatch :test do
|
711
|
+
# injected_param String, 'b_default', 'b_default_value_key'
|
712
|
+
# param 'Scalar', 'a'
|
713
|
+
# param 'Scalar', 'b'
|
714
|
+
# end
|
715
|
+
# def test(b_default, a, b = b_default)
|
716
|
+
# # ...
|
717
|
+
# end
|
718
|
+
# end
|
719
|
+
#
|
720
|
+
# @api private
|
721
|
+
class InternalDispatchBuilder < DispatcherBuilder
|
722
|
+
def scope_param()
|
723
|
+
@injections << [:scope, 'scope', '', :dispatcher_internal]
|
724
|
+
# mark what should be picked for this position when dispatching
|
725
|
+
@weaving << [@injections.size()-1]
|
726
|
+
end
|
727
|
+
# TODO: is param name really needed? Perhaps for error messages? (it is unused now)
|
728
|
+
#
|
729
|
+
# @api private
|
730
|
+
def injected_param(type, name, injection_name = '')
|
731
|
+
@injections << [type, name, injection_name]
|
732
|
+
# mark what should be picked for this position when dispatching
|
733
|
+
@weaving << [@injections.size() -1]
|
734
|
+
end
|
735
|
+
|
736
|
+
# TODO: is param name really needed? Perhaps for error messages? (it is unused now)
|
737
|
+
#
|
738
|
+
# @api private
|
739
|
+
def injected_producer_param(type, name, injection_name = '')
|
740
|
+
@injections << [type, name, injection_name, :producer]
|
741
|
+
# mark what should be picked for this position when dispatching
|
742
|
+
@weaving << [@injections.size()-1]
|
743
|
+
end
|
744
|
+
end
|
745
|
+
end
|