puppet 4.2.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CONTRIBUTING.md +1 -1
- data/Gemfile +5 -7
- data/README.md +1 -1
- data/Rakefile +20 -0
- data/ext/debian/puppet.init +0 -1
- data/ext/debian/puppet.logrotate +14 -5
- data/ext/osx/puppet.plist +2 -4
- data/ext/project_data.yaml +1 -1
- data/ext/redhat/client.init +65 -12
- data/ext/redhat/logrotate +15 -3
- data/ext/redhat/puppet.spec.erb +5 -1
- data/ext/redhat/server.init +1 -1
- data/ext/solaris/smf/puppet +44 -0
- data/ext/solaris/smf/puppet.xml +44 -0
- data/ext/suse/client.init +27 -27
- data/ext/suse/server.init +2 -2
- data/ext/systemd/puppet.service +1 -0
- data/install.rb +21 -39
- data/lib/hiera/puppet_function.rb +5 -5
- data/lib/puppet/agent/locker.rb +11 -2
- data/lib/puppet/agent.rb +4 -4
- data/lib/puppet/application/agent.rb +28 -14
- data/lib/puppet/application/apply.rb +17 -4
- data/lib/puppet/application/cert.rb +16 -0
- data/lib/puppet/application/filebucket.rb +78 -4
- data/lib/puppet/application/lookup.rb +356 -0
- data/lib/puppet/application/master.rb +5 -1
- data/lib/puppet/configurer.rb +9 -5
- data/lib/puppet/context/trusted_information.rb +21 -1
- data/lib/puppet/context.rb +16 -1
- data/lib/puppet/daemon.rb +17 -13
- data/lib/puppet/data_binding.rb +4 -2
- data/lib/puppet/data_providers/data_adapter.rb +7 -68
- data/lib/puppet/data_providers/data_function_support.rb +5 -26
- data/lib/puppet/data_providers/function_env_data_provider.rb +0 -10
- data/lib/puppet/data_providers/function_module_data_provider.rb +0 -22
- data/lib/puppet/data_providers/hiera_config.rb +106 -0
- data/lib/puppet/data_providers/hiera_env_data_provider.rb +18 -0
- data/lib/puppet/data_providers/hiera_interpolate.rb +97 -0
- data/lib/puppet/data_providers/hiera_module_data_provider.rb +23 -0
- data/lib/puppet/data_providers/hiera_support.rb +37 -0
- data/lib/puppet/data_providers/json_data_provider_factory.rb +31 -0
- data/lib/puppet/data_providers/lookup_adapter.rb +200 -0
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +32 -0
- data/lib/puppet/data_providers.rb +12 -13
- data/lib/puppet/defaults.rb +14 -3
- data/lib/puppet/environments.rb +94 -6
- data/lib/puppet/error.rb +4 -0
- data/lib/puppet/face/module/changes.rb +2 -1
- data/lib/puppet/feature/cfacter.rb +1 -0
- data/lib/puppet/file_bucket/dipper.rb +58 -2
- data/lib/puppet/file_system/windows.rb +3 -1
- data/lib/puppet/functions/assert_type.rb +48 -12
- data/lib/puppet/functions/defined.rb +79 -48
- data/lib/puppet/functions/each.rb +85 -27
- data/lib/puppet/functions/epp.rb +29 -37
- data/lib/puppet/functions/filter.rb +60 -25
- data/lib/puppet/functions/hiera.rb +76 -3
- data/lib/puppet/functions/hiera_array.rb +65 -3
- data/lib/puppet/functions/hiera_hash.rb +74 -2
- data/lib/puppet/functions/hiera_include.rb +77 -4
- data/lib/puppet/functions/inline_epp.rb +44 -71
- data/lib/puppet/functions/lookup.rb +19 -17
- data/lib/puppet/functions/map.rb +56 -21
- data/lib/puppet/functions/match.rb +29 -12
- data/lib/puppet/functions/reduce.rb +95 -58
- data/lib/puppet/functions/versioncmp.rb +36 -0
- data/lib/puppet/functions/with.rb +15 -7
- data/lib/puppet/functions.rb +2 -4
- data/lib/puppet/indirector/catalog/compiler.rb +3 -3
- data/lib/puppet/indirector/catalog/static_compiler.rb +46 -30
- data/lib/puppet/indirector/data_binding/none.rb +4 -1
- data/lib/puppet/indirector/file_bucket_file/file.rb +58 -1
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +6 -1
- data/lib/puppet/indirector/json.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/request.rb +7 -8
- data/lib/puppet/indirector/resource_type/parser.rb +5 -3
- data/lib/puppet/info_service/class_information_service.rb +111 -0
- data/lib/puppet/info_service.rb +7 -0
- data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
- data/lib/puppet/module_tool/metadata.rb +32 -9
- data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +42 -38
- data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +25 -18
- data/lib/puppet/network/authconfig.rb +21 -1
- data/lib/puppet/network/authorization.rb +8 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +59 -0
- data/lib/puppet/network/http/api/master/v3.rb +7 -1
- data/lib/puppet/node/environment.rb +9 -2
- data/lib/puppet/node.rb +11 -5
- data/lib/puppet/parser/ast/pops_bridge.rb +39 -1
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +64 -0
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +38 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +20 -0
- data/lib/puppet/parser/compiler/catalog_validator.rb +33 -0
- data/lib/puppet/parser/compiler.rb +300 -12
- data/lib/puppet/parser/environment_compiler.rb +165 -0
- data/lib/puppet/parser/functions/assert_type.rb +46 -16
- data/lib/puppet/parser/functions/defined.rb +105 -68
- data/lib/puppet/parser/functions/each.rb +85 -27
- data/lib/puppet/parser/functions/epp.rb +29 -37
- data/lib/puppet/parser/functions/filter.rb +59 -23
- data/lib/puppet/parser/functions/hiera.rb +83 -27
- data/lib/puppet/parser/functions/hiera_array.rb +71 -28
- data/lib/puppet/parser/functions/hiera_hash.rb +81 -30
- data/lib/puppet/parser/functions/hiera_include.rb +81 -40
- data/lib/puppet/parser/functions/inline_epp.rb +35 -60
- data/lib/puppet/parser/functions/inline_template.rb +2 -2
- data/lib/puppet/parser/functions/map.rb +55 -20
- data/lib/puppet/parser/functions/match.rb +27 -12
- data/lib/puppet/parser/functions/reduce.rb +97 -60
- data/lib/puppet/parser/functions/with.rb +16 -8
- data/lib/puppet/parser/resource.rb +103 -21
- data/lib/puppet/parser.rb +3 -0
- data/lib/puppet/plugins/configuration.rb +3 -2
- data/lib/puppet/plugins/data_providers/data_provider.rb +283 -0
- data/lib/puppet/plugins/data_providers/registry.rb +84 -0
- data/lib/puppet/plugins/data_providers.rb +12 -60
- data/lib/puppet/pops/adapters.rb +12 -0
- data/lib/puppet/pops/binder/binder.rb +2 -2
- data/lib/puppet/pops/binder/bindings_checker.rb +1 -1
- data/lib/puppet/pops/binder/bindings_label_provider.rb +3 -1
- data/lib/puppet/pops/binder/bindings_loader.rb +6 -2
- data/lib/puppet/pops/binder/bindings_model_meta.rb +2 -2
- data/lib/puppet/pops/binder/config/binder_config.rb +1 -1
- data/lib/puppet/pops/binder/injector.rb +4 -4
- data/lib/puppet/pops/binder/key_factory.rb +3 -9
- data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +68 -9
- data/lib/puppet/pops/evaluator/access_operator.rb +27 -60
- data/lib/puppet/pops/evaluator/closure.rb +8 -8
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +10 -6
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +87 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +7 -1
- data/lib/puppet/pops/functions/dispatcher.rb +3 -3
- data/lib/puppet/pops/issues.rb +11 -3
- data/lib/puppet/pops/label_provider.rb +1 -1
- data/lib/puppet/pops/lookup/explainer.rb +402 -0
- data/lib/puppet/pops/lookup/invocation.rb +117 -0
- data/lib/puppet/pops/lookup.rb +25 -47
- data/lib/puppet/pops/merge_strategy.rb +73 -5
- data/lib/puppet/pops/model/factory.rb +38 -3
- data/lib/puppet/pops/model/model_label_provider.rb +10 -1
- data/lib/puppet/pops/model/model_meta.rb +19 -1
- data/lib/puppet/pops/model/model_tree_dumper.rb +18 -0
- data/lib/puppet/pops/parser/code_merger.rb +13 -1
- data/lib/puppet/pops/parser/egrammar.ra +65 -2
- data/lib/puppet/pops/parser/eparser.rb +1569 -1241
- data/lib/puppet/pops/parser/lexer2.rb +32 -1
- data/lib/puppet/pops/parser/locator.rb +1 -1
- data/lib/puppet/pops/parser/parser_support.rb +25 -13
- data/lib/puppet/pops/patterns.rb +3 -0
- data/lib/puppet/pops/types/enumeration.rb +1 -2
- data/lib/puppet/pops/types/type_asserter.rb +16 -15
- data/lib/puppet/pops/types/type_assertion_error.rb +1 -0
- data/lib/puppet/pops/types/type_calculator.rb +171 -1020
- data/lib/puppet/pops/types/type_factory.rb +87 -148
- data/lib/puppet/pops/types/type_mismatch_describer.rb +743 -0
- data/lib/puppet/pops/types/type_parser.rb +118 -129
- data/lib/puppet/pops/types/types.rb +1394 -255
- data/lib/puppet/pops/types/types_meta.rb +0 -234
- data/lib/puppet/pops/validation/checker4_0.rb +49 -1
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +3 -1
- data/lib/puppet/pops/validation.rb +7 -2
- data/lib/puppet/pops.rb +19 -17
- data/lib/puppet/provider/augeas/augeas.rb +50 -0
- data/lib/puppet/provider/exec.rb +6 -1
- data/lib/puppet/provider/group/directoryservice.rb +10 -0
- data/lib/puppet/provider/package/dnf.rb +41 -0
- data/lib/puppet/provider/package/gem.rb +7 -2
- data/lib/puppet/provider/package/nim.rb +1 -1
- data/lib/puppet/provider/package/rpm.rb +1 -0
- data/lib/puppet/provider/package/windows/exe_package.rb +10 -8
- data/lib/puppet/provider/package/windows/msi_package.rb +4 -3
- data/lib/puppet/provider/package/windows/package.rb +9 -1
- data/lib/puppet/provider/package/yum.rb +20 -9
- data/lib/puppet/provider/service/bsd.rb +1 -1
- data/lib/puppet/provider/service/debian.rb +21 -0
- data/lib/puppet/provider/service/init.rb +6 -0
- data/lib/puppet/provider/service/launchd.rb +36 -7
- data/lib/puppet/provider/service/rcng.rb +51 -0
- data/lib/puppet/provider/service/redhat.rb +2 -1
- data/lib/puppet/provider/service/smf.rb +43 -2
- data/lib/puppet/provider/service/src.rb +27 -0
- data/lib/puppet/provider/service/systemd.rb +25 -5
- data/lib/puppet/provider/sshkey/parsed.rb +19 -9
- data/lib/puppet/provider/zone/solaris.rb +2 -2
- data/lib/puppet/reference/configuration.rb +10 -4
- data/lib/puppet/reference/report.rb +9 -12
- data/lib/puppet/reports.rb +5 -1
- data/lib/puppet/resource/capability_finder.rb +95 -0
- data/lib/puppet/resource/catalog.rb +47 -7
- data/lib/puppet/resource/status.rb +0 -2
- data/lib/puppet/resource/type.rb +238 -44
- data/lib/puppet/resource/type_collection.rb +60 -2
- data/lib/puppet/resource.rb +50 -73
- data/lib/puppet/settings/file_setting.rb +10 -9
- data/lib/puppet/settings.rb +2 -2
- data/lib/puppet/ssl/certificate_authority/interface.rb +2 -2
- data/lib/puppet/ssl/oids.rb +9 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +71 -8
- data/lib/puppet/transaction/resource_harness.rb +9 -4
- data/lib/puppet/transaction.rb +8 -1
- data/lib/puppet/type/augeas.rb +8 -0
- data/lib/puppet/type/file/source.rb +14 -12
- data/lib/puppet/type/package.rb +9 -6
- data/lib/puppet/type/user.rb +4 -2
- data/lib/puppet/type.rb +78 -7
- data/lib/puppet/util/command_line.rb +4 -0
- data/lib/puppet/util/execution.rb +18 -2
- data/lib/puppet/util/tagging.rb +7 -1
- data/lib/puppet/util/windows/adsi.rb +5 -2
- data/lib/puppet/util/windows/security.rb +4 -1
- data/lib/puppet/util/windows/taskscheduler.rb +1 -1
- data/lib/puppet/util.rb +9 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +12 -0
- data/spec/fixtures/unit/application/environments/production/data/common.yaml +3 -0
- data/spec/fixtures/unit/application/environments/production/environment.conf +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/data/bad.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/manifests/site.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/manifests/site.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/data/common.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/data/common.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/manifests/init.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/first.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/name.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/second.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/single.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data2/single.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +18 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +46 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/data/common.yaml +30 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/manifests/init.pp +13 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/first.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/name.yaml +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/second.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/single.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data2/single.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/hiera.yaml +18 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/manifests/init.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +1 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_module_data.rb +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +3 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/hiera.yaml +8 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/manifests/init.pp +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/manifests/init.pp +3 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +10 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +23 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/manifests/init.pp +3 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/metadata.json +9 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-security.txt +184 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_get/should_yield_to_the_block.yml +24 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_head/should_yield_to_the_block.yml +24 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_post/should_yield_to_the_block.yml +24 -0
- data/spec/integration/data_binding_spec.rb +229 -0
- data/spec/integration/file_bucket/file_spec.rb +2 -2
- data/spec/integration/parser/compiler_spec.rb +30 -24
- data/spec/integration/parser/resource_expressions_spec.rb +4 -4
- data/spec/integration/parser/undef_param_spec.rb +1 -1
- data/spec/integration/provider/package_spec.rb +3 -1
- data/spec/integration/resource/catalog_spec.rb +1 -1
- data/spec/integration/ssl/certificate_authority_spec.rb +0 -1
- data/spec/integration/ssl/certificate_request_spec.rb +0 -1
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -1
- data/spec/integration/ssl/host_spec.rb +0 -1
- data/spec/integration/type/package_spec.rb +2 -0
- data/spec/integration/util/rdoc/parser_spec.rb +1 -1
- data/spec/integration/util/windows/security_spec.rb +18 -0
- data/spec/lib/matchers/include_in_order.rb +2 -2
- data/spec/shared_behaviours/iterative_functions.rb +8 -8
- data/spec/spec_helper.rb +7 -0
- data/spec/unit/agent/locker_spec.rb +4 -4
- data/spec/unit/agent_spec.rb +0 -8
- data/spec/unit/application/agent_spec.rb +5 -0
- data/spec/unit/application/apply_spec.rb +9 -1
- data/spec/unit/application/filebucket_spec.rb +88 -2
- data/spec/unit/application/lookup_spec.rb +195 -0
- data/spec/unit/application/master_spec.rb +2 -2
- data/spec/unit/application_spec.rb +3 -3
- data/spec/unit/appmgmt_spec.rb +657 -0
- data/spec/unit/capability_spec.rb +414 -0
- data/spec/unit/configurer_spec.rb +7 -1
- data/spec/unit/context/trusted_information_spec.rb +24 -1
- data/spec/unit/daemon_spec.rb +18 -8
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +201 -0
- data/spec/unit/environments_spec.rb +2 -0
- data/spec/unit/face/node_spec.rb +1 -1
- data/spec/unit/file_bucket/dipper_spec.rb +210 -1
- data/spec/unit/file_serving/configuration_spec.rb +1 -1
- data/spec/unit/file_system_spec.rb +20 -0
- data/spec/unit/functions/assert_type_spec.rb +5 -7
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +2 -2
- data/spec/unit/functions/filter_spec.rb +18 -0
- data/spec/unit/functions/hiera_spec.rb +2 -2
- data/spec/unit/functions/lookup_spec.rb +200 -9
- data/spec/unit/functions/regsubst_spec.rb +17 -8
- data/spec/unit/functions/scanf_spec.rb +1 -1
- data/spec/unit/functions/split_spec.rb +2 -2
- data/spec/unit/functions/versioncmp_spec.rb +36 -0
- data/spec/unit/functions4_spec.rb +58 -72
- data/spec/unit/graph/sequential_prioritizer_spec.rb +1 -1
- data/spec/unit/indirector/catalog/compiler_spec.rb +28 -8
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +38 -20
- data/spec/unit/indirector/data_binding/none_spec.rb +2 -2
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +52 -1
- data/spec/unit/indirector/indirection_spec.rb +13 -2
- data/spec/unit/indirector/request_spec.rb +8 -8
- data/spec/unit/indirector/ssl_file_spec.rb +1 -1
- data/spec/unit/indirector/yaml_spec.rb +1 -1
- data/spec/unit/info_service_spec.rb +236 -0
- data/spec/unit/module_tool/application_spec.rb +1 -1
- data/spec/unit/module_tool/applications/builder_spec.rb +1 -1
- data/spec/unit/module_tool/metadata_spec.rb +31 -2
- data/spec/unit/network/authconfig_spec.rb +62 -32
- data/spec/unit/network/authorization_spec.rb +30 -2
- data/spec/unit/network/authstore_spec.rb +1 -1
- data/spec/unit/network/http/compression_spec.rb +1 -1
- data/spec/unit/network/http/connection_spec.rb +14 -19
- data/spec/unit/network/http/handler_spec.rb +0 -5
- data/spec/unit/network/rights_spec.rb +3 -3
- data/spec/unit/node_spec.rb +27 -0
- data/spec/unit/parser/ast/leaf_spec.rb +1 -1
- data/spec/unit/parser/compiler_spec.rb +86 -2
- data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
- data/spec/unit/parser/resource_spec.rb +2 -20
- data/spec/unit/pops/binder/config/binder_config_spec.rb +1 -1
- data/spec/unit/pops/binder/injector_spec.rb +3 -3
- data/spec/unit/pops/evaluator/access_ops_spec.rb +13 -11
- data/spec/unit/pops/evaluator/basic_expressions_spec.rb +1 -2
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +20 -11
- data/spec/unit/pops/evaluator/literal_evaluator_spec.rb +43 -0
- data/spec/unit/pops/label_provider_spec.rb +5 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +39 -0
- data/spec/unit/pops/parser/parse_application_spec.rb +40 -0
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +4 -0
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +47 -0
- data/spec/unit/pops/parser/parse_site_spec.rb +38 -0
- data/spec/unit/pops/parser/parser_rspec_helper.rb +5 -0
- data/spec/unit/pops/parser/parser_spec.rb +18 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +427 -444
- data/spec/unit/pops/types/type_factory_spec.rb +12 -12
- data/spec/unit/pops/types/type_parser_spec.rb +15 -12
- data/spec/unit/pops/validator/validator_spec.rb +68 -0
- data/spec/unit/property_spec.rb +1 -1
- data/spec/unit/provider/augeas/augeas_spec.rb +50 -0
- data/spec/unit/provider/group/directoryservice_spec.rb +33 -0
- data/spec/unit/provider/group/windows_adsi_spec.rb +3 -0
- data/spec/unit/provider/package/dnf_spec.rb +92 -0
- data/spec/unit/provider/package/gem_spec.rb +7 -0
- data/spec/unit/provider/package/nim_spec.rb +6 -6
- data/spec/unit/provider/package/rpm_spec.rb +25 -2
- data/spec/unit/provider/package/windows/package_spec.rb +41 -0
- data/spec/unit/provider/package/yum_spec.rb +35 -12
- data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +10 -0
- data/spec/unit/provider/service/debian_spec.rb +28 -0
- data/spec/unit/provider/service/gentoo_spec.rb +1 -0
- data/spec/unit/provider/service/init_spec.rb +6 -0
- data/spec/unit/provider/service/launchd_spec.rb +85 -10
- data/spec/unit/provider/service/openrc_spec.rb +1 -0
- data/spec/unit/provider/service/rcng_spec.rb +41 -0
- data/spec/unit/provider/service/redhat_spec.rb +8 -1
- data/spec/unit/provider/service/smf_spec.rb +30 -5
- data/spec/unit/provider/service/src_spec.rb +20 -4
- data/spec/unit/provider/service/systemd_spec.rb +79 -29
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +1 -1
- data/spec/unit/provider/sshkey/parsed_spec.rb +23 -0
- data/spec/unit/provider/user/windows_adsi_spec.rb +2 -1
- data/spec/unit/provider/zone/solaris_spec.rb +19 -0
- data/spec/unit/reports_spec.rb +10 -0
- data/spec/unit/resource/capability_finder_spec.rb +56 -0
- data/spec/unit/resource/catalog_spec.rb +31 -8
- data/spec/unit/resource/type_collection_spec.rb +23 -2
- data/spec/unit/resource/type_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +23 -5
- data/spec/unit/settings/file_setting_spec.rb +31 -0
- data/spec/unit/settings_spec.rb +91 -2
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +4 -3
- data/spec/unit/ssl/certificate_authority_spec.rb +5 -3
- data/spec/unit/ssl/host_spec.rb +2 -2
- data/spec/unit/ssl/oids_spec.rb +8 -0
- data/spec/unit/transaction/additional_resource_generator_spec.rb +78 -5
- data/spec/unit/transaction/report_spec.rb +24 -1
- data/spec/unit/transaction_spec.rb +7 -0
- data/spec/unit/type/exec_spec.rb +16 -8
- data/spec/unit/type/host_spec.rb +4 -4
- data/spec/unit/type/package_spec.rb +1 -0
- data/spec/unit/type/tidy_spec.rb +4 -4
- data/spec/unit/type/user_spec.rb +14 -7
- data/spec/unit/type/vlan_spec.rb +1 -1
- data/spec/unit/type_spec.rb +1 -1
- data/spec/unit/util/ldap/generator_spec.rb +1 -1
- data/spec/unit/util/network_device/cisco/device_spec.rb +1 -1
- data/spec/unit/util/network_device/transport/ssh_spec.rb +1 -1
- data/spec/unit/util/network_device_spec.rb +1 -1
- data/spec/unit/util/storage_spec.rb +5 -1
- data/spec/unit/util/windows/adsi_spec.rb +13 -0
- data/spec/unit/util_spec.rb +21 -2
- metadata +173 -7
- data/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +0 -175
- data/spec/integration/data_binding.rb +0 -104
data/install.rb
CHANGED
|
@@ -33,13 +33,6 @@ require 'rbconfig'
|
|
|
33
33
|
require 'find'
|
|
34
34
|
require 'fileutils'
|
|
35
35
|
require 'tempfile'
|
|
36
|
-
begin
|
|
37
|
-
require 'ftools' # apparently on some system ftools doesn't get loaded
|
|
38
|
-
$haveftools = true
|
|
39
|
-
rescue LoadError
|
|
40
|
-
puts "ftools not found. Using FileUtils instead.."
|
|
41
|
-
$haveftools = false
|
|
42
|
-
end
|
|
43
36
|
require 'optparse'
|
|
44
37
|
require 'ostruct'
|
|
45
38
|
|
|
@@ -67,21 +60,13 @@ def do_configs(configs, target, strip = 'conf/')
|
|
|
67
60
|
Dir.mkdir(target) unless File.directory? target
|
|
68
61
|
configs.each do |cf|
|
|
69
62
|
ocf = File.join(InstallOptions.config_dir, cf.gsub(/#{strip}/, ''))
|
|
70
|
-
|
|
71
|
-
File.install(cf, ocf, 0644, true)
|
|
72
|
-
else
|
|
73
|
-
FileUtils.install(cf, ocf, {:mode => 0644, :preserve => true, :verbose => true})
|
|
74
|
-
end
|
|
63
|
+
FileUtils.install(cf, ocf, {:mode => 0644, :preserve => true, :verbose => true})
|
|
75
64
|
end
|
|
76
65
|
|
|
77
66
|
if $operatingsystem == 'windows'
|
|
78
67
|
src_dll = 'ext/windows/eventlog/puppetres.dll'
|
|
79
68
|
dst_dll = File.join(InstallOptions.bin_dir, 'puppetres.dll')
|
|
80
|
-
|
|
81
|
-
File.install(src_dll, dst_dll, 0644, true)
|
|
82
|
-
else
|
|
83
|
-
FileUtils.install(src_dll, dst_dll, {:mode => 0644, :preserve => true, :verbose => true})
|
|
84
|
-
end
|
|
69
|
+
FileUtils.install(src_dll, dst_dll, {:mode => 0644, :preserve => true, :verbose => true})
|
|
85
70
|
|
|
86
71
|
require 'win32/registry'
|
|
87
72
|
include Win32::Registry::Constants
|
|
@@ -110,15 +95,9 @@ def do_libs(libs, strip = 'lib/')
|
|
|
110
95
|
next if File.directory? lf
|
|
111
96
|
olf = File.join(InstallOptions.site_dir, lf.sub(/^#{strip}/, ''))
|
|
112
97
|
op = File.dirname(olf)
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
File.install(lf, olf, 0644, true)
|
|
117
|
-
else
|
|
118
|
-
FileUtils.makedirs(op, {:mode => 0755, :verbose => true})
|
|
119
|
-
FileUtils.chmod(0755, op)
|
|
120
|
-
FileUtils.install(lf, olf, {:mode => 0644, :preserve => true, :verbose => true})
|
|
121
|
-
end
|
|
98
|
+
FileUtils.makedirs(op, {:mode => 0755, :verbose => true})
|
|
99
|
+
FileUtils.chmod(0755, op)
|
|
100
|
+
FileUtils.install(lf, olf, {:mode => 0644, :preserve => true, :verbose => true})
|
|
122
101
|
end
|
|
123
102
|
end
|
|
124
103
|
|
|
@@ -126,15 +105,9 @@ def do_man(man, strip = 'man/')
|
|
|
126
105
|
man.each do |mf|
|
|
127
106
|
omf = File.join(InstallOptions.man_dir, mf.gsub(/#{strip}/, ''))
|
|
128
107
|
om = File.dirname(omf)
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
File.install(mf, omf, 0644, true)
|
|
133
|
-
else
|
|
134
|
-
FileUtils.makedirs(om, {:mode => 0755, :verbose => true})
|
|
135
|
-
FileUtils.chmod(0755, om)
|
|
136
|
-
FileUtils.install(mf, omf, {:mode => 0644, :preserve => true, :verbose => true})
|
|
137
|
-
end
|
|
108
|
+
FileUtils.makedirs(om, {:mode => 0755, :verbose => true})
|
|
109
|
+
FileUtils.chmod(0755, om)
|
|
110
|
+
FileUtils.install(mf, omf, {:mode => 0644, :preserve => true, :verbose => true})
|
|
138
111
|
gzip = %x{which gzip}
|
|
139
112
|
gzip.chomp!
|
|
140
113
|
%x{#{gzip} -f #{omf}}
|
|
@@ -166,14 +139,13 @@ end
|
|
|
166
139
|
# Prepare the file installation.
|
|
167
140
|
#
|
|
168
141
|
def prepare_installation
|
|
169
|
-
$operatingsystem = Facter.value :operatingsystem
|
|
170
|
-
|
|
171
142
|
InstallOptions.configs = true
|
|
143
|
+
InstallOptions.check_prereqs = true
|
|
172
144
|
|
|
173
145
|
# Only try to do docs if we're sure they have rdoc
|
|
174
146
|
if $haverdoc
|
|
175
147
|
InstallOptions.rdoc = true
|
|
176
|
-
InstallOptions.ri =
|
|
148
|
+
InstallOptions.ri = true
|
|
177
149
|
else
|
|
178
150
|
InstallOptions.rdoc = false
|
|
179
151
|
InstallOptions.ri = false
|
|
@@ -226,6 +198,9 @@ def prepare_installation
|
|
|
226
198
|
opts.on('--mandir[=OPTIONAL]', 'Installation directory for man pages', 'overrides RbConfig::CONFIG["mandir"]') do |mandir|
|
|
227
199
|
InstallOptions.mandir = mandir
|
|
228
200
|
end
|
|
201
|
+
opts.on('--[no-]check-prereqs', 'Prevents validation of prerequisite libraries', 'Default on') do |prereq|
|
|
202
|
+
InstallOptions.check_prereqs = prereq
|
|
203
|
+
end
|
|
229
204
|
opts.on('--quick', 'Performs a quick installation. Only the', 'installation is done.') do |quick|
|
|
230
205
|
InstallOptions.rdoc = false
|
|
231
206
|
InstallOptions.ri = false
|
|
@@ -256,6 +231,13 @@ def prepare_installation
|
|
|
256
231
|
RbConfig::CONFIG['bindir'] = "/usr/bin"
|
|
257
232
|
end
|
|
258
233
|
|
|
234
|
+
# Here we only set $operatingsystem if we have opted to check for prereqs.
|
|
235
|
+
# Otherwise facter won't be guaranteed to be present.
|
|
236
|
+
if InstallOptions.check_prereqs
|
|
237
|
+
check_prereqs
|
|
238
|
+
$operatingsystem = Facter.value :operatingsystem
|
|
239
|
+
end
|
|
240
|
+
|
|
259
241
|
if not InstallOptions.configdir.nil?
|
|
260
242
|
configdir = InstallOptions.configdir
|
|
261
243
|
elsif $operatingsystem == "windows"
|
|
@@ -395,6 +377,7 @@ end
|
|
|
395
377
|
|
|
396
378
|
def build_ri(files)
|
|
397
379
|
return unless $haverdoc
|
|
380
|
+
return if $operatingsystem == "windows"
|
|
398
381
|
begin
|
|
399
382
|
ri = RDoc::RDoc.new
|
|
400
383
|
#ri.document(["--ri-site", "--merge"] + files)
|
|
@@ -473,7 +456,6 @@ FileUtils.cd File.dirname(__FILE__) do
|
|
|
473
456
|
man = glob(%w{man/man[0-9]/*})
|
|
474
457
|
libs = glob(%w{lib/**/*})
|
|
475
458
|
|
|
476
|
-
check_prereqs
|
|
477
459
|
prepare_installation
|
|
478
460
|
|
|
479
461
|
#build_rdoc(rdoc) if InstallOptions.rdoc
|
|
@@ -43,13 +43,13 @@ class Hiera::PuppetFunction < Puppet::Functions::InternalFunction
|
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
def hiera_no_default(scope, key)
|
|
46
|
-
post_lookup(key, lookup(scope, key, nil, nil))
|
|
46
|
+
post_lookup(scope, key, lookup(scope, key, nil, nil))
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def hiera_with_default(scope, key, default, override = nil)
|
|
50
50
|
undefined = (@@undefined_value ||= Object.new)
|
|
51
51
|
result = lookup(scope, key, undefined, override)
|
|
52
|
-
post_lookup(key, result.equal?(undefined) ? default : result)
|
|
52
|
+
post_lookup(scope, key, result.equal?(undefined) ? default : result)
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
def hiera_block1(scope, key, &default_block)
|
|
@@ -63,20 +63,20 @@ class Hiera::PuppetFunction < Puppet::Functions::InternalFunction
|
|
|
63
63
|
def common(scope, key, override, default_block)
|
|
64
64
|
undefined = (@@undefined_value ||= Object.new)
|
|
65
65
|
result = lookup(scope, key, undefined, override)
|
|
66
|
-
post_lookup(key, result.equal?(undefined) ? default_block.call(key) : result)
|
|
66
|
+
post_lookup(scope, key, result.equal?(undefined) ? default_block.call(key) : result)
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
private :common
|
|
70
70
|
|
|
71
71
|
def lookup(scope, key, default, override)
|
|
72
|
-
HieraPuppet.lookup(key, default,scope, override, merge_type)
|
|
72
|
+
HieraPuppet.lookup(key, default, scope, override, merge_type)
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
def merge_type
|
|
76
76
|
:priority
|
|
77
77
|
end
|
|
78
78
|
|
|
79
|
-
def post_lookup(key, result)
|
|
79
|
+
def post_lookup(scope, key, result)
|
|
80
80
|
result
|
|
81
81
|
end
|
|
82
82
|
end
|
data/lib/puppet/agent/locker.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'puppet/util/pidlock'
|
|
2
|
+
require 'puppet/error'
|
|
2
3
|
|
|
3
4
|
# This module is responsible for encapsulating the logic for "locking" the
|
|
4
5
|
# puppet agent during a catalog run; in other words, keeping track of enough
|
|
@@ -12,8 +13,8 @@ require 'puppet/util/pidlock'
|
|
|
12
13
|
# For more information, please see docs on the website.
|
|
13
14
|
# http://links.puppetlabs.com/agent_lockfiles
|
|
14
15
|
module Puppet::Agent::Locker
|
|
15
|
-
# Yield if we get a lock, else
|
|
16
|
-
#
|
|
16
|
+
# Yield if we get a lock, else raise Puppet::LockError. Return
|
|
17
|
+
# value of block yielded.
|
|
17
18
|
def lock
|
|
18
19
|
if lockfile.lock
|
|
19
20
|
begin
|
|
@@ -21,10 +22,18 @@ module Puppet::Agent::Locker
|
|
|
21
22
|
ensure
|
|
22
23
|
lockfile.unlock
|
|
23
24
|
end
|
|
25
|
+
else
|
|
26
|
+
fail Puppet::LockError, 'Failed to aquire lock'
|
|
24
27
|
end
|
|
25
28
|
end
|
|
26
29
|
|
|
30
|
+
# @deprecated
|
|
27
31
|
def running?
|
|
32
|
+
Puppet.deprecation_warning <<-ENDHEREDOC
|
|
33
|
+
Puppet::Agent::Locker.running? is deprecated as it is inherently unsafe.
|
|
34
|
+
The only safe way to know if the lock is locked is to try lock and perform some
|
|
35
|
+
action and then handle the LockError that may result.
|
|
36
|
+
ENDHEREDOC
|
|
28
37
|
lockfile.locked?
|
|
29
38
|
end
|
|
30
39
|
|
data/lib/puppet/agent.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'puppet/application'
|
|
2
|
+
require 'puppet/error'
|
|
2
3
|
|
|
3
4
|
# A general class for triggering a run of another
|
|
4
5
|
# class.
|
|
@@ -29,10 +30,6 @@ class Puppet::Agent
|
|
|
29
30
|
|
|
30
31
|
# Perform a run with our client.
|
|
31
32
|
def run(client_options = {})
|
|
32
|
-
if running?
|
|
33
|
-
Puppet.notice "Run of #{client_class} already in progress; skipping (#{lockfile_path} exists)"
|
|
34
|
-
return
|
|
35
|
-
end
|
|
36
33
|
if disabled?
|
|
37
34
|
Puppet.notice "Skipping run of #{client_class}; administratively disabled (Reason: '#{disable_message}');\nUse 'puppet agent --enable' to re-enable."
|
|
38
35
|
return
|
|
@@ -46,6 +43,9 @@ class Puppet::Agent
|
|
|
46
43
|
begin
|
|
47
44
|
client_args = client_options.merge(:pluginsync => Puppet[:pluginsync])
|
|
48
45
|
lock { client.run(client_args) }
|
|
46
|
+
rescue Puppet::LockError
|
|
47
|
+
Puppet.notice "Run of #{client_class} already in progress; skipping (#{lockfile_path} exists)"
|
|
48
|
+
return
|
|
49
49
|
rescue StandardError => detail
|
|
50
50
|
Puppet.log_exception(detail, "Could not run #{client_class}: #{detail}")
|
|
51
51
|
end
|
|
@@ -118,14 +118,14 @@ go into the background, attempt to get a signed certificate, and retrieve
|
|
|
118
118
|
and apply its configuration every 30 minutes.
|
|
119
119
|
|
|
120
120
|
Some flags are meant specifically for interactive use -- in particular,
|
|
121
|
-
'test', 'tags'
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
'tags' allows you to specify what portions of a configuration you want
|
|
121
|
+
'test', 'tags' and 'fingerprint' are useful.
|
|
122
|
+
|
|
123
|
+
'--test' does a single run in the foreground with verbose logging, then exits.
|
|
124
|
+
It will also exit if it can't get a valid catalog. The exit code after running
|
|
125
|
+
with '--test' is 0 if the catalog was successfully applied, and 1 if the run
|
|
126
|
+
either failed or wasn't attempted (due to another run already in progress).
|
|
127
|
+
|
|
128
|
+
'--tags' allows you to specify what portions of a configuration you want
|
|
129
129
|
to apply. Puppet elements are tagged with all of the class or definition
|
|
130
130
|
names that contain them, and you can use the 'tags' flag to specify one
|
|
131
131
|
of these names, causing only configuration elements contained within
|
|
@@ -136,7 +136,7 @@ class, and call puppet with '--tags ntpd', which would only apply that
|
|
|
136
136
|
small portion of the configuration during your testing, rather than
|
|
137
137
|
applying the whole thing.
|
|
138
138
|
|
|
139
|
-
'fingerprint' is a one-time flag. In this mode 'puppet agent' will run
|
|
139
|
+
'--fingerprint' is a one-time flag. In this mode 'puppet agent' will run
|
|
140
140
|
once and display on the console (and in the log) the current certificate
|
|
141
141
|
(or certificate request) fingerprint. Providing the '--digest' option
|
|
142
142
|
allows to use a different digest algorithm to generate the fingerprint.
|
|
@@ -181,10 +181,20 @@ generated by running puppet agent with '--genconfig'.
|
|
|
181
181
|
Enable full debugging.
|
|
182
182
|
|
|
183
183
|
* --detailed-exitcodes:
|
|
184
|
-
Provide
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
184
|
+
Provide extra information about the run via exit codes; only works if '--test'
|
|
185
|
+
or '--onetime' is also specified. If enabled, 'puppet agent' will use the
|
|
186
|
+
following exit codes:
|
|
187
|
+
|
|
188
|
+
0: The run succeeded with no changes or failures; the system was already in
|
|
189
|
+
the desired state.
|
|
190
|
+
|
|
191
|
+
1: The run failed, or wasn't attempted due to another run already in progress.
|
|
192
|
+
|
|
193
|
+
2: The run succeeded, and some resources were changed.
|
|
194
|
+
|
|
195
|
+
4: The run succeeded, and some resources failed.
|
|
196
|
+
|
|
197
|
+
6: The run succeeded, and included both changes and failures.
|
|
188
198
|
|
|
189
199
|
* --digest:
|
|
190
200
|
Change the certificate fingerprinting digest algorithm. The default is
|
|
@@ -312,6 +322,9 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
|
312
322
|
# waiting for certificates so that we don't block
|
|
313
323
|
daemon = daemonize_process_when(Puppet[:daemonize])
|
|
314
324
|
|
|
325
|
+
# Setup signal traps immediately after daemonization so we clean up the daemon
|
|
326
|
+
daemon.set_signal_traps
|
|
327
|
+
|
|
315
328
|
wait_for_certificates
|
|
316
329
|
|
|
317
330
|
if Puppet[:onetime]
|
|
@@ -336,7 +349,6 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
|
336
349
|
end
|
|
337
350
|
|
|
338
351
|
def onetime(daemon)
|
|
339
|
-
daemon.set_signal_traps
|
|
340
352
|
begin
|
|
341
353
|
exitstatus = daemon.agent.run
|
|
342
354
|
rescue => detail
|
|
@@ -372,6 +384,8 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
|
372
384
|
end
|
|
373
385
|
|
|
374
386
|
def setup
|
|
387
|
+
raise ArgumentError, "The puppet agent command does not take parameters" unless command_line.args.empty?
|
|
388
|
+
|
|
375
389
|
setup_test if options[:test]
|
|
376
390
|
|
|
377
391
|
setup_logs
|
|
@@ -83,10 +83,19 @@ configuration options can also be generated by running puppet with
|
|
|
83
83
|
Enable full debugging.
|
|
84
84
|
|
|
85
85
|
* --detailed-exitcodes:
|
|
86
|
-
Provide
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
changes
|
|
86
|
+
Provide extra information about the run via exit codes. If enabled, 'puppet
|
|
87
|
+
apply' will use the following exit codes:
|
|
88
|
+
|
|
89
|
+
0: The run succeeded with no changes or failures; the system was already in
|
|
90
|
+
the desired state.
|
|
91
|
+
|
|
92
|
+
1: The run failed.
|
|
93
|
+
|
|
94
|
+
2: The run succeeded, and some resources were changed.
|
|
95
|
+
|
|
96
|
+
4: The run succeeded, and some resources failed.
|
|
97
|
+
|
|
98
|
+
6: The run succeeded, and included both changes and failures.
|
|
90
99
|
|
|
91
100
|
* --help:
|
|
92
101
|
Print this help message
|
|
@@ -306,6 +315,10 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
|
306
315
|
|
|
307
316
|
Puppet.settings.use :main, :agent, :ssl
|
|
308
317
|
|
|
318
|
+
if Puppet[:catalog_cache_terminus]
|
|
319
|
+
Puppet::Resource::Catalog.indirection.cache_class = Puppet[:catalog_cache_terminus]
|
|
320
|
+
end
|
|
321
|
+
|
|
309
322
|
# we want the last report to be persisted locally
|
|
310
323
|
Puppet::Transaction::Report.indirection.cache_class = :yaml
|
|
311
324
|
|
|
@@ -110,6 +110,8 @@ ACTIONS
|
|
|
110
110
|
Every action except 'list' and 'generate' requires a hostname to act on,
|
|
111
111
|
unless the '--all' option is set.
|
|
112
112
|
|
|
113
|
+
The most important actions for day-to-day use are 'list' and 'sign'.
|
|
114
|
+
|
|
113
115
|
* clean:
|
|
114
116
|
Revoke a host's certificate (if applicable) and remove all files
|
|
115
117
|
related to that host from puppet cert's storage. This is useful when
|
|
@@ -171,6 +173,20 @@ configuration options can also be generated by running puppet cert with
|
|
|
171
173
|
Operate on all items. Currently only makes sense with the 'sign',
|
|
172
174
|
'list', and 'fingerprint' actions.
|
|
173
175
|
|
|
176
|
+
* --allow-dns-alt-names:
|
|
177
|
+
Sign a certificate request even if it contains one or more alternate DNS
|
|
178
|
+
names. If this option isn't specified, 'puppet cert sign' will ignore any
|
|
179
|
+
requests that contain alternate names.
|
|
180
|
+
|
|
181
|
+
In general, ONLY certs intended for a Puppet master server should include
|
|
182
|
+
alternate DNS names, since Puppet agent relies on those names for identifying
|
|
183
|
+
its rightful server.
|
|
184
|
+
|
|
185
|
+
You can make Puppet agent request a certificate with alternate names by
|
|
186
|
+
setting 'dns_alt_names' in puppet.conf or specifying '--dns_alt_names' on the
|
|
187
|
+
command line. The output of 'puppet cert list' shows any requested alt names
|
|
188
|
+
for pending certificate requests.
|
|
189
|
+
|
|
174
190
|
* --digest:
|
|
175
191
|
Set the digest for fingerprinting (defaults to the digest used when
|
|
176
192
|
signing the cert). Valid values depends on your openssl and openssl ruby
|
|
@@ -4,6 +4,8 @@ class Puppet::Application::Filebucket < Puppet::Application
|
|
|
4
4
|
|
|
5
5
|
option("--bucket BUCKET","-b")
|
|
6
6
|
option("--debug","-d")
|
|
7
|
+
option("--fromdate FROMDATE","-f")
|
|
8
|
+
option("--todate TODATE","-t")
|
|
7
9
|
option("--local","-l")
|
|
8
10
|
option("--remote","-r")
|
|
9
11
|
option("--verbose","-v")
|
|
@@ -25,7 +27,8 @@ USAGE
|
|
|
25
27
|
-----
|
|
26
28
|
puppet filebucket <mode> [-h|--help] [-V|--version] [-d|--debug]
|
|
27
29
|
[-v|--verbose] [-l|--local] [-r|--remote] [-s|--server <server>]
|
|
28
|
-
[-
|
|
30
|
+
[-f|--fromdate <date>] [-t|--todate <date>] [-b|--bucket <directory>]
|
|
31
|
+
<file> <file> ...
|
|
29
32
|
|
|
30
33
|
Puppet filebucket can operate in three modes, with only one mode per call:
|
|
31
34
|
|
|
@@ -43,6 +46,13 @@ restore:
|
|
|
43
46
|
path to this argument; you are not restricted to restoring the content
|
|
44
47
|
to its original location.
|
|
45
48
|
|
|
49
|
+
diff:
|
|
50
|
+
Print a diff in unified format between two checksums in the filebucket
|
|
51
|
+
or between a checksum and its matching file.
|
|
52
|
+
|
|
53
|
+
list:
|
|
54
|
+
List all files in the current local filebucket. Listing remote
|
|
55
|
+
filebuckets is not allowed.
|
|
46
56
|
|
|
47
57
|
DESCRIPTION
|
|
48
58
|
-----------
|
|
@@ -71,6 +81,9 @@ configuration options can also be generated by running puppet with
|
|
|
71
81
|
* --debug:
|
|
72
82
|
Enable full debugging.
|
|
73
83
|
|
|
84
|
+
* --fromdate:
|
|
85
|
+
(list only) Select bucket files from 'fromdate'
|
|
86
|
+
|
|
74
87
|
* --help:
|
|
75
88
|
Print this help message
|
|
76
89
|
|
|
@@ -85,6 +98,9 @@ configuration options can also be generated by running puppet with
|
|
|
85
98
|
* --server:
|
|
86
99
|
The server to send the file to, instead of locally.
|
|
87
100
|
|
|
101
|
+
* --todate:
|
|
102
|
+
(list only) Select bucket files until 'todate'
|
|
103
|
+
|
|
88
104
|
* --verbose:
|
|
89
105
|
Print extra information.
|
|
90
106
|
|
|
@@ -97,7 +113,31 @@ EXAMPLE
|
|
|
97
113
|
$ puppet filebucket backup /etc/passwd
|
|
98
114
|
/etc/passwd: 429b225650b912a2ee067b0a4cf1e949
|
|
99
115
|
$ puppet filebucket restore /tmp/passwd 429b225650b912a2ee067b0a4cf1e949
|
|
100
|
-
|
|
116
|
+
## Diff between two files in the filebucket
|
|
117
|
+
$ puppet filebucket -l diff d43a6ecaa892a1962398ac9170ea9bf2 7ae322f5791217e031dc60188f4521ef
|
|
118
|
+
1a2
|
|
119
|
+
> again
|
|
120
|
+
## Diff between the file in the filebucket and the current one
|
|
121
|
+
$ puppet filebucket -l diff d43a6ecaa892a1962398ac9170ea9bf2 /tmp/testFile
|
|
122
|
+
1a2
|
|
123
|
+
> again
|
|
124
|
+
$ puppet filebucket -l list
|
|
125
|
+
d43a6ecaa892a1962398ac9170ea9bf2 2015-05-11 09:27:56 /tmp/TestFile
|
|
126
|
+
$ echo again >> /tmp/TestFile
|
|
127
|
+
$ puppet filebucket -l backup /tmp/TestFile
|
|
128
|
+
/tmp/TestFile: 7ae322f5791217e031dc60188f4521ef
|
|
129
|
+
$ puppet filebucket -l list
|
|
130
|
+
d43a6ecaa892a1962398ac9170ea9bf2 2015-05-11 09:27:56 /tmp/TestFile
|
|
131
|
+
7ae322f5791217e031dc60188f4521ef 2015-05-11 09:52:15 /tmp/TestFile
|
|
132
|
+
$ puppet filebucket -l -f 2015-01-01 -t 2015-01-11 list
|
|
133
|
+
<Empty Output>
|
|
134
|
+
$ puppet filebucket -l -f 2015-05-10 list
|
|
135
|
+
d43a6ecaa892a1962398ac9170ea9bf2 2015-05-11 09:27:56 /tmp/TestFile
|
|
136
|
+
7ae322f5791217e031dc60188f4521ef 2015-05-11 09:52:15 /tmp/TestFile
|
|
137
|
+
$ puppet filebucket -l -f "2015-05-11 09:30:00" list
|
|
138
|
+
7ae322f5791217e031dc60188f4521ef 2015-05-11 09:52:15 /tmp/TestFile
|
|
139
|
+
$ puppet filebucket -l -t "2015-05-11 09:30:00" list
|
|
140
|
+
d43a6ecaa892a1962398ac9170ea9bf2 2015-05-11 09:27:56 /tmp/TestFile
|
|
101
141
|
|
|
102
142
|
AUTHOR
|
|
103
143
|
------
|
|
@@ -115,7 +155,7 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
|
115
155
|
def run_command
|
|
116
156
|
@args = command_line.args
|
|
117
157
|
command = args.shift
|
|
118
|
-
return send(command) if %w{get backup restore}.include? command
|
|
158
|
+
return send(command) if %w{get backup restore diff list}.include? command
|
|
119
159
|
help
|
|
120
160
|
end
|
|
121
161
|
|
|
@@ -142,12 +182,47 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
|
142
182
|
end
|
|
143
183
|
end
|
|
144
184
|
|
|
185
|
+
def list
|
|
186
|
+
fromdate = options[:fromdate]
|
|
187
|
+
todate = options[:todate]
|
|
188
|
+
out = @client.list(fromdate, todate)
|
|
189
|
+
print out
|
|
190
|
+
end
|
|
191
|
+
|
|
145
192
|
def restore
|
|
146
193
|
file = args.shift
|
|
147
194
|
md5 = args.shift
|
|
148
195
|
@client.restore(file, md5)
|
|
149
196
|
end
|
|
150
197
|
|
|
198
|
+
def diff
|
|
199
|
+
raise Puppet::Error, "Need exactly two arguments: filebucket diff <file_a> <file_b>" unless args.count == 2
|
|
200
|
+
left = args.shift
|
|
201
|
+
right = args.shift
|
|
202
|
+
if Puppet::FileSystem.exist?(left)
|
|
203
|
+
# It's a file
|
|
204
|
+
file_a = left
|
|
205
|
+
checksum_a = nil
|
|
206
|
+
else
|
|
207
|
+
file_a = nil
|
|
208
|
+
checksum_a = left
|
|
209
|
+
end
|
|
210
|
+
if Puppet::FileSystem.exist?(right)
|
|
211
|
+
# It's a file
|
|
212
|
+
file_b = right
|
|
213
|
+
checksum_b = nil
|
|
214
|
+
else
|
|
215
|
+
file_b = nil
|
|
216
|
+
checksum_b = right
|
|
217
|
+
end
|
|
218
|
+
if (checksum_a || file_a) && (checksum_b || file_b)
|
|
219
|
+
Puppet.info("Comparing #{checksum_a} #{checksum_b} #{file_a} #{file_b}")
|
|
220
|
+
print @client.diff(checksum_a, checksum_b, file_a, file_b)
|
|
221
|
+
else
|
|
222
|
+
raise Puppet::Error, "Need exactly two arguments: filebucket diff <file_a> <file_b>"
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
|
|
151
226
|
def setup
|
|
152
227
|
Puppet::Log.newdestination(:console)
|
|
153
228
|
|
|
@@ -181,4 +256,3 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
|
181
256
|
end
|
|
182
257
|
end
|
|
183
258
|
end
|
|
184
|
-
|