puppet 4.3.2-x86-mingw32 → 4.4.0-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/COMMITTERS.md +2 -2
- data/CONTRIBUTING.md +6 -6
- data/LICENSE +1 -1
- data/README.md +8 -9
- data/conf/auth.conf +2 -2
- data/ext/README.environment +1 -1
- data/ext/debian/README.source +1 -1
- data/ext/debian/control +1 -1
- data/ext/debian/copyright +4 -4
- data/ext/debian/puppetmaster.README.debian +11 -9
- data/ext/emacs/puppet-mode.el +1 -1
- data/ext/envpuppet +2 -2
- data/ext/ips/puppetagent.xml +1 -1
- data/ext/ips/puppetmaster.xml +1 -1
- data/ext/project_data.yaml +8 -0
- data/ext/puppet-test +3 -3
- data/ext/rack/example-passenger-vhost.conf +1 -1
- data/ext/redhat/puppet.spec.erb +2 -2
- data/ext/regexp_nodes/regexp_nodes.rb +1 -1
- data/ext/solaris/pkginfo +1 -1
- data/ext/solaris/smf/puppet.xml +1 -1
- data/ext/suse/puppet.spec +2 -2
- data/ext/upload_facts.rb +1 -1
- data/ext/windows/puppet_interactive.bat +6 -0
- data/ext/windows/puppet_shell.bat +9 -0
- data/ext/windows/run_puppet_interactive.bat +9 -0
- data/ext/yaml_nodes.rb +1 -1
- data/install.rb +30 -20
- data/lib/puppet/agent.rb +1 -1
- data/lib/puppet/application/agent.rb +4 -2
- data/lib/puppet/application/apply.rb +7 -4
- data/lib/puppet/application/cert.rb +1 -1
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/inspect.rb +1 -1
- data/lib/puppet/application/lookup.rb +4 -4
- data/lib/puppet/application/master.rb +2 -2
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/configurer.rb +100 -22
- data/lib/puppet/data_providers/hiera_config.rb +28 -3
- data/lib/puppet/data_providers/hiera_interpolate.rb +30 -15
- data/lib/puppet/data_providers/hiera_support.rb +1 -1
- data/lib/puppet/data_providers/json_data_provider_factory.rb +2 -2
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -2
- data/lib/puppet/defaults.rb +65 -19
- data/lib/puppet/environments.rb +3 -1
- data/lib/puppet/face/config.rb +1 -1
- data/lib/puppet/face/epp.rb +1 -1
- data/lib/puppet/face/help/man.erb +1 -1
- data/lib/puppet/face/module/install.rb +6 -6
- data/lib/puppet/face/parser.rb +12 -9
- data/lib/puppet/face/status.rb +2 -1
- data/lib/puppet/feature/cfpropertylist.rb +3 -0
- data/lib/puppet/feature/telnet.rb +9 -0
- data/lib/puppet/file_serving/http_metadata.rb +46 -0
- data/lib/puppet/file_serving/metadata.rb +18 -2
- data/lib/puppet/file_serving/terminus_selector.rb +2 -0
- data/lib/puppet/file_system.rb +2 -2
- data/lib/puppet/file_system/file_impl.rb +2 -2
- data/lib/puppet/file_system/memory_impl.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +1 -1
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/repository.rb +1 -31
- data/lib/puppet/functions.rb +45 -6
- data/lib/puppet/functions/assert_type.rb +9 -9
- data/lib/puppet/functions/each.rb +5 -13
- data/lib/puppet/functions/filter.rb +5 -14
- data/lib/puppet/functions/map.rb +6 -14
- data/lib/puppet/functions/reduce.rb +5 -13
- data/lib/puppet/functions/reverse_each.rb +82 -0
- data/lib/puppet/functions/scanf.rb +15 -18
- data/lib/puppet/functions/slice.rb +22 -36
- data/lib/puppet/functions/split.rb +2 -2
- data/lib/puppet/functions/step.rb +88 -0
- data/lib/puppet/functions/type.rb +70 -0
- data/lib/puppet/graph/rb_tree_map.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +188 -5
- data/lib/puppet/indirector/file_content/http.rb +15 -0
- data/lib/puppet/indirector/file_metadata/http.rb +27 -0
- data/lib/puppet/indirector/generic_http.rb +16 -0
- data/lib/puppet/indirector/node/exec.rb +1 -1
- data/lib/puppet/indirector/node/ldap.rb +1 -1
- data/lib/puppet/indirector/rest.rb +2 -1
- data/lib/puppet/info_service/class_information_service.rb +13 -12
- data/lib/puppet/loaders.rb +1 -0
- data/lib/puppet/module.rb +3 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +9 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +2 -2
- data/lib/puppet/module_tool/tar/mini.rb +3 -3
- data/lib/puppet/network/http/pool.rb +9 -0
- data/lib/puppet/node.rb +1 -1
- data/lib/puppet/node/environment.rb +11 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
- data/lib/puppet/parser/compiler.rb +3 -3
- data/lib/puppet/parser/environment_compiler.rb +0 -1
- data/lib/puppet/parser/functions.rb +28 -16
- data/lib/puppet/parser/functions/fqdn_rand.rb +1 -1
- data/lib/puppet/parser/functions/inline_template.rb +1 -1
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/scanf.rb +15 -26
- data/lib/puppet/parser/functions/slice.rb +17 -24
- data/lib/puppet/parser/functions/split.rb +1 -1
- data/lib/puppet/parser/resource.rb +19 -17
- data/lib/puppet/parser/scope.rb +176 -5
- data/lib/puppet/plugins/data_providers/data_provider.rb +54 -13
- data/lib/puppet/pops.rb +0 -8
- data/lib/puppet/pops/adaptable.rb +4 -1
- data/lib/puppet/pops/adapters.rb +38 -13
- data/lib/puppet/pops/binder/binder.rb +21 -17
- data/lib/puppet/pops/binder/binder_issues.rb +8 -6
- data/lib/puppet/pops/binder/bindings_checker.rb +12 -8
- data/lib/puppet/pops/binder/bindings_composer.rb +16 -12
- data/lib/puppet/pops/binder/bindings_factory.rb +108 -104
- data/lib/puppet/pops/binder/bindings_model.rb +49 -47
- data/lib/puppet/pops/binder/config/diagnostic_producer.rb +10 -6
- data/lib/puppet/pops/binder/injector.rb +53 -48
- data/lib/puppet/pops/binder/key_factory.rb +10 -6
- data/lib/puppet/pops/binder/producers.rb +67 -62
- data/lib/puppet/pops/evaluator/access_operator.rb +95 -93
- data/lib/puppet/pops/evaluator/closure.rb +84 -68
- data/lib/puppet/pops/evaluator/collector_transformer.rb +18 -14
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +0 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +13 -9
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +9 -8
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +78 -76
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +85 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +13 -11
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +5 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +41 -45
- data/lib/puppet/pops/issue_reporter.rb +6 -4
- data/lib/puppet/pops/issues.rb +34 -11
- data/lib/puppet/pops/loader/base_loader.rb +1 -1
- data/lib/puppet/pops/loader/loader.rb +1 -1
- data/lib/puppet/pops/loader/loader_paths.rb +15 -0
- data/lib/puppet/pops/loader/module_loaders.rb +17 -13
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +16 -12
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +16 -3
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +55 -0
- data/lib/puppet/pops/loaders.rb +51 -9
- data/lib/puppet/pops/lookup.rb +14 -12
- data/lib/puppet/pops/merge_strategy.rb +16 -19
- data/lib/puppet/pops/model/factory.rb +26 -2
- data/lib/puppet/pops/model/model.rb +8 -8
- data/lib/puppet/pops/model/model_label_provider.rb +13 -7
- data/lib/puppet/pops/model/model_meta.rb +17 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +8 -0
- data/lib/puppet/pops/parser/egrammar.ra +38 -14
- data/lib/puppet/pops/parser/eparser.rb +1353 -1276
- data/lib/puppet/pops/parser/epp_support.rb +11 -7
- data/lib/puppet/pops/parser/evaluating_parser.rb +14 -10
- data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
- data/lib/puppet/pops/parser/lexer2.rb +26 -19
- data/lib/puppet/pops/parser/lexer_support.rb +85 -7
- data/lib/puppet/pops/parser/locator.rb +21 -0
- data/lib/puppet/pops/parser/parser_support.rb +19 -16
- data/lib/puppet/pops/parser/slurp_support.rb +11 -7
- data/lib/puppet/pops/types/class_loader.rb +23 -19
- data/lib/puppet/pops/types/enumeration.rb +9 -26
- data/lib/puppet/pops/types/iterable.rb +308 -0
- data/lib/puppet/pops/types/recursion_guard.rb +82 -0
- data/lib/puppet/pops/types/type_acceptor.rb +25 -0
- data/lib/puppet/pops/types/type_asserter.rb +10 -9
- data/lib/puppet/pops/types/type_calculator.rb +138 -381
- data/lib/puppet/pops/types/type_factory.rb +91 -57
- data/lib/puppet/pops/types/type_formatter.rb +334 -0
- data/lib/puppet/pops/types/type_mismatch_describer.rb +226 -59
- data/lib/puppet/pops/types/type_parser.rb +159 -112
- data/lib/puppet/pops/types/types.rb +2057 -1247
- data/lib/puppet/pops/utils.rb +11 -10
- data/lib/puppet/pops/validation.rb +11 -9
- data/lib/puppet/pops/validation/checker4_0.rb +83 -55
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
- data/lib/puppet/provider/aixobject.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +1 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/macauthorization/macauthorization.rb +10 -9
- data/lib/puppet/provider/nameservice/directoryservice.rb +35 -50
- data/lib/puppet/provider/package/appdmg.rb +3 -2
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +5 -8
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +3 -2
- data/lib/puppet/provider/package/pkgng.rb +13 -4
- data/lib/puppet/provider/package/windows.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/package/zypper.rb +19 -0
- data/lib/puppet/provider/service/debian.rb +2 -2
- data/lib/puppet/provider/service/launchd.rb +6 -18
- data/lib/puppet/provider/service/systemd.rb +9 -2
- data/lib/puppet/provider/sshkey/parsed.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/directoryservice.rb +33 -58
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/provider/zpool/zpool.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/resource.rb +15 -12
- data/lib/puppet/resource/capability_finder.rb +20 -13
- data/lib/puppet/resource/catalog.rb +60 -3
- data/lib/puppet/resource/status.rb +11 -2
- data/lib/puppet/resource/type.rb +28 -38
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +13 -5
- data/lib/puppet/ssl/certificate_factory.rb +3 -3
- data/lib/puppet/ssl/certificate_request.rb +4 -4
- data/lib/puppet/ssl/certificate_signer.rb +1 -1
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/test/test_helper.rb +16 -4
- data/lib/puppet/transaction.rb +15 -2
- data/lib/puppet/transaction/additional_resource_generator.rb +6 -2
- data/lib/puppet/transaction/report.rb +31 -1
- data/lib/puppet/transaction/resource_harness.rb +0 -25
- data/lib/puppet/type.rb +11 -11
- data/lib/puppet/type/augeas.rb +1 -1
- data/lib/puppet/type/cron.rb +12 -12
- data/lib/puppet/type/file.rb +91 -39
- data/lib/puppet/type/file/checksum_value.rb +53 -0
- data/lib/puppet/type/file/content.rb +26 -111
- data/lib/puppet/type/file/data_sync.rb +84 -0
- data/lib/puppet/type/file/ensure.rb +17 -14
- data/lib/puppet/type/file/selcontext.rb +1 -1
- data/lib/puppet/type/file/source.rb +103 -18
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/interface.rb +8 -3
- data/lib/puppet/type/macauthorization.rb +1 -1
- data/lib/puppet/type/package.rb +6 -0
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/stage.rb +1 -1
- data/lib/puppet/type/user.rb +19 -17
- data/lib/puppet/type/yumrepo.rb +20 -0
- data/lib/puppet/util.rb +109 -22
- data/lib/puppet/util/autoload.rb +16 -11
- data/lib/puppet/util/checksums.rb +74 -31
- data/lib/puppet/util/execution.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +72 -0
- data/lib/puppet/util/log.rb +2 -0
- data/lib/puppet/util/logging.rb +43 -1
- data/lib/puppet/util/monkey_patches.rb +2 -2
- data/lib/puppet/util/multi_match.rb +51 -0
- data/lib/puppet/util/network_device/cisco/device.rb +10 -2
- data/lib/puppet/util/network_device/cisco/interface.rb +21 -8
- data/lib/puppet/util/network_device/transport/ssh.rb +7 -3
- data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
- data/lib/puppet/util/plist.rb +130 -0
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/run_mode.rb +2 -2
- data/lib/puppet/util/skip_tags.rb +9 -0
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/access_control_list.rb +3 -3
- data/lib/puppet/util/windows/adsi.rb +4 -4
- data/lib/puppet/util/windows/api_types.rb +24 -18
- data/lib/puppet/util/windows/com.rb +3 -3
- data/lib/puppet/util/windows/error.rb +1 -1
- data/lib/puppet/util/windows/file.rb +8 -8
- data/lib/puppet/util/windows/principal.rb +23 -14
- data/lib/puppet/util/windows/process.rb +78 -11
- data/lib/puppet/util/windows/registry.rb +1 -1
- data/lib/puppet/util/windows/root_certs.rb +5 -5
- data/lib/puppet/util/windows/security.rb +33 -35
- data/lib/puppet/util/windows/security_descriptor.rb +1 -1
- data/lib/puppet/util/windows/sid.rb +42 -4
- data/lib/puppet/util/windows/taskscheduler.rb +15 -15
- data/lib/puppet/util/windows/user.rb +10 -10
- data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
- data/lib/puppet/vendor/pathspec/LICENSE +2 -2
- data/lib/puppet/vendor/pathspec/README.md +1 -1
- data/lib/puppet/vendor/rgen/README.rdoc +1 -1
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +14 -0
- data/lib/puppet/version.rb +1 -1
- data/lib/semver.rb +17 -1
- data/man/man5/puppet.conf.5 +12 -12
- data/man/man8/extlookup2hiera.8 +1 -1
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-ca.8 +2 -2
- data/man/man8/puppet-catalog.8 +2 -2
- data/man/man8/puppet-cert.8 +2 -2
- data/man/man8/puppet-certificate.8 +2 -2
- data/man/man8/puppet-certificate_request.8 +2 -2
- data/man/man8/puppet-certificate_revocation_list.8 +2 -2
- data/man/man8/puppet-config.8 +3 -3
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +2 -2
- data/man/man8/puppet-facts.8 +2 -2
- data/man/man8/puppet-file.8 +2 -2
- data/man/man8/puppet-filebucket.8 +2 -2
- data/man/man8/puppet-help.8 +2 -2
- data/man/man8/puppet-inspect.8 +2 -2
- data/man/man8/puppet-key.8 +2 -2
- data/man/man8/puppet-man.8 +2 -2
- data/man/man8/puppet-master.8 +2 -2
- data/man/man8/puppet-module.8 +9 -9
- data/man/man8/puppet-node.8 +2 -2
- data/man/man8/puppet-parser.8 +2 -2
- data/man/man8/puppet-plugin.8 +2 -2
- data/man/man8/puppet-report.8 +2 -2
- data/man/man8/puppet-resource.8 +2 -2
- data/man/man8/puppet-resource_type.8 +2 -2
- data/man/man8/puppet-status.8 +3 -3
- data/man/man8/puppet.8 +1 -1
- data/spec/fixtures/module.tar.gz +0 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -1
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +2 -1
- data/spec/fixtures/unit/module/trailing-comma.json +1 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +3 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
- data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +205 -0
- data/spec/integration/defaults_spec.rb +14 -2
- data/spec/integration/file_system/uniquefile_spec.rb +29 -0
- data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
- data/spec/integration/node/environment_spec.rb +13 -0
- data/spec/integration/parser/dynamic_scoping_spec.rb +67 -0
- data/spec/integration/parser/parameter_defaults_spec.rb +336 -0
- data/spec/integration/parser/undef_param_spec.rb +8 -0
- data/spec/integration/provider/yumrepo_spec.rb +1 -1
- data/spec/integration/test/test_helper_spec.rb +28 -0
- data/spec/integration/transaction/report_spec.rb +16 -0
- data/spec/integration/transaction_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +194 -4
- data/spec/integration/type/package_spec.rb +5 -1
- data/spec/integration/type/tidy_spec.rb +21 -9
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/principal_spec.rb +90 -4
- data/spec/integration/util/windows/process_spec.rb +31 -0
- data/spec/integration/util/windows/security_spec.rb +6 -6
- data/spec/integration/util/windows/user_spec.rb +1 -1
- data/spec/integration/util_spec.rb +49 -27
- data/spec/lib/puppet_spec/compiler.rb +17 -0
- data/spec/lib/puppet_spec/files.rb +2 -2
- data/spec/lib/puppet_spec/pops.rb +13 -0
- data/spec/shared_behaviours/iterative_functions.rb +1 -1
- data/spec/shared_contexts/types_setup.rb +96 -0
- data/spec/unit/agent_spec.rb +1 -0
- data/spec/unit/application/agent_spec.rb +10 -0
- data/spec/unit/application/apply_spec.rb +9 -0
- data/spec/unit/configurer/downloader_spec.rb +5 -5
- data/spec/unit/configurer_spec.rb +271 -39
- data/spec/unit/data_providers/hiera_interpolation_spec.rb +57 -0
- data/spec/unit/defaults_spec.rb +15 -0
- data/spec/unit/environments_spec.rb +24 -4
- data/spec/unit/face/parser_spec.rb +43 -2
- data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
- data/spec/unit/file_serving/metadata_spec.rb +50 -0
- data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
- data/spec/unit/file_system_spec.rb +26 -0
- data/spec/unit/functions/assert_type_spec.rb +36 -2
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +11 -3
- data/spec/unit/functions/lookup_spec.rb +58 -13
- data/spec/unit/functions/regsubst_spec.rb +1 -1
- data/spec/unit/functions/reverse_each_spec.rb +108 -0
- data/spec/unit/functions/step_spec.rb +113 -0
- data/spec/unit/functions/type_spec.rb +35 -0
- data/spec/unit/functions4_spec.rb +61 -5
- data/spec/unit/indirector/catalog/compiler_spec.rb +705 -4
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +1 -1
- data/spec/unit/indirector/indirection_spec.rb +1 -1
- data/spec/unit/info_service_spec.rb +94 -32
- data/spec/unit/module_spec.rb +14 -0
- data/spec/unit/module_tool/applications/builder_spec.rb +4 -4
- data/spec/unit/network/authstore_spec.rb +1 -1
- data/spec/unit/network/http/connection_spec.rb +1 -0
- data/spec/unit/network/http/pool_spec.rb +30 -0
- data/spec/unit/node_spec.rb +1 -1
- data/spec/unit/parser/compiler_spec.rb +16 -0
- data/spec/unit/parser/scope_spec.rb +28 -11
- data/spec/unit/pops/evaluator/access_ops_spec.rb +3 -3
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +7 -1
- data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +4 -4
- data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +6 -0
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +53 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +44 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +112 -3
- data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
- data/spec/unit/pops/parser/parser_spec.rb +10 -0
- data/spec/unit/pops/parser/source_pos_adapter_spec.rb +26 -0
- data/spec/unit/pops/types/iterable_spec.rb +262 -0
- data/spec/unit/pops/types/recursion_guard_spec.rb +91 -0
- data/spec/unit/pops/types/type_acceptor_spec.rb +105 -0
- data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +275 -373
- data/spec/unit/pops/types/type_formatter_spec.rb +280 -0
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +152 -0
- data/spec/unit/pops/types/type_parser_spec.rb +58 -13
- data/spec/unit/pops/types/types_spec.rb +241 -0
- data/spec/unit/pops/validator/validator_spec.rb +100 -43
- data/spec/unit/provider/cron/parsed_spec.rb +1 -0
- data/spec/unit/provider/macauthorization_spec.rb +5 -2
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +14 -19
- data/spec/unit/provider/package/appdmg_spec.rb +3 -3
- data/spec/unit/provider/package/dnf_spec.rb +16 -0
- data/spec/unit/provider/package/pip3_spec.rb +60 -42
- data/spec/unit/provider/package/pip_spec.rb +47 -34
- data/spec/unit/provider/package/pkgdmg_spec.rb +18 -9
- data/spec/unit/provider/package/pkgng_spec.rb +4 -2
- data/spec/unit/provider/package/yum_spec.rb +11 -0
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/launchd_spec.rb +17 -35
- data/spec/unit/provider/service/systemd_spec.rb +7 -0
- data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
- data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
- data/spec/unit/resource/capability_finder_spec.rb +28 -15
- data/spec/unit/resource/catalog_spec.rb +33 -1
- data/spec/unit/resource/type_spec.rb +149 -7
- data/spec/unit/resource_spec.rb +96 -57
- data/spec/unit/settings/environment_conf_spec.rb +18 -1
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
- data/spec/unit/transaction/report_spec.rb +27 -0
- data/spec/unit/transaction/resource_harness_spec.rb +0 -47
- data/spec/unit/transaction_spec.rb +5 -0
- data/spec/unit/type/file/checksum_spec.rb +6 -0
- data/spec/unit/type/file/checksum_value_spec.rb +286 -0
- data/spec/unit/type/file/content_spec.rb +12 -193
- data/spec/unit/type/file/source_spec.rb +211 -119
- data/spec/unit/type/file_spec.rb +133 -34
- data/spec/unit/type/interface_spec.rb +32 -0
- data/spec/unit/type/macauthorization_spec.rb +4 -1
- data/spec/unit/type/yumrepo_spec.rb +2 -2
- data/spec/unit/util/filetype_spec.rb +1 -1
- data/spec/unit/util/http_proxy_spec.rb +2 -2
- data/spec/unit/util/log/destinations_spec.rb +0 -2
- data/spec/unit/util/logging_spec.rb +69 -0
- data/spec/unit/util/multi_match_spec.rb +39 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
- data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
- data/spec/unit/util/plist_spec.rb +110 -0
- data/spec/unit/util/resource_template_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -3
- data/spec/unit/util/windows/adsi_spec.rb +4 -4
- data/spec/unit/util/windows/api_types_spec.rb +42 -0
- data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
- data/spec/unit/util/windows/sid_spec.rb +1 -1
- data/spec/unit/util_spec.rb +123 -13
- data/tasks/cfpropertylist.rake +15 -0
- metadata +114 -26
- data/lib/puppet/vendor/load_plist.rb +0 -1
- data/lib/puppet/vendor/plist/CHANGELOG +0 -82
- data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
- data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/plist/README +0 -36
- data/lib/puppet/vendor/plist/Rakefile +0 -144
- data/lib/puppet/vendor/plist/docs/USAGE +0 -104
- data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
- data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
- data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
- data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
- data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
- data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
- data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
- data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
- data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
- data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
- data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
- data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
- data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
- data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
- data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
@@ -0,0 +1,39 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'puppet/util/multi_match'
|
4
|
+
|
5
|
+
describe "The Puppet::Util::MultiMatch" do
|
6
|
+
let(:not_nil) { Puppet::Util::MultiMatch::NOT_NIL }
|
7
|
+
let(:mm) { Puppet::Util::MultiMatch }
|
8
|
+
|
9
|
+
it "matches against not nil" do
|
10
|
+
expect(not_nil === 3).to be(true)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "matches against multiple values" do
|
14
|
+
expect(mm.new(not_nil, not_nil) === [3, 3]).to be(true)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "matches each value using ===" do
|
18
|
+
expect(mm.new(3, 3.14) === [Integer, Float]).to be(true)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "matches are commutative" do
|
22
|
+
expect(mm.new(3, 3.14) === mm.new(Integer, Float)).to be(true)
|
23
|
+
expect(mm.new(Integer, Float) === mm.new(3, 3.14)).to be(true)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "has TUPLE constant for match of array of two non nil values" do
|
27
|
+
expect(mm::TUPLE === [3, 3]).to be(true)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "has TRIPLE constant for match of array of two non nil values" do
|
31
|
+
expect(mm::TRIPLE === [3, 3, 3]).to be(true)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "considers length of array of values when matching" do
|
35
|
+
expect(mm.new(not_nil, not_nil) === [6, 6, 6]).to be(false)
|
36
|
+
expect(mm.new(not_nil, not_nil) === [6]).to be(false)
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -4,240 +4,241 @@ require 'spec_helper'
|
|
4
4
|
require 'puppet/util/network_device/cisco/device'
|
5
5
|
require 'puppet/util/network_device/transport/telnet'
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
describe "when creating the device" do
|
15
|
-
it "should find the enable password from the url" do
|
16
|
-
cisco = Puppet::Util::NetworkDevice::Cisco::Device.new("telnet://user:password@localhost:23/?enable=enable_password")
|
17
|
-
expect(cisco.enable_password).to eq("enable_password")
|
7
|
+
if Puppet.features.telnet?
|
8
|
+
describe Puppet::Util::NetworkDevice::Cisco::Device do
|
9
|
+
before(:each) do
|
10
|
+
@transport = stub_everything 'transport', :is_a? => true, :command => ""
|
11
|
+
@cisco = Puppet::Util::NetworkDevice::Cisco::Device.new("telnet://user:password@localhost:23/")
|
12
|
+
@cisco.transport = @transport
|
18
13
|
end
|
19
14
|
|
20
|
-
describe "
|
21
|
-
it "should
|
22
|
-
cisco =
|
23
|
-
expect(cisco.enable_password).to
|
15
|
+
describe "when creating the device" do
|
16
|
+
it "should find the enable password from the url" do
|
17
|
+
cisco = Puppet::Util::NetworkDevice::Cisco::Device.new("telnet://user:password@localhost:23/?enable=enable_password")
|
18
|
+
expect(cisco.enable_password).to eq("enable_password")
|
24
19
|
end
|
25
20
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
21
|
+
describe "decoding the enable password" do
|
22
|
+
it "should not parse a password if no query is given" do
|
23
|
+
cisco = described_class.new("telnet://user:password@localhost:23")
|
24
|
+
expect(cisco.enable_password).to be_nil
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should not parse a password if no enable param is given" do
|
28
|
+
cisco = described_class.new("telnet://user:password@localhost:23/?notenable=notapassword")
|
29
|
+
expect(cisco.enable_password).to be_nil
|
30
|
+
end
|
31
|
+
it "should decode sharps" do
|
32
|
+
cisco = described_class.new("telnet://user:password@localhost:23/?enable=enable_password%23with_a_sharp")
|
33
|
+
expect(cisco.enable_password).to eq("enable_password#with_a_sharp")
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should decode spaces" do
|
37
|
+
cisco = described_class.new("telnet://user:password@localhost:23/?enable=enable_password%20with_a_space")
|
38
|
+
expect(cisco.enable_password).to eq("enable_password with_a_space")
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should only use the query parameter" do
|
42
|
+
cisco = described_class.new("telnet://enable=:password@localhost:23/?enable=enable_password¬enable=notapassword")
|
43
|
+
expect(cisco.enable_password).to eq("enable_password")
|
44
|
+
end
|
33
45
|
end
|
34
46
|
|
35
|
-
it "should
|
36
|
-
cisco =
|
37
|
-
expect(cisco.enable_password).to eq("
|
47
|
+
it "should find the enable password from the options" do
|
48
|
+
cisco = Puppet::Util::NetworkDevice::Cisco::Device.new("telnet://user:password@localhost:23/?enable=enable_password", :enable_password => "mypass")
|
49
|
+
expect(cisco.enable_password).to eq("mypass")
|
38
50
|
end
|
39
51
|
|
40
|
-
it "should
|
41
|
-
|
42
|
-
|
52
|
+
it "should find the debug mode from the options" do
|
53
|
+
Puppet::Util::NetworkDevice::Transport::Telnet.expects(:new).with(true).returns(@transport)
|
54
|
+
cisco = Puppet::Util::NetworkDevice::Cisco::Device.new("telnet://user:password@localhost:23", :debug => true)
|
43
55
|
end
|
44
|
-
end
|
45
56
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
it "should find the debug mode from the options" do
|
52
|
-
Puppet::Util::NetworkDevice::Transport::Telnet.expects(:new).with(true).returns(@transport)
|
53
|
-
cisco = Puppet::Util::NetworkDevice::Cisco::Device.new("telnet://user:password@localhost:23", :debug => true)
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should set the debug mode to nil by default" do
|
57
|
-
Puppet::Util::NetworkDevice::Transport::Telnet.expects(:new).with(nil).returns(@transport)
|
58
|
-
cisco = Puppet::Util::NetworkDevice::Cisco::Device.new("telnet://user:password@localhost:23")
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
describe "when connecting to the physical device" do
|
63
|
-
it "should connect to the transport" do
|
64
|
-
@transport.expects(:connect)
|
65
|
-
@cisco.command
|
66
|
-
end
|
67
|
-
|
68
|
-
it "should attempt to login" do
|
69
|
-
@cisco.expects(:login)
|
70
|
-
@cisco.command
|
71
|
-
end
|
72
|
-
|
73
|
-
it "should tell the device to not page" do
|
74
|
-
@transport.expects(:command).with("terminal length 0")
|
75
|
-
@cisco.command
|
76
|
-
end
|
77
|
-
|
78
|
-
it "should enter the enable password if returned prompt is not privileged" do
|
79
|
-
@transport.stubs(:command).yields("Switch>").returns("")
|
80
|
-
@cisco.expects(:enable)
|
81
|
-
@cisco.command
|
82
|
-
end
|
83
|
-
|
84
|
-
it "should find device capabilities" do
|
85
|
-
@cisco.expects(:find_capabilities)
|
86
|
-
@cisco.command
|
57
|
+
it "should set the debug mode to nil by default" do
|
58
|
+
Puppet::Util::NetworkDevice::Transport::Telnet.expects(:new).with(nil).returns(@transport)
|
59
|
+
cisco = Puppet::Util::NetworkDevice::Cisco::Device.new("telnet://user:password@localhost:23")
|
60
|
+
end
|
87
61
|
end
|
88
62
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
63
|
+
describe "when connecting to the physical device" do
|
64
|
+
it "should connect to the transport" do
|
65
|
+
@transport.expects(:connect)
|
66
|
+
@cisco.command
|
67
|
+
end
|
93
68
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
c.command("mycommand")
|
69
|
+
it "should attempt to login" do
|
70
|
+
@cisco.expects(:login)
|
71
|
+
@cisco.command
|
98
72
|
end
|
99
|
-
end
|
100
73
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
74
|
+
it "should tell the device to not page" do
|
75
|
+
@transport.expects(:command).with("terminal length 0")
|
76
|
+
@cisco.command
|
77
|
+
end
|
105
78
|
|
106
|
-
|
107
|
-
|
108
|
-
@
|
109
|
-
@
|
110
|
-
@transport.expects(:expect).never
|
111
|
-
@cisco.login
|
79
|
+
it "should enter the enable password if returned prompt is not privileged" do
|
80
|
+
@transport.stubs(:command).yields("Switch>").returns("")
|
81
|
+
@cisco.expects(:enable)
|
82
|
+
@cisco.command
|
112
83
|
end
|
113
84
|
|
114
|
-
it "should
|
115
|
-
@
|
116
|
-
@cisco.
|
85
|
+
it "should find device capabilities" do
|
86
|
+
@cisco.expects(:find_capabilities)
|
87
|
+
@cisco.command
|
117
88
|
end
|
118
89
|
|
119
|
-
it "should
|
120
|
-
@transport.expects(:command).with("
|
121
|
-
@
|
122
|
-
@cisco.login
|
90
|
+
it "should execute given command" do
|
91
|
+
@transport.expects(:command).with("mycommand")
|
92
|
+
@cisco.command("mycommand")
|
123
93
|
end
|
124
94
|
|
125
|
-
it "should
|
126
|
-
@
|
127
|
-
@
|
128
|
-
|
129
|
-
|
95
|
+
it "should yield to the command block if one is provided" do
|
96
|
+
@transport.expects(:command).with("mycommand")
|
97
|
+
@cisco.command do |c|
|
98
|
+
c.command("mycommand")
|
99
|
+
end
|
130
100
|
end
|
131
|
-
end
|
132
101
|
|
133
|
-
|
134
|
-
|
135
|
-
@cisco.
|
136
|
-
expect{ @cisco.enable }.to raise_error(RuntimeError, /Can't issue "enable" to enter privileged/)
|
102
|
+
it "should close the device transport" do
|
103
|
+
@transport.expects(:close)
|
104
|
+
@cisco.command
|
137
105
|
end
|
138
106
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
107
|
+
describe "when login in" do
|
108
|
+
it "should not login if transport handles login" do
|
109
|
+
@transport.expects(:handles_login?).returns(true)
|
110
|
+
@transport.expects(:command).never
|
111
|
+
@transport.expects(:expect).never
|
112
|
+
@cisco.login
|
113
|
+
end
|
114
|
+
|
115
|
+
it "should send username if one has been provided" do
|
116
|
+
@transport.expects(:command).with("user", :prompt => /^Password:/)
|
117
|
+
@cisco.login
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should send password after the username" do
|
121
|
+
@transport.expects(:command).with("user", :prompt => /^Password:/)
|
122
|
+
@transport.expects(:command).with("password")
|
123
|
+
@cisco.login
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should expect the Password: prompt if no user was sent" do
|
127
|
+
@cisco.url.user = ''
|
128
|
+
@transport.expects(:expect).with(/^Password:/)
|
129
|
+
@transport.expects(:command).with("password")
|
130
|
+
@cisco.login
|
131
|
+
end
|
143
132
|
end
|
144
133
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
134
|
+
describe "when entering enable password" do
|
135
|
+
it "should raise an error if no enable password has been set" do
|
136
|
+
@cisco.enable_password = nil
|
137
|
+
expect{ @cisco.enable }.to raise_error(RuntimeError, /Can't issue "enable" to enter privileged/)
|
138
|
+
end
|
139
|
+
|
140
|
+
it "should send the enable command and expect an enable prompt" do
|
141
|
+
@cisco.enable_password = 'mypass'
|
142
|
+
@transport.expects(:command).with("enable", :prompt => /^Password:/)
|
143
|
+
@cisco.enable
|
144
|
+
end
|
145
|
+
|
146
|
+
it "should send the enable password" do
|
147
|
+
@cisco.enable_password = 'mypass'
|
148
|
+
@transport.stubs(:command).with("enable", :prompt => /^Password:/)
|
149
|
+
@transport.expects(:command).with("mypass")
|
150
|
+
@cisco.enable
|
151
|
+
end
|
150
152
|
end
|
151
153
|
end
|
152
|
-
end
|
153
154
|
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
155
|
+
describe "when finding network device capabilities" do
|
156
|
+
it "should try to execute sh vlan brief" do
|
157
|
+
@transport.expects(:command).with("sh vlan brief").returns("")
|
158
|
+
@cisco.find_capabilities
|
159
|
+
end
|
159
160
|
|
160
|
-
|
161
|
-
|
161
|
+
it "should detect errors" do
|
162
|
+
@transport.stubs(:command).with("sh vlan brief").returns(<<eos)
|
162
163
|
Switch#sh vlan brief
|
163
164
|
% Ambiguous command: "sh vlan brief"
|
164
165
|
Switch#
|
165
166
|
eos
|
166
167
|
|
167
|
-
|
168
|
-
|
168
|
+
@cisco.find_capabilities
|
169
|
+
expect(@cisco).not_to be_support_vlan_brief
|
170
|
+
end
|
169
171
|
end
|
170
|
-
end
|
171
|
-
|
172
172
|
|
173
|
-
{
|
174
|
-
"Fa 0/1" => "FastEthernet0/1",
|
175
|
-
"Fa0/1" => "FastEthernet0/1",
|
176
|
-
"FastEth 0/1" => "FastEthernet0/1",
|
177
|
-
"Gi1" => "GigabitEthernet1",
|
178
|
-
"Te2" => "TenGigabitEthernet2",
|
179
|
-
"Di9" => "Dialer9",
|
180
|
-
"Ethernet 0/0/1" => "Ethernet0/0/1",
|
181
|
-
"E0" => "Ethernet0",
|
182
|
-
"ATM 0/1.1" => "ATM0/1.1",
|
183
|
-
"VLAN99" => "VLAN99"
|
184
|
-
}.each do |input,expected|
|
185
|
-
it "should canonicalize #{input} to #{expected}" do
|
186
|
-
expect(@cisco.canonalize_ifname(input)).to eq(expected)
|
187
|
-
end
|
188
|
-
end
|
189
173
|
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
174
|
+
{
|
175
|
+
"Fa 0/1" => "FastEthernet0/1",
|
176
|
+
"Fa0/1" => "FastEthernet0/1",
|
177
|
+
"FastEth 0/1" => "FastEthernet0/1",
|
178
|
+
"Gi1" => "GigabitEthernet1",
|
179
|
+
"Te2" => "TenGigabitEthernet2",
|
180
|
+
"Di9" => "Dialer9",
|
181
|
+
"Ethernet 0/0/1" => "Ethernet0/0/1",
|
182
|
+
"E0" => "Ethernet0",
|
183
|
+
"ATM 0/1.1" => "ATM0/1.1",
|
184
|
+
"VLAN99" => "VLAN99"
|
185
|
+
}.each do |input,expected|
|
186
|
+
it "should canonicalize #{input} to #{expected}" do
|
187
|
+
expect(@cisco.canonalize_ifname(input)).to eq(expected)
|
195
188
|
end
|
196
189
|
end
|
197
190
|
|
198
|
-
describe "when updating
|
199
|
-
|
200
|
-
|
201
|
-
|
191
|
+
describe "when updating device vlans" do
|
192
|
+
describe "when removing a vlan" do
|
193
|
+
it "should issue the no vlan command" do
|
194
|
+
@transport.expects(:command).with("no vlan 200")
|
195
|
+
@cisco.update_vlan("200", {:ensure => :present, :name => "200"}, { :ensure=> :absent})
|
196
|
+
end
|
202
197
|
end
|
203
198
|
|
204
|
-
|
205
|
-
|
206
|
-
|
199
|
+
describe "when updating a vlan" do
|
200
|
+
it "should issue the vlan command to enter global vlan modifications" do
|
201
|
+
@transport.expects(:command).with("vlan 200")
|
202
|
+
@cisco.update_vlan("200", {:ensure => :present, :name => "200"}, { :ensure=> :present, :name => "200"})
|
203
|
+
end
|
204
|
+
|
205
|
+
it "should issue the name command to modify the vlan description" do
|
206
|
+
@transport.expects(:command).with("name myvlan")
|
207
|
+
@cisco.update_vlan("200", {:ensure => :present, :name => "200"}, { :ensure=> :present, :name => "200", :description => "myvlan"})
|
208
|
+
end
|
207
209
|
end
|
208
210
|
end
|
209
|
-
end
|
210
211
|
|
211
|
-
|
212
|
+
describe "when parsing interface" do
|
212
213
|
|
213
|
-
|
214
|
-
|
214
|
+
it "should parse interface output" do
|
215
|
+
@cisco.expects(:parse_interface).returns({ :ensure => :present })
|
215
216
|
|
216
|
-
|
217
|
-
|
217
|
+
expect(@cisco.interface("FastEthernet0/1")).to eq({ :ensure => :present })
|
218
|
+
end
|
218
219
|
|
219
|
-
|
220
|
-
|
221
|
-
|
220
|
+
it "should parse trunking and merge results" do
|
221
|
+
@cisco.stubs(:parse_interface).returns({ :ensure => :present })
|
222
|
+
@cisco.expects(:parse_trunking).returns({ :native_vlan => "100" })
|
222
223
|
|
223
|
-
|
224
|
-
|
224
|
+
expect(@cisco.interface("FastEthernet0/1")).to eq({ :ensure => :present, :native_vlan => "100" })
|
225
|
+
end
|
225
226
|
|
226
|
-
|
227
|
-
|
227
|
+
it "should return an absent interface if parse_interface returns nothing" do
|
228
|
+
@cisco.stubs(:parse_interface).returns({})
|
228
229
|
|
229
|
-
|
230
|
-
|
230
|
+
expect(@cisco.interface("FastEthernet0/1")).to eq({ :ensure => :absent })
|
231
|
+
end
|
231
232
|
|
232
|
-
|
233
|
-
|
234
|
-
|
233
|
+
it "should parse ip address information and merge results" do
|
234
|
+
@cisco.stubs(:parse_interface).returns({ :ensure => :present })
|
235
|
+
@cisco.expects(:parse_interface_config).returns({ :ipaddress => [24,IPAddr.new('192.168.0.24'), nil] })
|
235
236
|
|
236
|
-
|
237
|
-
|
237
|
+
expect(@cisco.interface("FastEthernet0/1")).to eq({ :ensure => :present, :ipaddress => [24,IPAddr.new('192.168.0.24'), nil] })
|
238
|
+
end
|
238
239
|
|
239
|
-
|
240
|
-
|
240
|
+
it "should parse the sh interface command" do
|
241
|
+
@transport.stubs(:command).with("sh interface FastEthernet0/1").returns(<<eos)
|
241
242
|
Switch#sh interfaces FastEthernet 0/1
|
242
243
|
FastEthernet0/1 is down, line protocol is down
|
243
244
|
Hardware is Fast Ethernet, address is 00d0.bbe2.19c1 (bia 00d0.bbe2.19c1)
|
@@ -266,12 +267,12 @@ FastEthernet0/1 is down, line protocol is down
|
|
266
267
|
Switch#
|
267
268
|
eos
|
268
269
|
|
269
|
-
|
270
|
-
|
270
|
+
expect(@cisco.parse_interface("FastEthernet0/1")).to eq({ :ensure => :absent, :duplex => :auto, :speed => :auto })
|
271
|
+
end
|
271
272
|
|
272
|
-
|
273
|
-
|
274
|
-
|
273
|
+
it "should be able to parse the sh vlan brief command output" do
|
274
|
+
@cisco.stubs(:support_vlan_brief?).returns(true)
|
275
|
+
@transport.stubs(:command).with("sh vlan brief").returns(<<eos)
|
275
276
|
Switch#sh vlan brief
|
276
277
|
VLAN Name Status Ports
|
277
278
|
---- -------------------------------- --------- -------------------------------
|
@@ -285,11 +286,11 @@ VLAN Name Status Ports
|
|
285
286
|
Switch#
|
286
287
|
eos
|
287
288
|
|
288
|
-
|
289
|
-
|
289
|
+
expect(@cisco.parse_vlans).to eq({"100"=>{:status=>"active", :interfaces=>["FastEthernet0/1", "FastEthernet0/2"], :description=>"management", :name=>"100"}, "1"=>{:status=>"active", :interfaces=>["FastEthernet0/3", "FastEthernet0/4", "FastEthernet0/5", "FastEthernet0/6", "FastEthernet0/7", "FastEthernet0/8", "FastEthernet0/9", "FastEthernet0/10", "FastEthernet0/11", "FastEthernet0/12", "FastEthernet0/13", "FastEthernet0/14", "FastEthernet0/15", "FastEthernet0/16", "FastEthernet0/17", "FastEthernet0/18", "FastEthernet0/23", "FastEthernet0/24"], :description=>"default", :name=>"1"}, "10"=>{:status=>"active", :interfaces=>[], :description=>"VLAN0010", :name=>"10"}})
|
290
|
+
end
|
290
291
|
|
291
|
-
|
292
|
-
|
292
|
+
it "should parse trunk switchport information" do
|
293
|
+
@transport.stubs(:command).with("sh interface FastEthernet0/21 switchport").returns(<<eos)
|
293
294
|
Switch#sh interfaces FastEthernet 0/21 switchport
|
294
295
|
Name: Fa0/21
|
295
296
|
Switchport: Enabled
|
@@ -312,20 +313,20 @@ Self Loopback: No
|
|
312
313
|
Switch#
|
313
314
|
eos
|
314
315
|
|
315
|
-
|
316
|
-
|
316
|
+
expect(@cisco.parse_trunking("FastEthernet0/21")).to eq({ :mode => :trunk, :encapsulation => :dot1q, :native_vlan => "1", :allowed_trunk_vlans=>:all, })
|
317
|
+
end
|
317
318
|
|
318
|
-
|
319
|
-
|
319
|
+
it "should parse dynamic desirable switchport information with native and allowed vlans" do
|
320
|
+
@transport.stubs(:command).with("sh interface GigabitEthernet 0/1 switchport").returns(<<eos)
|
320
321
|
c2960#sh interfaces GigabitEthernet 0/1 switchport
|
321
322
|
Name: Gi0/1
|
322
323
|
Switchport: Enabled
|
323
|
-
Administrative Mode:
|
324
|
+
Administrative Mode: dynamic desirable
|
324
325
|
Operational Mode: trunk
|
325
326
|
Administrative Trunking Encapsulation: dot1q
|
326
327
|
Operational Trunking Encapsulation: dot1q
|
327
328
|
Negotiation of Trunking: On
|
328
|
-
Access Mode VLAN:
|
329
|
+
Access Mode VLAN: 100 (SHDSL)
|
329
330
|
Trunking Native Mode VLAN: 1 (default)
|
330
331
|
Administrative Native VLAN tagging: enabled
|
331
332
|
Voice VLAN: none
|
@@ -350,11 +351,11 @@ Appliance trust: none
|
|
350
351
|
c2960#
|
351
352
|
eos
|
352
353
|
|
353
|
-
|
354
|
-
|
354
|
+
expect(@cisco.parse_trunking("GigabitEthernet 0/1")).to eq({ :mode => "dynamic desirable", :encapsulation => :dot1q, :access_vlan => "100", :native_vlan => "1", :allowed_trunk_vlans=>"1,99", })
|
355
|
+
end
|
355
356
|
|
356
|
-
|
357
|
-
|
357
|
+
it "should parse access switchport information" do
|
358
|
+
@transport.stubs(:command).with("sh interface FastEthernet0/1 switchport").returns(<<eos)
|
358
359
|
Switch#sh interfaces FastEthernet 0/1 switchport
|
359
360
|
Name: Fa0/1
|
360
361
|
Switchport: Enabled
|
@@ -376,11 +377,47 @@ Self Loopback: No
|
|
376
377
|
Switch#
|
377
378
|
eos
|
378
379
|
|
379
|
-
|
380
|
-
|
380
|
+
expect(@cisco.parse_trunking("FastEthernet0/1")).to eq({ :mode => :access, :access_vlan => "100" })
|
381
|
+
end
|
381
382
|
|
382
|
-
|
383
|
-
|
383
|
+
it "should parse auto/negotiate switchport information" do
|
384
|
+
@transport.stubs(:command).with("sh interface FastEthernet0/24 switchport").returns(<<eos)
|
385
|
+
Switch#sh interfaces FastEthernet 0/24 switchport
|
386
|
+
Name: Fa0/24
|
387
|
+
Switchport: Enabled
|
388
|
+
Administrative mode: dynamic auto
|
389
|
+
Operational Mode: static access
|
390
|
+
Administrative Trunking Encapsulation: negotiate
|
391
|
+
Operational Trunking Encapsulation: native
|
392
|
+
Negotiation of Trunking: On
|
393
|
+
Access Mode VLAN: 1 (default)
|
394
|
+
Trunking Native Mode VLAN: 2 (default)
|
395
|
+
Administrative Native VLAN tagging: enabled
|
396
|
+
Voice VLAN: none
|
397
|
+
Administrative private-vlan host-association: none
|
398
|
+
Administrative private-vlan mapping: none
|
399
|
+
Administrative private-vlan trunk native VLAN: none
|
400
|
+
Administrative private-vlan trunk Native VLAN tagging: enabled
|
401
|
+
Administrative private-vlan trunk encapsulation: dot1q
|
402
|
+
Administrative private-vlan trunk normal VLANs: none
|
403
|
+
Administrative private-vlan trunk private VLANs: none
|
404
|
+
Operational private-vlan: none
|
405
|
+
Trunking VLANs Enabled: ALL
|
406
|
+
Pruning VLANs Enabled: 2-1001
|
407
|
+
Capture Mode Disabled
|
408
|
+
Capture VLANs Allowed: ALL
|
409
|
+
|
410
|
+
Protected: false
|
411
|
+
Unknown unicast blocked: disabled
|
412
|
+
Unknown multicast blocked: disabled
|
413
|
+
Appliance trust: none
|
414
|
+
eos
|
415
|
+
|
416
|
+
expect(@cisco.parse_trunking("FastEthernet0/24")).to eq({ :mode => "dynamic auto", :encapsulation => :negotiate, :allowed_trunk_vlans => :all, :access_vlan => "1", :native_vlan => "2" })
|
417
|
+
end
|
418
|
+
|
419
|
+
it "should parse ip addresses" do
|
420
|
+
@transport.stubs(:command).with("sh running-config interface Vlan 1 | begin interface").returns(<<eos)
|
384
421
|
router#sh running-config interface Vlan 1 | begin interface
|
385
422
|
interface Vlan1
|
386
423
|
description $ETH-SW-LAUNCH$$INTF-INFO-HWIC 4ESW$$FW_INSIDE$
|
@@ -407,13 +444,13 @@ end
|
|
407
444
|
|
408
445
|
router#
|
409
446
|
eos
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
447
|
+
expect(@cisco.parse_interface_config("Vlan 1")).to eq({:ipaddress=>[[24, IPAddr.new('192.168.0.24'), 'secondary'],
|
448
|
+
[24, IPAddr.new('192.168.0.1'), nil],
|
449
|
+
[64, IPAddr.new('2001:07a8:71c1::'), "eui-64"]]})
|
450
|
+
end
|
414
451
|
|
415
|
-
|
416
|
-
|
452
|
+
it "should parse etherchannel membership" do
|
453
|
+
@transport.stubs(:command).with("sh running-config interface Gi0/17 | begin interface").returns(<<eos)
|
417
454
|
c2960#sh running-config interface Gi0/17 | begin interface
|
418
455
|
interface GigabitEthernet0/17
|
419
456
|
description member of Po1
|
@@ -426,20 +463,20 @@ end
|
|
426
463
|
|
427
464
|
c2960#
|
428
465
|
eos
|
429
|
-
|
466
|
+
expect(@cisco.parse_interface_config("Gi0/17")).to eq({:etherchannel=>"1"})
|
467
|
+
end
|
430
468
|
end
|
431
|
-
end
|
432
469
|
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
470
|
+
describe "when finding device facts" do
|
471
|
+
it "should delegate to the cisco facts entity" do
|
472
|
+
facts = stub 'facts'
|
473
|
+
Puppet::Util::NetworkDevice::Cisco::Facts.expects(:new).returns(facts)
|
437
474
|
|
438
|
-
|
475
|
+
facts.expects(:retrieve).returns(:facts)
|
439
476
|
|
440
|
-
|
477
|
+
expect(@cisco.facts).to eq(:facts)
|
478
|
+
end
|
441
479
|
end
|
442
|
-
end
|
443
480
|
|
481
|
+
end
|
444
482
|
end
|
445
|
-
|