bolt 0.20.0 → 0.20.2
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/lib/bolt/cli.rb +5 -0
- data/lib/bolt/puppetdb/client.rb +1 -1
- data/lib/bolt/transport/ssh.rb +1 -1
- data/lib/bolt/util/on_access.rb +4 -2
- data/lib/bolt/version.rb +1 -1
- 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 +330 -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 +84 -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 +307 -0
- data/vendored/puppet/lib/puppet/agent.rb +134 -0
- data/vendored/puppet/lib/puppet/agent/disabler.rb +53 -0
- data/vendored/puppet/lib/puppet/agent/locker.rb +53 -0
- data/vendored/puppet/lib/puppet/application.rb +502 -0
- data/vendored/puppet/lib/puppet/application/agent.rb +473 -0
- data/vendored/puppet/lib/puppet/application/apply.rb +356 -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 +339 -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 +5 -0
- data/vendored/puppet/lib/puppet/application/describe.rb +257 -0
- data/vendored/puppet/lib/puppet/application/device.rb +378 -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 +9 -0
- data/vendored/puppet/lib/puppet/application/filebucket.rb +300 -0
- data/vendored/puppet/lib/puppet/application/generate.rb +5 -0
- data/vendored/puppet/lib/puppet/application/help.rb +5 -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 +369 -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 +261 -0
- data/vendored/puppet/lib/puppet/application/status.rb +4 -0
- data/vendored/puppet/lib/puppet/application_support.rb +62 -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 +464 -0
- data/vendored/puppet/lib/puppet/configurer/downloader.rb +67 -0
- data/vendored/puppet/lib/puppet/configurer/fact_handler.rb +46 -0
- data/vendored/puppet/lib/puppet/configurer/plugin_handler.rb +49 -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/datatypes.rb +213 -0
- data/vendored/puppet/lib/puppet/datatypes/error.rb +21 -0
- data/vendored/puppet/lib/puppet/datatypes/impl/error.rb +40 -0
- data/vendored/puppet/lib/puppet/defaults.rb +2071 -0
- data/vendored/puppet/lib/puppet/environments.rb +511 -0
- data/vendored/puppet/lib/puppet/error.rb +110 -0
- data/vendored/puppet/lib/puppet/etc.rb +161 -0
- data/vendored/puppet/lib/puppet/external/dot.rb +319 -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/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 +210 -0
- data/vendored/puppet/lib/puppet/face/epp.rb +554 -0
- data/vendored/puppet/lib/puppet/face/facts.rb +87 -0
- data/vendored/puppet/lib/puppet/face/generate.rb +64 -0
- data/vendored/puppet/lib/puppet/face/help.rb +201 -0
- data/vendored/puppet/lib/puppet/face/key.rb +16 -0
- data/vendored/puppet/lib/puppet/face/man.rb +145 -0
- data/vendored/puppet/lib/puppet/face/module.rb +19 -0
- data/vendored/puppet/lib/puppet/face/module/build.rb +64 -0
- data/vendored/puppet/lib/puppet/face/module/changes.rb +42 -0
- data/vendored/puppet/lib/puppet/face/module/generate.rb +256 -0
- data/vendored/puppet/lib/puppet/face/module/install.rb +150 -0
- data/vendored/puppet/lib/puppet/face/module/list.rb +268 -0
- data/vendored/puppet/lib/puppet/face/module/search.rb +98 -0
- data/vendored/puppet/lib/puppet/face/module/uninstall.rb +93 -0
- data/vendored/puppet/lib/puppet/face/module/upgrade.rb +91 -0
- data/vendored/puppet/lib/puppet/face/node.rb +43 -0
- data/vendored/puppet/lib/puppet/face/node/clean.rb +96 -0
- data/vendored/puppet/lib/puppet/face/parser.rb +187 -0
- data/vendored/puppet/lib/puppet/face/plugin.rb +56 -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 +51 -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 +173 -0
- data/vendored/puppet/lib/puppet/file_bucket/file.rb +129 -0
- data/vendored/puppet/lib/puppet/file_serving.rb +3 -0
- data/vendored/puppet/lib/puppet/file_serving/base.rb +86 -0
- data/vendored/puppet/lib/puppet/file_serving/configuration.rb +115 -0
- data/vendored/puppet/lib/puppet/file_serving/configuration/parser.rb +137 -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/locales.rb +35 -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 +242 -0
- data/vendored/puppet/lib/puppet/forge/cache.rb +60 -0
- data/vendored/puppet/lib/puppet/forge/errors.rb +114 -0
- data/vendored/puppet/lib/puppet/forge/repository.rb +155 -0
- data/vendored/puppet/lib/puppet/functions.rb +725 -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 +32 -0
- data/vendored/puppet/lib/puppet/functions/break.rb +51 -0
- data/vendored/puppet/lib/puppet/functions/call.rb +42 -0
- data/vendored/puppet/lib/puppet/functions/contain.rb +55 -0
- data/vendored/puppet/lib/puppet/functions/convert_to.rb +33 -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 +159 -0
- data/vendored/puppet/lib/puppet/functions/dig.rb +47 -0
- data/vendored/puppet/lib/puppet/functions/each.rb +169 -0
- data/vendored/puppet/lib/puppet/functions/emerg.rb +14 -0
- data/vendored/puppet/lib/puppet/functions/empty.rb +79 -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 +96 -0
- data/vendored/puppet/lib/puppet/functions/filter.rb +143 -0
- data/vendored/puppet/lib/puppet/functions/find_file.rb +44 -0
- data/vendored/puppet/lib/puppet/functions/flatten.rb +64 -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 +53 -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/join.rb +56 -0
- data/vendored/puppet/lib/puppet/functions/json_data.rb +33 -0
- data/vendored/puppet/lib/puppet/functions/keys.rb +25 -0
- data/vendored/puppet/lib/puppet/functions/length.rb +44 -0
- data/vendored/puppet/lib/puppet/functions/lest.rb +55 -0
- data/vendored/puppet/lib/puppet/functions/lookup.rb +223 -0
- data/vendored/puppet/lib/puppet/functions/map.rb +136 -0
- data/vendored/puppet/lib/puppet/functions/match.rb +120 -0
- data/vendored/puppet/lib/puppet/functions/module_directory.rb +41 -0
- data/vendored/puppet/lib/puppet/functions/new.rb +1022 -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 +82 -0
- data/vendored/puppet/lib/puppet/functions/require.rb +77 -0
- data/vendored/puppet/lib/puppet/functions/return.rb +22 -0
- data/vendored/puppet/lib/puppet/functions/reverse_each.rb +94 -0
- data/vendored/puppet/lib/puppet/functions/scanf.rb +44 -0
- data/vendored/puppet/lib/puppet/functions/slice.rb +124 -0
- data/vendored/puppet/lib/puppet/functions/split.rb +49 -0
- data/vendored/puppet/lib/puppet/functions/step.rb +98 -0
- data/vendored/puppet/lib/puppet/functions/strftime.rb +217 -0
- data/vendored/puppet/lib/puppet/functions/then.rb +77 -0
- data/vendored/puppet/lib/puppet/functions/tree_each.rb +200 -0
- data/vendored/puppet/lib/puppet/functions/type.rb +72 -0
- data/vendored/puppet/lib/puppet/functions/unique.rb +132 -0
- data/vendored/puppet/lib/puppet/functions/unwrap.rb +44 -0
- data/vendored/puppet/lib/puppet/functions/values.rb +25 -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 +32 -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/type.rb +239 -0
- data/vendored/puppet/lib/puppet/gettext/config.rb +252 -0
- data/vendored/puppet/lib/puppet/gettext/module_translations.rb +42 -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 +283 -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 +418 -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 +88 -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/rest.rb +21 -0
- data/vendored/puppet/lib/puppet/indirector/facts/store_configs.rb +11 -0
- data/vendored/puppet/lib/puppet/indirector/facts/yaml.rb +82 -0
- data/vendored/puppet/lib/puppet/indirector/file_bucket_file/file.rb +262 -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 +17 -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 +344 -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 +275 -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 +39 -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 +278 -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 +350 -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 +237 -0
- data/vendored/puppet/lib/puppet/interface/action.rb +402 -0
- data/vendored/puppet/lib/puppet/interface/action_builder.rb +166 -0
- data/vendored/puppet/lib/puppet/interface/action_manager.rb +97 -0
- data/vendored/puppet/lib/puppet/interface/documentation.rb +353 -0
- data/vendored/puppet/lib/puppet/interface/face_collection.rb +132 -0
- data/vendored/puppet/lib/puppet/interface/option.rb +171 -0
- data/vendored/puppet/lib/puppet/interface/option_builder.rb +105 -0
- data/vendored/puppet/lib/puppet/interface/option_manager.rb +104 -0
- data/vendored/puppet/lib/puppet/loaders.rb +27 -0
- data/vendored/puppet/lib/puppet/metatype/manager.rb +199 -0
- data/vendored/puppet/lib/puppet/module.rb +467 -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 +152 -0
- data/vendored/puppet/lib/puppet/module_tool/applications/checksummer.rb +62 -0
- data/vendored/puppet/lib/puppet/module_tool/applications/installer.rb +355 -0
- data/vendored/puppet/lib/puppet/module_tool/applications/searcher.rb +29 -0
- data/vendored/puppet/lib/puppet/module_tool/applications/uninstaller.rb +121 -0
- data/vendored/puppet/lib/puppet/module_tool/applications/unpacker.rb +100 -0
- data/vendored/puppet/lib/puppet/module_tool/applications/upgrader.rb +281 -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 +93 -0
- data/vendored/puppet/lib/puppet/module_tool/errors/shared.rb +195 -0
- data/vendored/puppet/lib/puppet/module_tool/errors/uninstaller.rb +50 -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 +223 -0
- data/vendored/puppet/lib/puppet/module_tool/shared_behaviors.rb +180 -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 +106 -0
- data/vendored/puppet/lib/puppet/network.rb +3 -0
- data/vendored/puppet/lib/puppet/network/auth_config_parser.rb +90 -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 +279 -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 +85 -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 +56 -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 +124 -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 +85 -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 +282 -0
- data/vendored/puppet/lib/puppet/node/environment.rb +586 -0
- data/vendored/puppet/lib/puppet/node/facts.rb +137 -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 +797 -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 +277 -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 +36 -0
- data/vendored/puppet/lib/puppet/parser/functions/generate.rb +36 -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 +26 -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 +991 -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/sha256.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 +50 -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 +39 -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 +417 -0
- data/vendored/puppet/lib/puppet/parser/resource/param.rb +22 -0
- data/vendored/puppet/lib/puppet/parser/scope.rb +1125 -0
- data/vendored/puppet/lib/puppet/parser/script_compiler.rb +118 -0
- data/vendored/puppet/lib/puppet/parser/templatewrapper.rb +102 -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 +719 -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 +234 -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 +120 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/evaluator_impl.rb +1284 -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 +202 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/runtime3_resource_support.rb +117 -0
- data/vendored/puppet/lib/puppet/pops/evaluator/runtime3_support.rb +540 -0
- data/vendored/puppet/lib/puppet/pops/functions/dispatch.rb +101 -0
- data/vendored/puppet/lib/puppet/pops/functions/dispatcher.rb +71 -0
- data/vendored/puppet/lib/puppet/pops/functions/function.rb +141 -0
- data/vendored/puppet/lib/puppet/pops/issue_reporter.rb +137 -0
- data/vendored/puppet/lib/puppet/pops/issues.rb +901 -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 +209 -0
- data/vendored/puppet/lib/puppet/pops/loader/loader_paths.rb +375 -0
- data/vendored/puppet/lib/puppet/pops/loader/module_loaders.rb +523 -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_data_type_instantiator.rb +39 -0
- data/vendored/puppet/lib/puppet/pops/loader/ruby_function_instantiator.rb +45 -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 +163 -0
- data/vendored/puppet/lib/puppet/pops/loader/task_instantiator.rb +69 -0
- data/vendored/puppet/lib/puppet/pops/loader/type_definition_instantiator.rb +100 -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 +545 -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 +595 -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 +471 -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 +437 -0
- data/vendored/puppet/lib/puppet/pops/migration/migration_checker.rb +58 -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 +1150 -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 +467 -0
- data/vendored/puppet/lib/puppet/pops/model/pn_transformer.rb +400 -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/eparser.rb +3315 -0
- data/vendored/puppet/lib/puppet/pops/parser/epp_parser.rb +51 -0
- data/vendored/puppet/lib/puppet/pops/parser/epp_support.rb +260 -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 +772 -0
- data/vendored/puppet/lib/puppet/pops/parser/lexer_support.rb +221 -0
- data/vendored/puppet/lib/puppet/pops/parser/locatable.rb +23 -0
- data/vendored/puppet/lib/puppet/pops/parser/locator.rb +336 -0
- data/vendored/puppet/lib/puppet/pops/parser/parser_support.rb +247 -0
- data/vendored/puppet/lib/puppet/pops/parser/pn_parser.rb +316 -0
- data/vendored/puppet/lib/puppet/pops/parser/slurp_support.rb +117 -0
- data/vendored/puppet/lib/puppet/pops/patterns.rb +60 -0
- data/vendored/puppet/lib/puppet/pops/pcore.rb +147 -0
- data/vendored/puppet/lib/puppet/pops/pn.rb +236 -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/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 +180 -0
- data/vendored/puppet/lib/puppet/pops/serialization/abstract_writer.rb +222 -0
- data/vendored/puppet/lib/puppet/pops/serialization/deserializer.rb +80 -0
- data/vendored/puppet/lib/puppet/pops/serialization/extension.rb +158 -0
- data/vendored/puppet/lib/puppet/pops/serialization/from_data_converter.rb +223 -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 +127 -0
- data/vendored/puppet/lib/puppet/pops/serialization/object.rb +70 -0
- data/vendored/puppet/lib/puppet/pops/serialization/serializer.rb +140 -0
- data/vendored/puppet/lib/puppet/pops/serialization/time_factory.rb +67 -0
- data/vendored/puppet/lib/puppet/pops/serialization/to_data_converter.rb +305 -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 +132 -0
- data/vendored/puppet/lib/puppet/pops/types/enumeration.rb +16 -0
- data/vendored/puppet/lib/puppet/pops/types/implementation_registry.rb +134 -0
- data/vendored/puppet/lib/puppet/pops/types/iterable.rb +339 -0
- data/vendored/puppet/lib/puppet/pops/types/p_binary_type.rb +233 -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 +94 -0
- data/vendored/puppet/lib/puppet/pops/types/p_object_type.rb +1114 -0
- data/vendored/puppet/lib/puppet/pops/types/p_object_type_extension.rb +218 -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 +190 -0
- data/vendored/puppet/lib/puppet/pops/types/p_sem_ver_type.rb +149 -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 +383 -0
- data/vendored/puppet/lib/puppet/pops/types/p_uri_type.rb +190 -0
- data/vendored/puppet/lib/puppet/pops/types/puppet_object.rb +40 -0
- data/vendored/puppet/lib/puppet/pops/types/recursion_guard.rb +136 -0
- data/vendored/puppet/lib/puppet/pops/types/ruby_generator.rb +472 -0
- data/vendored/puppet/lib/puppet/pops/types/ruby_method.rb +31 -0
- data/vendored/puppet/lib/puppet/pops/types/string_converter.rb +1123 -0
- data/vendored/puppet/lib/puppet/pops/types/tree_iterators.rb +254 -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 +809 -0
- data/vendored/puppet/lib/puppet/pops/types/type_conversion_error.rb +15 -0
- data/vendored/puppet/lib/puppet/pops/types/type_factory.rb +614 -0
- data/vendored/puppet/lib/puppet/pops/types/type_formatter.rb +802 -0
- data/vendored/puppet/lib/puppet/pops/types/type_mismatch_describer.rb +1075 -0
- data/vendored/puppet/lib/puppet/pops/types/type_parser.rb +685 -0
- data/vendored/puppet/lib/puppet/pops/types/type_set_reference.rb +59 -0
- data/vendored/puppet/lib/puppet/pops/types/type_with_members.rb +43 -0
- data/vendored/puppet/lib/puppet/pops/types/types.rb +3650 -0
- data/vendored/puppet/lib/puppet/pops/utils.rb +119 -0
- data/vendored/puppet/lib/puppet/pops/validation.rb +466 -0
- data/vendored/puppet/lib/puppet/pops/validation/checker4_0.rb +998 -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 +608 -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 +613 -0
- data/vendored/puppet/lib/puppet/provider/aixobject.rb +392 -0
- data/vendored/puppet/lib/puppet/provider/augeas/augeas.rb +566 -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 +96 -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 +143 -0
- data/vendored/puppet/lib/puppet/provider/group/directoryservice.rb +22 -0
- data/vendored/puppet/lib/puppet/provider/group/groupadd.rb +111 -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 +106 -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 +76 -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 +325 -0
- data/vendored/puppet/lib/puppet/provider/nameservice/directoryservice.rb +508 -0
- data/vendored/puppet/lib/puppet/provider/nameservice/objectadd.rb +22 -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 +109 -0
- data/vendored/puppet/lib/puppet/provider/package/apple.rb +46 -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 +282 -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 +255 -0
- data/vendored/puppet/lib/puppet/provider/package/pkgdmg.rb +151 -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 +300 -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 +293 -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 +140 -0
- data/vendored/puppet/lib/puppet/provider/service/base.rb +134 -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 +194 -0
- data/vendored/puppet/lib/puppet/provider/service/launchd.rb +345 -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 +72 -0
- data/vendored/puppet/lib/puppet/provider/service/runit.rb +112 -0
- data/vendored/puppet/lib/puppet/provider/service/service.rb +42 -0
- data/vendored/puppet/lib/puppet/provider/service/smf.rb +170 -0
- data/vendored/puppet/lib/puppet/provider/service/src.rb +147 -0
- data/vendored/puppet/lib/puppet/provider/service/systemd.rb +187 -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 +383 -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 +76 -0
- data/vendored/puppet/lib/puppet/provider/user/pw.rb +98 -0
- data/vendored/puppet/lib/puppet/provider/user/user_role_add.rb +233 -0
- data/vendored/puppet/lib/puppet/provider/user/useradd.rb +265 -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 +303 -0
- data/vendored/puppet/lib/puppet/provider/zfs/zfs.rb +108 -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 +86 -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 +113 -0
- data/vendored/puppet/lib/puppet/relationship.rb +89 -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 +670 -0
- data/vendored/puppet/lib/puppet/resource/capability_finder.rb +150 -0
- data/vendored/puppet/lib/puppet/resource/catalog.rb +682 -0
- data/vendored/puppet/lib/puppet/resource/status.rb +227 -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 +1475 -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 +197 -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 +153 -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 +213 -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 +225 -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 +51 -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 +158 -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 +325 -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 +33 -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 +193 -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 +40 -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 +444 -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 +99 -0
- data/vendored/puppet/lib/puppet/transaction/report.rb +468 -0
- data/vendored/puppet/lib/puppet/transaction/resource_harness.rb +318 -0
- data/vendored/puppet/lib/puppet/type.rb +2665 -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 +480 -0
- data/vendored/puppet/lib/puppet/type/exec.rb +623 -0
- data/vendored/puppet/lib/puppet/type/file.rb +1039 -0
- data/vendored/puppet/lib/puppet/type/file/checksum.rb +50 -0
- data/vendored/puppet/lib/puppet/type/file/checksum_value.rb +54 -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 +93 -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 +209 -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 +165 -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 +314 -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 +481 -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 +345 -0
- data/vendored/puppet/lib/puppet/type/user.rb +794 -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 +439 -0
- data/vendored/puppet/lib/puppet/type/zfs.rb +154 -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 +700 -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 +160 -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 +363 -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 +190 -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 +825 -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 +159 -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 +375 -0
- data/vendored/puppet/lib/puppet/util/filetype.rb +309 -0
- data/vendored/puppet/lib/puppet/util/http_proxy.rb +207 -0
- data/vendored/puppet/lib/puppet/util/inifile.rb +340 -0
- data/vendored/puppet/lib/puppet/util/instance_loader.rb +79 -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 +281 -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 +415 -0
- data/vendored/puppet/lib/puppet/util/log/destination.rb +49 -0
- data/vendored/puppet/lib/puppet/util/log/destinations.rb +258 -0
- data/vendored/puppet/lib/puppet/util/logging.rb +311 -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 +105 -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 +35 -0
- data/vendored/puppet/lib/puppet/util/plist.rb +155 -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 +118 -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 +31 -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 +545 -0
- data/vendored/puppet/lib/puppet/util/windows/api_types.rb +282 -0
- data/vendored/puppet/lib/puppet/util/windows/com.rb +225 -0
- data/vendored/puppet/lib/puppet/util/windows/error.rb +83 -0
- data/vendored/puppet/lib/puppet/util/windows/eventlog.rb +197 -0
- data/vendored/puppet/lib/puppet/util/windows/file.rb +571 -0
- data/vendored/puppet/lib/puppet/util/windows/principal.rb +192 -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 +282 -0
- data/vendored/puppet/lib/puppet/util/windows/string.rb +16 -0
- data/vendored/puppet/lib/puppet/util/windows/taskscheduler.rb +1267 -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/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/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 +11 -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/version.rb +93 -0
- data/vendored/puppet/lib/puppet_pal.rb +879 -0
- data/vendored/puppet/lib/puppet_x.rb +14 -0
- metadata +1237 -2
@@ -0,0 +1,62 @@
|
|
1
|
+
# Windows Security Descriptor
|
2
|
+
#
|
3
|
+
# Represents a security descriptor that can be applied to any Windows securable
|
4
|
+
# object, e.g. file, registry key, service, etc. It consists of an owner, group,
|
5
|
+
# flags, DACL, and SACL. The SACL is not currently supported, though it has the
|
6
|
+
# same layout as a DACL.
|
7
|
+
#
|
8
|
+
# @see https://msdn.microsoft.com/en-us/library/windows/desktop/aa379563(v=vs.85).aspx
|
9
|
+
# @api private
|
10
|
+
class Puppet::Util::Windows::SecurityDescriptor
|
11
|
+
require 'puppet/util/windows/security'
|
12
|
+
include Puppet::Util::Windows::SID
|
13
|
+
|
14
|
+
attr_reader :owner, :group, :dacl
|
15
|
+
attr_accessor :protect
|
16
|
+
|
17
|
+
# Construct a security descriptor
|
18
|
+
#
|
19
|
+
# @param owner [String] The SID of the owner, e.g. 'S-1-5-18'
|
20
|
+
# @param group [String] The SID of the group
|
21
|
+
# @param dacl [AccessControlList] The ACL specifying the rights granted to
|
22
|
+
# each user for accessing the object that the security descriptor refers to.
|
23
|
+
# @param protect [Boolean] If true, then inheritable access control
|
24
|
+
# entries will be blocked, and not applied to the object.
|
25
|
+
def initialize(owner, group, dacl, protect = false)
|
26
|
+
@owner = owner
|
27
|
+
@group = group
|
28
|
+
@dacl = dacl
|
29
|
+
@protect = protect
|
30
|
+
end
|
31
|
+
|
32
|
+
# Set the owner. Non-inherited access control entries assigned to the
|
33
|
+
# current owner will be assigned to the new owner.
|
34
|
+
#
|
35
|
+
# @param new_owner [String] The SID of the new owner, e.g. 'S-1-5-18'
|
36
|
+
def owner=(new_owner)
|
37
|
+
if @owner != new_owner
|
38
|
+
@dacl.reassign!(@owner, new_owner)
|
39
|
+
@owner = new_owner
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# Set the group. Non-inherited access control entries assigned to the
|
44
|
+
# current group will be assigned to the new group.
|
45
|
+
#
|
46
|
+
# @param new_group [String] The SID of the new group, e.g. 'S-1-0-0'
|
47
|
+
def group=(new_group)
|
48
|
+
if @group != new_group
|
49
|
+
@dacl.reassign!(@group, new_group)
|
50
|
+
@group = new_group
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def inspect
|
55
|
+
str = sid_to_name(owner)
|
56
|
+
str << "\n"
|
57
|
+
str << sid_to_name(group)
|
58
|
+
str << "\n"
|
59
|
+
str << @dacl.inspect
|
60
|
+
str
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,282 @@
|
|
1
|
+
require 'puppet/util/windows'
|
2
|
+
|
3
|
+
module Puppet::Util::Windows
|
4
|
+
module SID
|
5
|
+
require 'ffi'
|
6
|
+
extend FFI::Library
|
7
|
+
|
8
|
+
# missing from Windows::Error
|
9
|
+
ERROR_NONE_MAPPED = 1332
|
10
|
+
ERROR_INVALID_SID_STRUCTURE = 1337
|
11
|
+
|
12
|
+
# Well Known SIDs
|
13
|
+
Null = 'S-1-0'
|
14
|
+
Nobody = 'S-1-0-0'
|
15
|
+
World = 'S-1-1'
|
16
|
+
Everyone = 'S-1-1-0'
|
17
|
+
Local = 'S-1-2'
|
18
|
+
Creator = 'S-1-3'
|
19
|
+
CreatorOwner = 'S-1-3-0'
|
20
|
+
CreatorGroup = 'S-1-3-1'
|
21
|
+
CreatorOwnerServer = 'S-1-3-2'
|
22
|
+
CreatorGroupServer = 'S-1-3-3'
|
23
|
+
NonUnique = 'S-1-4'
|
24
|
+
Nt = 'S-1-5'
|
25
|
+
Dialup = 'S-1-5-1'
|
26
|
+
Network = 'S-1-5-2'
|
27
|
+
Batch = 'S-1-5-3'
|
28
|
+
Interactive = 'S-1-5-4'
|
29
|
+
Service = 'S-1-5-6'
|
30
|
+
Anonymous = 'S-1-5-7'
|
31
|
+
Proxy = 'S-1-5-8'
|
32
|
+
EnterpriseDomainControllers = 'S-1-5-9'
|
33
|
+
PrincipalSelf = 'S-1-5-10'
|
34
|
+
AuthenticatedUsers = 'S-1-5-11'
|
35
|
+
RestrictedCode = 'S-1-5-12'
|
36
|
+
TerminalServerUsers = 'S-1-5-13'
|
37
|
+
LocalSystem = 'S-1-5-18'
|
38
|
+
NtLocal = 'S-1-5-19'
|
39
|
+
NtNetwork = 'S-1-5-20'
|
40
|
+
BuiltinAdministrators = 'S-1-5-32-544'
|
41
|
+
BuiltinUsers = 'S-1-5-32-545'
|
42
|
+
Guests = 'S-1-5-32-546'
|
43
|
+
PowerUsers = 'S-1-5-32-547'
|
44
|
+
AccountOperators = 'S-1-5-32-548'
|
45
|
+
ServerOperators = 'S-1-5-32-549'
|
46
|
+
PrintOperators = 'S-1-5-32-550'
|
47
|
+
BackupOperators = 'S-1-5-32-551'
|
48
|
+
Replicators = 'S-1-5-32-552'
|
49
|
+
|
50
|
+
# Convert an account name, e.g. 'Administrators' into a SID string,
|
51
|
+
# e.g. 'S-1-5-32-544'. The name can be specified as 'Administrators',
|
52
|
+
# 'BUILTIN\Administrators', or 'S-1-5-32-544', and will return the
|
53
|
+
# SID. Returns nil if the account doesn't exist.
|
54
|
+
def name_to_sid(name)
|
55
|
+
sid = name_to_principal(name)
|
56
|
+
|
57
|
+
sid ? sid.sid : nil
|
58
|
+
end
|
59
|
+
module_function :name_to_sid
|
60
|
+
|
61
|
+
# Convert an account name, e.g. 'Administrators' into a Principal::SID object,
|
62
|
+
# e.g. 'S-1-5-32-544'. The name can be specified as 'Administrators',
|
63
|
+
# 'BUILTIN\Administrators', or 'S-1-5-32-544', and will return the
|
64
|
+
# SID object. Returns nil if the account doesn't exist.
|
65
|
+
# This method returns a SID::Principal with the account, domain, SID, etc
|
66
|
+
def name_to_principal(name)
|
67
|
+
# Apparently, we accept a symbol..
|
68
|
+
name = name.to_s.strip if name
|
69
|
+
|
70
|
+
# if name is a SID string, convert it to raw bytes for use with lookup_account_sid
|
71
|
+
raw_sid_bytes = nil
|
72
|
+
begin
|
73
|
+
string_to_sid_ptr(name) do |sid_ptr|
|
74
|
+
raw_sid_bytes = sid_ptr.read_array_of_uchar(get_length_sid(sid_ptr))
|
75
|
+
end
|
76
|
+
rescue
|
77
|
+
end
|
78
|
+
|
79
|
+
raw_sid_bytes ? Principal.lookup_account_sid(raw_sid_bytes) : Principal.lookup_account_name(name)
|
80
|
+
rescue
|
81
|
+
nil
|
82
|
+
end
|
83
|
+
module_function :name_to_principal
|
84
|
+
class << self; alias name_to_sid_object name_to_principal; end
|
85
|
+
|
86
|
+
# Converts an octet string array of bytes to a SID::Principal object,
|
87
|
+
# e.g. [1, 1, 0, 0, 0, 0, 0, 5, 18, 0, 0, 0] is the representation for
|
88
|
+
# S-1-5-18, the local 'SYSTEM' account.
|
89
|
+
# Raises an Error for nil or non-array input.
|
90
|
+
# This method returns a SID::Principal with the account, domain, SID, etc
|
91
|
+
def octet_string_to_principal(bytes)
|
92
|
+
if !bytes || !bytes.respond_to?('pack') || bytes.empty?
|
93
|
+
raise Puppet::Util::Windows::Error.new(_("Octet string must be an array of bytes"))
|
94
|
+
end
|
95
|
+
|
96
|
+
Principal.lookup_account_sid(bytes)
|
97
|
+
end
|
98
|
+
module_function :octet_string_to_principal
|
99
|
+
class << self; alias octet_string_to_sid_object octet_string_to_principal; end
|
100
|
+
|
101
|
+
# Converts a COM instance of IAdsUser or IAdsGroup to a SID::Principal object,
|
102
|
+
# Raises an Error for nil or an object without an objectSID / Name property.
|
103
|
+
# This method returns a SID::Principal with the account, domain, SID, etc
|
104
|
+
# This method will return instances even when the SID is unresolvable, as
|
105
|
+
# may be the case when domain users have been added to local groups, but
|
106
|
+
# removed from the domain
|
107
|
+
def ads_to_principal(ads_object)
|
108
|
+
if !ads_object || !ads_object.respond_to?(:ole_respond_to?) ||
|
109
|
+
!ads_object.ole_respond_to?(:objectSID) || !ads_object.ole_respond_to?(:Name)
|
110
|
+
raise Puppet::Error.new("ads_object must be an IAdsUser or IAdsGroup instance")
|
111
|
+
end
|
112
|
+
octet_string_to_principal(ads_object.objectSID)
|
113
|
+
rescue Puppet::Util::Windows::Error => e
|
114
|
+
# if the error is not a lookup / mapping problem, immediately re-raise
|
115
|
+
raise if e.code != ERROR_NONE_MAPPED
|
116
|
+
|
117
|
+
# if the Name property isn't formatted like a SID, OR
|
118
|
+
if !valid_sid?(ads_object.Name) ||
|
119
|
+
# if the objectSID doesn't match the Name property, also raise
|
120
|
+
((converted = octet_string_to_sid_string(ads_object.objectSID)) != ads_object.Name)
|
121
|
+
raise Puppet::Error.new("ads_object Name: #{ads_object.Name} invalid or does not match objectSID: #{ads_object.objectSID} (#{converted})", e)
|
122
|
+
end
|
123
|
+
|
124
|
+
unresolved_principal(ads_object.Name, ads_object.objectSID)
|
125
|
+
end
|
126
|
+
module_function :ads_to_principal
|
127
|
+
|
128
|
+
# Convert a SID string, e.g. "S-1-5-32-544" to a name,
|
129
|
+
# e.g. 'BUILTIN\Administrators'. Returns nil if an account
|
130
|
+
# for that SID does not exist.
|
131
|
+
def sid_to_name(value)
|
132
|
+
|
133
|
+
sid_bytes = []
|
134
|
+
begin
|
135
|
+
string_to_sid_ptr(value) do |ptr|
|
136
|
+
sid_bytes = ptr.read_array_of_uchar(get_length_sid(ptr))
|
137
|
+
end
|
138
|
+
rescue Puppet::Util::Windows::Error => e
|
139
|
+
raise if e.code != ERROR_INVALID_SID_STRUCTURE
|
140
|
+
end
|
141
|
+
|
142
|
+
Principal.lookup_account_sid(sid_bytes).domain_account
|
143
|
+
rescue
|
144
|
+
nil
|
145
|
+
end
|
146
|
+
module_function :sid_to_name
|
147
|
+
|
148
|
+
# https://stackoverflow.com/a/1792930 - 68 bytes, 184 characters in a string
|
149
|
+
MAXIMUM_SID_STRING_LENGTH = 184
|
150
|
+
|
151
|
+
# Convert a SID pointer to a SID string, e.g. "S-1-5-32-544".
|
152
|
+
def sid_ptr_to_string(psid)
|
153
|
+
if ! psid.kind_of?(FFI::Pointer) || IsValidSid(psid) == FFI::WIN32_FALSE
|
154
|
+
raise Puppet::Util::Windows::Error.new(_("Invalid SID"))
|
155
|
+
end
|
156
|
+
|
157
|
+
sid_string = nil
|
158
|
+
FFI::MemoryPointer.new(:pointer, 1) do |buffer_ptr|
|
159
|
+
if ConvertSidToStringSidW(psid, buffer_ptr) == FFI::WIN32_FALSE
|
160
|
+
raise Puppet::Util::Windows::Error.new(_("Failed to convert binary SID"))
|
161
|
+
end
|
162
|
+
|
163
|
+
buffer_ptr.read_win32_local_pointer do |wide_string_ptr|
|
164
|
+
if wide_string_ptr.null?
|
165
|
+
raise Puppet::Error.new(_("ConvertSidToStringSidW failed to allocate buffer for sid"))
|
166
|
+
end
|
167
|
+
|
168
|
+
sid_string = wide_string_ptr.read_arbitrary_wide_string_up_to(MAXIMUM_SID_STRING_LENGTH)
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
sid_string
|
173
|
+
end
|
174
|
+
module_function :sid_ptr_to_string
|
175
|
+
|
176
|
+
# Convert a SID string, e.g. "S-1-5-32-544" to a pointer (containing the
|
177
|
+
# address of the binary SID structure). The returned value can be used in
|
178
|
+
# Win32 APIs that expect a PSID, e.g. IsValidSid. The account for this
|
179
|
+
# SID may or may not exist.
|
180
|
+
def string_to_sid_ptr(string_sid, &block)
|
181
|
+
FFI::MemoryPointer.from_string_to_wide_string(string_sid) do |lpcwstr|
|
182
|
+
FFI::MemoryPointer.new(:pointer, 1) do |sid_ptr_ptr|
|
183
|
+
|
184
|
+
if ConvertStringSidToSidW(lpcwstr, sid_ptr_ptr) == FFI::WIN32_FALSE
|
185
|
+
raise Puppet::Util::Windows::Error.new(_("Failed to convert string SID: %{string_sid}") % { string_sid: string_sid })
|
186
|
+
end
|
187
|
+
|
188
|
+
sid_ptr_ptr.read_win32_local_pointer do |sid_ptr|
|
189
|
+
yield sid_ptr
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
# yielded sid_ptr has already had LocalFree called, nothing to return
|
195
|
+
nil
|
196
|
+
end
|
197
|
+
module_function :string_to_sid_ptr
|
198
|
+
|
199
|
+
# Return true if the string is a valid SID, e.g. "S-1-5-32-544", false otherwise.
|
200
|
+
def valid_sid?(string_sid)
|
201
|
+
valid = false
|
202
|
+
|
203
|
+
begin
|
204
|
+
string_to_sid_ptr(string_sid) { |ptr| valid = ! ptr.nil? && ! ptr.null? }
|
205
|
+
rescue Puppet::Util::Windows::Error => e
|
206
|
+
raise if e.code != ERROR_INVALID_SID_STRUCTURE
|
207
|
+
end
|
208
|
+
|
209
|
+
valid
|
210
|
+
end
|
211
|
+
module_function :valid_sid?
|
212
|
+
|
213
|
+
def get_length_sid(sid_ptr)
|
214
|
+
# MSDN states IsValidSid should be called on pointer first
|
215
|
+
if ! sid_ptr.kind_of?(FFI::Pointer) || IsValidSid(sid_ptr) == FFI::WIN32_FALSE
|
216
|
+
raise Puppet::Util::Windows::Error.new(_("Invalid SID"))
|
217
|
+
end
|
218
|
+
|
219
|
+
GetLengthSid(sid_ptr)
|
220
|
+
end
|
221
|
+
module_function :get_length_sid
|
222
|
+
|
223
|
+
def octet_string_to_sid_string(sid_bytes)
|
224
|
+
sid_string = nil
|
225
|
+
|
226
|
+
FFI::MemoryPointer.new(:byte, sid_bytes.length) do |sid_ptr|
|
227
|
+
sid_ptr.write_array_of_uchar(sid_bytes)
|
228
|
+
sid_string = Puppet::Util::Windows::SID.sid_ptr_to_string(sid_ptr)
|
229
|
+
end
|
230
|
+
|
231
|
+
sid_string
|
232
|
+
end
|
233
|
+
module_function :octet_string_to_sid_string
|
234
|
+
|
235
|
+
# @api private
|
236
|
+
def self.unresolved_principal(name, sid_bytes)
|
237
|
+
Principal.new(
|
238
|
+
name + " (unresolvable)", # account
|
239
|
+
sid_bytes, # sid_bytes
|
240
|
+
name, # sid string
|
241
|
+
nil, #domain
|
242
|
+
# https://msdn.microsoft.com/en-us/library/cc245534.aspx?f=255&MSPPError=-2147217396
|
243
|
+
# Indicates that the type of object could not be determined. For example, no object with that SID exists.
|
244
|
+
:SidTypeUnknown)
|
245
|
+
end
|
246
|
+
|
247
|
+
ffi_convention :stdcall
|
248
|
+
|
249
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa379151(v=vs.85).aspx
|
250
|
+
# BOOL WINAPI IsValidSid(
|
251
|
+
# _In_ PSID pSid
|
252
|
+
# );
|
253
|
+
ffi_lib :advapi32
|
254
|
+
attach_function_private :IsValidSid,
|
255
|
+
[:pointer], :win32_bool
|
256
|
+
|
257
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa376399(v=vs.85).aspx
|
258
|
+
# BOOL ConvertSidToStringSid(
|
259
|
+
# _In_ PSID Sid,
|
260
|
+
# _Out_ LPTSTR *StringSid
|
261
|
+
# );
|
262
|
+
ffi_lib :advapi32
|
263
|
+
attach_function_private :ConvertSidToStringSidW,
|
264
|
+
[:pointer, :pointer], :win32_bool
|
265
|
+
|
266
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa376402(v=vs.85).aspx
|
267
|
+
# BOOL WINAPI ConvertStringSidToSid(
|
268
|
+
# _In_ LPCTSTR StringSid,
|
269
|
+
# _Out_ PSID *Sid
|
270
|
+
# );
|
271
|
+
ffi_lib :advapi32
|
272
|
+
attach_function_private :ConvertStringSidToSidW,
|
273
|
+
[:lpcwstr, :pointer], :win32_bool
|
274
|
+
|
275
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa446642(v=vs.85).aspx
|
276
|
+
# DWORD WINAPI GetLengthSid(
|
277
|
+
# _In_ PSID pSid
|
278
|
+
# );
|
279
|
+
ffi_lib :advapi32
|
280
|
+
attach_function_private :GetLengthSid, [:pointer], :dword
|
281
|
+
end
|
282
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'puppet/util/windows'
|
2
|
+
|
3
|
+
module Puppet::Util::Windows::String
|
4
|
+
def wide_string(str)
|
5
|
+
# if given a nil string, assume caller wants to pass a nil pointer to win32
|
6
|
+
return nil if str.nil?
|
7
|
+
# ruby (< 2.1) does not respect multibyte terminators, so it is possible
|
8
|
+
# for a string to contain a single trailing null byte, followed by garbage
|
9
|
+
# causing buffer overruns.
|
10
|
+
#
|
11
|
+
# See http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=41920&view=revision
|
12
|
+
newstr = str + "\0".encode(str.encoding)
|
13
|
+
newstr.encode!('UTF-16LE')
|
14
|
+
end
|
15
|
+
module_function :wide_string
|
16
|
+
end
|
@@ -0,0 +1,1267 @@
|
|
1
|
+
require 'puppet/util/windows'
|
2
|
+
|
3
|
+
# The Win32 module serves as a namespace only
|
4
|
+
module Win32
|
5
|
+
# The TaskScheduler class encapsulates taskscheduler settings and behavior
|
6
|
+
class TaskScheduler
|
7
|
+
include Puppet::Util::Windows::String
|
8
|
+
|
9
|
+
require 'ffi'
|
10
|
+
extend FFI::Library
|
11
|
+
|
12
|
+
# The error class raised if any task scheduler specific calls fail.
|
13
|
+
class Error < Puppet::Util::Windows::Error; end
|
14
|
+
|
15
|
+
class << self
|
16
|
+
attr_accessor :com_initialized
|
17
|
+
end
|
18
|
+
|
19
|
+
# :stopdoc:
|
20
|
+
TASK_TIME_TRIGGER_ONCE = :TASK_TIME_TRIGGER_ONCE
|
21
|
+
TASK_TIME_TRIGGER_DAILY = :TASK_TIME_TRIGGER_DAILY
|
22
|
+
TASK_TIME_TRIGGER_WEEKLY = :TASK_TIME_TRIGGER_WEEKLY
|
23
|
+
TASK_TIME_TRIGGER_MONTHLYDATE = :TASK_TIME_TRIGGER_MONTHLYDATE
|
24
|
+
TASK_TIME_TRIGGER_MONTHLYDOW = :TASK_TIME_TRIGGER_MONTHLYDOW
|
25
|
+
TASK_EVENT_TRIGGER_ON_IDLE = :TASK_EVENT_TRIGGER_ON_IDLE
|
26
|
+
TASK_EVENT_TRIGGER_AT_SYSTEMSTART = :TASK_EVENT_TRIGGER_AT_SYSTEMSTART
|
27
|
+
TASK_EVENT_TRIGGER_AT_LOGON = :TASK_EVENT_TRIGGER_AT_LOGON
|
28
|
+
|
29
|
+
TASK_SUNDAY = 0x1
|
30
|
+
TASK_MONDAY = 0x2
|
31
|
+
TASK_TUESDAY = 0x4
|
32
|
+
TASK_WEDNESDAY = 0x8
|
33
|
+
TASK_THURSDAY = 0x10
|
34
|
+
TASK_FRIDAY = 0x20
|
35
|
+
TASK_SATURDAY = 0x40
|
36
|
+
TASK_FIRST_WEEK = 1
|
37
|
+
TASK_SECOND_WEEK = 2
|
38
|
+
TASK_THIRD_WEEK = 3
|
39
|
+
TASK_FOURTH_WEEK = 4
|
40
|
+
TASK_LAST_WEEK = 5
|
41
|
+
TASK_JANUARY = 0x1
|
42
|
+
TASK_FEBRUARY = 0x2
|
43
|
+
TASK_MARCH = 0x4
|
44
|
+
TASK_APRIL = 0x8
|
45
|
+
TASK_MAY = 0x10
|
46
|
+
TASK_JUNE = 0x20
|
47
|
+
TASK_JULY = 0x40
|
48
|
+
TASK_AUGUST = 0x80
|
49
|
+
TASK_SEPTEMBER = 0x100
|
50
|
+
TASK_OCTOBER = 0x200
|
51
|
+
TASK_NOVEMBER = 0x400
|
52
|
+
TASK_DECEMBER = 0x800
|
53
|
+
|
54
|
+
TASK_FLAG_INTERACTIVE = 0x1
|
55
|
+
TASK_FLAG_DELETE_WHEN_DONE = 0x2
|
56
|
+
TASK_FLAG_DISABLED = 0x4
|
57
|
+
TASK_FLAG_START_ONLY_IF_IDLE = 0x10
|
58
|
+
TASK_FLAG_KILL_ON_IDLE_END = 0x20
|
59
|
+
TASK_FLAG_DONT_START_IF_ON_BATTERIES = 0x40
|
60
|
+
TASK_FLAG_KILL_IF_GOING_ON_BATTERIES = 0x80
|
61
|
+
TASK_FLAG_RUN_ONLY_IF_DOCKED = 0x100
|
62
|
+
TASK_FLAG_HIDDEN = 0x200
|
63
|
+
TASK_FLAG_RUN_IF_CONNECTED_TO_INTERNET = 0x400
|
64
|
+
TASK_FLAG_RESTART_ON_IDLE_RESUME = 0x800
|
65
|
+
TASK_FLAG_SYSTEM_REQUIRED = 0x1000
|
66
|
+
TASK_FLAG_RUN_ONLY_IF_LOGGED_ON = 0x2000
|
67
|
+
TASK_TRIGGER_FLAG_HAS_END_DATE = 0x1
|
68
|
+
TASK_TRIGGER_FLAG_KILL_AT_DURATION_END = 0x2
|
69
|
+
TASK_TRIGGER_FLAG_DISABLED = 0x4
|
70
|
+
|
71
|
+
TASK_MAX_RUN_TIMES = 1440
|
72
|
+
TASKS_TO_RETRIEVE = 5
|
73
|
+
|
74
|
+
# COM
|
75
|
+
|
76
|
+
CLSID_CTask = FFI::WIN32::GUID['148BD520-A2AB-11CE-B11F-00AA00530503']
|
77
|
+
IID_ITask = FFI::WIN32::GUID['148BD524-A2AB-11CE-B11F-00AA00530503']
|
78
|
+
IID_IPersistFile = FFI::WIN32::GUID['0000010b-0000-0000-C000-000000000046']
|
79
|
+
|
80
|
+
SCHED_S_TASK_READY = 0x00041300
|
81
|
+
SCHED_S_TASK_RUNNING = 0x00041301
|
82
|
+
SCHED_S_TASK_HAS_NOT_RUN = 0x00041303
|
83
|
+
SCHED_S_TASK_NOT_SCHEDULED = 0x00041305
|
84
|
+
# HRESULT error codes
|
85
|
+
# https://blogs.msdn.com/b/eldar/archive/2007/04/03/a-lot-of-hresult-codes.aspx
|
86
|
+
# in Ruby, an 0x8XXXXXXX style HRESULT can be resolved to 2s complement
|
87
|
+
# by using "0x8XXXXXXX".to_i(16) - - 0x100000000
|
88
|
+
SCHED_E_ACCOUNT_INFORMATION_NOT_SET = -2147216625 # 0x8004130F
|
89
|
+
SCHED_E_NO_SECURITY_SERVICES = -2147216622 # 0x80041312
|
90
|
+
# No mapping between account names and security IDs was done.
|
91
|
+
ERROR_NONE_MAPPED = -2147023564 # 0x80070534 WIN32 Error CODE 1332 (0x534)
|
92
|
+
|
93
|
+
# :startdoc:
|
94
|
+
|
95
|
+
# Shorthand constants
|
96
|
+
IDLE = Puppet::Util::Windows::Process::IDLE_PRIORITY_CLASS
|
97
|
+
NORMAL = Puppet::Util::Windows::Process::NORMAL_PRIORITY_CLASS
|
98
|
+
HIGH = Puppet::Util::Windows::Process::HIGH_PRIORITY_CLASS
|
99
|
+
REALTIME = Puppet::Util::Windows::Process::REALTIME_PRIORITY_CLASS
|
100
|
+
BELOW_NORMAL = Puppet::Util::Windows::Process::BELOW_NORMAL_PRIORITY_CLASS
|
101
|
+
ABOVE_NORMAL = Puppet::Util::Windows::Process::ABOVE_NORMAL_PRIORITY_CLASS
|
102
|
+
|
103
|
+
ONCE = TASK_TIME_TRIGGER_ONCE
|
104
|
+
DAILY = TASK_TIME_TRIGGER_DAILY
|
105
|
+
WEEKLY = TASK_TIME_TRIGGER_WEEKLY
|
106
|
+
MONTHLYDATE = TASK_TIME_TRIGGER_MONTHLYDATE
|
107
|
+
MONTHLYDOW = TASK_TIME_TRIGGER_MONTHLYDOW
|
108
|
+
|
109
|
+
ON_IDLE = TASK_EVENT_TRIGGER_ON_IDLE
|
110
|
+
AT_SYSTEMSTART = TASK_EVENT_TRIGGER_AT_SYSTEMSTART
|
111
|
+
AT_LOGON = TASK_EVENT_TRIGGER_AT_LOGON
|
112
|
+
FIRST_WEEK = TASK_FIRST_WEEK
|
113
|
+
SECOND_WEEK = TASK_SECOND_WEEK
|
114
|
+
THIRD_WEEK = TASK_THIRD_WEEK
|
115
|
+
FOURTH_WEEK = TASK_FOURTH_WEEK
|
116
|
+
LAST_WEEK = TASK_LAST_WEEK
|
117
|
+
SUNDAY = TASK_SUNDAY
|
118
|
+
MONDAY = TASK_MONDAY
|
119
|
+
TUESDAY = TASK_TUESDAY
|
120
|
+
WEDNESDAY = TASK_WEDNESDAY
|
121
|
+
THURSDAY = TASK_THURSDAY
|
122
|
+
FRIDAY = TASK_FRIDAY
|
123
|
+
SATURDAY = TASK_SATURDAY
|
124
|
+
JANUARY = TASK_JANUARY
|
125
|
+
FEBRUARY = TASK_FEBRUARY
|
126
|
+
MARCH = TASK_MARCH
|
127
|
+
APRIL = TASK_APRIL
|
128
|
+
MAY = TASK_MAY
|
129
|
+
JUNE = TASK_JUNE
|
130
|
+
JULY = TASK_JULY
|
131
|
+
AUGUST = TASK_AUGUST
|
132
|
+
SEPTEMBER = TASK_SEPTEMBER
|
133
|
+
OCTOBER = TASK_OCTOBER
|
134
|
+
NOVEMBER = TASK_NOVEMBER
|
135
|
+
DECEMBER = TASK_DECEMBER
|
136
|
+
|
137
|
+
INTERACTIVE = TASK_FLAG_INTERACTIVE
|
138
|
+
DELETE_WHEN_DONE = TASK_FLAG_DELETE_WHEN_DONE
|
139
|
+
DISABLED = TASK_FLAG_DISABLED
|
140
|
+
START_ONLY_IF_IDLE = TASK_FLAG_START_ONLY_IF_IDLE
|
141
|
+
KILL_ON_IDLE_END = TASK_FLAG_KILL_ON_IDLE_END
|
142
|
+
DONT_START_IF_ON_BATTERIES = TASK_FLAG_DONT_START_IF_ON_BATTERIES
|
143
|
+
KILL_IF_GOING_ON_BATTERIES = TASK_FLAG_KILL_IF_GOING_ON_BATTERIES
|
144
|
+
RUN_ONLY_IF_DOCKED = TASK_FLAG_RUN_ONLY_IF_DOCKED
|
145
|
+
HIDDEN = TASK_FLAG_HIDDEN
|
146
|
+
RUN_IF_CONNECTED_TO_INTERNET = TASK_FLAG_RUN_IF_CONNECTED_TO_INTERNET
|
147
|
+
RESTART_ON_IDLE_RESUME = TASK_FLAG_RESTART_ON_IDLE_RESUME
|
148
|
+
SYSTEM_REQUIRED = TASK_FLAG_SYSTEM_REQUIRED
|
149
|
+
RUN_ONLY_IF_LOGGED_ON = TASK_FLAG_RUN_ONLY_IF_LOGGED_ON
|
150
|
+
|
151
|
+
FLAG_HAS_END_DATE = TASK_TRIGGER_FLAG_HAS_END_DATE
|
152
|
+
FLAG_KILL_AT_DURATION_END = TASK_TRIGGER_FLAG_KILL_AT_DURATION_END
|
153
|
+
FLAG_DISABLED = TASK_TRIGGER_FLAG_DISABLED
|
154
|
+
|
155
|
+
MAX_RUN_TIMES = TASK_MAX_RUN_TIMES
|
156
|
+
|
157
|
+
# unfortunately MSTask.h does not specify the limits for any settings
|
158
|
+
# so these were determined with some experimentation
|
159
|
+
# if values too large are written, its suspected there may be internal
|
160
|
+
# limits may be exceeded, corrupting the job
|
161
|
+
# used for max application name and path values
|
162
|
+
MAX_PATH = 260
|
163
|
+
# UNLEN from lmcons.h is 256
|
164
|
+
# https://technet.microsoft.com/it-it/library/bb726984(en-us).aspx specifies 104
|
165
|
+
MAX_ACCOUNT_LENGTH = 256
|
166
|
+
# command line max length is limited to 8191, choose something high but still enough that we don't blow out CLI
|
167
|
+
MAX_PARAMETERS_LENGTH = 4096
|
168
|
+
# in testing, this value could be set to a length of 99999, but saving / loading the task failed
|
169
|
+
MAX_COMMENT_LENGTH = 8192
|
170
|
+
|
171
|
+
# Returns a new TaskScheduler object. If a work_item (and possibly the
|
172
|
+
# the trigger) are passed as arguments then a new work item is created and
|
173
|
+
# associated with that trigger, although you can still activate other tasks
|
174
|
+
# with the same handle.
|
175
|
+
#
|
176
|
+
# This is really just a bit of convenience. Passing arguments to the
|
177
|
+
# constructor is the same as calling TaskScheduler.new plus
|
178
|
+
# TaskScheduler#new_work_item.
|
179
|
+
#
|
180
|
+
def initialize(work_item=nil, trigger=nil)
|
181
|
+
@pITS = nil
|
182
|
+
@pITask = nil
|
183
|
+
|
184
|
+
if ! self.class.com_initialized
|
185
|
+
Puppet::Util::Windows::COM.InitializeCom()
|
186
|
+
self.class.com_initialized = true
|
187
|
+
end
|
188
|
+
|
189
|
+
@pITS = COM::TaskScheduler.new
|
190
|
+
at_exit do
|
191
|
+
begin
|
192
|
+
@pITS.Release if @pITS && !@pITS.null?
|
193
|
+
@pITS = nil
|
194
|
+
rescue
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
if work_item
|
199
|
+
if trigger
|
200
|
+
raise TypeError unless trigger.is_a?(Hash)
|
201
|
+
new_work_item(work_item, trigger)
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
# Returns an array of scheduled task names.
|
207
|
+
#
|
208
|
+
def enum
|
209
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
210
|
+
array = []
|
211
|
+
|
212
|
+
@pITS.UseInstance(COM::EnumWorkItems, :Enum) do |pIEnum|
|
213
|
+
FFI::MemoryPointer.new(:pointer) do |names_array_ptr_ptr|
|
214
|
+
FFI::MemoryPointer.new(:win32_ulong) do |fetched_count_ptr|
|
215
|
+
# awkward usage, if number requested is available, returns S_OK (0), or if less were returned returns S_FALSE (1)
|
216
|
+
while (pIEnum.Next(TASKS_TO_RETRIEVE, names_array_ptr_ptr, fetched_count_ptr) >= Puppet::Util::Windows::COM::S_OK)
|
217
|
+
count = fetched_count_ptr.read_win32_ulong
|
218
|
+
break if count == 0
|
219
|
+
|
220
|
+
names_array_ptr_ptr.read_com_memory_pointer do |names_array_ptr|
|
221
|
+
# iterate over the array of pointers
|
222
|
+
name_ptr_ptr = FFI::Pointer.new(:pointer, names_array_ptr)
|
223
|
+
for i in 0 ... count
|
224
|
+
name_ptr_ptr[i].read_com_memory_pointer do |name_ptr|
|
225
|
+
array << name_ptr.read_arbitrary_wide_string_up_to(MAX_PATH)
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|
229
|
+
end
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
array
|
235
|
+
end
|
236
|
+
|
237
|
+
alias :tasks :enum
|
238
|
+
|
239
|
+
# Activate the specified task.
|
240
|
+
#
|
241
|
+
def activate(task)
|
242
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
243
|
+
raise TypeError unless task.is_a?(String)
|
244
|
+
|
245
|
+
FFI::MemoryPointer.new(:pointer) do |ptr|
|
246
|
+
@pITS.Activate(wide_string(task), IID_ITask, ptr)
|
247
|
+
|
248
|
+
reset_current_task
|
249
|
+
@pITask = COM::Task.new(ptr.read_pointer)
|
250
|
+
end
|
251
|
+
|
252
|
+
@pITask
|
253
|
+
end
|
254
|
+
|
255
|
+
# Delete the specified task name.
|
256
|
+
#
|
257
|
+
def delete(task)
|
258
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
259
|
+
raise TypeError unless task.is_a?(String)
|
260
|
+
|
261
|
+
@pITS.Delete(wide_string(task))
|
262
|
+
|
263
|
+
true
|
264
|
+
end
|
265
|
+
|
266
|
+
# Execute the current task.
|
267
|
+
#
|
268
|
+
def run
|
269
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
270
|
+
|
271
|
+
@pITask.Run
|
272
|
+
end
|
273
|
+
|
274
|
+
# Saves the current task. Tasks must be saved before they can be activated.
|
275
|
+
# The .job file itself is typically stored in the C:\WINDOWS\Tasks folder.
|
276
|
+
#
|
277
|
+
# If +file+ (an absolute path) is specified then the job is saved to that
|
278
|
+
# file instead. A '.job' extension is recommended but not enforced.
|
279
|
+
#
|
280
|
+
def save(file = nil)
|
281
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
282
|
+
raise Error.new(_('Account information must be set on the current task to save it properly.')) if !@account_information_set
|
283
|
+
|
284
|
+
reset = true
|
285
|
+
|
286
|
+
begin
|
287
|
+
@pITask.QueryInstance(COM::PersistFile) do |pIPersistFile|
|
288
|
+
wide_file = wide_string(file)
|
289
|
+
pIPersistFile.Save(wide_file, 1)
|
290
|
+
pIPersistFile.SaveCompleted(wide_file)
|
291
|
+
end
|
292
|
+
rescue
|
293
|
+
reset = false
|
294
|
+
ensure
|
295
|
+
reset_current_task if reset
|
296
|
+
end
|
297
|
+
end
|
298
|
+
|
299
|
+
# Terminate the current task.
|
300
|
+
#
|
301
|
+
def terminate
|
302
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
303
|
+
|
304
|
+
@pITask.Terminate
|
305
|
+
end
|
306
|
+
|
307
|
+
# Set the host on which the various TaskScheduler methods will execute.
|
308
|
+
#
|
309
|
+
def machine=(host)
|
310
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
311
|
+
raise TypeError unless host.is_a?(String)
|
312
|
+
|
313
|
+
@pITS.SetTargetComputer(wide_string(host))
|
314
|
+
|
315
|
+
host
|
316
|
+
end
|
317
|
+
|
318
|
+
alias :host= :machine=
|
319
|
+
|
320
|
+
# Sets the +user+ and +password+ for the given task. If the user and
|
321
|
+
# password are set properly then true is returned.
|
322
|
+
#
|
323
|
+
# In some cases the job may be created, but the account information was
|
324
|
+
# bad. In this case the task is created but a warning is generated and
|
325
|
+
# false is returned.
|
326
|
+
#
|
327
|
+
# Note that if intending to use SYSTEM, specify an empty user and nil password
|
328
|
+
#
|
329
|
+
# Calling task.set_account_information('SYSTEM', nil) will generally not
|
330
|
+
# work, except for one special case where flags are also set like:
|
331
|
+
# task.flags = Win32::TaskScheduler::TASK_FLAG_RUN_ONLY_IF_LOGGED_ON
|
332
|
+
#
|
333
|
+
# This must be done prior to the 1st save() call for the task to be
|
334
|
+
# properly registered and visible through the MMC snap-in / schtasks.exe
|
335
|
+
#
|
336
|
+
def set_account_information(user, password)
|
337
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
338
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
339
|
+
|
340
|
+
bool = false
|
341
|
+
|
342
|
+
begin
|
343
|
+
if (user.nil? || user=="") && (password.nil? || password=="")
|
344
|
+
@pITask.SetAccountInformation(wide_string(""), FFI::Pointer::NULL)
|
345
|
+
else
|
346
|
+
if user.length > MAX_ACCOUNT_LENGTH
|
347
|
+
raise Error.new(_("User has exceeded maximum allowed length %{max}") % { max: MAX_ACCOUNT_LENGTH })
|
348
|
+
end
|
349
|
+
user = wide_string(user)
|
350
|
+
password = wide_string(password)
|
351
|
+
@pITask.SetAccountInformation(user, password)
|
352
|
+
end
|
353
|
+
|
354
|
+
@account_information_set = true
|
355
|
+
bool = true
|
356
|
+
rescue Puppet::Util::Windows::Error => e
|
357
|
+
raise e unless e.code == SCHED_E_ACCOUNT_INFORMATION_NOT_SET
|
358
|
+
|
359
|
+
warn _('job created, but password was invalid')
|
360
|
+
end
|
361
|
+
|
362
|
+
bool
|
363
|
+
end
|
364
|
+
|
365
|
+
# Returns the user associated with the task or nil if no user has yet
|
366
|
+
# been associated with the task.
|
367
|
+
#
|
368
|
+
def account_information
|
369
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
370
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
371
|
+
|
372
|
+
# default under certain failures
|
373
|
+
user = nil
|
374
|
+
|
375
|
+
begin
|
376
|
+
FFI::MemoryPointer.new(:pointer) do |ptr|
|
377
|
+
@pITask.GetAccountInformation(ptr)
|
378
|
+
ptr.read_com_memory_pointer do |str_ptr|
|
379
|
+
user = str_ptr.read_arbitrary_wide_string_up_to(MAX_ACCOUNT_LENGTH) if ! str_ptr.null?
|
380
|
+
end
|
381
|
+
end
|
382
|
+
rescue Puppet::Util::Windows::Error => e
|
383
|
+
raise e unless e.code == SCHED_E_ACCOUNT_INFORMATION_NOT_SET ||
|
384
|
+
e.code == SCHED_E_NO_SECURITY_SERVICES ||
|
385
|
+
e.code == ERROR_NONE_MAPPED
|
386
|
+
end
|
387
|
+
|
388
|
+
user
|
389
|
+
end
|
390
|
+
|
391
|
+
# Returns the name of the application associated with the task.
|
392
|
+
#
|
393
|
+
def application_name
|
394
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
395
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
396
|
+
|
397
|
+
app = nil
|
398
|
+
|
399
|
+
FFI::MemoryPointer.new(:pointer) do |ptr|
|
400
|
+
@pITask.GetApplicationName(ptr)
|
401
|
+
|
402
|
+
ptr.read_com_memory_pointer do |str_ptr|
|
403
|
+
app = str_ptr.read_arbitrary_wide_string_up_to(MAX_PATH) if ! str_ptr.null?
|
404
|
+
end
|
405
|
+
end
|
406
|
+
|
407
|
+
app
|
408
|
+
end
|
409
|
+
|
410
|
+
# Sets the application name associated with the task.
|
411
|
+
#
|
412
|
+
def application_name=(app)
|
413
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
414
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
415
|
+
raise TypeError unless app.is_a?(String)
|
416
|
+
|
417
|
+
# the application name is written to a .job file on disk, so is subject to path limitations
|
418
|
+
if app.length > MAX_PATH
|
419
|
+
raise Error.new(_("Application name has exceeded maximum allowed length %{max}") % { max: MAX_PATH })
|
420
|
+
end
|
421
|
+
@pITask.SetApplicationName(wide_string(app))
|
422
|
+
|
423
|
+
app
|
424
|
+
end
|
425
|
+
|
426
|
+
# Returns the command line parameters for the task.
|
427
|
+
#
|
428
|
+
def parameters
|
429
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
430
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
431
|
+
|
432
|
+
param = nil
|
433
|
+
|
434
|
+
FFI::MemoryPointer.new(:pointer) do |ptr|
|
435
|
+
@pITask.GetParameters(ptr)
|
436
|
+
|
437
|
+
ptr.read_com_memory_pointer do |str_ptr|
|
438
|
+
param = str_ptr.read_arbitrary_wide_string_up_to(MAX_PARAMETERS_LENGTH) if ! str_ptr.null?
|
439
|
+
end
|
440
|
+
end
|
441
|
+
|
442
|
+
param
|
443
|
+
end
|
444
|
+
|
445
|
+
# Sets the parameters for the task. These parameters are passed as command
|
446
|
+
# line arguments to the application the task will run. To clear the command
|
447
|
+
# line parameters set it to an empty string.
|
448
|
+
#
|
449
|
+
def parameters=(param)
|
450
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
451
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
452
|
+
raise TypeError unless param.is_a?(String)
|
453
|
+
|
454
|
+
if param.length > MAX_PARAMETERS_LENGTH
|
455
|
+
raise Error.new(_("Parameters has exceeded maximum allowed length %{max}") % { max: MAX_PARAMETERS_LENGTH })
|
456
|
+
end
|
457
|
+
|
458
|
+
@pITask.SetParameters(wide_string(param))
|
459
|
+
|
460
|
+
param
|
461
|
+
end
|
462
|
+
|
463
|
+
# Returns the working directory for the task.
|
464
|
+
#
|
465
|
+
def working_directory
|
466
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
467
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
468
|
+
|
469
|
+
dir = nil
|
470
|
+
|
471
|
+
FFI::MemoryPointer.new(:pointer) do |ptr|
|
472
|
+
@pITask.GetWorkingDirectory(ptr)
|
473
|
+
|
474
|
+
ptr.read_com_memory_pointer do |str_ptr|
|
475
|
+
dir = str_ptr.read_arbitrary_wide_string_up_to(MAX_PATH) if ! str_ptr.null?
|
476
|
+
end
|
477
|
+
end
|
478
|
+
|
479
|
+
dir
|
480
|
+
end
|
481
|
+
|
482
|
+
# Sets the working directory for the task.
|
483
|
+
#
|
484
|
+
def working_directory=(dir)
|
485
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
486
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
487
|
+
raise TypeError unless dir.is_a?(String)
|
488
|
+
|
489
|
+
if dir.length > MAX_PATH
|
490
|
+
raise Error.new(_("Working directory has exceeded maximum allowed length %{max}") % { max: MAX_PATH })
|
491
|
+
end
|
492
|
+
|
493
|
+
@pITask.SetWorkingDirectory(wide_string(dir))
|
494
|
+
|
495
|
+
dir
|
496
|
+
end
|
497
|
+
|
498
|
+
# Returns the task's priority level. Possible values are 'idle',
|
499
|
+
# 'normal', 'high', 'realtime', 'below_normal', 'above_normal',
|
500
|
+
# and 'unknown'.
|
501
|
+
#
|
502
|
+
def priority
|
503
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
504
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
505
|
+
|
506
|
+
priority_name = ''
|
507
|
+
|
508
|
+
FFI::MemoryPointer.new(:dword, 1) do |ptr|
|
509
|
+
@pITask.GetPriority(ptr)
|
510
|
+
|
511
|
+
pri = ptr.read_dword
|
512
|
+
if (pri & IDLE) != 0
|
513
|
+
priority_name = 'idle'
|
514
|
+
elsif (pri & NORMAL) != 0
|
515
|
+
priority_name = 'normal'
|
516
|
+
elsif (pri & HIGH) != 0
|
517
|
+
priority_name = 'high'
|
518
|
+
elsif (pri & REALTIME) != 0
|
519
|
+
priority_name = 'realtime'
|
520
|
+
elsif (pri & BELOW_NORMAL) != 0
|
521
|
+
priority_name = 'below_normal'
|
522
|
+
elsif (pri & ABOVE_NORMAL) != 0
|
523
|
+
priority_name = 'above_normal'
|
524
|
+
else
|
525
|
+
priority_name = 'unknown'
|
526
|
+
end
|
527
|
+
end
|
528
|
+
|
529
|
+
priority_name
|
530
|
+
end
|
531
|
+
|
532
|
+
# Sets the priority of the task. The +priority+ should be a numeric
|
533
|
+
# priority constant value.
|
534
|
+
#
|
535
|
+
def priority=(priority)
|
536
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
537
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
538
|
+
raise TypeError unless priority.is_a?(Numeric)
|
539
|
+
|
540
|
+
@pITask.SetPriority(priority)
|
541
|
+
|
542
|
+
priority
|
543
|
+
end
|
544
|
+
|
545
|
+
# Creates a new work item (scheduled job) with the given +trigger+. The
|
546
|
+
# trigger variable is a hash of options that define when the scheduled
|
547
|
+
# job should run.
|
548
|
+
#
|
549
|
+
def new_work_item(task, trigger)
|
550
|
+
raise TypeError unless trigger.is_a?(Hash)
|
551
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
552
|
+
|
553
|
+
# I'm working around github issue #1 here.
|
554
|
+
enum.each{ |name|
|
555
|
+
if name.downcase == task.downcase + '.job'
|
556
|
+
raise Error.new(_("task '%{task}' already exists") % { task: task })
|
557
|
+
end
|
558
|
+
}
|
559
|
+
|
560
|
+
FFI::MemoryPointer.new(:pointer) do |ptr|
|
561
|
+
@pITS.NewWorkItem(wide_string(task), CLSID_CTask, IID_ITask, ptr)
|
562
|
+
|
563
|
+
reset_current_task
|
564
|
+
@pITask = COM::Task.new(ptr.read_pointer)
|
565
|
+
|
566
|
+
FFI::MemoryPointer.new(:word, 1) do |trigger_index_ptr|
|
567
|
+
# Without the 'enum.include?' check above the code segfaults here if the
|
568
|
+
# task already exists. This should probably be handled properly instead
|
569
|
+
# of simply avoiding the issue.
|
570
|
+
|
571
|
+
@pITask.UseInstance(COM::TaskTrigger, :CreateTrigger, trigger_index_ptr) do |pITaskTrigger|
|
572
|
+
populate_trigger(pITaskTrigger, trigger)
|
573
|
+
end
|
574
|
+
end
|
575
|
+
end
|
576
|
+
|
577
|
+
# preload task with the SYSTEM account
|
578
|
+
# empty string '' means 'SYSTEM' per MSDN, so default it
|
579
|
+
# given an account is necessary for creation of a task
|
580
|
+
# note that a user may set SYSTEM explicitly, but that has problems
|
581
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381276(v=vs.85).aspx
|
582
|
+
set_account_information('', nil)
|
583
|
+
|
584
|
+
@pITask
|
585
|
+
end
|
586
|
+
|
587
|
+
alias :new_task :new_work_item
|
588
|
+
|
589
|
+
# Returns the number of triggers associated with the active task.
|
590
|
+
#
|
591
|
+
def trigger_count
|
592
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
593
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
594
|
+
|
595
|
+
count = 0
|
596
|
+
|
597
|
+
FFI::MemoryPointer.new(:word, 1) do |ptr|
|
598
|
+
@pITask.GetTriggerCount(ptr)
|
599
|
+
count = ptr.read_word
|
600
|
+
end
|
601
|
+
|
602
|
+
count
|
603
|
+
end
|
604
|
+
|
605
|
+
# Deletes the trigger at the specified index.
|
606
|
+
#
|
607
|
+
def delete_trigger(index)
|
608
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
609
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
610
|
+
|
611
|
+
@pITask.DeleteTrigger(index)
|
612
|
+
index
|
613
|
+
end
|
614
|
+
|
615
|
+
# Returns a hash that describes the trigger at the given index for the
|
616
|
+
# current task.
|
617
|
+
#
|
618
|
+
def trigger(index)
|
619
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
620
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
621
|
+
|
622
|
+
trigger = {}
|
623
|
+
|
624
|
+
@pITask.UseInstance(COM::TaskTrigger, :GetTrigger, index) do |pITaskTrigger|
|
625
|
+
FFI::MemoryPointer.new(COM::TASK_TRIGGER.size) do |task_trigger_ptr|
|
626
|
+
pITaskTrigger.GetTrigger(task_trigger_ptr)
|
627
|
+
trigger = populate_hash_from_trigger(COM::TASK_TRIGGER.new(task_trigger_ptr))
|
628
|
+
end
|
629
|
+
end
|
630
|
+
|
631
|
+
trigger
|
632
|
+
end
|
633
|
+
|
634
|
+
# Sets the trigger for the currently active task.
|
635
|
+
#
|
636
|
+
def trigger=(trigger)
|
637
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
638
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
639
|
+
raise TypeError unless trigger.is_a?(Hash)
|
640
|
+
|
641
|
+
FFI::MemoryPointer.new(:word, 1) do |trigger_index_ptr|
|
642
|
+
# Without the 'enum.include?' check above the code segfaults here if the
|
643
|
+
# task already exists. This should probably be handled properly instead
|
644
|
+
# of simply avoiding the issue.
|
645
|
+
|
646
|
+
@pITask.UseInstance(COM::TaskTrigger, :CreateTrigger, trigger_index_ptr) do |pITaskTrigger|
|
647
|
+
populate_trigger(pITaskTrigger, trigger)
|
648
|
+
end
|
649
|
+
end
|
650
|
+
|
651
|
+
trigger
|
652
|
+
end
|
653
|
+
|
654
|
+
# Adds a trigger at the specified index.
|
655
|
+
#
|
656
|
+
def add_trigger(index, trigger)
|
657
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
658
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
659
|
+
raise TypeError unless trigger.is_a?(Hash)
|
660
|
+
|
661
|
+
@pITask.UseInstance(COM::TaskTrigger, :GetTrigger, index) do |pITaskTrigger|
|
662
|
+
populate_trigger(pITaskTrigger, trigger)
|
663
|
+
end
|
664
|
+
end
|
665
|
+
|
666
|
+
# Returns the flags (integer) that modify the behavior of the work item. You
|
667
|
+
# must OR the return value to determine the flags yourself.
|
668
|
+
#
|
669
|
+
def flags
|
670
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
671
|
+
|
672
|
+
flags = 0
|
673
|
+
|
674
|
+
FFI::MemoryPointer.new(:dword, 1) do |ptr|
|
675
|
+
@pITask.GetFlags(ptr)
|
676
|
+
flags = ptr.read_dword
|
677
|
+
end
|
678
|
+
|
679
|
+
flags
|
680
|
+
end
|
681
|
+
|
682
|
+
# Sets an OR'd value of flags that modify the behavior of the work item.
|
683
|
+
#
|
684
|
+
def flags=(flags)
|
685
|
+
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
686
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
687
|
+
|
688
|
+
@pITask.SetFlags(flags)
|
689
|
+
flags
|
690
|
+
end
|
691
|
+
|
692
|
+
# Returns the status of the currently active task. Possible values are
|
693
|
+
# 'ready', 'running', 'not scheduled' or 'unknown'.
|
694
|
+
#
|
695
|
+
def status
|
696
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
697
|
+
|
698
|
+
st = nil
|
699
|
+
|
700
|
+
FFI::MemoryPointer.new(:hresult, 1) do |ptr|
|
701
|
+
@pITask.GetStatus(ptr)
|
702
|
+
st = ptr.read_hresult
|
703
|
+
end
|
704
|
+
|
705
|
+
case st
|
706
|
+
when SCHED_S_TASK_READY
|
707
|
+
status = 'ready'
|
708
|
+
when SCHED_S_TASK_RUNNING
|
709
|
+
status = 'running'
|
710
|
+
when SCHED_S_TASK_NOT_SCHEDULED
|
711
|
+
status = 'not scheduled'
|
712
|
+
else
|
713
|
+
status = 'unknown'
|
714
|
+
end
|
715
|
+
|
716
|
+
status
|
717
|
+
end
|
718
|
+
|
719
|
+
# Returns the exit code from the last scheduled run.
|
720
|
+
#
|
721
|
+
def exit_code
|
722
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
723
|
+
|
724
|
+
status = 0
|
725
|
+
|
726
|
+
begin
|
727
|
+
FFI::MemoryPointer.new(:dword, 1) do |ptr|
|
728
|
+
@pITask.GetExitCode(ptr)
|
729
|
+
status = ptr.read_dword
|
730
|
+
end
|
731
|
+
rescue Puppet::Util::Windows::Error => e
|
732
|
+
raise e unless e.code == SCHED_S_TASK_HAS_NOT_RUN
|
733
|
+
end
|
734
|
+
|
735
|
+
status
|
736
|
+
end
|
737
|
+
|
738
|
+
# Returns the comment associated with the task, if any.
|
739
|
+
#
|
740
|
+
def comment
|
741
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
742
|
+
|
743
|
+
comment = nil
|
744
|
+
|
745
|
+
FFI::MemoryPointer.new(:pointer) do |ptr|
|
746
|
+
@pITask.GetComment(ptr)
|
747
|
+
|
748
|
+
ptr.read_com_memory_pointer do |str_ptr|
|
749
|
+
comment = str_ptr.read_arbitrary_wide_string_up_to(MAX_COMMENT_LENGTH) if ! str_ptr.null?
|
750
|
+
end
|
751
|
+
end
|
752
|
+
|
753
|
+
comment
|
754
|
+
end
|
755
|
+
|
756
|
+
# Sets the comment for the task.
|
757
|
+
#
|
758
|
+
def comment=(comment)
|
759
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
760
|
+
raise TypeError unless comment.is_a?(String)
|
761
|
+
|
762
|
+
if comment.length > MAX_COMMENT_LENGTH
|
763
|
+
raise Error.new(_("Comment has exceeded maximum allowed length %{max}") % { max: MAX_COMMENT_LENGTH })
|
764
|
+
end
|
765
|
+
|
766
|
+
@pITask.SetComment(wide_string(comment))
|
767
|
+
comment
|
768
|
+
end
|
769
|
+
|
770
|
+
# Returns the name of the user who created the task.
|
771
|
+
#
|
772
|
+
def creator
|
773
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
774
|
+
|
775
|
+
creator = nil
|
776
|
+
|
777
|
+
FFI::MemoryPointer.new(:pointer) do |ptr|
|
778
|
+
@pITask.GetCreator(ptr)
|
779
|
+
|
780
|
+
ptr.read_com_memory_pointer do |str_ptr|
|
781
|
+
creator = str_ptr.read_arbitrary_wide_string_up_to(MAX_ACCOUNT_LENGTH) if ! str_ptr.null?
|
782
|
+
end
|
783
|
+
end
|
784
|
+
|
785
|
+
creator
|
786
|
+
end
|
787
|
+
|
788
|
+
# Sets the creator for the task.
|
789
|
+
#
|
790
|
+
def creator=(creator)
|
791
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
792
|
+
raise TypeError unless creator.is_a?(String)
|
793
|
+
|
794
|
+
if creator.length > MAX_ACCOUNT_LENGTH
|
795
|
+
raise Error.new(_("Creator has exceeded maximum allowed length %{max}") % { max: MAX_ACCOUNT_LENGTH })
|
796
|
+
end
|
797
|
+
|
798
|
+
|
799
|
+
@pITask.SetCreator(wide_string(creator))
|
800
|
+
creator
|
801
|
+
end
|
802
|
+
|
803
|
+
# Returns a Time object that indicates the next time the task will run.
|
804
|
+
#
|
805
|
+
def next_run_time
|
806
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
807
|
+
|
808
|
+
time = nil
|
809
|
+
|
810
|
+
FFI::MemoryPointer.new(WIN32::SYSTEMTIME.size) do |ptr|
|
811
|
+
@pITask.GetNextRunTime(ptr)
|
812
|
+
time = WIN32::SYSTEMTIME.new(ptr).to_local_time
|
813
|
+
end
|
814
|
+
|
815
|
+
time
|
816
|
+
end
|
817
|
+
|
818
|
+
# Returns a Time object indicating the most recent time the task ran or
|
819
|
+
# nil if the task has never run.
|
820
|
+
#
|
821
|
+
def most_recent_run_time
|
822
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
823
|
+
|
824
|
+
time = nil
|
825
|
+
|
826
|
+
begin
|
827
|
+
FFI::MemoryPointer.new(WIN32::SYSTEMTIME.size) do |ptr|
|
828
|
+
@pITask.GetMostRecentRunTime(ptr)
|
829
|
+
time = WIN32::SYSTEMTIME.new(ptr).to_local_time
|
830
|
+
end
|
831
|
+
rescue Puppet::Util::Windows::Error => e
|
832
|
+
raise e unless e.code == SCHED_S_TASK_HAS_NOT_RUN
|
833
|
+
end
|
834
|
+
|
835
|
+
time
|
836
|
+
end
|
837
|
+
|
838
|
+
# Returns the maximum length of time, in milliseconds, that the task
|
839
|
+
# will run before terminating.
|
840
|
+
#
|
841
|
+
def max_run_time
|
842
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
843
|
+
|
844
|
+
max_run_time = nil
|
845
|
+
|
846
|
+
FFI::MemoryPointer.new(:dword, 1) do |ptr|
|
847
|
+
@pITask.GetMaxRunTime(ptr)
|
848
|
+
max_run_time = ptr.read_dword
|
849
|
+
end
|
850
|
+
|
851
|
+
max_run_time
|
852
|
+
end
|
853
|
+
|
854
|
+
# Sets the maximum length of time, in milliseconds, that the task can run
|
855
|
+
# before terminating. Returns the value you specified if successful.
|
856
|
+
#
|
857
|
+
def max_run_time=(max_run_time)
|
858
|
+
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
859
|
+
raise TypeError unless max_run_time.is_a?(Numeric)
|
860
|
+
|
861
|
+
@pITask.SetMaxRunTime(max_run_time)
|
862
|
+
max_run_time
|
863
|
+
end
|
864
|
+
|
865
|
+
# Returns whether or not the scheduled task exists.
|
866
|
+
def exists?(job_name)
|
867
|
+
# task name comparison is case insensitive
|
868
|
+
tasks.any? { |name| name.casecmp(job_name + '.job') == 0 }
|
869
|
+
end
|
870
|
+
|
871
|
+
private
|
872
|
+
|
873
|
+
# :stopdoc:
|
874
|
+
|
875
|
+
# Used for the new_work_item method
|
876
|
+
ValidTriggerKeys = [
|
877
|
+
'end_day',
|
878
|
+
'end_month',
|
879
|
+
'end_year',
|
880
|
+
'flags',
|
881
|
+
'minutes_duration',
|
882
|
+
'minutes_interval',
|
883
|
+
'random_minutes_interval',
|
884
|
+
'start_day',
|
885
|
+
'start_hour',
|
886
|
+
'start_minute',
|
887
|
+
'start_month',
|
888
|
+
'start_year',
|
889
|
+
'trigger_type',
|
890
|
+
'type'
|
891
|
+
]
|
892
|
+
|
893
|
+
ValidTypeKeys = [
|
894
|
+
'days_interval',
|
895
|
+
'weeks_interval',
|
896
|
+
'days_of_week',
|
897
|
+
'months',
|
898
|
+
'days',
|
899
|
+
'weeks'
|
900
|
+
]
|
901
|
+
|
902
|
+
# Private method that validates keys, and converts all keys to lowercase
|
903
|
+
# strings.
|
904
|
+
#
|
905
|
+
def transform_and_validate(hash)
|
906
|
+
new_hash = {}
|
907
|
+
|
908
|
+
hash.each{ |key, value|
|
909
|
+
key = key.to_s.downcase
|
910
|
+
if key == 'type'
|
911
|
+
new_type_hash = {}
|
912
|
+
raise ArgumentError unless value.is_a?(Hash)
|
913
|
+
value.each{ |subkey, subvalue|
|
914
|
+
subkey = subkey.to_s.downcase
|
915
|
+
if ValidTypeKeys.include?(subkey)
|
916
|
+
new_type_hash[subkey] = subvalue
|
917
|
+
else
|
918
|
+
raise ArgumentError, _("Invalid type key '%{key}'") % { key: subkey }
|
919
|
+
end
|
920
|
+
}
|
921
|
+
new_hash[key] = new_type_hash
|
922
|
+
else
|
923
|
+
if ValidTriggerKeys.include?(key)
|
924
|
+
new_hash[key] = value
|
925
|
+
else
|
926
|
+
raise ArgumentError, _("Invalid key '%{key}'") % { key: key }
|
927
|
+
end
|
928
|
+
end
|
929
|
+
}
|
930
|
+
|
931
|
+
new_hash
|
932
|
+
end
|
933
|
+
|
934
|
+
def reset_current_task
|
935
|
+
# Ensure that COM reference is decremented properly
|
936
|
+
@pITask.Release if @pITask && ! @pITask.null?
|
937
|
+
@pITask = nil
|
938
|
+
@account_information_set = false
|
939
|
+
end
|
940
|
+
|
941
|
+
def populate_trigger(task_trigger, trigger)
|
942
|
+
raise TypeError unless task_trigger.is_a?(COM::TaskTrigger)
|
943
|
+
trigger = transform_and_validate(trigger)
|
944
|
+
|
945
|
+
FFI::MemoryPointer.new(COM::TASK_TRIGGER.size) do |trigger_ptr|
|
946
|
+
FFI::MemoryPointer.new(COM::TRIGGER_TYPE_UNION.size) do |trigger_type_union_ptr|
|
947
|
+
trigger_type_union = COM::TRIGGER_TYPE_UNION.new(trigger_type_union_ptr)
|
948
|
+
|
949
|
+
tmp = trigger['type'].is_a?(Hash) ? trigger['type'] : nil
|
950
|
+
case trigger['trigger_type']
|
951
|
+
when :TASK_TIME_TRIGGER_DAILY
|
952
|
+
if tmp && tmp['days_interval']
|
953
|
+
trigger_type_union[:Daily][:DaysInterval] = tmp['days_interval']
|
954
|
+
end
|
955
|
+
when :TASK_TIME_TRIGGER_WEEKLY
|
956
|
+
if tmp && tmp['weeks_interval'] && tmp['days_of_week']
|
957
|
+
trigger_type_union[:Weekly][:WeeksInterval] = tmp['weeks_interval']
|
958
|
+
trigger_type_union[:Weekly][:rgfDaysOfTheWeek] = tmp['days_of_week']
|
959
|
+
end
|
960
|
+
when :TASK_TIME_TRIGGER_MONTHLYDATE
|
961
|
+
if tmp && tmp['months'] && tmp['days']
|
962
|
+
trigger_type_union[:MonthlyDate][:rgfDays] = tmp['days']
|
963
|
+
trigger_type_union[:MonthlyDate][:rgfMonths] = tmp['months']
|
964
|
+
end
|
965
|
+
when :TASK_TIME_TRIGGER_MONTHLYDOW
|
966
|
+
if tmp && tmp['weeks'] && tmp['days_of_week'] && tmp['months']
|
967
|
+
trigger_type_union[:MonthlyDOW][:wWhichWeek] = tmp['weeks']
|
968
|
+
trigger_type_union[:MonthlyDOW][:rgfDaysOfTheWeek] = tmp['days_of_week']
|
969
|
+
trigger_type_union[:MonthlyDOW][:rgfMonths] = tmp['months']
|
970
|
+
end
|
971
|
+
when :TASK_TIME_TRIGGER_ONCE
|
972
|
+
# Do nothing. The Type member of the TASK_TRIGGER struct is ignored.
|
973
|
+
else
|
974
|
+
raise Error.new(_("Unknown trigger type %{type}") % { type: trigger['trigger_type'] })
|
975
|
+
end
|
976
|
+
|
977
|
+
trigger_struct = COM::TASK_TRIGGER.new(trigger_ptr)
|
978
|
+
trigger_struct[:cbTriggerSize] = COM::TASK_TRIGGER.size
|
979
|
+
now = Time.now
|
980
|
+
trigger_struct[:wBeginYear] = trigger['start_year'] || now.year
|
981
|
+
trigger_struct[:wBeginMonth] = trigger['start_month'] || now.month
|
982
|
+
trigger_struct[:wBeginDay] = trigger['start_day'] || now.day
|
983
|
+
trigger_struct[:wEndYear] = trigger['end_year'] || 0
|
984
|
+
trigger_struct[:wEndMonth] = trigger['end_month'] || 0
|
985
|
+
trigger_struct[:wEndDay] = trigger['end_day'] || 0
|
986
|
+
trigger_struct[:wStartHour] = trigger['start_hour'] || 0
|
987
|
+
trigger_struct[:wStartMinute] = trigger['start_minute'] || 0
|
988
|
+
trigger_struct[:MinutesDuration] = trigger['minutes_duration'] || 0
|
989
|
+
trigger_struct[:MinutesInterval] = trigger['minutes_interval'] || 0
|
990
|
+
trigger_struct[:rgFlags] = trigger['flags'] || 0
|
991
|
+
trigger_struct[:TriggerType] = trigger['trigger_type'] || :TASK_TIME_TRIGGER_ONCE
|
992
|
+
trigger_struct[:Type] = trigger_type_union
|
993
|
+
trigger_struct[:wRandomMinutesInterval] = trigger['random_minutes_interval'] || 0
|
994
|
+
|
995
|
+
task_trigger.SetTrigger(trigger_struct)
|
996
|
+
end
|
997
|
+
end
|
998
|
+
end
|
999
|
+
|
1000
|
+
def populate_hash_from_trigger(task_trigger)
|
1001
|
+
raise TypeError unless task_trigger.is_a?(COM::TASK_TRIGGER)
|
1002
|
+
|
1003
|
+
trigger = {
|
1004
|
+
'start_year' => task_trigger[:wBeginYear],
|
1005
|
+
'start_month' => task_trigger[:wBeginMonth],
|
1006
|
+
'start_day' => task_trigger[:wBeginDay],
|
1007
|
+
'end_year' => task_trigger[:wEndYear],
|
1008
|
+
'end_month' => task_trigger[:wEndMonth],
|
1009
|
+
'end_day' => task_trigger[:wEndDay],
|
1010
|
+
'start_hour' => task_trigger[:wStartHour],
|
1011
|
+
'start_minute' => task_trigger[:wStartMinute],
|
1012
|
+
'minutes_duration' => task_trigger[:MinutesDuration],
|
1013
|
+
'minutes_interval' => task_trigger[:MinutesInterval],
|
1014
|
+
'flags' => task_trigger[:rgFlags],
|
1015
|
+
'trigger_type' => task_trigger[:TriggerType],
|
1016
|
+
'random_minutes_interval' => task_trigger[:wRandomMinutesInterval]
|
1017
|
+
}
|
1018
|
+
|
1019
|
+
case task_trigger[:TriggerType]
|
1020
|
+
when :TASK_TIME_TRIGGER_DAILY
|
1021
|
+
trigger['type'] = { 'days_interval' => task_trigger[:Type][:Daily][:DaysInterval] }
|
1022
|
+
when :TASK_TIME_TRIGGER_WEEKLY
|
1023
|
+
trigger['type'] = {
|
1024
|
+
'weeks_interval' => task_trigger[:Type][:Weekly][:WeeksInterval],
|
1025
|
+
'days_of_week' => task_trigger[:Type][:Weekly][:rgfDaysOfTheWeek]
|
1026
|
+
}
|
1027
|
+
when :TASK_TIME_TRIGGER_MONTHLYDATE
|
1028
|
+
trigger['type'] = {
|
1029
|
+
'days' => task_trigger[:Type][:MonthlyDate][:rgfDays],
|
1030
|
+
'months' => task_trigger[:Type][:MonthlyDate][:rgfMonths]
|
1031
|
+
}
|
1032
|
+
when :TASK_TIME_TRIGGER_MONTHLYDOW
|
1033
|
+
trigger['type'] = {
|
1034
|
+
'weeks' => task_trigger[:Type][:MonthlyDOW][:wWhichWeek],
|
1035
|
+
'days_of_week' => task_trigger[:Type][:MonthlyDOW][:rgfDaysOfTheWeek],
|
1036
|
+
'months' => task_trigger[:Type][:MonthlyDOW][:rgfMonths]
|
1037
|
+
}
|
1038
|
+
when :TASK_TIME_TRIGGER_ONCE
|
1039
|
+
trigger['type'] = { 'once' => nil }
|
1040
|
+
else
|
1041
|
+
raise Error.new(_("Unknown trigger type %{type}") % { type: task_trigger[:TriggerType] })
|
1042
|
+
end
|
1043
|
+
|
1044
|
+
trigger
|
1045
|
+
end
|
1046
|
+
|
1047
|
+
module COM
|
1048
|
+
extend FFI::Library
|
1049
|
+
|
1050
|
+
com = Puppet::Util::Windows::COM
|
1051
|
+
|
1052
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381811(v=vs.85).aspx
|
1053
|
+
ITaskScheduler = com::Interface[com::IUnknown,
|
1054
|
+
FFI::WIN32::GUID['148BD527-A2AB-11CE-B11F-00AA00530503'],
|
1055
|
+
|
1056
|
+
SetTargetComputer: [[:lpcwstr], :hresult],
|
1057
|
+
# LPWSTR *
|
1058
|
+
GetTargetComputer: [[:pointer], :hresult],
|
1059
|
+
# IEnumWorkItems **
|
1060
|
+
Enum: [[:pointer], :hresult],
|
1061
|
+
# LPCWSTR, REFIID, IUnknown **
|
1062
|
+
Activate: [[:lpcwstr, :pointer, :pointer], :hresult],
|
1063
|
+
Delete: [[:lpcwstr], :hresult],
|
1064
|
+
# LPCWSTR, REFCLSID, REFIID, IUnknown **
|
1065
|
+
NewWorkItem: [[:lpcwstr, :pointer, :pointer, :pointer], :hresult],
|
1066
|
+
# LPCWSTR, IScheduledWorkItem *
|
1067
|
+
AddWorkItem: [[:lpcwstr, :pointer], :hresult],
|
1068
|
+
# LPCWSTR, REFIID
|
1069
|
+
IsOfType: [[:lpcwstr, :pointer], :hresult]
|
1070
|
+
]
|
1071
|
+
|
1072
|
+
TaskScheduler = com::Factory[ITaskScheduler,
|
1073
|
+
FFI::WIN32::GUID['148BD52A-A2AB-11CE-B11F-00AA00530503']]
|
1074
|
+
|
1075
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa380706(v=vs.85).aspx
|
1076
|
+
IEnumWorkItems = com::Interface[com::IUnknown,
|
1077
|
+
FFI::WIN32::GUID['148BD528-A2AB-11CE-B11F-00AA00530503'],
|
1078
|
+
|
1079
|
+
# ULONG, LPWSTR **, ULONG *
|
1080
|
+
Next: [[:win32_ulong, :pointer, :pointer], :hresult],
|
1081
|
+
Skip: [[:win32_ulong], :hresult],
|
1082
|
+
Reset: [[], :hresult],
|
1083
|
+
# IEnumWorkItems ** ppEnumWorkItems
|
1084
|
+
Clone: [[:pointer], :hresult]
|
1085
|
+
]
|
1086
|
+
|
1087
|
+
EnumWorkItems = com::Instance[IEnumWorkItems]
|
1088
|
+
|
1089
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381216(v=vs.85).aspx
|
1090
|
+
IScheduledWorkItem = com::Interface[com::IUnknown,
|
1091
|
+
FFI::WIN32::GUID['a6b952f0-a4b1-11d0-997d-00aa006887ec'],
|
1092
|
+
|
1093
|
+
# WORD *, ITaskTrigger **
|
1094
|
+
CreateTrigger: [[:pointer, :pointer], :hresult],
|
1095
|
+
DeleteTrigger: [[:word], :hresult],
|
1096
|
+
# WORD *
|
1097
|
+
GetTriggerCount: [[:pointer], :hresult],
|
1098
|
+
# WORD, ITaskTrigger **
|
1099
|
+
GetTrigger: [[:word, :pointer], :hresult],
|
1100
|
+
# WORD, LPWSTR *
|
1101
|
+
GetTriggerString: [[:word, :pointer], :hresult],
|
1102
|
+
# LPSYSTEMTIME, LPSYSTEMTIME, WORD *, LPSYSTEMTIME *
|
1103
|
+
GetRunTimes: [[:pointer, :pointer, :pointer, :pointer], :hresult],
|
1104
|
+
# SYSTEMTIME *
|
1105
|
+
GetNextRunTime: [[:pointer], :hresult],
|
1106
|
+
SetIdleWait: [[:word, :word], :hresult],
|
1107
|
+
# WORD *, WORD *
|
1108
|
+
GetIdleWait: [[:pointer, :pointer], :hresult],
|
1109
|
+
Run: [[], :hresult],
|
1110
|
+
Terminate: [[], :hresult],
|
1111
|
+
EditWorkItem: [[:hwnd, :dword], :hresult],
|
1112
|
+
# SYSTEMTIME *
|
1113
|
+
GetMostRecentRunTime: [[:pointer], :hresult],
|
1114
|
+
# HRESULT *
|
1115
|
+
GetStatus: [[:pointer], :hresult],
|
1116
|
+
GetExitCode: [[:pdword], :hresult],
|
1117
|
+
SetComment: [[:lpcwstr], :hresult],
|
1118
|
+
# LPWSTR *
|
1119
|
+
GetComment: [[:pointer], :hresult],
|
1120
|
+
SetCreator: [[:lpcwstr], :hresult],
|
1121
|
+
# LPWSTR *
|
1122
|
+
GetCreator: [[:pointer], :hresult],
|
1123
|
+
# WORD, BYTE[]
|
1124
|
+
SetWorkItemData: [[:word, :buffer_in], :hresult],
|
1125
|
+
# WORD *, BYTE **
|
1126
|
+
GetWorkItemData: [[:pointer, :pointer], :hresult],
|
1127
|
+
SetErrorRetryCount: [[:word], :hresult],
|
1128
|
+
# WORD *
|
1129
|
+
GetErrorRetryCount: [[:pointer], :hresult],
|
1130
|
+
SetErrorRetryInterval: [[:word], :hresult],
|
1131
|
+
# WORD *
|
1132
|
+
GetErrorRetryInterval: [[:pointer], :hresult],
|
1133
|
+
SetFlags: [[:dword], :hresult],
|
1134
|
+
# WORD *
|
1135
|
+
GetFlags: [[:pointer], :hresult],
|
1136
|
+
SetAccountInformation: [[:lpcwstr, :lpcwstr], :hresult],
|
1137
|
+
# LPWSTR *
|
1138
|
+
GetAccountInformation: [[:pointer], :hresult]
|
1139
|
+
]
|
1140
|
+
|
1141
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381311(v=vs.85).aspx
|
1142
|
+
ITask = com::Interface[IScheduledWorkItem,
|
1143
|
+
FFI::WIN32::GUID['148BD524-A2AB-11CE-B11F-00AA00530503'],
|
1144
|
+
|
1145
|
+
SetApplicationName: [[:lpcwstr], :hresult],
|
1146
|
+
# LPWSTR *
|
1147
|
+
GetApplicationName: [[:pointer], :hresult],
|
1148
|
+
SetParameters: [[:lpcwstr], :hresult],
|
1149
|
+
# LPWSTR *
|
1150
|
+
GetParameters: [[:pointer], :hresult],
|
1151
|
+
SetWorkingDirectory: [[:lpcwstr], :hresult],
|
1152
|
+
# LPWSTR *
|
1153
|
+
GetWorkingDirectory: [[:pointer], :hresult],
|
1154
|
+
SetPriority: [[:dword], :hresult],
|
1155
|
+
# DWORD *
|
1156
|
+
GetPriority: [[:pointer], :hresult],
|
1157
|
+
SetTaskFlags: [[:dword], :hresult],
|
1158
|
+
# DWORD *
|
1159
|
+
GetTaskFlags: [[:pointer], :hresult],
|
1160
|
+
SetMaxRunTime: [[:dword], :hresult],
|
1161
|
+
# DWORD *
|
1162
|
+
GetMaxRunTime: [[:pointer], :hresult]
|
1163
|
+
]
|
1164
|
+
|
1165
|
+
Task = com::Instance[ITask]
|
1166
|
+
|
1167
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms688695(v=vs.85).aspx
|
1168
|
+
IPersist = com::Interface[com::IUnknown,
|
1169
|
+
FFI::WIN32::GUID['0000010c-0000-0000-c000-000000000046'],
|
1170
|
+
# CLSID *
|
1171
|
+
GetClassID: [[:pointer], :hresult]
|
1172
|
+
]
|
1173
|
+
|
1174
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms687223(v=vs.85).aspx
|
1175
|
+
IPersistFile = com::Interface[IPersist,
|
1176
|
+
FFI::WIN32::GUID['0000010b-0000-0000-C000-000000000046'],
|
1177
|
+
|
1178
|
+
IsDirty: [[], :hresult],
|
1179
|
+
Load: [[:lpcolestr, :dword], :hresult],
|
1180
|
+
Save: [[:lpcolestr, :win32_bool], :hresult],
|
1181
|
+
SaveCompleted: [[:lpcolestr], :hresult],
|
1182
|
+
# LPOLESTR *
|
1183
|
+
GetCurFile: [[:pointer], :hresult]
|
1184
|
+
]
|
1185
|
+
|
1186
|
+
PersistFile = com::Instance[IPersistFile]
|
1187
|
+
|
1188
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381864(v=vs.85).aspx
|
1189
|
+
ITaskTrigger = com::Interface[com::IUnknown,
|
1190
|
+
FFI::WIN32::GUID['148BD52B-A2AB-11CE-B11F-00AA00530503'],
|
1191
|
+
|
1192
|
+
SetTrigger: [[:pointer], :hresult],
|
1193
|
+
GetTrigger: [[:pointer], :hresult],
|
1194
|
+
GetTriggerString: [[:pointer], :hresult]
|
1195
|
+
]
|
1196
|
+
|
1197
|
+
TaskTrigger = com::Instance[ITaskTrigger]
|
1198
|
+
|
1199
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa383620(v=vs.85).aspx
|
1200
|
+
# The TASK_TRIGGER_TYPE field of the TASK_TRIGGER structure determines
|
1201
|
+
# which member of the TRIGGER_TYPE_UNION field to use.
|
1202
|
+
TASK_TRIGGER_TYPE = enum(
|
1203
|
+
:TASK_TIME_TRIGGER_ONCE, 0, # Ignore the Type field
|
1204
|
+
:TASK_TIME_TRIGGER_DAILY, 1,
|
1205
|
+
:TASK_TIME_TRIGGER_WEEKLY, 2,
|
1206
|
+
:TASK_TIME_TRIGGER_MONTHLYDATE, 3,
|
1207
|
+
:TASK_TIME_TRIGGER_MONTHLYDOW, 4,
|
1208
|
+
:TASK_EVENT_TRIGGER_ON_IDLE, 5, # Ignore the Type field
|
1209
|
+
:TASK_EVENT_TRIGGER_AT_SYSTEMSTART, 6, # Ignore the Type field
|
1210
|
+
:TASK_EVENT_TRIGGER_AT_LOGON, 7 # Ignore the Type field
|
1211
|
+
)
|
1212
|
+
|
1213
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa446857(v=vs.85).aspx
|
1214
|
+
class DAILY < FFI::Struct
|
1215
|
+
layout :DaysInterval, :word
|
1216
|
+
end
|
1217
|
+
|
1218
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa384014(v=vs.85).aspx
|
1219
|
+
class WEEKLY < FFI::Struct
|
1220
|
+
layout :WeeksInterval, :word,
|
1221
|
+
:rgfDaysOfTheWeek, :word
|
1222
|
+
end
|
1223
|
+
|
1224
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381918(v=vs.85).aspx
|
1225
|
+
class MONTHLYDATE < FFI::Struct
|
1226
|
+
layout :rgfDays, :dword,
|
1227
|
+
:rgfMonths, :word
|
1228
|
+
end
|
1229
|
+
|
1230
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381918(v=vs.85).aspx
|
1231
|
+
class MONTHLYDOW < FFI::Struct
|
1232
|
+
layout :wWhichWeek, :word,
|
1233
|
+
:rgfDaysOfTheWeek, :word,
|
1234
|
+
:rgfMonths, :word
|
1235
|
+
end
|
1236
|
+
|
1237
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa384002(v=vs.85).aspx
|
1238
|
+
class TRIGGER_TYPE_UNION < FFI::Union
|
1239
|
+
layout :Daily, DAILY,
|
1240
|
+
:Weekly, WEEKLY,
|
1241
|
+
:MonthlyDate, MONTHLYDATE,
|
1242
|
+
:MonthlyDOW, MONTHLYDOW
|
1243
|
+
end
|
1244
|
+
|
1245
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa383618(v=vs.85).aspx
|
1246
|
+
class TASK_TRIGGER < FFI::Struct
|
1247
|
+
layout :cbTriggerSize, :word, # Structure size.
|
1248
|
+
:Reserved1, :word, # Reserved. Must be zero.
|
1249
|
+
:wBeginYear, :word, # Trigger beginning date year.
|
1250
|
+
:wBeginMonth, :word, # Trigger beginning date month.
|
1251
|
+
:wBeginDay, :word, # Trigger beginning date day.
|
1252
|
+
:wEndYear, :word, # Optional trigger ending date year.
|
1253
|
+
:wEndMonth, :word, # Optional trigger ending date month.
|
1254
|
+
:wEndDay, :word, # Optional trigger ending date day.
|
1255
|
+
:wStartHour, :word, # Run bracket start time hour.
|
1256
|
+
:wStartMinute, :word, # Run bracket start time minute.
|
1257
|
+
:MinutesDuration, :dword, # Duration of run bracket.
|
1258
|
+
:MinutesInterval, :dword, # Run bracket repetition interval.
|
1259
|
+
:rgFlags, :dword, # Trigger flags.
|
1260
|
+
:TriggerType, TASK_TRIGGER_TYPE, # Trigger type.
|
1261
|
+
:Type, TRIGGER_TYPE_UNION, # Trigger data.
|
1262
|
+
:Reserved2, :word, # Reserved. Must be zero.
|
1263
|
+
:wRandomMinutesInterval, :word # Maximum number of random minutes after start time
|
1264
|
+
end
|
1265
|
+
end
|
1266
|
+
end
|
1267
|
+
end
|