chef 16.10.17-universal-mingw32 → 17.1.35-universal-mingw32
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.
- checksums.yaml +4 -4
- data/Gemfile +8 -21
- data/README.md +1 -1
- data/Rakefile +13 -2
- data/chef-universal-mingw32.gemspec +1 -1
- data/chef.gemspec +11 -24
- data/distro/ruby_bin_folder/AMD64/Chef.PowerShell.Wrapper.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/Chef.PowerShell.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/Newtonsoft.Json.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Chef.PowerShell.Wrapper.Core.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.pdb +0 -0
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.NETCore.App.deps.json +153 -149
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Diagnostics.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Management.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Utility.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.ConsoleHost.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.CoreCLR.Eventing.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.MarkdownRender.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Security.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.WSMan.Management.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.WSMan.Runtime.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Newtonsoft.Json.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.EventLog.Messages.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.EventLog.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Drawing.Common.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Management.Automation.dll +0 -0
- data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.Pkcs.dll +0 -0
- data/distro/ruby_bin_folder/x86/Chef.PowerShell.dll +0 -0
- data/distro/ruby_bin_folder/x86/Chef.Powershell.Wrapper.dll +0 -0
- data/distro/ruby_bin_folder/x86/Newtonsoft.Json.dll +0 -0
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Chef.PowerShell.Wrapper.Core.dll +0 -0
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.dll +0 -0
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.pdb +0 -0
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.NETCore.App.deps.json +153 -149
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Diagnostics.dll +0 -0
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Management.dll +0 -0
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Utility.dll +0 -0
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.ConsoleHost.dll +0 -0
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.CoreCLR.Eventing.dll +0 -0
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.MarkdownRender.dll +0 -0
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Security.dll +0 -0
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.WSMan.Management.dll +0 -0
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.WSMan.Runtime.dll +0 -0
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Newtonsoft.Json.dll +0 -0
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.EventLog.Messages.dll +0 -0
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.EventLog.dll +0 -0
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Drawing.Common.dll +0 -0
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Management.Automation.dll +0 -0
- data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.Pkcs.dll +0 -0
- data/lib/chef/application/base.rb +1 -1
- data/lib/chef/applications.rb +0 -1
- data/lib/chef/chef_fs/command_line.rb +5 -2
- data/lib/chef/chef_fs/file_pattern.rb +2 -2
- data/lib/chef/chef_fs/file_system.rb +9 -10
- data/lib/chef/client.rb +2 -2
- data/lib/chef/compliance/default_attributes.rb +11 -6
- data/lib/chef/compliance/fetcher/automate.rb +0 -7
- data/lib/chef/compliance/reporter/automate.rb +17 -7
- data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
- data/lib/chef/compliance/reporter/cli.rb +77 -0
- data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
- data/lib/chef/compliance/reporter/json_file.rb +8 -1
- data/lib/chef/compliance/runner.rb +71 -28
- data/lib/chef/cookbook/cookbook_version_loader.rb +3 -3
- data/lib/chef/cookbook/gem_installer.rb +5 -1
- data/lib/chef/cookbook/synchronizer.rb +3 -5
- data/lib/chef/cookbook_loader.rb +2 -4
- data/lib/chef/cookbook_uploader.rb +0 -1
- data/lib/chef/data_bag_item.rb +11 -2
- data/lib/chef/delayed_evaluator.rb +4 -0
- data/lib/chef/deprecated.rb +4 -0
- data/lib/chef/dsl/chef_vault.rb +6 -6
- data/lib/chef/dsl/declare_resource.rb +5 -10
- data/lib/chef/dsl/reboot_pending.rb +1 -2
- data/lib/chef/formatters/doc.rb +2 -1
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
- data/lib/chef/group.rb +75 -0
- data/lib/chef/mixin/get_source_from_package.rb +1 -1
- data/lib/chef/node.rb +1 -1
- data/lib/chef/node/attribute.rb +6 -4
- data/lib/chef/node/immutable_collections.rb +13 -0
- data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
- data/lib/chef/org.rb +3 -2
- data/lib/chef/property.rb +18 -0
- data/lib/chef/provider.rb +1 -1
- data/lib/chef/provider/cron.rb +1 -1
- data/lib/chef/provider/directory.rb +6 -6
- data/lib/chef/provider/execute.rb +2 -1
- data/lib/chef/provider/file.rb +2 -2
- data/lib/chef/provider/git.rb +5 -7
- data/lib/chef/provider/group/groupadd.rb +3 -3
- data/lib/chef/provider/group/groupmod.rb +3 -3
- data/lib/chef/provider/group/pw.rb +3 -3
- data/lib/chef/provider/ifconfig.rb +2 -2
- data/lib/chef/provider/link.rb +3 -3
- data/lib/chef/provider/mount.rb +12 -7
- data/lib/chef/provider/mount/aix.rb +3 -3
- data/lib/chef/provider/mount/mount.rb +5 -5
- data/lib/chef/provider/mount/windows.rb +1 -1
- data/lib/chef/provider/package.rb +17 -21
- data/lib/chef/provider/package/apt.rb +27 -1
- data/lib/chef/provider/package/deb.rb +3 -3
- data/lib/chef/provider/package/dnf/dnf_helper.py +16 -11
- data/lib/chef/provider/package/dnf/python_helper.rb +9 -8
- data/lib/chef/provider/package/portage.rb +2 -2
- data/lib/chef/provider/package/rubygems.rb +11 -17
- data/lib/chef/provider/package/windows.rb +2 -4
- data/lib/chef/provider/package/yum.rb +1 -4
- data/lib/chef/provider/package/yum/python_helper.rb +15 -10
- data/lib/chef/provider/package/yum/yum_helper.py +51 -63
- data/lib/chef/provider/registry_key.rb +1 -1
- data/lib/chef/provider/route.rb +2 -2
- data/lib/chef/provider/service.rb +6 -6
- data/lib/chef/provider/service/aixinit.rb +1 -1
- data/lib/chef/provider/service/debian.rb +1 -1
- data/lib/chef/provider/service/freebsd.rb +15 -21
- data/lib/chef/provider/service/macosx.rb +7 -7
- data/lib/chef/provider/service/systemd.rb +43 -14
- data/lib/chef/provider/service/upstart.rb +2 -13
- data/lib/chef/provider/service/windows.rb +12 -12
- data/lib/chef/provider/subversion.rb +10 -12
- data/lib/chef/provider/systemd_unit.rb +36 -10
- data/lib/chef/provider/template/content.rb +3 -7
- data/lib/chef/provider/user.rb +2 -2
- data/lib/chef/provider/user/dscl.rb +1 -1
- data/lib/chef/provider/user/mac.rb +17 -20
- data/lib/chef/provider/user/pw.rb +1 -1
- data/lib/chef/provider/user/windows.rb +1 -1
- data/lib/chef/provider/windows_script.rb +1 -1
- data/lib/chef/provider/zypper_repository.rb +2 -2
- data/lib/chef/providers.rb +0 -1
- data/lib/chef/resource.rb +6 -7
- data/lib/chef/resource/alternatives.rb +6 -6
- data/lib/chef/resource/apt_package.rb +1 -1
- data/lib/chef/resource/apt_preference.rb +2 -2
- data/lib/chef/resource/apt_repository.rb +6 -6
- data/lib/chef/resource/apt_update.rb +3 -2
- data/lib/chef/resource/archive_file.rb +2 -3
- data/lib/chef/resource/breakpoint.rb +1 -1
- data/lib/chef/resource/build_essential.rb +2 -6
- data/lib/chef/resource/chef_client_config.rb +2 -2
- data/lib/chef/resource/chef_client_cron.rb +5 -5
- data/lib/chef/resource/chef_client_launchd.rb +4 -4
- data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
- data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
- data/lib/chef/resource/chef_handler.rb +3 -7
- data/lib/chef/resource/chef_sleep.rb +1 -1
- data/lib/chef/resource/chef_vault_secret.rb +3 -8
- data/lib/chef/resource/chocolatey_config.rb +2 -6
- data/lib/chef/resource/chocolatey_feature.rb +2 -6
- data/lib/chef/resource/chocolatey_source.rb +4 -10
- data/lib/chef/resource/cron/_cron_shared.rb +2 -2
- data/lib/chef/resource/cron_access.rb +2 -4
- data/lib/chef/resource/dmg_package.rb +6 -10
- data/lib/chef/resource/dpkg_package.rb +1 -1
- data/lib/chef/resource/execute.rb +8 -3
- data/lib/chef/resource/file.rb +1 -1
- data/lib/chef/resource/group.rb +2 -2
- data/lib/chef/resource/homebrew_cask.rb +2 -6
- data/lib/chef/resource/homebrew_tap.rb +2 -6
- data/lib/chef/resource/hostname.rb +21 -17
- data/lib/chef/resource/http_request.rb +1 -1
- data/lib/chef/resource/inspec_waiver_file_entry.rb +155 -0
- data/lib/chef/resource/kernel_module.rb +6 -17
- data/lib/chef/resource/locale.rb +2 -3
- data/lib/chef/resource/lwrp_base.rb +19 -0
- data/lib/chef/resource/macos_userdefaults.rb +10 -14
- data/lib/chef/resource/mdadm.rb +53 -7
- data/lib/chef/resource/mount.rb +2 -1
- data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
- data/lib/chef/resource/openssl_x509_certificate.rb +2 -2
- data/lib/chef/resource/plist.rb +7 -7
- data/lib/chef/resource/powershell_script.rb +1 -1
- data/lib/chef/resource/remote_file.rb +3 -3
- data/lib/chef/resource/rhsm_errata.rb +16 -1
- data/lib/chef/resource/rhsm_errata_level.rb +10 -1
- data/lib/chef/resource/rhsm_register.rb +12 -6
- data/lib/chef/resource/rhsm_repo.rb +2 -6
- data/lib/chef/resource/rhsm_subscription.rb +2 -6
- data/lib/chef/resource/scm/git.rb +1 -1
- data/lib/chef/resource/sudo.rb +6 -6
- data/lib/chef/resource/sysctl.rb +2 -6
- data/lib/chef/resource/systemd_unit.rb +2 -2
- data/lib/chef/resource/template.rb +1 -1
- data/lib/chef/resource/timezone.rb +1 -3
- data/lib/chef/resource/user/mac_user.rb +1 -1
- data/lib/chef/resource/user_ulimit.rb +2 -2
- data/lib/chef/resource/windows_ad_join.rb +2 -6
- data/lib/chef/resource/windows_audit_policy.rb +1 -1
- data/lib/chef/resource/windows_auto_run.rb +2 -5
- data/lib/chef/resource/windows_certificate.rb +207 -73
- data/lib/chef/resource/windows_dfs_folder.rb +2 -6
- data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
- data/lib/chef/resource/windows_dfs_server.rb +1 -3
- data/lib/chef/resource/windows_dns_record.rb +2 -6
- data/lib/chef/resource/windows_dns_zone.rb +2 -6
- data/lib/chef/resource/windows_env.rb +6 -5
- data/lib/chef/resource/windows_feature.rb +3 -9
- data/lib/chef/resource/windows_feature_dism.rb +2 -6
- data/lib/chef/resource/windows_feature_powershell.rb +3 -3
- data/lib/chef/resource/windows_firewall_profile.rb +4 -4
- data/lib/chef/resource/windows_firewall_rule.rb +2 -5
- data/lib/chef/resource/windows_font.rb +3 -5
- data/lib/chef/resource/windows_pagefile.rb +4 -8
- data/lib/chef/resource/windows_path.rb +4 -4
- data/lib/chef/resource/windows_printer.rb +4 -4
- data/lib/chef/resource/windows_printer_port.rb +6 -6
- data/lib/chef/resource/windows_security_policy.rb +56 -40
- data/lib/chef/resource/windows_share.rb +14 -21
- data/lib/chef/resource/windows_shortcut.rb +4 -6
- data/lib/chef/resource/windows_task.rb +18 -6
- data/lib/chef/resource/windows_uac.rb +1 -1
- data/lib/chef/resource/windows_user_privilege.rb +4 -4
- data/lib/chef/resource/windows_workgroup.rb +1 -2
- data/lib/chef/resource_builder.rb +8 -2
- data/lib/chef/resources.rb +1 -1
- data/lib/chef/run_lock.rb +1 -1
- data/lib/chef/runner.rb +1 -1
- data/lib/chef/shell/ext.rb +3 -3
- data/lib/chef/user.rb +0 -1
- data/lib/chef/user_v1.rb +3 -4
- data/lib/chef/util/dsc/configuration_generator.rb +1 -0
- data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +9 -2
- data/lib/chef/win32/registry.rb +4 -2
- data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
- data/spec/data/lwrp/resources/bar.rb +2 -0
- data/spec/data/lwrp/resources/buck_passer.rb +1 -0
- data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
- data/spec/data/lwrp/resources/foo.rb +2 -0
- data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
- data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
- data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
- data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
- data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
- data/spec/data/lwrp_override/resources/foo.rb +1 -0
- data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
- data/spec/data/rubygems.org/sexp_processor-info +49 -0
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
- data/spec/functional/dsl/registry_helper_spec.rb +1 -1
- data/spec/functional/resource/aixinit_service_spec.rb +7 -7
- data/spec/functional/resource/apt_package_spec.rb +1 -1
- data/spec/functional/resource/chocolatey_package_spec.rb +13 -0
- data/spec/functional/resource/cron_spec.rb +1 -1
- data/spec/functional/resource/dnf_package_spec.rb +857 -534
- data/spec/functional/resource/group_spec.rb +1 -1
- data/spec/functional/resource/link_spec.rb +1 -1
- data/spec/functional/resource/registry_spec.rb +8 -8
- data/spec/functional/resource/remote_file_spec.rb +1 -1
- data/spec/functional/resource/user/mac_user_spec.rb +2 -2
- data/spec/functional/resource/windows_certificate_spec.rb +92 -35
- data/spec/functional/resource/windows_env_spec.rb +2 -2
- data/spec/functional/resource/yum_package_spec.rb +495 -428
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +1 -1
- data/spec/integration/client/client_spec.rb +5 -22
- data/spec/integration/client/exit_code_spec.rb +1 -1
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/compliance/compliance_spec.rb +3 -2
- data/spec/integration/ohai/ohai_spec.rb +7 -6
- data/spec/integration/recipes/accumulator_spec.rb +13 -1
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
- data/spec/integration/recipes/lwrp_spec.rb +3 -1
- data/spec/integration/recipes/notifies_spec.rb +15 -1
- data/spec/integration/recipes/notifying_block_spec.rb +2 -1
- data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
- data/spec/integration/recipes/unified_mode_spec.rb +71 -1
- data/spec/integration/recipes/use_partial_spec.rb +4 -1
- data/spec/spec_helper.rb +14 -13
- data/spec/support/chef_helpers.rb +1 -17
- data/spec/support/lib/chef/resource/with_state.rb +0 -1
- data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
- data/spec/support/lib/chef/resource/zen_master.rb +0 -1
- data/spec/support/matchers/leak.rb +7 -9
- data/spec/support/platform_helpers.rb +5 -8
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/integration/integration_helper.rb +0 -1
- data/spec/support/shared/unit/provider/file.rb +15 -1
- data/spec/support/shared/unit/script_resource.rb +2 -2
- data/spec/unit/application/solo_spec.rb +2 -2
- data/spec/unit/chef_fs/diff_spec.rb +1 -1
- data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -1
- data/spec/unit/chef_fs/file_system_spec.rb +1 -1
- data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
- data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
- data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
- data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
- data/spec/unit/compliance/runner_spec.rb +85 -10
- data/spec/unit/data_bag_item_spec.rb +1 -6
- data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
- data/spec/unit/dsl/registry_helper_spec.rb +1 -1
- data/spec/unit/lwrp_spec.rb +1 -1
- data/spec/unit/mixin/params_validate_spec.rb +4 -3
- data/spec/unit/node/attribute_spec.rb +1 -1
- data/spec/unit/node_spec.rb +78 -0
- data/spec/unit/org_group_spec.rb +45 -0
- data/spec/unit/property_spec.rb +23 -22
- data/spec/unit/provider/cron_spec.rb +1 -1
- data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
- data/spec/unit/provider/group/groupmod_spec.rb +2 -2
- data/spec/unit/provider/group/pw_spec.rb +2 -2
- data/spec/unit/provider/group_spec.rb +1 -1
- data/spec/unit/provider/link_spec.rb +1 -1
- data/spec/unit/provider/mount/mount_spec.rb +51 -0
- data/spec/unit/provider/package/apt_spec.rb +84 -18
- data/spec/unit/provider/package/deb_spec.rb +3 -3
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -0
- data/spec/unit/provider/package/rubygems_spec.rb +21 -33
- data/spec/unit/provider/package/yum/python_helper_spec.rb +1 -0
- data/spec/unit/provider/service/arch_service_spec.rb +1 -0
- data/spec/unit/provider/service/debian_service_spec.rb +1 -0
- data/spec/unit/provider/service/macosx_spec.rb +5 -5
- data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
- data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
- data/spec/unit/provider/service/windows_spec.rb +2 -2
- data/spec/unit/provider/subversion_spec.rb +2 -2
- data/spec/unit/provider/systemd_unit_spec.rb +79 -60
- data/spec/unit/provider/zypper_repository_spec.rb +2 -2
- data/spec/unit/provider_spec.rb +0 -8
- data/spec/unit/resource/chef_client_cron_spec.rb +8 -8
- data/spec/unit/resource/inspec_waiver_file_entry_spec.rb +80 -0
- data/spec/unit/resource/powershell_script_spec.rb +2 -2
- data/spec/unit/resource/windows_task_spec.rb +1 -1
- data/spec/unit/user_spec.rb +1 -1
- data/spec/unit/user_v1_spec.rb +6 -4
- data/tasks/rspec.rb +9 -6
- metadata +23 -528
- data/bin/knife +0 -24
- data/lib/chef/application/knife.rb +0 -234
- data/lib/chef/application/windows_service.rb +0 -338
- data/lib/chef/application/windows_service_manager.rb +0 -205
- data/lib/chef/chef_fs/knife.rb +0 -160
- data/lib/chef/chef_fs/parallelizer.rb +0 -102
- data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
- data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
- data/lib/chef/knife.rb +0 -665
- data/lib/chef/knife/acl_add.rb +0 -57
- data/lib/chef/knife/acl_base.rb +0 -183
- data/lib/chef/knife/acl_bulk_add.rb +0 -78
- data/lib/chef/knife/acl_bulk_remove.rb +0 -83
- data/lib/chef/knife/acl_remove.rb +0 -62
- data/lib/chef/knife/acl_show.rb +0 -56
- data/lib/chef/knife/bootstrap.rb +0 -1192
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
- data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
- data/lib/chef/knife/bootstrap/templates/README.md +0 -11
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
- data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
- data/lib/chef/knife/client_bulk_delete.rb +0 -104
- data/lib/chef/knife/client_create.rb +0 -101
- data/lib/chef/knife/client_delete.rb +0 -62
- data/lib/chef/knife/client_edit.rb +0 -52
- data/lib/chef/knife/client_key_create.rb +0 -73
- data/lib/chef/knife/client_key_delete.rb +0 -80
- data/lib/chef/knife/client_key_edit.rb +0 -83
- data/lib/chef/knife/client_key_list.rb +0 -73
- data/lib/chef/knife/client_key_show.rb +0 -80
- data/lib/chef/knife/client_list.rb +0 -41
- data/lib/chef/knife/client_reregister.rb +0 -58
- data/lib/chef/knife/client_show.rb +0 -48
- data/lib/chef/knife/config_get.rb +0 -39
- data/lib/chef/knife/config_get_profile.rb +0 -37
- data/lib/chef/knife/config_list.rb +0 -139
- data/lib/chef/knife/config_list_profiles.rb +0 -37
- data/lib/chef/knife/config_show.rb +0 -127
- data/lib/chef/knife/config_use.rb +0 -61
- data/lib/chef/knife/config_use_profile.rb +0 -47
- data/lib/chef/knife/configure.rb +0 -150
- data/lib/chef/knife/configure_client.rb +0 -48
- data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
- data/lib/chef/knife/cookbook_delete.rb +0 -151
- data/lib/chef/knife/cookbook_download.rb +0 -142
- data/lib/chef/knife/cookbook_list.rb +0 -47
- data/lib/chef/knife/cookbook_metadata.rb +0 -106
- data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
- data/lib/chef/knife/cookbook_show.rb +0 -98
- data/lib/chef/knife/cookbook_upload.rb +0 -292
- data/lib/chef/knife/core/bootstrap_context.rb +0 -264
- data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
- data/lib/chef/knife/core/formatting_options.rb +0 -49
- data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
- data/lib/chef/knife/core/generic_presenter.rb +0 -232
- data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
- data/lib/chef/knife/core/node_editor.rb +0 -130
- data/lib/chef/knife/core/node_presenter.rb +0 -133
- data/lib/chef/knife/core/object_loader.rb +0 -115
- data/lib/chef/knife/core/status_presenter.rb +0 -147
- data/lib/chef/knife/core/subcommand_loader.rb +0 -203
- data/lib/chef/knife/core/text_formatter.rb +0 -85
- data/lib/chef/knife/core/ui.rb +0 -338
- data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -406
- data/lib/chef/knife/data_bag_create.rb +0 -81
- data/lib/chef/knife/data_bag_delete.rb +0 -49
- data/lib/chef/knife/data_bag_edit.rb +0 -74
- data/lib/chef/knife/data_bag_from_file.rb +0 -113
- data/lib/chef/knife/data_bag_list.rb +0 -42
- data/lib/chef/knife/data_bag_secret_options.rb +0 -122
- data/lib/chef/knife/data_bag_show.rb +0 -69
- data/lib/chef/knife/delete.rb +0 -125
- data/lib/chef/knife/deps.rb +0 -156
- data/lib/chef/knife/diff.rb +0 -83
- data/lib/chef/knife/download.rb +0 -84
- data/lib/chef/knife/edit.rb +0 -88
- data/lib/chef/knife/environment_compare.rb +0 -128
- data/lib/chef/knife/environment_create.rb +0 -52
- data/lib/chef/knife/environment_delete.rb +0 -44
- data/lib/chef/knife/environment_edit.rb +0 -44
- data/lib/chef/knife/environment_from_file.rb +0 -84
- data/lib/chef/knife/environment_list.rb +0 -41
- data/lib/chef/knife/environment_show.rb +0 -47
- data/lib/chef/knife/exec.rb +0 -99
- data/lib/chef/knife/group_add.rb +0 -55
- data/lib/chef/knife/group_create.rb +0 -49
- data/lib/chef/knife/group_destroy.rb +0 -53
- data/lib/chef/knife/group_list.rb +0 -43
- data/lib/chef/knife/group_remove.rb +0 -56
- data/lib/chef/knife/group_show.rb +0 -49
- data/lib/chef/knife/key_create.rb +0 -112
- data/lib/chef/knife/key_create_base.rb +0 -50
- data/lib/chef/knife/key_delete.rb +0 -55
- data/lib/chef/knife/key_edit.rb +0 -118
- data/lib/chef/knife/key_edit_base.rb +0 -55
- data/lib/chef/knife/key_list.rb +0 -90
- data/lib/chef/knife/key_list_base.rb +0 -45
- data/lib/chef/knife/key_show.rb +0 -53
- data/lib/chef/knife/list.rb +0 -177
- data/lib/chef/knife/node_bulk_delete.rb +0 -75
- data/lib/chef/knife/node_create.rb +0 -47
- data/lib/chef/knife/node_delete.rb +0 -46
- data/lib/chef/knife/node_edit.rb +0 -70
- data/lib/chef/knife/node_environment_set.rb +0 -53
- data/lib/chef/knife/node_from_file.rb +0 -51
- data/lib/chef/knife/node_list.rb +0 -44
- data/lib/chef/knife/node_policy_set.rb +0 -79
- data/lib/chef/knife/node_run_list_add.rb +0 -104
- data/lib/chef/knife/node_run_list_remove.rb +0 -67
- data/lib/chef/knife/node_run_list_set.rb +0 -66
- data/lib/chef/knife/node_show.rb +0 -63
- data/lib/chef/knife/null.rb +0 -12
- data/lib/chef/knife/raw.rb +0 -123
- data/lib/chef/knife/recipe_list.rb +0 -32
- data/lib/chef/knife/rehash.rb +0 -50
- data/lib/chef/knife/role_bulk_delete.rb +0 -66
- data/lib/chef/knife/role_create.rb +0 -53
- data/lib/chef/knife/role_delete.rb +0 -46
- data/lib/chef/knife/role_edit.rb +0 -45
- data/lib/chef/knife/role_env_run_list_add.rb +0 -87
- data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
- data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
- data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
- data/lib/chef/knife/role_env_run_list_set.rb +0 -70
- data/lib/chef/knife/role_from_file.rb +0 -51
- data/lib/chef/knife/role_list.rb +0 -42
- data/lib/chef/knife/role_run_list_add.rb +0 -87
- data/lib/chef/knife/role_run_list_clear.rb +0 -55
- data/lib/chef/knife/role_run_list_remove.rb +0 -56
- data/lib/chef/knife/role_run_list_replace.rb +0 -60
- data/lib/chef/knife/role_run_list_set.rb +0 -69
- data/lib/chef/knife/role_show.rb +0 -48
- data/lib/chef/knife/search.rb +0 -194
- data/lib/chef/knife/serve.rb +0 -65
- data/lib/chef/knife/show.rb +0 -72
- data/lib/chef/knife/ssh.rb +0 -645
- data/lib/chef/knife/ssl_check.rb +0 -284
- data/lib/chef/knife/ssl_fetch.rb +0 -161
- data/lib/chef/knife/status.rb +0 -95
- data/lib/chef/knife/supermarket_download.rb +0 -121
- data/lib/chef/knife/supermarket_install.rb +0 -192
- data/lib/chef/knife/supermarket_list.rb +0 -76
- data/lib/chef/knife/supermarket_search.rb +0 -53
- data/lib/chef/knife/supermarket_share.rb +0 -166
- data/lib/chef/knife/supermarket_show.rb +0 -66
- data/lib/chef/knife/supermarket_unshare.rb +0 -61
- data/lib/chef/knife/tag_create.rb +0 -52
- data/lib/chef/knife/tag_delete.rb +0 -60
- data/lib/chef/knife/tag_list.rb +0 -47
- data/lib/chef/knife/upload.rb +0 -86
- data/lib/chef/knife/user_create.rb +0 -107
- data/lib/chef/knife/user_delete.rb +0 -44
- data/lib/chef/knife/user_dissociate.rb +0 -42
- data/lib/chef/knife/user_edit.rb +0 -52
- data/lib/chef/knife/user_invite_add.rb +0 -43
- data/lib/chef/knife/user_invite_list.rb +0 -34
- data/lib/chef/knife/user_invite_rescind.rb +0 -63
- data/lib/chef/knife/user_key_create.rb +0 -73
- data/lib/chef/knife/user_key_delete.rb +0 -80
- data/lib/chef/knife/user_key_edit.rb +0 -83
- data/lib/chef/knife/user_key_list.rb +0 -73
- data/lib/chef/knife/user_key_show.rb +0 -80
- data/lib/chef/knife/user_list.rb +0 -42
- data/lib/chef/knife/user_reregister.rb +0 -59
- data/lib/chef/knife/user_show.rb +0 -48
- data/lib/chef/knife/xargs.rb +0 -282
- data/lib/chef/knife/yaml_convert.rb +0 -91
- data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +0 -79
- data/lib/chef/provider/package/yum/simplejson/__init__.py +0 -318
- data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/decoder.py +0 -354
- data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/encoder.py +0 -440
- data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/scanner.py +0 -65
- data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/tool.py +0 -37
- data/lib/chef/resource/user/dscl_user.rb +0 -35
- data/spec/functional/knife/configure_spec.rb +0 -33
- data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
- data/spec/functional/knife/exec_spec.rb +0 -55
- data/spec/functional/knife/rehash_spec.rb +0 -39
- data/spec/functional/knife/smoke_test.rb +0 -42
- data/spec/functional/knife/ssh_spec.rb +0 -352
- data/spec/functional/resource/user/dscl_spec.rb +0 -188
- data/spec/functional/resource/windows_service_spec.rb +0 -105
- data/spec/functional/win32/service_manager_spec.rb +0 -220
- data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
- data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
- data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
- data/spec/integration/knife/chefignore_spec.rb +0 -301
- data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
- data/spec/integration/knife/client_create_spec.rb +0 -70
- data/spec/integration/knife/client_delete_spec.rb +0 -64
- data/spec/integration/knife/client_key_create_spec.rb +0 -66
- data/spec/integration/knife/client_key_delete_spec.rb +0 -43
- data/spec/integration/knife/client_key_list_spec.rb +0 -61
- data/spec/integration/knife/client_key_show_spec.rb +0 -45
- data/spec/integration/knife/client_list_spec.rb +0 -49
- data/spec/integration/knife/client_show_spec.rb +0 -37
- data/spec/integration/knife/common_options_spec.rb +0 -174
- data/spec/integration/knife/config_list_spec.rb +0 -220
- data/spec/integration/knife/config_show_spec.rb +0 -192
- data/spec/integration/knife/config_use_spec.rb +0 -198
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
- data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
- data/spec/integration/knife/cookbook_download_spec.rb +0 -72
- data/spec/integration/knife/cookbook_list_spec.rb +0 -55
- data/spec/integration/knife/cookbook_show_spec.rb +0 -149
- data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
- data/spec/integration/knife/data_bag_create_spec.rb +0 -125
- data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
- data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
- data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
- data/spec/integration/knife/data_bag_list_spec.rb +0 -44
- data/spec/integration/knife/data_bag_show_spec.rb +0 -95
- data/spec/integration/knife/delete_spec.rb +0 -1018
- data/spec/integration/knife/deps_spec.rb +0 -703
- data/spec/integration/knife/diff_spec.rb +0 -605
- data/spec/integration/knife/download_spec.rb +0 -1336
- data/spec/integration/knife/environment_compare_spec.rb +0 -75
- data/spec/integration/knife/environment_create_spec.rb +0 -41
- data/spec/integration/knife/environment_delete_spec.rb +0 -37
- data/spec/integration/knife/environment_from_file_spec.rb +0 -116
- data/spec/integration/knife/environment_list_spec.rb +0 -42
- data/spec/integration/knife/environment_show_spec.rb +0 -77
- data/spec/integration/knife/list_spec.rb +0 -1060
- data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
- data/spec/integration/knife/node_create_spec.rb +0 -47
- data/spec/integration/knife/node_delete_spec.rb +0 -48
- data/spec/integration/knife/node_environment_set_spec.rb +0 -46
- data/spec/integration/knife/node_from_file_spec.rb +0 -59
- data/spec/integration/knife/node_list_spec.rb +0 -45
- data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
- data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
- data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
- data/spec/integration/knife/node_show_spec.rb +0 -36
- data/spec/integration/knife/raw_spec.rb +0 -297
- data/spec/integration/knife/redirection_spec.rb +0 -64
- data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
- data/spec/integration/knife/role_create_spec.rb +0 -41
- data/spec/integration/knife/role_delete_spec.rb +0 -48
- data/spec/integration/knife/role_from_file_spec.rb +0 -96
- data/spec/integration/knife/role_list_spec.rb +0 -45
- data/spec/integration/knife/role_show_spec.rb +0 -51
- data/spec/integration/knife/search_node_spec.rb +0 -40
- data/spec/integration/knife/serve_spec.rb +0 -92
- data/spec/integration/knife/show_spec.rb +0 -197
- data/spec/integration/knife/upload_spec.rb +0 -1617
- data/spec/support/shared/functional/win32_service.rb +0 -57
- data/spec/unit/application/knife_spec.rb +0 -241
- data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
- data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
- data/spec/unit/knife/bootstrap_spec.rb +0 -2220
- data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
- data/spec/unit/knife/client_create_spec.rb +0 -169
- data/spec/unit/knife/client_delete_spec.rb +0 -99
- data/spec/unit/knife/client_edit_spec.rb +0 -53
- data/spec/unit/knife/client_list_spec.rb +0 -34
- data/spec/unit/knife/client_reregister_spec.rb +0 -62
- data/spec/unit/knife/client_show_spec.rb +0 -52
- data/spec/unit/knife/configure_client_spec.rb +0 -81
- data/spec/unit/knife/configure_spec.rb +0 -190
- data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
- data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
- data/spec/unit/knife/cookbook_download_spec.rb +0 -255
- data/spec/unit/knife/cookbook_list_spec.rb +0 -88
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
- data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
- data/spec/unit/knife/cookbook_show_spec.rb +0 -253
- data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
- data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
- data/spec/unit/knife/core/node_editor_spec.rb +0 -211
- data/spec/unit/knife/core/object_loader_spec.rb +0 -81
- data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
- data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
- data/spec/unit/knife/core/ui_spec.rb +0 -656
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
- data/spec/unit/knife/data_bag_create_spec.rb +0 -175
- data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
- data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
- data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
- data/spec/unit/knife/data_bag_show_spec.rb +0 -139
- data/spec/unit/knife/environment_compare_spec.rb +0 -112
- data/spec/unit/knife/environment_create_spec.rb +0 -91
- data/spec/unit/knife/environment_delete_spec.rb +0 -71
- data/spec/unit/knife/environment_edit_spec.rb +0 -79
- data/spec/unit/knife/environment_from_file_spec.rb +0 -90
- data/spec/unit/knife/environment_list_spec.rb +0 -54
- data/spec/unit/knife/environment_show_spec.rb +0 -52
- data/spec/unit/knife/key_create_spec.rb +0 -223
- data/spec/unit/knife/key_delete_spec.rb +0 -133
- data/spec/unit/knife/key_edit_spec.rb +0 -264
- data/spec/unit/knife/key_helper.rb +0 -74
- data/spec/unit/knife/key_list_spec.rb +0 -216
- data/spec/unit/knife/key_show_spec.rb +0 -126
- data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
- data/spec/unit/knife/node_delete_spec.rb +0 -77
- data/spec/unit/knife/node_edit_spec.rb +0 -116
- data/spec/unit/knife/node_environment_set_spec.rb +0 -61
- data/spec/unit/knife/node_from_file_spec.rb +0 -59
- data/spec/unit/knife/node_list_spec.rb +0 -62
- data/spec/unit/knife/node_policy_set_spec.rb +0 -122
- data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
- data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
- data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
- data/spec/unit/knife/node_show_spec.rb +0 -65
- data/spec/unit/knife/raw_spec.rb +0 -43
- data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
- data/spec/unit/knife/role_create_spec.rb +0 -80
- data/spec/unit/knife/role_delete_spec.rb +0 -67
- data/spec/unit/knife/role_edit_spec.rb +0 -77
- data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
- data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
- data/spec/unit/knife/role_from_file_spec.rb +0 -69
- data/spec/unit/knife/role_list_spec.rb +0 -54
- data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
- data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
- data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
- data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
- data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
- data/spec/unit/knife/role_show_spec.rb +0 -59
- data/spec/unit/knife/ssh_spec.rb +0 -403
- data/spec/unit/knife/ssl_check_spec.rb +0 -256
- data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
- data/spec/unit/knife/status_spec.rb +0 -112
- data/spec/unit/knife/supermarket_download_spec.rb +0 -152
- data/spec/unit/knife/supermarket_install_spec.rb +0 -202
- data/spec/unit/knife/supermarket_list_spec.rb +0 -70
- data/spec/unit/knife/supermarket_search_spec.rb +0 -85
- data/spec/unit/knife/supermarket_share_spec.rb +0 -208
- data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
- data/spec/unit/knife/tag_create_spec.rb +0 -23
- data/spec/unit/knife/tag_delete_spec.rb +0 -25
- data/spec/unit/knife/tag_list_spec.rb +0 -23
- data/spec/unit/knife/user_create_spec.rb +0 -184
- data/spec/unit/knife/user_delete_spec.rb +0 -46
- data/spec/unit/knife/user_edit_spec.rb +0 -48
- data/spec/unit/knife/user_list_spec.rb +0 -36
- data/spec/unit/knife/user_reregister_spec.rb +0 -56
- data/spec/unit/knife/user_show_spec.rb +0 -46
- data/spec/unit/knife_spec.rb +0 -634
- data/spec/unit/provider/user/dscl_spec.rb +0 -699
- data/spec/unit/windows_service_spec.rb +0 -118
@@ -1,278 +0,0 @@
|
|
1
|
-
@rem
|
2
|
-
@rem Author:: Seth Chisamore (<schisamo@chef.io>)
|
3
|
-
@rem Copyright:: Copyright (c) 2011-2019 Chef Software, Inc.
|
4
|
-
@rem License:: Apache License, Version 2.0
|
5
|
-
@rem
|
6
|
-
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
@rem you may not use this file except in compliance with the License.
|
8
|
-
@rem You may obtain a copy of the License at
|
9
|
-
@rem
|
10
|
-
@rem http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
@rem
|
12
|
-
@rem Unless required by applicable law or agreed to in writing, software
|
13
|
-
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
@rem See the License for the specific language governing permissions and
|
16
|
-
@rem limitations under the License.
|
17
|
-
@rem
|
18
|
-
|
19
|
-
@rem Use delayed environment expansion so that ERRORLEVEL can be evaluated with the
|
20
|
-
@rem !ERRORLEVEL! syntax which evaluates at execution of the line of script, not when
|
21
|
-
@rem the line is read. See help for the /E switch from cmd.exe /? .
|
22
|
-
@setlocal ENABLEDELAYEDEXPANSION
|
23
|
-
|
24
|
-
<%= "SETX HTTP_PROXY \"#{@config[:bootstrap_proxy]}\"" if @config[:bootstrap_proxy] %>
|
25
|
-
|
26
|
-
@set BOOTSTRAP_DIRECTORY=<%= bootstrap_directory %>
|
27
|
-
@echo Checking for existing directory "%BOOTSTRAP_DIRECTORY%"...
|
28
|
-
@if NOT EXIST %BOOTSTRAP_DIRECTORY% (
|
29
|
-
@echo Existing directory not found, creating.
|
30
|
-
@mkdir %BOOTSTRAP_DIRECTORY%
|
31
|
-
) else (
|
32
|
-
@echo Existing directory found, skipping creation.
|
33
|
-
)
|
34
|
-
|
35
|
-
> <%= bootstrap_directory %>\wget.vbs (
|
36
|
-
<%= win_wget %>
|
37
|
-
)
|
38
|
-
|
39
|
-
> <%= bootstrap_directory %>\wget.ps1 (
|
40
|
-
<%= win_wget_ps %>
|
41
|
-
)
|
42
|
-
|
43
|
-
@rem Determine the version and the architecture
|
44
|
-
|
45
|
-
@FOR /F "usebackq tokens=1-8 delims=.[] " %%A IN (`ver`) DO (
|
46
|
-
@set WinMajor=%%D
|
47
|
-
@set WinMinor=%%E
|
48
|
-
@set WinBuild=%%F
|
49
|
-
)
|
50
|
-
|
51
|
-
@echo Detected Windows Version %WinMajor%.%WinMinor% Build %WinBuild%
|
52
|
-
|
53
|
-
@set LATEST_OS_VERSION_MAJOR=10
|
54
|
-
@set LATEST_OS_VERSION_MINOR=1
|
55
|
-
|
56
|
-
@if /i %WinMajor% GTR %LATEST_OS_VERSION_MAJOR% goto VersionUnknown
|
57
|
-
@if /i %WinMajor% EQU %LATEST_OS_VERSION_MAJOR% (
|
58
|
-
@if /i %WinMinor% GTR %LATEST_OS_VERSION_MINOR% goto VersionUnknown
|
59
|
-
)
|
60
|
-
|
61
|
-
goto Version%WinMajor%.%WinMinor%
|
62
|
-
|
63
|
-
:VersionUnknown
|
64
|
-
@rem If this is an unknown version of windows set the default
|
65
|
-
@set MACHINE_OS=2012r2
|
66
|
-
@echo Warning: Unknown version of Windows, assuming default of Windows %MACHINE_OS%
|
67
|
-
goto architecture_select
|
68
|
-
|
69
|
-
:Version6.0
|
70
|
-
@set MACHINE_OS=2008
|
71
|
-
goto architecture_select
|
72
|
-
|
73
|
-
:Version6.1
|
74
|
-
@set MACHINE_OS=2008r2
|
75
|
-
goto architecture_select
|
76
|
-
|
77
|
-
:Version6.2
|
78
|
-
@set MACHINE_OS=2012
|
79
|
-
goto architecture_select
|
80
|
-
|
81
|
-
@rem Currently Windows Server 2012 R2 is treated as equivalent to Windows Server 2012
|
82
|
-
:Version6.3
|
83
|
-
@set MACHINE_OS=2012r2
|
84
|
-
goto architecture_select
|
85
|
-
|
86
|
-
:Version10.0
|
87
|
-
@set MACHINE_OS=2016
|
88
|
-
goto architecture_select
|
89
|
-
|
90
|
-
@rem Currently Windows Server 2019 is treated as equivalent to Windows Server 2016
|
91
|
-
:Version10.1
|
92
|
-
goto Version10.0
|
93
|
-
|
94
|
-
:architecture_select
|
95
|
-
<% if @config[:architecture] %>
|
96
|
-
@set MACHINE_ARCH=<%= @config[:architecture] %>
|
97
|
-
|
98
|
-
<% if @config[:architecture] == "x86_64" %>
|
99
|
-
IF "%PROCESSOR_ARCHITECTURE%"=="x86" IF not defined PROCESSOR_ARCHITEW6432 (
|
100
|
-
echo You specified bootstrap_architecture as x86_64 but the target machine is i386. A 64 bit program cannot run on a 32 bit machine. > "&2"
|
101
|
-
echo Exiting without bootstrapping. > "&2"
|
102
|
-
exit /b 1
|
103
|
-
)
|
104
|
-
<% end %>
|
105
|
-
<% else %>
|
106
|
-
@set MACHINE_ARCH=x86_64
|
107
|
-
IF "%PROCESSOR_ARCHITECTURE%"=="x86" IF not defined PROCESSOR_ARCHITEW6432 @set MACHINE_ARCH=i686
|
108
|
-
<% end %>
|
109
|
-
goto chef_installed
|
110
|
-
|
111
|
-
:chef_installed
|
112
|
-
@echo Checking for existing <%= ChefUtils::Dist::Infra::PRODUCT %> installation
|
113
|
-
WHERE <%= ChefUtils::Dist::Infra::CLIENT %> >nul 2>nul
|
114
|
-
If !ERRORLEVEL!==0 (
|
115
|
-
@echo Existing <%= ChefUtils::Dist::Infra::PRODUCT %> installation detected, skipping download
|
116
|
-
goto key_create
|
117
|
-
) else (
|
118
|
-
@echo No existing installation of <%= ChefUtils::Dist::Infra::PRODUCT %> detected
|
119
|
-
goto install
|
120
|
-
)
|
121
|
-
|
122
|
-
:install
|
123
|
-
@rem If user has provided the custom installation command, execute it
|
124
|
-
<% if @config[:bootstrap_install_command] %>
|
125
|
-
<%= @config[:bootstrap_install_command] %>
|
126
|
-
<% else %>
|
127
|
-
@rem Install Chef using the MSI installer
|
128
|
-
|
129
|
-
@set "LOCAL_DESTINATION_MSI_PATH=<%= local_download_path %>"
|
130
|
-
@set "CHEF_CLIENT_MSI_LOG_PATH=%TEMP%\<%= ChefUtils::Dist::Infra::CLIENT %>-msi%RANDOM%.log"
|
131
|
-
|
132
|
-
@rem Clear any pre-existing downloads
|
133
|
-
@echo Checking for existing downloaded package at "%LOCAL_DESTINATION_MSI_PATH%"
|
134
|
-
@if EXIST "%LOCAL_DESTINATION_MSI_PATH%" (
|
135
|
-
@echo Found existing downloaded package, deleting.
|
136
|
-
@del /f /q "%LOCAL_DESTINATION_MSI_PATH%"
|
137
|
-
@if ERRORLEVEL 1 (
|
138
|
-
echo Warning: Failed to delete pre-existing package with status code !ERRORLEVEL! > "&2"
|
139
|
-
)
|
140
|
-
) else (
|
141
|
-
echo No existing downloaded packages to delete.
|
142
|
-
)
|
143
|
-
|
144
|
-
@rem If there is somehow a name collision, remove pre-existing log
|
145
|
-
@if EXIST "%CHEF_CLIENT_MSI_LOG_PATH%" del /f /q "%CHEF_CLIENT_MSI_LOG_PATH%"
|
146
|
-
|
147
|
-
@echo Attempting to download client package using PowerShell if available...
|
148
|
-
@set "REMOTE_SOURCE_MSI_URL=<%= msi_url('%MACHINE_OS%', '%MACHINE_ARCH%', 'PowerShell') %>"
|
149
|
-
@set powershell_download=powershell.exe -ExecutionPolicy Unrestricted -InputFormat None -NoProfile -NonInteractive -File <%= bootstrap_directory %>\wget.ps1 "%REMOTE_SOURCE_MSI_URL%" "%LOCAL_DESTINATION_MSI_PATH%"
|
150
|
-
@echo !powershell_download!
|
151
|
-
@call !powershell_download!
|
152
|
-
|
153
|
-
@set DOWNLOAD_ERROR_STATUS=!ERRORLEVEL!
|
154
|
-
|
155
|
-
@if ERRORLEVEL 1 (
|
156
|
-
@echo Failed PowerShell download with status code !DOWNLOAD_ERROR_STATUS! > "&2"
|
157
|
-
@if !DOWNLOAD_ERROR_STATUS!==0 set DOWNLOAD_ERROR_STATUS=2
|
158
|
-
) else (
|
159
|
-
@rem Sometimes the error level is not set even when the download failed,
|
160
|
-
@rem so check for the file to be sure it is there -- if it is not, we will retry
|
161
|
-
@if NOT EXIST "%LOCAL_DESTINATION_MSI_PATH%" (
|
162
|
-
echo Failed download: download completed, but downloaded file not found > "&2"
|
163
|
-
set DOWNLOAD_ERROR_STATUS=2
|
164
|
-
) else (
|
165
|
-
echo Download via PowerShell succeeded.
|
166
|
-
)
|
167
|
-
)
|
168
|
-
|
169
|
-
@if NOT %DOWNLOAD_ERROR_STATUS%==0 (
|
170
|
-
@echo Warning: Failed to download "%REMOTE_SOURCE_MSI_URL%" to "%LOCAL_DESTINATION_MSI_PATH%"
|
171
|
-
@echo Warning: Retrying download with cscript ...
|
172
|
-
|
173
|
-
@if EXIST "%LOCAL_DESTINATION_MSI_PATH%" del /f /q "%LOCAL_DESTINATION_MSI_PATH%"
|
174
|
-
|
175
|
-
@set "REMOTE_SOURCE_MSI_URL=<%= msi_url('%MACHINE_OS%', '%MACHINE_ARCH%') %>"
|
176
|
-
cscript /nologo <%= bootstrap_directory %>\wget.vbs /url:"%REMOTE_SOURCE_MSI_URL%" /path:"%LOCAL_DESTINATION_MSI_PATH%"
|
177
|
-
|
178
|
-
@if NOT ERRORLEVEL 1 (
|
179
|
-
@rem Sometimes the error level is not set even when the download failed,
|
180
|
-
@rem so check for the file to be sure it is there.
|
181
|
-
@if NOT EXIST "%LOCAL_DESTINATION_MSI_PATH%" (
|
182
|
-
echo Failed download: download completed, but downloaded file not found > "&2"
|
183
|
-
echo Exiting without bootstrapping due to download failure. > "&2"
|
184
|
-
exit /b 1
|
185
|
-
) else (
|
186
|
-
echo Download via cscript succeeded.
|
187
|
-
)
|
188
|
-
) else (
|
189
|
-
echo Failed to download "%REMOTE_SOURCE_MSI_URL%" with status code !ERRORLEVEL!. > "&2"
|
190
|
-
echo Exiting without bootstrapping due to download failure. > "&2"
|
191
|
-
exit /b 1
|
192
|
-
)
|
193
|
-
)
|
194
|
-
|
195
|
-
@echo Installing downloaded client package...
|
196
|
-
|
197
|
-
<%= install_chef %>
|
198
|
-
|
199
|
-
@if ERRORLEVEL 1 (
|
200
|
-
echo <%= ChefUtils::Dist::Infra::CLIENT %> package failed to install with status code !ERRORLEVEL!. > "&2"
|
201
|
-
echo See installation log for additional detail: %CHEF_CLIENT_MSI_LOG_PATH%. > "&2"
|
202
|
-
) else (
|
203
|
-
@echo Installation completed successfully
|
204
|
-
del /f /q "%CHEF_CLIENT_MSI_LOG_PATH%"
|
205
|
-
)
|
206
|
-
|
207
|
-
<% end %>
|
208
|
-
|
209
|
-
@rem This line is required to separate the key_create label from the "block boundary"
|
210
|
-
@rem Removing these lines will cause the error "The system cannot find the batch label specified - key_create"
|
211
|
-
:key_create
|
212
|
-
@endlocal
|
213
|
-
|
214
|
-
@echo off
|
215
|
-
|
216
|
-
<% if client_pem -%>
|
217
|
-
> <%= bootstrap_directory %>\client.pem (
|
218
|
-
<%= escape_and_echo(::File.read(::File.expand_path(client_pem))) %>
|
219
|
-
)
|
220
|
-
<% end -%>
|
221
|
-
|
222
|
-
echo Writing validation key...
|
223
|
-
|
224
|
-
<% if validation_key -%>
|
225
|
-
> <%= bootstrap_directory %>\validation.pem (
|
226
|
-
<%= escape_and_echo(validation_key) %>
|
227
|
-
)
|
228
|
-
<% end -%>
|
229
|
-
|
230
|
-
echo Validation key written.
|
231
|
-
@echo on
|
232
|
-
|
233
|
-
<% if secret -%>
|
234
|
-
> <%= bootstrap_directory %>\encrypted_data_bag_secret (
|
235
|
-
<%= encrypted_data_bag_secret %>
|
236
|
-
)
|
237
|
-
<% end -%>
|
238
|
-
|
239
|
-
<% unless trusted_certs_script.empty? -%>
|
240
|
-
@if NOT EXIST <%= bootstrap_directory %>\trusted_certs (
|
241
|
-
mkdir <%= bootstrap_directory %>\trusted_certs
|
242
|
-
)
|
243
|
-
)
|
244
|
-
|
245
|
-
<%= trusted_certs_script %>
|
246
|
-
<% end -%>
|
247
|
-
|
248
|
-
<%# Generate Ohai Hints -%>
|
249
|
-
<% unless @config[:hints].nil? || @config[:hints].empty? -%>
|
250
|
-
@if NOT EXIST <%= bootstrap_directory %>\ohai\hints (
|
251
|
-
mkdir <%= bootstrap_directory %>\ohai\hints
|
252
|
-
)
|
253
|
-
|
254
|
-
<% @config[:hints].each do |name, hash| -%>
|
255
|
-
> <%= bootstrap_directory %>\ohai\hints\<%= name %>.json (
|
256
|
-
<%= escape_and_echo(hash.to_json) %>
|
257
|
-
)
|
258
|
-
<% end -%>
|
259
|
-
<% end -%>
|
260
|
-
|
261
|
-
> <%= bootstrap_directory %>\client.rb (
|
262
|
-
<%= config_content %>
|
263
|
-
)
|
264
|
-
|
265
|
-
> <%= bootstrap_directory %>\first-boot.json (
|
266
|
-
<%= first_boot %>
|
267
|
-
)
|
268
|
-
|
269
|
-
<% unless client_d.empty? -%>
|
270
|
-
@if NOT EXIST <%= bootstrap_directory %>\client.d (
|
271
|
-
mkdir <%= bootstrap_directory %>\client.d
|
272
|
-
)
|
273
|
-
|
274
|
-
<%= client_d %>
|
275
|
-
<% end -%>
|
276
|
-
|
277
|
-
@echo Starting <%= ChefUtils::Dist::Infra::CLIENT %> to bootstrap the node...
|
278
|
-
<%= start_chef %>
|
@@ -1,336 +0,0 @@
|
|
1
|
-
# Copyright:: Copyright (c) Chef Software Inc.
|
2
|
-
#
|
3
|
-
# License:: Apache License, Version 2.0
|
4
|
-
#
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
# you may not use this file except in compliance with the License.
|
7
|
-
# You may obtain a copy of the License at
|
8
|
-
#
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
#
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
# See the License for the specific language governing permissions and
|
15
|
-
# limitations under the License.
|
16
|
-
#
|
17
|
-
|
18
|
-
require "train"
|
19
|
-
require "tempfile" unless defined?(Tempfile)
|
20
|
-
require "uri" unless defined?(URI)
|
21
|
-
require "securerandom" unless defined?(SecureRandom)
|
22
|
-
|
23
|
-
class Chef
|
24
|
-
class Knife
|
25
|
-
class Bootstrap < Knife
|
26
|
-
class TrainConnector
|
27
|
-
SSH_CONFIG_OVERRIDE_KEYS ||= %i{user port proxy}.freeze
|
28
|
-
|
29
|
-
MKTEMP_WIN_COMMAND ||= <<~EOM.freeze
|
30
|
-
$parent = [System.IO.Path]::GetTempPath();
|
31
|
-
[string] $name = [System.Guid]::NewGuid();
|
32
|
-
$tmp = New-Item -ItemType Directory -Path (Join-Path $parent $name);
|
33
|
-
$tmp.FullName
|
34
|
-
EOM
|
35
|
-
|
36
|
-
DEFAULT_REMOTE_TEMP ||= "/tmp".freeze
|
37
|
-
|
38
|
-
def initialize(host_url, default_protocol, opts)
|
39
|
-
@host_url = host_url
|
40
|
-
@default_protocol = default_protocol
|
41
|
-
@opts_in = opts
|
42
|
-
end
|
43
|
-
|
44
|
-
def config
|
45
|
-
@config ||= begin
|
46
|
-
uri_opts = opts_from_uri(@host_url, @default_protocol)
|
47
|
-
transport_config(@host_url, @opts_in.merge(uri_opts))
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def connection
|
52
|
-
@connection ||= begin
|
53
|
-
Train.validate_backend(config)
|
54
|
-
train = Train.create(config[:backend], config)
|
55
|
-
# Note that the train connection is not currently connected
|
56
|
-
# to the remote host, but it's ready to go.
|
57
|
-
train.connection
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
#
|
62
|
-
# Establish a connection to the configured host.
|
63
|
-
#
|
64
|
-
# @raise [TrainError]
|
65
|
-
# @raise [TrainUserError]
|
66
|
-
#
|
67
|
-
# @return [TrueClass] true if the connection could be established.
|
68
|
-
def connect!
|
69
|
-
# Force connection to establish
|
70
|
-
connection.wait_until_ready
|
71
|
-
true
|
72
|
-
end
|
73
|
-
|
74
|
-
#
|
75
|
-
# @return [String] the configured hostname
|
76
|
-
def hostname
|
77
|
-
config[:host]
|
78
|
-
end
|
79
|
-
|
80
|
-
# Answers the question, "is this connection configured for password auth?"
|
81
|
-
# @return [Boolean] true if the connection is configured with password auth
|
82
|
-
def password_auth?
|
83
|
-
config.key? :password
|
84
|
-
end
|
85
|
-
|
86
|
-
# Answers the question, "Am I connected to a linux host?"
|
87
|
-
#
|
88
|
-
# @return [Boolean] true if the connected host is linux.
|
89
|
-
def linux?
|
90
|
-
connection.platform.linux?
|
91
|
-
end
|
92
|
-
|
93
|
-
# Answers the question, "Am I connected to a unix host?"
|
94
|
-
#
|
95
|
-
# @note this will always return true for a linux host
|
96
|
-
# because train classifies linux as a unix
|
97
|
-
#
|
98
|
-
# @return [Boolean] true if the connected host is unix or linux
|
99
|
-
def unix?
|
100
|
-
connection.platform.unix?
|
101
|
-
end
|
102
|
-
|
103
|
-
#
|
104
|
-
# Answers the question, "Am I connected to a Windows host?"
|
105
|
-
#
|
106
|
-
# @return [Boolean] true if the connected host is Windows
|
107
|
-
def windows?
|
108
|
-
connection.platform.windows?
|
109
|
-
end
|
110
|
-
|
111
|
-
#
|
112
|
-
# Creates a temporary directory on the remote host if it
|
113
|
-
# hasn't already. Caches directory location. For *nix,
|
114
|
-
# it will ensure that the directory is owned by the logged-in user
|
115
|
-
#
|
116
|
-
# @return [String] the temporary path created on the remote host.
|
117
|
-
def temp_dir
|
118
|
-
@tmpdir ||= begin
|
119
|
-
if windows?
|
120
|
-
run_command!(MKTEMP_WIN_COMMAND).stdout.split.last
|
121
|
-
else
|
122
|
-
# Get a 6 chars string using secure random
|
123
|
-
# eg. /tmp/chef_XXXXXX.
|
124
|
-
# Use mkdir to create TEMP dir to get rid of mktemp
|
125
|
-
dir = "#{DEFAULT_REMOTE_TEMP}/chef_#{SecureRandom.alphanumeric(6)}"
|
126
|
-
run_command!("mkdir -p '#{dir}'")
|
127
|
-
# Ensure that dir has the correct owner. We are possibly
|
128
|
-
# running with sudo right now - so this directory would be owned by root.
|
129
|
-
# File upload is performed over SCP as the current logged-in user,
|
130
|
-
# so we'll set ownership to ensure that works.
|
131
|
-
run_command!("chown #{config[:user]} '#{dir}'") if config[:sudo]
|
132
|
-
|
133
|
-
dir
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
#
|
139
|
-
# Uploads a file from "local_path" to "remote_path"
|
140
|
-
#
|
141
|
-
# @param local_path [String] The path to a file on the local file system
|
142
|
-
# @param remote_path [String] The destination path on the remote file system.
|
143
|
-
# @return NilClass
|
144
|
-
def upload_file!(local_path, remote_path)
|
145
|
-
connection.upload(local_path, remote_path)
|
146
|
-
nil
|
147
|
-
end
|
148
|
-
|
149
|
-
#
|
150
|
-
# Uploads the provided content into the file "remote_path" on the remote host.
|
151
|
-
#
|
152
|
-
# @param content [String] The content to upload into remote_path
|
153
|
-
# @param remote_path [String] The destination path on the remote file system.
|
154
|
-
# @return NilClass
|
155
|
-
def upload_file_content!(content, remote_path)
|
156
|
-
t = Tempfile.new("chef-content")
|
157
|
-
t.binmode
|
158
|
-
t << content
|
159
|
-
t.close
|
160
|
-
upload_file!(t.path, remote_path)
|
161
|
-
nil
|
162
|
-
ensure
|
163
|
-
t.close
|
164
|
-
t.unlink
|
165
|
-
end
|
166
|
-
|
167
|
-
#
|
168
|
-
# Force-deletes the file at "path" from the remote host.
|
169
|
-
#
|
170
|
-
# @param path [String] The path of the file on the remote host
|
171
|
-
def del_file!(path)
|
172
|
-
if windows?
|
173
|
-
run_command!("If (Test-Path \"#{path}\") { Remove-Item -Force -Path \"#{path}\" }")
|
174
|
-
else
|
175
|
-
run_command!("rm -f \"#{path}\"")
|
176
|
-
end
|
177
|
-
nil
|
178
|
-
end
|
179
|
-
|
180
|
-
#
|
181
|
-
# normalizes path across OS's - always use forward slashes, which
|
182
|
-
# Windows and *nix understand.
|
183
|
-
#
|
184
|
-
# @param path [String] The path to normalize
|
185
|
-
#
|
186
|
-
# @return [String] the normalized path
|
187
|
-
def normalize_path(path)
|
188
|
-
path.tr("\\", "/")
|
189
|
-
end
|
190
|
-
|
191
|
-
#
|
192
|
-
# Runs a command on the remote host.
|
193
|
-
#
|
194
|
-
# @param command [String] The command to run.
|
195
|
-
# @param data_handler [Proc] An optional block. When provided, inbound data will be
|
196
|
-
# published via `data_handler.call(data)`. This can allow
|
197
|
-
# callers to receive and render updates from remote command execution.
|
198
|
-
#
|
199
|
-
# @return [Train::Extras::CommandResult] an object containing stdout, stderr, and exit_status
|
200
|
-
def run_command(command, &data_handler)
|
201
|
-
connection.run_command(command, &data_handler)
|
202
|
-
end
|
203
|
-
|
204
|
-
#
|
205
|
-
# Runs a command the remote host
|
206
|
-
#
|
207
|
-
# @param command [String] The command to run.
|
208
|
-
# @param data_handler [Proc] An optional block. When provided, inbound data will be
|
209
|
-
# published via `data_handler.call(data)`. This can allow
|
210
|
-
# callers to receive and render updates from remote command execution.
|
211
|
-
#
|
212
|
-
# @raise Chef::Knife::Bootstrap::RemoteExecutionFailed if an error occurs (non-zero exit status)
|
213
|
-
# @return [Train::Extras::CommandResult] an object containing stdout, stderr, and exit_status
|
214
|
-
def run_command!(command, &data_handler)
|
215
|
-
result = run_command(command, &data_handler)
|
216
|
-
if result.exit_status != 0
|
217
|
-
raise RemoteExecutionFailed.new(hostname, command, result)
|
218
|
-
end
|
219
|
-
|
220
|
-
result
|
221
|
-
end
|
222
|
-
|
223
|
-
private
|
224
|
-
|
225
|
-
# For a given url and set of options, create a config
|
226
|
-
# hash suitable for passing into train.
|
227
|
-
def transport_config(host_url, opts_in)
|
228
|
-
# These baseline opts are not protocol-specific
|
229
|
-
opts = { target: host_url,
|
230
|
-
www_form_encoded_password: true,
|
231
|
-
transport_retries: 2,
|
232
|
-
transport_retry_sleep: 1,
|
233
|
-
backend: opts_in[:backend],
|
234
|
-
logger: opts_in[:logger] }
|
235
|
-
|
236
|
-
# Accepts options provided by caller if they're not already configured,
|
237
|
-
# but note that they will be constrained to valid options for the backend protocol
|
238
|
-
opts.merge!(opts_from_caller(opts, opts_in))
|
239
|
-
|
240
|
-
# WinRM has some additional computed options
|
241
|
-
opts.merge!(opts_inferred_from_winrm(opts, opts_in))
|
242
|
-
|
243
|
-
# Now that everything is populated, fill in anything missing
|
244
|
-
# that may be found in user ssh config
|
245
|
-
opts.merge!(missing_opts_from_ssh_config(opts, opts_in))
|
246
|
-
|
247
|
-
Train.target_config(opts)
|
248
|
-
end
|
249
|
-
|
250
|
-
# Some winrm options are inferred based on other options.
|
251
|
-
# Return a hash of winrm options based on configuration already built.
|
252
|
-
def opts_inferred_from_winrm(config, opts_in)
|
253
|
-
return {} unless config[:backend] == "winrm"
|
254
|
-
|
255
|
-
opts_out = {}
|
256
|
-
|
257
|
-
if opts_in[:ssl]
|
258
|
-
opts_out[:ssl] = true
|
259
|
-
opts_out[:self_signed] = opts_in[:self_signed] || false
|
260
|
-
end
|
261
|
-
|
262
|
-
# See note here: https://github.com/mwrock/WinRM#example
|
263
|
-
if %w{ssl plaintext}.include?(opts_in[:winrm_auth_method])
|
264
|
-
opts_out[:winrm_disable_sspi] = true
|
265
|
-
end
|
266
|
-
opts_out
|
267
|
-
end
|
268
|
-
|
269
|
-
# Returns a hash containing valid options for the current
|
270
|
-
# transport protocol that are not already present in config
|
271
|
-
def opts_from_caller(config, opts_in)
|
272
|
-
# Train.options gives us the supported config options for the
|
273
|
-
# backend provider (ssh, winrm). We'll use that
|
274
|
-
# to filter out options that don't belong
|
275
|
-
# to the transport type we're using.
|
276
|
-
valid_opts = Train.options(config[:backend])
|
277
|
-
opts_in.select do |key, _v|
|
278
|
-
valid_opts.key?(key) && !config.key?(key)
|
279
|
-
end
|
280
|
-
end
|
281
|
-
|
282
|
-
# Extract any of username/password/host/port/transport
|
283
|
-
# that are in the URI and return them as a config has
|
284
|
-
def opts_from_uri(uri, default_protocol)
|
285
|
-
# Train.unpack_target_from_uri only works for complete URIs in
|
286
|
-
# form of proto://[user[:pass]@]host[:port]/
|
287
|
-
# So we'll add the protocol prefix if it's not supplied.
|
288
|
-
uri_to_check = if URI::DEFAULT_PARSER.make_regexp.match(uri)
|
289
|
-
uri
|
290
|
-
else
|
291
|
-
"#{default_protocol}://#{uri}"
|
292
|
-
end
|
293
|
-
|
294
|
-
Train.unpack_target_from_uri(uri_to_check)
|
295
|
-
end
|
296
|
-
|
297
|
-
# This returns a hash that consists of settings
|
298
|
-
# populated from SSH configuration that are not already present
|
299
|
-
# in the configuration passed in.
|
300
|
-
# This is necessary because train will default these values
|
301
|
-
# itself - causing SSH config data to be ignored
|
302
|
-
def missing_opts_from_ssh_config(config, opts_in)
|
303
|
-
return {} unless config[:backend] == "ssh"
|
304
|
-
|
305
|
-
host_cfg = ssh_config_for_host(config[:host])
|
306
|
-
opts_out = {}
|
307
|
-
opts_in.each do |key, _value|
|
308
|
-
if SSH_CONFIG_OVERRIDE_KEYS.include?(key) && !config.key?(key)
|
309
|
-
opts_out[key] = host_cfg[key]
|
310
|
-
end
|
311
|
-
end
|
312
|
-
opts_out
|
313
|
-
end
|
314
|
-
|
315
|
-
# Having this as a method makes it easier to mock
|
316
|
-
# SSH Config for testing.
|
317
|
-
def ssh_config_for_host(host)
|
318
|
-
require "net/ssh" unless defined?(Net::SSH)
|
319
|
-
Net::SSH::Config.for(host)
|
320
|
-
end
|
321
|
-
end
|
322
|
-
|
323
|
-
class RemoteExecutionFailed < StandardError
|
324
|
-
attr_reader :exit_status, :command, :hostname, :stdout, :stderr
|
325
|
-
|
326
|
-
def initialize(hostname, command, result)
|
327
|
-
@hostname = hostname
|
328
|
-
@exit_status = result.exit_status
|
329
|
-
@stderr = result.stderr
|
330
|
-
@stdout = result.stdout
|
331
|
-
end
|
332
|
-
end
|
333
|
-
|
334
|
-
end
|
335
|
-
end
|
336
|
-
end
|