chef 11.4.4 → 11.6.0.hotfix.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +1 -1
- data/Rakefile +18 -1
- data/bin/chef-service-manager +37 -0
- data/distro/common/html/chef-client.8.html +4 -4
- data/distro/common/html/chef-expander.8.html +4 -4
- data/distro/common/html/chef-expanderctl.8.html +4 -4
- data/distro/common/html/chef-server-webui.8.html +4 -4
- data/distro/common/html/chef-server.8.html +4 -4
- data/distro/common/html/chef-shell.1.html +4 -4
- data/distro/common/html/chef-solo.8.html +12 -18
- data/distro/common/html/chef-solr.8.html +4 -4
- data/distro/common/html/knife-bootstrap.1.html +4 -4
- data/distro/common/html/knife-client.1.html +4 -4
- data/distro/common/html/knife-configure.1.html +4 -4
- data/distro/common/html/knife-cookbook-site.1.html +4 -4
- data/distro/common/html/knife-cookbook.1.html +7 -10
- data/distro/common/html/knife-data-bag.1.html +7 -10
- data/distro/common/html/knife-environment.1.html +6 -8
- data/distro/common/html/knife-exec.1.html +4 -4
- data/distro/common/html/knife-index.1.html +4 -4
- data/distro/common/html/knife-node.1.html +4 -4
- data/distro/common/html/knife-role.1.html +4 -4
- data/distro/common/html/knife-search.1.html +4 -4
- data/distro/common/html/knife-ssh.1.html +4 -4
- data/distro/common/html/knife-status.1.html +4 -4
- data/distro/common/html/knife-tag.1.html +4 -4
- data/distro/common/html/knife.1.html +4 -4
- data/distro/common/man/man1/chef-shell.1 +1 -1
- data/distro/common/man/man1/knife-bootstrap.1 +1 -1
- data/distro/common/man/man1/knife-client.1 +1 -1
- data/distro/common/man/man1/knife-configure.1 +1 -1
- data/distro/common/man/man1/knife-cookbook-site.1 +1 -1
- data/distro/common/man/man1/knife-cookbook.1 +2 -15
- data/distro/common/man/man1/knife-data-bag.1 +2 -15
- data/distro/common/man/man1/knife-environment.1 +2 -12
- data/distro/common/man/man1/knife-exec.1 +1 -1
- data/distro/common/man/man1/knife-index.1 +1 -1
- data/distro/common/man/man1/knife-node.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +1 -1
- data/distro/common/man/man1/knife-search.1 +1 -1
- data/distro/common/man/man1/knife-ssh.1 +1 -1
- data/distro/common/man/man1/knife-status.1 +1 -1
- data/distro/common/man/man1/knife-tag.1 +1 -1
- data/distro/common/man/man1/knife.1 +1 -1
- data/distro/common/man/man8/chef-client.8 +1 -1
- data/distro/common/man/man8/chef-expander.8 +1 -1
- data/distro/common/man/man8/chef-expanderctl.8 +1 -1
- data/distro/common/man/man8/chef-server-webui.8 +1 -1
- data/distro/common/man/man8/chef-server.8 +1 -1
- data/distro/common/man/man8/chef-solo.8 +4 -36
- data/distro/common/man/man8/chef-solr.8 +1 -1
- data/distro/debian/etc/init.d/chef-client +4 -2
- data/distro/windows/service_manager.rb +2 -146
- data/lib/chef.rb +1 -1
- data/lib/chef/application.rb +5 -12
- data/lib/chef/application/apply.rb +2 -0
- data/lib/chef/application/client.rb +12 -12
- data/lib/chef/application/knife.rb +2 -2
- data/lib/chef/application/solo.rb +4 -5
- data/lib/chef/application/windows_service.rb +113 -56
- data/lib/chef/application/windows_service_manager.rb +179 -0
- data/lib/chef/chef_fs.rb +2 -4
- data/lib/chef/chef_fs/chef_fs_data_store.rb +371 -0
- data/lib/chef/chef_fs/command_line.rb +145 -93
- data/lib/chef/chef_fs/config.rb +205 -0
- data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +26 -0
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +38 -0
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +29 -0
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +38 -0
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +56 -0
- data/lib/chef/chef_fs/data_handler/data_handler_base.rb +128 -0
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +40 -0
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +51 -0
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +36 -0
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +40 -0
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +27 -0
- data/lib/chef/chef_fs/file_system.rb +195 -127
- data/lib/chef/chef_fs/file_system/acl_dir.rb +64 -0
- data/lib/chef/chef_fs/file_system/acl_entry.rb +58 -0
- data/lib/chef/chef_fs/file_system/acls_dir.rb +68 -0
- data/lib/chef/chef_fs/file_system/already_exists_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +98 -39
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_dir.rb +85 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +71 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb +55 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_data_bags_dir.rb +36 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +14 -63
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +93 -3
- data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +35 -9
- data/lib/chef/chef_fs/file_system/cookbook_dir.rb +67 -32
- data/lib/chef/chef_fs/file_system/cookbook_file.rb +13 -6
- data/lib/chef/chef_fs/file_system/cookbook_frozen_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/cookbooks_acl_dir.rb +41 -0
- data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +102 -21
- data/lib/chef/chef_fs/file_system/data_bag_dir.rb +12 -21
- data/lib/chef/chef_fs/file_system/data_bags_dir.rb +14 -8
- data/lib/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +36 -0
- data/lib/chef/chef_fs/file_system/environments_dir.rb +60 -0
- data/lib/chef/chef_fs/file_system/file_system_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/file_system_error.rb +3 -1
- data/lib/chef/chef_fs/file_system/memory_dir.rb +52 -0
- data/lib/chef/chef_fs/file_system/memory_file.rb +17 -0
- data/lib/chef/chef_fs/file_system/memory_root.rb +21 -0
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +48 -0
- data/lib/chef/chef_fs/file_system/must_delete_recursively_error.rb +2 -2
- data/lib/chef/chef_fs/file_system/nodes_dir.rb +17 -9
- data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +0 -4
- data/lib/chef/chef_fs/file_system/not_found_error.rb +2 -2
- data/lib/chef/chef_fs/file_system/operation_failed_error.rb +34 -0
- data/lib/chef/chef_fs/file_system/operation_not_allowed_error.rb +48 -0
- data/lib/chef/chef_fs/file_system/rest_list_dir.rb +42 -13
- data/lib/chef/chef_fs/file_system/rest_list_entry.rb +81 -27
- data/lib/chef/chef_fs/knife.rb +68 -29
- data/lib/chef/chef_fs/parallelizer.rb +129 -0
- data/lib/chef/chef_fs/path_utils.rb +29 -3
- data/lib/chef/chef_fs/raw_request.rb +79 -0
- data/lib/chef/client.rb +46 -20
- data/lib/chef/config.rb +59 -61
- data/lib/chef/cookbook/chefignore.rb +2 -1
- data/lib/chef/cookbook/synchronizer.rb +8 -6
- data/lib/chef/cookbook/syntax_check.rb +17 -2
- data/lib/chef/cookbook_uploader.rb +10 -1
- data/lib/chef/cookbook_version.rb +0 -109
- data/lib/chef/data_bag.rb +15 -6
- data/lib/chef/deprecation/mixin/template.rb +49 -0
- data/lib/chef/deprecation/provider/cookbook_file.rb +55 -0
- data/lib/chef/deprecation/provider/file.rb +197 -0
- data/lib/chef/deprecation/provider/remote_file.rb +86 -0
- data/lib/chef/deprecation/provider/template.rb +63 -0
- data/lib/chef/deprecation/warnings.rb +38 -0
- data/lib/chef/encrypted_data_bag_item.rb +153 -61
- data/lib/chef/environment.rb +34 -3
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/exceptions.rb +27 -2
- data/lib/chef/file_access_control/unix.rb +64 -7
- data/lib/chef/file_access_control/windows.rb +22 -11
- data/lib/chef/file_content_management/content_base.rb +56 -0
- data/lib/chef/file_content_management/deploy.rb +38 -0
- data/lib/chef/file_content_management/deploy/cp.rb +48 -0
- data/lib/chef/file_content_management/deploy/mv_unix.rb +77 -0
- data/lib/chef/file_content_management/deploy/mv_windows.rb +95 -0
- data/lib/chef/file_content_management/tempfile.rb +61 -0
- data/lib/chef/formatters/doc.rb +1 -1
- data/lib/chef/formatters/error_descriptor.rb +5 -4
- data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +23 -3
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +4 -0
- data/lib/chef/json_compat.rb +3 -0
- data/lib/chef/knife.rb +12 -3
- data/lib/chef/knife/bootstrap.rb +46 -2
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/centos5-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/chef-full.erb +4 -4
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +3 -3
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +3 -3
- data/lib/chef/knife/client_show.rb +2 -5
- data/lib/chef/knife/configure.rb +3 -3
- data/lib/chef/knife/cookbook_create.rb +6 -5
- data/lib/chef/knife/cookbook_download.rb +13 -5
- data/lib/chef/knife/cookbook_site_share.rb +1 -0
- data/lib/chef/knife/cookbook_test.rb +1 -0
- data/lib/chef/knife/cookbook_upload.rb +4 -9
- data/lib/chef/knife/core/bootstrap_context.rb +10 -4
- data/lib/chef/knife/core/generic_presenter.rb +16 -0
- data/lib/chef/knife/core/node_editor.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +43 -12
- data/lib/chef/knife/core/ui.rb +19 -4
- data/lib/chef/knife/delete.rb +76 -9
- data/lib/chef/knife/deps.rb +139 -0
- data/lib/chef/knife/diff.rb +22 -5
- data/lib/chef/knife/download.rb +16 -3
- data/lib/chef/knife/edit.rb +76 -0
- data/lib/chef/knife/environment_show.rb +2 -7
- data/lib/chef/knife/list.rb +91 -47
- data/lib/chef/knife/node_run_list_set.rb +66 -0
- data/lib/chef/knife/node_show.rb +1 -7
- data/lib/chef/knife/raw.rb +20 -64
- data/lib/chef/knife/role_show.rb +2 -4
- data/lib/chef/knife/search.rb +5 -6
- data/lib/chef/knife/show.rb +34 -11
- data/lib/chef/knife/ssh.rb +8 -0
- data/lib/chef/knife/upload.rb +23 -4
- data/lib/chef/knife/user_show.rb +2 -5
- data/lib/chef/knife/xargs.rb +265 -0
- data/lib/chef/log.rb +2 -2
- data/lib/chef/mixin/file_class.rb +0 -9
- data/lib/chef/mixin/language_include_recipe.rb +1 -1
- data/lib/chef/mixin/params_validate.rb +19 -9
- data/lib/chef/mixin/template.rb +126 -36
- data/lib/chef/mixin/windows_architecture_helper.rb +91 -0
- data/lib/chef/monkey_patches/file.rb +26 -0
- data/lib/chef/monkey_patches/net-ssh-multi.rb +140 -0
- data/lib/chef/monkey_patches/securerandom.rb +44 -0
- data/lib/chef/monologger.rb +93 -0
- data/lib/chef/node.rb +4 -0
- data/lib/chef/platform.rb +4 -490
- data/lib/chef/platform/provider_mapping.rb +529 -0
- data/lib/chef/{monkey_patches/dir.rb → platform/query_helpers.rb} +25 -19
- data/lib/chef/provider.rb +12 -9
- data/lib/chef/provider/batch.rb +35 -0
- data/lib/chef/provider/cookbook_file.rb +9 -78
- data/lib/chef/provider/cookbook_file/content.rb +49 -0
- data/lib/chef/provider/deploy.rb +24 -20
- data/lib/chef/provider/deploy/revision.rb +27 -0
- data/lib/chef/provider/directory.rb +19 -22
- data/lib/chef/provider/execute.rb +22 -5
- data/lib/chef/provider/file.rb +299 -217
- data/lib/chef/provider/file/content.rb +39 -0
- data/lib/chef/provider/git.rb +76 -43
- data/lib/chef/provider/group/usermod.rb +2 -2
- data/lib/chef/provider/ifconfig.rb +25 -35
- data/lib/chef/provider/ifconfig/debian.rb +71 -0
- data/lib/chef/provider/ifconfig/redhat.rb +47 -0
- data/lib/chef/provider/link.rb +10 -3
- data/lib/chef/provider/mount.rb +1 -1
- data/lib/chef/provider/mount/mount.rb +8 -3
- data/lib/chef/provider/mount/windows.rb +4 -1
- data/lib/chef/provider/package/portage.rb +9 -4
- data/lib/chef/provider/package/rubygems.rb +45 -10
- data/lib/chef/provider/package/smartos.rb +47 -36
- data/lib/chef/provider/package/yum.rb +19 -12
- data/lib/chef/provider/package/zypper.rb +45 -55
- data/lib/chef/provider/powershell_script.rb +77 -0
- data/lib/chef/provider/remote_directory.rb +5 -6
- data/lib/chef/provider/remote_file.rb +12 -108
- data/lib/chef/provider/remote_file/cache_control_data.rb +165 -0
- data/lib/chef/provider/remote_file/content.rb +75 -0
- data/lib/chef/provider/remote_file/fetcher.rb +43 -0
- data/lib/chef/provider/remote_file/ftp.rb +183 -0
- data/lib/chef/provider/remote_file/http.rb +124 -0
- data/lib/chef/provider/remote_file/local_file.rb +47 -0
- data/lib/chef/provider/route.rb +6 -2
- data/lib/chef/provider/script.rb +14 -2
- data/lib/chef/provider/service/macosx.rb +16 -10
- data/lib/chef/provider/service/solaris.rb +6 -5
- data/lib/chef/provider/template.rb +16 -78
- data/lib/chef/provider/template/content.rb +61 -0
- data/lib/chef/provider/user/solaris.rb +90 -0
- data/lib/chef/provider/user/useradd.rb +76 -63
- data/lib/chef/provider/windows_script.rb +73 -0
- data/lib/chef/providers.rb +16 -0
- data/lib/chef/resource.rb +23 -2
- data/lib/chef/resource/batch.rb +31 -0
- data/lib/chef/resource/conditional.rb +4 -0
- data/lib/chef/resource/conditional_action_not_nothing.rb +48 -0
- data/lib/chef/resource/file.rb +31 -3
- data/lib/chef/resource/link.rb +17 -0
- data/lib/chef/resource/lwrp_base.rb +1 -1
- data/lib/chef/resource/mount.rb +29 -2
- data/lib/chef/resource/powershell_script.rb +31 -0
- data/lib/chef/resource/remote_file.rb +47 -1
- data/lib/chef/resource/route.rb +1 -1
- data/lib/chef/resource/template.rb +145 -0
- data/lib/chef/resource/windows_script.rb +62 -0
- data/lib/chef/resource_collection.rb +45 -11
- data/lib/chef/resource_reporter.rb +81 -52
- data/lib/chef/resources.rb +2 -0
- data/lib/chef/rest.rb +13 -4
- data/lib/chef/rest/rest_request.rb +5 -1
- data/lib/chef/run_context/cookbook_compiler.rb +3 -3
- data/lib/chef/run_list/run_list_expansion.rb +1 -1
- data/lib/chef/run_lock.rb +7 -1
- data/lib/chef/runner.rb +0 -1
- data/lib/chef/scan_access_control.rb +6 -1
- data/lib/chef/search/query.rb +2 -2
- data/lib/chef/shell/shell_session.rb +2 -2
- data/lib/chef/util/backup.rb +84 -0
- data/lib/chef/util/diff.rb +145 -0
- data/lib/chef/util/file_edit.rb +1 -1
- data/lib/chef/util/selinux.rb +100 -0
- data/lib/chef/util/windows/net_user.rb +14 -1
- data/lib/chef/util/windows/volume.rb +2 -2
- data/lib/chef/version.rb +1 -1
- data/lib/chef/version/platform.rb +42 -0
- data/lib/chef/version_class.rb +1 -1
- data/lib/chef/version_constraint.rb +6 -5
- data/lib/chef/version_constraint/platform.rb +26 -0
- data/lib/chef/win32/api/file.rb +8 -2
- data/lib/chef/win32/version.rb +25 -8
- data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/copyright +34 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/copyright +34 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -0
- data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -0
- data/spec/data/apt/chef-integration-test_1.0-1_amd64.deb +0 -0
- data/spec/data/apt/chef-integration-test_1.0.orig.tar.gz +0 -0
- data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -0
- data/spec/data/apt/chef-integration-test_1.1-1_amd64.deb +0 -0
- data/spec/data/apt/chef-integration-test_1.1.orig.tar.gz +0 -0
- data/spec/data/apt/var/www/apt/conf/distributions +7 -0
- data/spec/data/apt/var/www/apt/conf/incoming +4 -0
- data/spec/data/apt/var/www/apt/conf/pulls +3 -0
- data/spec/data/apt/var/www/apt/db/checksums.db +0 -0
- data/spec/data/apt/var/www/apt/db/contents.cache.db +0 -0
- data/spec/data/apt/var/www/apt/db/packages.db +0 -0
- data/spec/data/apt/var/www/apt/db/references.db +0 -0
- data/spec/data/apt/var/www/apt/db/release.caches.db +0 -0
- data/spec/data/apt/var/www/apt/db/version +4 -0
- data/spec/data/apt/var/www/apt/dists/sid/Release +19 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages.gz +0 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-i386/Packages +0 -0
- data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.0-1_amd64.deb +0 -0
- data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.1-1_amd64.deb +0 -0
- data/spec/data/bootstrap/encrypted_data_bag_secret +1 -0
- data/spec/data/bootstrap/secret.erb +9 -0
- data/spec/data/cookbooks/ignorken/recipes/default.rb +1 -0
- data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +2 -0
- data/spec/data/cookbooks/openldap/files/default/.dotfile +1 -0
- data/spec/data/cookbooks/openldap/files/default/.ssh/id_rsa +1 -0
- data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +1 -0
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +1 -0
- data/spec/data/cookbooks/openldap/templates/default/all_windows_line_endings.erb +4 -0
- data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -0
- data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -0
- data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -0
- data/spec/data/cookbooks/openldap/templates/default/some_windows_line_endings.erb +4 -0
- data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -0
- data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -0
- data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -0
- data/spec/data/git_bundles/example-repo.gitbundle +0 -0
- data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
- data/spec/data/knife_subcommand/test_yourself.rb +8 -0
- data/spec/data/null_config.rb +1 -0
- data/spec/data/partial_one.erb +1 -1
- data/spec/data/remote_file/nyan_cat.png.gz +0 -0
- data/spec/functional/file_content_management/deploy_strategies_spec.rb +238 -0
- data/spec/functional/knife/exec_spec.rb +2 -2
- data/spec/functional/provider/remote_file/cache_control_data_spec.rb +101 -0
- data/spec/functional/resource/batch_spec.rb +64 -0
- data/spec/functional/resource/cookbook_file_spec.rb +2 -3
- data/spec/functional/resource/deploy_revision_spec.rb +180 -0
- data/spec/functional/resource/directory_spec.rb +2 -2
- data/spec/functional/resource/file_spec.rb +17 -1
- data/spec/functional/resource/git_spec.rb +259 -0
- data/spec/functional/resource/link_spec.rb +422 -388
- data/spec/functional/resource/package_spec.rb +297 -0
- data/spec/functional/resource/powershell_spec.rb +188 -0
- data/spec/functional/resource/registry_spec.rb +8 -4
- data/spec/functional/resource/remote_directory_spec.rb +2 -2
- data/spec/functional/resource/remote_file_spec.rb +97 -29
- data/spec/functional/resource/template_spec.rb +173 -17
- data/spec/functional/resource/user_spec.rb +547 -0
- data/spec/functional/run_lock_spec.rb +5 -0
- data/spec/functional/shell_spec.rb +2 -1
- data/spec/functional/win32/service_manager_spec.rb +269 -0
- data/spec/functional/win32/versions_spec.rb +78 -0
- data/spec/integration/knife/chef_repo_path_spec.rb +805 -0
- data/spec/integration/knife/chef_repository_file_system_spec.rb +276 -0
- data/spec/integration/knife/chefignore_spec.rb +271 -0
- data/spec/integration/knife/delete_spec.rb +944 -0
- data/spec/integration/knife/deps_spec.rb +648 -0
- data/spec/integration/knife/diff_spec.rb +536 -0
- data/spec/integration/knife/download_spec.rb +962 -0
- data/spec/integration/knife/list_spec.rb +633 -0
- data/spec/integration/knife/raw_spec.rb +166 -0
- data/spec/integration/knife/redirection_spec.rb +57 -0
- data/spec/integration/knife/show_spec.rb +158 -0
- data/spec/integration/knife/upload_spec.rb +1060 -0
- data/spec/integration/solo/solo_spec.rb +41 -0
- data/spec/spec_helper.rb +55 -1
- data/spec/support/chef_helpers.rb +32 -0
- data/spec/support/platform_helpers.rb +40 -0
- data/spec/support/platforms/win32/spec_service.rb +59 -0
- data/spec/support/shared/functional/directory_resource.rb +43 -16
- data/spec/support/shared/functional/file_resource.rb +661 -20
- data/spec/support/shared/functional/securable_resource.rb +109 -8
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +39 -31
- data/spec/support/shared/integration/integration_helper.rb +166 -0
- data/spec/support/shared/integration/knife_support.rb +171 -0
- data/spec/support/shared/unit/execute_resource.rb +125 -0
- data/spec/support/shared/unit/file_system_support.rb +8 -48
- data/spec/support/shared/unit/provider/file.rb +609 -0
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +407 -0
- data/spec/support/shared/unit/script_resource.rb +52 -0
- data/spec/support/shared/unit/windows_script_resource.rb +48 -0
- data/spec/tiny_server.rb +13 -11
- data/spec/unit/application/client_spec.rb +39 -1
- data/spec/unit/application/knife_spec.rb +12 -0
- data/spec/unit/application/solo_spec.rb +1 -1
- data/spec/unit/application_spec.rb +57 -2
- data/spec/unit/chef_fs/diff_spec.rb +30 -31
- data/spec/unit/chef_fs/file_pattern_spec.rb +2 -2
- data/spec/unit/chef_fs/file_system_spec.rb +2 -3
- data/spec/unit/client_spec.rb +20 -1
- data/spec/unit/config_spec.rb +70 -52
- data/spec/unit/cookbook/synchronizer_spec.rb +49 -1
- data/spec/unit/cookbook/syntax_check_spec.rb +28 -3
- data/spec/unit/cookbook_loader_spec.rb +3 -2
- data/spec/unit/daemon_spec.rb +7 -7
- data/spec/unit/data_bag_spec.rb +7 -0
- data/spec/unit/deprecation_spec.rb +86 -0
- data/spec/unit/encrypted_data_bag_item_spec.rb +183 -88
- data/spec/unit/environment_spec.rb +98 -0
- data/spec/unit/exceptions_spec.rb +6 -1
- data/spec/unit/file_access_control_spec.rb +21 -1
- data/spec/unit/file_content_management/deploy/cp_spec.rb +46 -0
- data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +103 -0
- data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +179 -0
- data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +38 -2
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +3 -2
- data/spec/unit/knife/bootstrap_spec.rb +128 -29
- data/spec/unit/knife/configure_spec.rb +42 -26
- data/spec/unit/knife/cookbook_download_spec.rb +24 -3
- data/spec/unit/knife/cookbook_upload_spec.rb +8 -4
- data/spec/unit/knife/core/bootstrap_context_spec.rb +78 -61
- data/spec/unit/knife/core/subcommand_loader_spec.rb +20 -0
- data/spec/unit/knife/core/ui_spec.rb +41 -0
- data/spec/unit/knife/node_run_list_set_spec.rb +140 -0
- data/spec/unit/knife_spec.rb +21 -0
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +1 -0
- data/spec/unit/mixin/params_validate_spec.rb +35 -0
- data/spec/unit/mixin/template_spec.rb +69 -57
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +83 -0
- data/spec/unit/node_spec.rb +7 -0
- data/spec/unit/platform_spec.rb +15 -1
- data/spec/unit/provider/cookbook_file/content_spec.rb +40 -0
- data/spec/unit/provider/cookbook_file_spec.rb +26 -183
- data/spec/unit/provider/cron/solaris_spec.rb +1 -1
- data/spec/unit/provider/deploy/revision_spec.rb +19 -11
- data/spec/unit/provider/deploy_spec.rb +2 -2
- data/spec/unit/provider/directory_spec.rb +23 -23
- data/spec/unit/provider/execute_spec.rb +27 -1
- data/spec/unit/provider/file/content_spec.rb +101 -0
- data/spec/unit/provider/file_spec.rb +25 -484
- data/spec/unit/provider/git_spec.rb +224 -28
- data/spec/unit/provider/group/usermod_spec.rb +3 -1
- data/spec/unit/provider/ifconfig/debian_spec.rb +89 -0
- data/spec/unit/provider/ifconfig/redhat_spec.rb +71 -0
- data/spec/unit/provider/ifconfig_spec.rb +0 -33
- data/spec/unit/provider/mount/mount_spec.rb +33 -2
- data/spec/unit/provider/mount/windows_spec.rb +4 -1
- data/spec/unit/provider/mount_spec.rb +16 -6
- data/spec/unit/provider/package/portage_spec.rb +44 -0
- data/spec/unit/provider/package/rubygems_spec.rb +44 -1
- data/spec/unit/provider/package/smartos_spec.rb +3 -2
- data/spec/unit/provider/package/yum_spec.rb +36 -39
- data/spec/unit/provider/package/zypper_spec.rb +84 -22
- data/spec/unit/provider/package_spec.rb +0 -4
- data/spec/unit/provider/powershell_spec.rb +38 -0
- data/spec/unit/provider/remote_directory_spec.rb +0 -4
- data/spec/unit/provider/remote_file/cache_control_data_spec.rb +211 -0
- data/spec/unit/provider/remote_file/content_spec.rb +230 -0
- data/spec/unit/provider/remote_file/fetcher_spec.rb +75 -0
- data/spec/unit/provider/remote_file/ftp_spec.rb +224 -0
- data/spec/unit/provider/remote_file/http_spec.rb +319 -0
- data/spec/unit/provider/remote_file/local_file_spec.rb +60 -0
- data/spec/unit/provider/remote_file_spec.rb +33 -295
- data/spec/unit/provider/route_spec.rb +25 -9
- data/spec/unit/provider/service/macosx_spec.rb +176 -152
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +21 -18
- data/spec/unit/provider/service/systemd_service_spec.rb +2 -2
- data/spec/unit/provider/service/upstart_service_spec.rb +2 -2
- data/spec/unit/provider/service_spec.rb +3 -3
- data/spec/unit/provider/template/content_spec.rb +78 -0
- data/spec/unit/provider/template_spec.rb +52 -184
- data/spec/unit/provider/user/solaris_spec.rb +80 -0
- data/spec/unit/provider/user/useradd_spec.rb +12 -358
- data/spec/unit/resource/batch_spec.rb +48 -0
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +45 -0
- data/spec/unit/resource/execute_spec.rb +3 -101
- data/spec/unit/resource/file_spec.rb +0 -5
- data/spec/unit/resource/group_spec.rb +9 -0
- data/spec/unit/resource/ifconfig_spec.rb +60 -1
- data/spec/unit/resource/link_spec.rb +1 -0
- data/spec/unit/resource/mount_spec.rb +37 -0
- data/spec/unit/resource/powershell_spec.rb +48 -0
- data/spec/unit/resource/remote_file_spec.rb +44 -4
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/script_spec.rb +13 -36
- data/spec/unit/resource/template_spec.rb +111 -8
- data/spec/unit/resource/user_spec.rb +7 -0
- data/spec/unit/resource_collection_spec.rb +61 -32
- data/spec/unit/resource_reporter_spec.rb +115 -102
- data/spec/unit/resource_spec.rb +170 -1
- data/spec/unit/rest/auth_credentials_spec.rb +2 -2
- data/spec/unit/rest_spec.rb +6 -2
- data/spec/unit/run_context/cookbook_compiler_spec.rb +9 -0
- data/spec/unit/runner_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +4 -2
- data/spec/unit/shell/shell_session_spec.rb +15 -2
- data/spec/unit/util/backup_spec.rb +149 -0
- data/spec/unit/util/diff_spec.rb +596 -0
- data/spec/unit/util/selinux_spec.rb +172 -0
- data/spec/unit/version/platform_spec.rb +61 -0
- data/spec/unit/version_constraint/platform_spec.rb +46 -0
- data/spec/unit/version_constraint_spec.rb +5 -0
- metadata +233 -10
- data/lib/chef/chef_fs/file_system/data_bag_item.rb +0 -59
- data/spec/unit/chef_fs/file_system/chef_server_root_dir_spec.rb +0 -237
- data/spec/unit/chef_fs/file_system/cookbooks_dir_spec.rb +0 -568
- data/spec/unit/chef_fs/file_system/data_bags_dir_spec.rb +0 -220
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Lamont Granquist (<lamont@opscode.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2013 Opscode, Inc.
|
|
4
|
+
# License:: Apache License, Version 2.0
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
require 'chef/file_content_management/content_base'
|
|
20
|
+
require 'chef/file_content_management/tempfile'
|
|
21
|
+
|
|
22
|
+
class Chef
|
|
23
|
+
class Provider
|
|
24
|
+
class File
|
|
25
|
+
class Content < Chef::FileContentManagement::ContentBase
|
|
26
|
+
def file_for_provider
|
|
27
|
+
if @new_resource.content
|
|
28
|
+
tempfile = Chef::FileContentManagement::Tempfile.new(@new_resource).tempfile
|
|
29
|
+
tempfile.write(@new_resource.content)
|
|
30
|
+
tempfile.close
|
|
31
|
+
tempfile
|
|
32
|
+
else
|
|
33
|
+
nil
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
data/lib/chef/provider/git.rb
CHANGED
|
@@ -21,14 +21,13 @@ require 'chef/log'
|
|
|
21
21
|
require 'chef/provider'
|
|
22
22
|
require 'chef/mixin/shell_out'
|
|
23
23
|
require 'fileutils'
|
|
24
|
-
require 'shellwords'
|
|
25
24
|
|
|
26
25
|
class Chef
|
|
27
26
|
class Provider
|
|
28
27
|
class Git < Chef::Provider
|
|
29
28
|
|
|
30
29
|
include Chef::Mixin::ShellOut
|
|
31
|
-
|
|
30
|
+
|
|
32
31
|
def whyrun_supported?
|
|
33
32
|
true
|
|
34
33
|
end
|
|
@@ -42,7 +41,7 @@ class Chef
|
|
|
42
41
|
end
|
|
43
42
|
|
|
44
43
|
def define_resource_requirements
|
|
45
|
-
# Parent directory of the target must exist.
|
|
44
|
+
# Parent directory of the target must exist.
|
|
46
45
|
requirements.assert(:checkout, :sync) do |a|
|
|
47
46
|
dirname = ::File.dirname(@new_resource.destination)
|
|
48
47
|
a.assertion { ::File.directory?(dirname) }
|
|
@@ -62,16 +61,16 @@ class Chef
|
|
|
62
61
|
end
|
|
63
62
|
|
|
64
63
|
requirements.assert(:all_actions) do |a|
|
|
65
|
-
# this can't be recovered from in why-run mode, because nothing that
|
|
66
|
-
# we do in the course of a run is likely to create a valid target_revision
|
|
64
|
+
# this can't be recovered from in why-run mode, because nothing that
|
|
65
|
+
# we do in the course of a run is likely to create a valid target_revision
|
|
67
66
|
# if we can't resolve it up front.
|
|
68
67
|
a.assertion { target_revision != nil }
|
|
69
|
-
a.failure_message Chef::Exceptions::UnresolvableGitReference,
|
|
68
|
+
a.failure_message Chef::Exceptions::UnresolvableGitReference,
|
|
70
69
|
"Unable to parse SHA reference for '#{@new_resource.revision}' in repository '#{@new_resource.repository}'. " +
|
|
71
|
-
"Verify your (case-sensitive) repository URL and revision.\n" +
|
|
70
|
+
"Verify your (case-sensitive) repository URL and revision.\n" +
|
|
72
71
|
"`git ls-remote` output: #{@resolved_reference}"
|
|
73
72
|
end
|
|
74
|
-
end
|
|
73
|
+
end
|
|
75
74
|
|
|
76
75
|
def action_checkout
|
|
77
76
|
if target_dir_non_existent_or_empty?
|
|
@@ -86,7 +85,7 @@ class Chef
|
|
|
86
85
|
|
|
87
86
|
def action_export
|
|
88
87
|
action_checkout
|
|
89
|
-
converge_by("complete the export by removing #{@new_resource.destination}.git after checkout") do
|
|
88
|
+
converge_by("complete the export by removing #{@new_resource.destination}.git after checkout") do
|
|
90
89
|
FileUtils.rm_rf(::File.join(@new_resource.destination,".git"))
|
|
91
90
|
end
|
|
92
91
|
end
|
|
@@ -129,16 +128,13 @@ class Chef
|
|
|
129
128
|
@new_resource.additional_remotes.each_pair do |remote_name, remote_url|
|
|
130
129
|
converge_by("add remote #{remote_name} from #{remote_url}") do
|
|
131
130
|
Chef::Log.info "#{@new_resource} adding git remote #{remote_name} = #{remote_url}"
|
|
132
|
-
|
|
133
|
-
if shell_out(command, run_options(:cwd => @new_resource.destination, :log_level => :info)).exitstatus != 0
|
|
134
|
-
@new_resource.updated_by_last_action(true)
|
|
135
|
-
end
|
|
131
|
+
setup_remote_tracking_branches(remote_name, remote_url)
|
|
136
132
|
end
|
|
137
133
|
end
|
|
138
134
|
end
|
|
139
135
|
end
|
|
140
136
|
|
|
141
|
-
def clone
|
|
137
|
+
def clone
|
|
142
138
|
converge_by("clone from #{@new_resource.repository} into #{@new_resource.destination}") do
|
|
143
139
|
remote = @new_resource.remote
|
|
144
140
|
|
|
@@ -148,8 +144,8 @@ class Chef
|
|
|
148
144
|
|
|
149
145
|
Chef::Log.info "#{@new_resource} cloning repo #{@new_resource.repository} to #{@new_resource.destination}"
|
|
150
146
|
|
|
151
|
-
clone_cmd = "git clone #{args.join(' ')} #{@new_resource.repository} #{
|
|
152
|
-
shell_out!(clone_cmd, run_options
|
|
147
|
+
clone_cmd = "git clone #{args.join(' ')} \"#{@new_resource.repository}\" \"#{@new_resource.destination}\""
|
|
148
|
+
shell_out!(clone_cmd, run_options)
|
|
153
149
|
end
|
|
154
150
|
end
|
|
155
151
|
|
|
@@ -164,17 +160,20 @@ class Chef
|
|
|
164
160
|
|
|
165
161
|
def enable_submodules
|
|
166
162
|
if @new_resource.enable_submodules
|
|
167
|
-
converge_by("enable git submodules for #{@new_resource}") do
|
|
163
|
+
converge_by("enable git submodules for #{@new_resource}") do
|
|
164
|
+
Chef::Log.info "#{@new_resource} synchronizing git submodules"
|
|
165
|
+
command = "git submodule sync"
|
|
166
|
+
shell_out!(command, run_options(:cwd => @new_resource.destination))
|
|
168
167
|
Chef::Log.info "#{@new_resource} enabling git submodules"
|
|
169
168
|
# the --recursive flag means we require git 1.6.5+ now, see CHEF-1827
|
|
170
169
|
command = "git submodule update --init --recursive"
|
|
171
|
-
shell_out!(command, run_options(:cwd => @new_resource.destination
|
|
170
|
+
shell_out!(command, run_options(:cwd => @new_resource.destination))
|
|
172
171
|
end
|
|
173
172
|
end
|
|
174
173
|
end
|
|
175
174
|
|
|
176
175
|
def fetch_updates
|
|
177
|
-
setup_remote_tracking_branches
|
|
176
|
+
setup_remote_tracking_branches(@new_resource.remote, @new_resource.repository)
|
|
178
177
|
converge_by("fetch updates for #{@new_resource.remote}") do
|
|
179
178
|
# since we're in a local branch already, just reset to specified revision rather than merge
|
|
180
179
|
fetch_command = "git fetch #{@new_resource.remote} && git fetch #{@new_resource.remote} --tags && git reset --hard #{target_revision}"
|
|
@@ -183,23 +182,38 @@ class Chef
|
|
|
183
182
|
end
|
|
184
183
|
end
|
|
185
184
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
185
|
+
def setup_remote_tracking_branches(remote_name, remote_url)
|
|
186
|
+
converge_by("set up remote tracking branches for #{remote_url} at #{remote_name}") do
|
|
187
|
+
Chef::Log.debug "#{@new_resource} configuring remote tracking branches for repository #{remote_url} "+
|
|
188
|
+
"at remote #{remote_name}"
|
|
189
|
+
check_remote_command = "git config --get remote.#{remote_name}.url"
|
|
190
|
+
remote_status = shell_out!(check_remote_command, run_options(:cwd => @new_resource.destination, :returns => [0,1,2]))
|
|
191
|
+
case remote_status.exitstatus
|
|
192
|
+
when 0, 2
|
|
193
|
+
# * Status 0 means that we already have a remote with this name, so we should update the url
|
|
194
|
+
# if it doesn't match the url we want.
|
|
195
|
+
# * Status 2 means that we have multiple urls assigned to the same remote (not a good idea)
|
|
196
|
+
# which we can fix by replacing them all with our target url (hence the --replace-all option)
|
|
197
|
+
|
|
198
|
+
if multiple_remotes?(remote_status) || !remote_matches?(remote_url,remote_status)
|
|
199
|
+
update_remote_url_command = "git config --replace-all remote.#{remote_name}.url #{remote_url}"
|
|
200
|
+
shell_out!(update_remote_url_command, run_options(:cwd => @new_resource.destination))
|
|
201
|
+
end
|
|
202
|
+
when 1
|
|
203
|
+
add_remote_command = "git remote add #{remote_name} #{remote_url}"
|
|
204
|
+
shell_out!(add_remote_command, run_options(:cwd => @new_resource.destination))
|
|
205
|
+
end
|
|
200
206
|
end
|
|
201
207
|
end
|
|
202
208
|
|
|
209
|
+
def multiple_remotes?(check_remote_command_result)
|
|
210
|
+
check_remote_command_result.exitstatus == 2
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
def remote_matches?(remote_url, check_remote_command_result)
|
|
214
|
+
check_remote_command_result.stdout.strip.eql?(remote_url)
|
|
215
|
+
end
|
|
216
|
+
|
|
203
217
|
def current_revision_matches_target_revision?
|
|
204
218
|
(!@current_resource.revision.nil?) && (target_revision.strip.to_i(16) == @current_resource.revision.strip.to_i(16))
|
|
205
219
|
end
|
|
@@ -218,12 +232,37 @@ class Chef
|
|
|
218
232
|
|
|
219
233
|
def remote_resolve_reference
|
|
220
234
|
Chef::Log.debug("#{@new_resource} resolving remote reference")
|
|
221
|
-
|
|
235
|
+
# The sha pointed to by an annotated tag is identified by the
|
|
236
|
+
# '^{}' suffix appended to the tag. In order to resolve
|
|
237
|
+
# annotated tags, we have to search for "revision*" and
|
|
238
|
+
# post-process. Special handling for 'HEAD' to ignore a tag
|
|
239
|
+
# named 'HEAD'.
|
|
240
|
+
rev_pattern = case @new_resource.revision
|
|
241
|
+
when '', 'HEAD'
|
|
242
|
+
'HEAD'
|
|
243
|
+
else
|
|
244
|
+
@new_resource.revision + '*'
|
|
245
|
+
end
|
|
246
|
+
command = git("ls-remote \"#{@new_resource.repository}\"", rev_pattern)
|
|
222
247
|
@resolved_reference = shell_out!(command, run_options).stdout
|
|
223
|
-
|
|
224
|
-
|
|
248
|
+
ref_lines = @resolved_reference.split("\n")
|
|
249
|
+
refs = ref_lines.map { |line| line.split("\t") }
|
|
250
|
+
# first try for ^{} indicating the commit pointed to by an
|
|
251
|
+
# annotated tag
|
|
252
|
+
tagged_commit = refs.find { |m| m[1].end_with?("#{@new_resource.revision}^{}") }
|
|
253
|
+
# It is possible for a user to create a tag named 'HEAD'.
|
|
254
|
+
# Using such a degenerate annotated tag would be very
|
|
255
|
+
# confusing. We avoid the issue by disallowing the use of
|
|
256
|
+
# annotated tags named 'HEAD'.
|
|
257
|
+
if tagged_commit && rev_pattern != 'HEAD'
|
|
258
|
+
tagged_commit[0]
|
|
225
259
|
else
|
|
226
|
-
|
|
260
|
+
found = refs.find { |m| m[1].end_with?(@new_resource.revision) }
|
|
261
|
+
if found
|
|
262
|
+
found[0]
|
|
263
|
+
else
|
|
264
|
+
nil
|
|
265
|
+
end
|
|
227
266
|
end
|
|
228
267
|
end
|
|
229
268
|
|
|
@@ -234,12 +273,6 @@ class Chef
|
|
|
234
273
|
run_opts[:group] = @new_resource.group if @new_resource.group
|
|
235
274
|
run_opts[:environment] = {"GIT_SSH" => @new_resource.ssh_wrapper} if @new_resource.ssh_wrapper
|
|
236
275
|
run_opts[:log_tag] = @new_resource.to_s
|
|
237
|
-
run_opts[:log_level] ||= :debug
|
|
238
|
-
if run_opts[:log_level] == :info
|
|
239
|
-
if STDOUT.tty? && !Chef::Config[:daemon] && Chef::Log.info?
|
|
240
|
-
run_opts[:live_stream] = STDOUT
|
|
241
|
-
end
|
|
242
|
-
end
|
|
243
276
|
run_opts
|
|
244
277
|
end
|
|
245
278
|
|
|
@@ -45,9 +45,9 @@ class Chef
|
|
|
45
45
|
|
|
46
46
|
def modify_group_members
|
|
47
47
|
case node[:platform]
|
|
48
|
-
when "openbsd", "netbsd", "aix", "solaris2"
|
|
48
|
+
when "openbsd", "netbsd", "aix", "solaris2", "smartos"
|
|
49
49
|
append_flags = "-G"
|
|
50
|
-
when "solaris"
|
|
50
|
+
when "solaris", "suse"
|
|
51
51
|
append_flags = "-a -G"
|
|
52
52
|
end
|
|
53
53
|
|
|
@@ -39,6 +39,15 @@ class Chef
|
|
|
39
39
|
class Ifconfig < Chef::Provider
|
|
40
40
|
include Chef::Mixin::Command
|
|
41
41
|
|
|
42
|
+
attr_accessor :config_template
|
|
43
|
+
attr_accessor :config_path
|
|
44
|
+
|
|
45
|
+
def initialize(new_resource, run_context)
|
|
46
|
+
super(new_resource, run_context)
|
|
47
|
+
@config_template = nil
|
|
48
|
+
@config_path = nil
|
|
49
|
+
end
|
|
50
|
+
|
|
42
51
|
def whyrun_supported?
|
|
43
52
|
true
|
|
44
53
|
end
|
|
@@ -163,50 +172,31 @@ class Chef
|
|
|
163
172
|
end
|
|
164
173
|
end
|
|
165
174
|
|
|
175
|
+
def can_generate_config?
|
|
176
|
+
! @config_template.nil? and ! @config_path.nil?
|
|
177
|
+
end
|
|
178
|
+
|
|
166
179
|
def generate_config
|
|
180
|
+
return unless can_generate_config?
|
|
167
181
|
b = binding
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
<% if @new_resource.bootproto %>BOOTPROTO=<%= @new_resource.bootproto %><% end %>
|
|
174
|
-
<% if @new_resource.target %>IPADDR=<%= @new_resource.target %><% end %>
|
|
175
|
-
<% if @new_resource.mask %>NETMASK=<%= @new_resource.mask %><% end %>
|
|
176
|
-
<% if @new_resource.network %>NETWORK=<%= @new_resource.network %><% end %>
|
|
177
|
-
<% if @new_resource.bcast %>BROADCAST=<%= @new_resource.bcast %><% end %>
|
|
178
|
-
<% if @new_resource.onparent %>ONPARENT=<%= @new_resource.onparent %><% end %>
|
|
179
|
-
}
|
|
180
|
-
template = ::ERB.new(content)
|
|
181
|
-
network_file_name = "/etc/sysconfig/network-scripts/ifcfg-#{@new_resource.device}"
|
|
182
|
-
converge_by ("generate configuration file : #{network_file_name}") do
|
|
183
|
-
network_file = ::File.new(network_file_name, "w")
|
|
184
|
-
network_file.puts(template.result(b))
|
|
185
|
-
network_file.close
|
|
186
|
-
end
|
|
187
|
-
Chef::Log.info("#{@new_resource} created configuration file")
|
|
188
|
-
when "debian","ubuntu"
|
|
189
|
-
# template
|
|
190
|
-
when "slackware"
|
|
191
|
-
# template
|
|
182
|
+
template = ::ERB.new(@config_template)
|
|
183
|
+
converge_by ("generate configuration file : #{@config_path}") do
|
|
184
|
+
network_file = ::File.new(@config_path, "w")
|
|
185
|
+
network_file.puts(template.result(b))
|
|
186
|
+
network_file.close
|
|
192
187
|
end
|
|
188
|
+
Chef::Log.info("#{@new_resource} created configuration file")
|
|
193
189
|
end
|
|
194
190
|
|
|
195
191
|
def delete_config
|
|
192
|
+
return unless can_generate_config?
|
|
196
193
|
require 'fileutils'
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
if ::File.exist?(ifcfg_file)
|
|
201
|
-
converge_by ("delete the #{ifcfg_file}") do
|
|
202
|
-
FileUtils.rm_f(ifcfg_file, :verbose => false)
|
|
203
|
-
end
|
|
194
|
+
if ::File.exist?(@config_path)
|
|
195
|
+
converge_by ("delete the #{@config_path}") do
|
|
196
|
+
FileUtils.rm_f(@config_path, :verbose => false)
|
|
204
197
|
end
|
|
205
|
-
when "debian","ubuntu"
|
|
206
|
-
# delete configs
|
|
207
|
-
when "slackware"
|
|
208
|
-
# delete configs
|
|
209
198
|
end
|
|
199
|
+
Chef::Log.info("#{@new_resource} deleted configuration file")
|
|
210
200
|
end
|
|
211
201
|
|
|
212
202
|
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Xabier de Zuazo (xabier@onddo.com)
|
|
3
|
+
# Copyright:: Copyright (c) 2013 Onddo Labs, SL.
|
|
4
|
+
# License:: Apache License, Version 2.0
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
require 'chef/provider/ifconfig'
|
|
20
|
+
require 'chef/util/file_edit'
|
|
21
|
+
|
|
22
|
+
class Chef
|
|
23
|
+
class Provider
|
|
24
|
+
class Ifconfig
|
|
25
|
+
class Debian < Chef::Provider::Ifconfig
|
|
26
|
+
|
|
27
|
+
def initialize(new_resource, run_context)
|
|
28
|
+
super(new_resource, run_context)
|
|
29
|
+
@config_template = %{
|
|
30
|
+
<% if @new_resource.device %>
|
|
31
|
+
<% if @new_resource.onboot == "yes" %>auto <%= @new_resource.device %><% end %>
|
|
32
|
+
<% case @new_resource.bootproto
|
|
33
|
+
when "dhcp" %>
|
|
34
|
+
iface <%= @new_resource.device %> inet dhcp
|
|
35
|
+
<% when "bootp" %>
|
|
36
|
+
iface <%= @new_resource.device %> inet bootp
|
|
37
|
+
<% else %>
|
|
38
|
+
iface <%= @new_resource.device %> inet static
|
|
39
|
+
<% if @new_resource.target %>address <%= @new_resource.target %><% end %>
|
|
40
|
+
<% if @new_resource.mask %>netmask <%= @new_resource.mask %><% end %>
|
|
41
|
+
<% if @new_resource.network %>network <%= @new_resource.network %><% end %>
|
|
42
|
+
<% if @new_resource.bcast %>broadcast <%= @new_resource.bcast %><% end %>
|
|
43
|
+
<% if @new_resource.metric %>metric <%= @new_resource.metric %><% end %>
|
|
44
|
+
<% if @new_resource.hwaddr %>hwaddress <%= @new_resource.hwaddr %><% end %>
|
|
45
|
+
<% if @new_resource.mtu %>mtu <%= @new_resource.mtu %><% end %>
|
|
46
|
+
<% end %>
|
|
47
|
+
<% end %>
|
|
48
|
+
}
|
|
49
|
+
@config_path = "/etc/network/interfaces.d/ifcfg-#{@new_resource.device}"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def generate_config
|
|
53
|
+
check_interfaces_config
|
|
54
|
+
super
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
protected
|
|
58
|
+
|
|
59
|
+
def check_interfaces_config
|
|
60
|
+
converge_by ('modify configuration file : /etc/network/interfaces') do
|
|
61
|
+
Dir.mkdir('/etc/network/interfaces.d') unless ::File.directory?('/etc/network/interfaces.d')
|
|
62
|
+
conf = Chef::Util::FileEdit.new('/etc/network/interfaces')
|
|
63
|
+
conf.insert_line_if_no_match('^\s*source\s+/etc/network/interfaces[.]d/[*]\s*$', 'source /etc/network/interfaces.d/*')
|
|
64
|
+
conf.write_file
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Xabier de Zuazo (xabier@onddo.com)
|
|
3
|
+
# Copyright:: Copyright (c) 2013 Onddo Labs, SL.
|
|
4
|
+
# License:: Apache License, Version 2.0
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
require 'chef/provider/ifconfig'
|
|
20
|
+
|
|
21
|
+
class Chef
|
|
22
|
+
class Provider
|
|
23
|
+
class Ifconfig
|
|
24
|
+
class Redhat < Chef::Provider::Ifconfig
|
|
25
|
+
|
|
26
|
+
def initialize(new_resource, run_context)
|
|
27
|
+
super(new_resource, run_context)
|
|
28
|
+
@config_template = %{
|
|
29
|
+
<% if @new_resource.device %>DEVICE=<%= @new_resource.device %><% end %>
|
|
30
|
+
<% if @new_resource.onboot == "yes" %>ONBOOT=<%= @new_resource.onboot %><% end %>
|
|
31
|
+
<% if @new_resource.bootproto %>BOOTPROTO=<%= @new_resource.bootproto %><% end %>
|
|
32
|
+
<% if @new_resource.target %>IPADDR=<%= @new_resource.target %><% end %>
|
|
33
|
+
<% if @new_resource.mask %>NETMASK=<%= @new_resource.mask %><% end %>
|
|
34
|
+
<% if @new_resource.network %>NETWORK=<%= @new_resource.network %><% end %>
|
|
35
|
+
<% if @new_resource.bcast %>BROADCAST=<%= @new_resource.bcast %><% end %>
|
|
36
|
+
<% if @new_resource.onparent %>ONPARENT=<%= @new_resource.onparent %><% end %>
|
|
37
|
+
<% if @new_resource.hwaddr %>HWADDR=<%= @new_resource.hwaddr %><% end %>
|
|
38
|
+
<% if @new_resource.metric %>METRIC=<%= @new_resource.metric %><% end %>
|
|
39
|
+
<% if @new_resource.mtu %>MTU=<%= @new_resource.mtu %><% end %>
|
|
40
|
+
}
|
|
41
|
+
@config_path = "/etc/sysconfig/network-scripts/ifcfg-#{@new_resource.device}"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|