tylerrick-chef 0.10.8
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/LICENSE +201 -0
- data/README.rdoc +171 -0
- data/bin/chef-client +26 -0
- data/bin/chef-solo +25 -0
- data/bin/knife +26 -0
- data/bin/shef +34 -0
- data/distro/README +2 -0
- data/distro/arch/etc/conf.d/chef-client.conf +5 -0
- data/distro/arch/etc/conf.d/chef-expander.conf +8 -0
- data/distro/arch/etc/conf.d/chef-server-webui.conf +10 -0
- data/distro/arch/etc/conf.d/chef-server.conf +10 -0
- data/distro/arch/etc/conf.d/chef-solr.conf +8 -0
- data/distro/arch/etc/rc.d/chef-client +76 -0
- data/distro/arch/etc/rc.d/chef-expander +78 -0
- data/distro/arch/etc/rc.d/chef-server +78 -0
- data/distro/arch/etc/rc.d/chef-server-webui +78 -0
- data/distro/arch/etc/rc.d/chef-solr +78 -0
- data/distro/common/html/chef-client.8.html +146 -0
- data/distro/common/html/chef-expander.8.html +164 -0
- data/distro/common/html/chef-expanderctl.8.html +146 -0
- data/distro/common/html/chef-server-webui.8.html +185 -0
- data/distro/common/html/chef-server.8.html +182 -0
- data/distro/common/html/chef-solo.8.html +191 -0
- data/distro/common/html/chef-solr.8.html +165 -0
- data/distro/common/html/knife-bootstrap.1.html +243 -0
- data/distro/common/html/knife-client.1.html +219 -0
- data/distro/common/html/knife-configure.1.html +170 -0
- data/distro/common/html/knife-cookbook-site.1.html +241 -0
- data/distro/common/html/knife-cookbook.1.html +384 -0
- data/distro/common/html/knife-data-bag.1.html +234 -0
- data/distro/common/html/knife-environment.1.html +267 -0
- data/distro/common/html/knife-exec.1.html +134 -0
- data/distro/common/html/knife-index.1.html +125 -0
- data/distro/common/html/knife-node.1.html +250 -0
- data/distro/common/html/knife-recipe.1.html +92 -0
- data/distro/common/html/knife-role.1.html +200 -0
- data/distro/common/html/knife-search.1.html +288 -0
- data/distro/common/html/knife-ssh.1.html +157 -0
- data/distro/common/html/knife-status.1.html +128 -0
- data/distro/common/html/knife-tag.1.html +137 -0
- data/distro/common/html/knife.1.html +321 -0
- data/distro/common/html/shef.1.html +283 -0
- data/distro/common/man/man1/knife-bootstrap.1 +197 -0
- data/distro/common/man/man1/knife-client.1 +99 -0
- data/distro/common/man/man1/knife-configure.1 +88 -0
- data/distro/common/man/man1/knife-cookbook-site.1 +145 -0
- data/distro/common/man/man1/knife-cookbook.1 +345 -0
- data/distro/common/man/man1/knife-data-bag.1 +130 -0
- data/distro/common/man/man1/knife-environment.1 +178 -0
- data/distro/common/man/man1/knife-exec.1 +46 -0
- data/distro/common/man/man1/knife-index.1 +29 -0
- data/distro/common/man/man1/knife-node.1 +134 -0
- data/distro/common/man/man1/knife-role.1 +88 -0
- data/distro/common/man/man1/knife-search.1 +280 -0
- data/distro/common/man/man1/knife-ssh.1 +83 -0
- data/distro/common/man/man1/knife-status.1 +29 -0
- data/distro/common/man/man1/knife-tag.1 +43 -0
- data/distro/common/man/man1/knife.1 +292 -0
- data/distro/common/man/man1/shef.1 +256 -0
- data/distro/common/man/man8/chef-client.8 +104 -0
- data/distro/common/man/man8/chef-expander.8 +97 -0
- data/distro/common/man/man8/chef-expanderctl.8 +62 -0
- data/distro/common/man/man8/chef-server-webui.8 +155 -0
- data/distro/common/man/man8/chef-server.8 +147 -0
- data/distro/common/man/man8/chef-solo.8 +158 -0
- data/distro/common/man/man8/chef-solr.8 +122 -0
- data/distro/common/markdown/README +3 -0
- data/distro/common/markdown/man1/knife-bootstrap.mkd +142 -0
- data/distro/common/markdown/man1/knife-client.mkd +103 -0
- data/distro/common/markdown/man1/knife-configure.mkd +70 -0
- data/distro/common/markdown/man1/knife-cookbook-site.mkd +123 -0
- data/distro/common/markdown/man1/knife-cookbook.mkd +263 -0
- data/distro/common/markdown/man1/knife-data-bag.mkd +117 -0
- data/distro/common/markdown/man1/knife-environment.mkd +151 -0
- data/distro/common/markdown/man1/knife-exec.mkd +37 -0
- data/distro/common/markdown/man1/knife-index.mkd +30 -0
- data/distro/common/markdown/man1/knife-node.mkd +130 -0
- data/distro/common/markdown/man1/knife-role.mkd +85 -0
- data/distro/common/markdown/man1/knife-search.mkd +180 -0
- data/distro/common/markdown/man1/knife-ssh.mkd +72 -0
- data/distro/common/markdown/man1/knife-status.mkd +36 -0
- data/distro/common/markdown/man1/knife-tag.mkd +39 -0
- data/distro/common/markdown/man1/knife.mkd +220 -0
- data/distro/common/markdown/man1/shef.mkd +189 -0
- data/distro/common/markdown/man8/chef-client.mkd +75 -0
- data/distro/common/markdown/man8/chef-expander.mkd +82 -0
- data/distro/common/markdown/man8/chef-expanderctl.mkd +58 -0
- data/distro/common/markdown/man8/chef-server-webui.mkd +121 -0
- data/distro/common/markdown/man8/chef-server.mkd +121 -0
- data/distro/common/markdown/man8/chef-solo.mkd +107 -0
- data/distro/common/markdown/man8/chef-solr.mkd +89 -0
- data/distro/debian/etc/default/chef-client +4 -0
- data/distro/debian/etc/default/chef-expander +8 -0
- data/distro/debian/etc/default/chef-server +9 -0
- data/distro/debian/etc/default/chef-server-webui +9 -0
- data/distro/debian/etc/default/chef-solr +8 -0
- data/distro/debian/etc/init.d/chef-client +185 -0
- data/distro/debian/etc/init.d/chef-expander +176 -0
- data/distro/debian/etc/init.d/chef-server +122 -0
- data/distro/debian/etc/init.d/chef-server-webui +123 -0
- data/distro/debian/etc/init.d/chef-solr +176 -0
- data/distro/debian/etc/init/chef-client.conf +17 -0
- data/distro/debian/etc/init/chef-expander.conf +17 -0
- data/distro/debian/etc/init/chef-server-webui.conf +17 -0
- data/distro/debian/etc/init/chef-server.conf +17 -0
- data/distro/debian/etc/init/chef-solr.conf +17 -0
- data/distro/redhat/etc/init.d/chef-client +110 -0
- data/distro/redhat/etc/init.d/chef-expander +104 -0
- data/distro/redhat/etc/init.d/chef-server +112 -0
- data/distro/redhat/etc/init.d/chef-server-webui +112 -0
- data/distro/redhat/etc/init.d/chef-solr +104 -0
- data/distro/redhat/etc/logrotate.d/chef-client +8 -0
- data/distro/redhat/etc/logrotate.d/chef-expander +8 -0
- data/distro/redhat/etc/logrotate.d/chef-server +8 -0
- data/distro/redhat/etc/logrotate.d/chef-server-webui +8 -0
- data/distro/redhat/etc/logrotate.d/chef-solr +8 -0
- data/distro/redhat/etc/sysconfig/chef-client +15 -0
- data/distro/redhat/etc/sysconfig/chef-expander +7 -0
- data/distro/redhat/etc/sysconfig/chef-server +14 -0
- data/distro/redhat/etc/sysconfig/chef-server-webui +14 -0
- data/distro/redhat/etc/sysconfig/chef-solr +8 -0
- data/lib/chef.rb +41 -0
- data/lib/chef/api_client.rb +271 -0
- data/lib/chef/application.rb +152 -0
- data/lib/chef/application/agent.rb +18 -0
- data/lib/chef/application/client.rb +285 -0
- data/lib/chef/application/knife.rb +188 -0
- data/lib/chef/application/solo.rb +218 -0
- data/lib/chef/applications.rb +4 -0
- data/lib/chef/certificate.rb +194 -0
- data/lib/chef/checksum.rb +167 -0
- data/lib/chef/checksum/storage.rb +18 -0
- data/lib/chef/checksum/storage/filesystem.rb +56 -0
- data/lib/chef/checksum_cache.rb +189 -0
- data/lib/chef/client.rb +366 -0
- data/lib/chef/config.rb +248 -0
- data/lib/chef/cookbook/chefignore.rb +66 -0
- data/lib/chef/cookbook/cookbook_collection.rb +45 -0
- data/lib/chef/cookbook/cookbook_version_loader.rb +173 -0
- data/lib/chef/cookbook/file_system_file_vendor.rb +56 -0
- data/lib/chef/cookbook/file_vendor.rb +48 -0
- data/lib/chef/cookbook/metadata.rb +629 -0
- data/lib/chef/cookbook/remote_file_vendor.rb +88 -0
- data/lib/chef/cookbook/syntax_check.rb +136 -0
- data/lib/chef/cookbook_loader.rb +121 -0
- data/lib/chef/cookbook_site_streaming_uploader.rb +244 -0
- data/lib/chef/cookbook_uploader.rb +154 -0
- data/lib/chef/cookbook_version.rb +1096 -0
- data/lib/chef/cookbook_version_selector.rb +168 -0
- data/lib/chef/couchdb.rb +246 -0
- data/lib/chef/daemon.rb +172 -0
- data/lib/chef/data_bag.rb +235 -0
- data/lib/chef/data_bag_item.rb +273 -0
- data/lib/chef/encrypted_data_bag_item.rb +139 -0
- data/lib/chef/environment.rb +455 -0
- data/lib/chef/exceptions.rb +154 -0
- data/lib/chef/file_access_control.rb +144 -0
- data/lib/chef/file_cache.rb +218 -0
- data/lib/chef/handler.rb +227 -0
- data/lib/chef/handler/error_report.rb +33 -0
- data/lib/chef/handler/json_file.rb +58 -0
- data/lib/chef/index_queue.rb +29 -0
- data/lib/chef/index_queue/amqp_client.rb +116 -0
- data/lib/chef/index_queue/consumer.rb +76 -0
- data/lib/chef/index_queue/indexable.rb +109 -0
- data/lib/chef/json_compat.rb +52 -0
- data/lib/chef/knife.rb +520 -0
- data/lib/chef/knife/bootstrap.rb +207 -0
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +60 -0
- data/lib/chef/knife/bootstrap/centos5-gems.erb +56 -0
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +43 -0
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +49 -0
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +50 -0
- data/lib/chef/knife/client_bulk_delete.rb +65 -0
- data/lib/chef/knife/client_create.rb +79 -0
- data/lib/chef/knife/client_delete.rb +46 -0
- data/lib/chef/knife/client_edit.rb +45 -0
- data/lib/chef/knife/client_list.rb +42 -0
- data/lib/chef/knife/client_reregister.rb +58 -0
- data/lib/chef/knife/client_show.rb +52 -0
- data/lib/chef/knife/configure.rb +149 -0
- data/lib/chef/knife/configure_client.rb +50 -0
- data/lib/chef/knife/cookbook_bulk_delete.rb +72 -0
- data/lib/chef/knife/cookbook_create.rb +274 -0
- data/lib/chef/knife/cookbook_delete.rb +151 -0
- data/lib/chef/knife/cookbook_download.rb +137 -0
- data/lib/chef/knife/cookbook_list.rb +47 -0
- data/lib/chef/knife/cookbook_metadata.rb +107 -0
- data/lib/chef/knife/cookbook_metadata_from_file.rb +44 -0
- data/lib/chef/knife/cookbook_show.rb +102 -0
- data/lib/chef/knife/cookbook_site_download.rb +70 -0
- data/lib/chef/knife/cookbook_site_install.rb +148 -0
- data/lib/chef/knife/cookbook_site_list.rb +62 -0
- data/lib/chef/knife/cookbook_site_search.rb +51 -0
- data/lib/chef/knife/cookbook_site_share.rb +114 -0
- data/lib/chef/knife/cookbook_site_show.rb +57 -0
- data/lib/chef/knife/cookbook_site_unshare.rb +56 -0
- data/lib/chef/knife/cookbook_site_vendor.rb +46 -0
- data/lib/chef/knife/cookbook_test.rb +93 -0
- data/lib/chef/knife/cookbook_upload.rb +240 -0
- data/lib/chef/knife/core/bootstrap_context.rb +100 -0
- data/lib/chef/knife/core/cookbook_scm_repo.rb +148 -0
- data/lib/chef/knife/core/generic_presenter.rb +191 -0
- data/lib/chef/knife/core/node_editor.rb +127 -0
- data/lib/chef/knife/core/node_presenter.rb +136 -0
- data/lib/chef/knife/core/object_loader.rb +75 -0
- data/lib/chef/knife/core/subcommand_loader.rb +112 -0
- data/lib/chef/knife/core/text_formatter.rb +100 -0
- data/lib/chef/knife/core/ui.rb +216 -0
- data/lib/chef/knife/data_bag_create.rb +93 -0
- data/lib/chef/knife/data_bag_delete.rb +51 -0
- data/lib/chef/knife/data_bag_edit.rb +94 -0
- data/lib/chef/knife/data_bag_from_file.rb +87 -0
- data/lib/chef/knife/data_bag_list.rb +46 -0
- data/lib/chef/knife/data_bag_show.rb +81 -0
- data/lib/chef/knife/environment_create.rb +53 -0
- data/lib/chef/knife/environment_delete.rb +45 -0
- data/lib/chef/knife/environment_edit.rb +45 -0
- data/lib/chef/knife/environment_from_file.rb +50 -0
- data/lib/chef/knife/environment_list.rb +42 -0
- data/lib/chef/knife/environment_show.rb +46 -0
- data/lib/chef/knife/exec.rb +51 -0
- data/lib/chef/knife/help.rb +103 -0
- data/lib/chef/knife/help_topics.rb +4 -0
- data/lib/chef/knife/index_rebuild.rb +50 -0
- data/lib/chef/knife/node_bulk_delete.rb +80 -0
- data/lib/chef/knife/node_create.rb +50 -0
- data/lib/chef/knife/node_delete.rb +47 -0
- data/lib/chef/knife/node_edit.rb +72 -0
- data/lib/chef/knife/node_from_file.rb +50 -0
- data/lib/chef/knife/node_list.rb +46 -0
- data/lib/chef/knife/node_run_list_add.rb +67 -0
- data/lib/chef/knife/node_run_list_remove.rb +48 -0
- data/lib/chef/knife/node_show.rb +73 -0
- data/lib/chef/knife/recipe_list.rb +32 -0
- data/lib/chef/knife/role_bulk_delete.rb +70 -0
- data/lib/chef/knife/role_create.rb +55 -0
- data/lib/chef/knife/role_delete.rb +47 -0
- data/lib/chef/knife/role_edit.rb +48 -0
- data/lib/chef/knife/role_from_file.rb +56 -0
- data/lib/chef/knife/role_list.rb +43 -0
- data/lib/chef/knife/role_show.rb +54 -0
- data/lib/chef/knife/search.rb +141 -0
- data/lib/chef/knife/ssh.rb +367 -0
- data/lib/chef/knife/status.rb +104 -0
- data/lib/chef/knife/tag_create.rb +52 -0
- data/lib/chef/knife/tag_delete.rb +60 -0
- data/lib/chef/knife/tag_list.rb +47 -0
- data/lib/chef/log.rb +39 -0
- data/lib/chef/mash.rb +211 -0
- data/lib/chef/mixin/check_helper.rb +31 -0
- data/lib/chef/mixin/checksum.rb +32 -0
- data/lib/chef/mixin/command.rb +163 -0
- data/lib/chef/mixin/command/unix.rb +215 -0
- data/lib/chef/mixin/command/windows.rb +76 -0
- data/lib/chef/mixin/convert_to_class_name.rb +63 -0
- data/lib/chef/mixin/create_path.rb +57 -0
- data/lib/chef/mixin/deep_merge.rb +225 -0
- data/lib/chef/mixin/deprecation.rb +65 -0
- data/lib/chef/mixin/from_file.rb +50 -0
- data/lib/chef/mixin/get_source_from_package.rb +42 -0
- data/lib/chef/mixin/language.rb +163 -0
- data/lib/chef/mixin/language_include_attribute.rb +61 -0
- data/lib/chef/mixin/language_include_recipe.rb +52 -0
- data/lib/chef/mixin/params_validate.rb +225 -0
- data/lib/chef/mixin/recipe_definition_dsl_core.rb +78 -0
- data/lib/chef/mixin/shell_out.rb +41 -0
- data/lib/chef/mixin/template.rb +95 -0
- data/lib/chef/mixin/xml_escape.rb +140 -0
- data/lib/chef/mixins.rb +15 -0
- data/lib/chef/monkey_patches/dir.rb +36 -0
- data/lib/chef/monkey_patches/numeric.rb +15 -0
- data/lib/chef/monkey_patches/object.rb +9 -0
- data/lib/chef/monkey_patches/regexp.rb +34 -0
- data/lib/chef/monkey_patches/string.rb +49 -0
- data/lib/chef/monkey_patches/tempfile.rb +64 -0
- data/lib/chef/nil_argument.rb +3 -0
- data/lib/chef/node.rb +677 -0
- data/lib/chef/node/attribute.rb +487 -0
- data/lib/chef/openid_registration.rb +187 -0
- data/lib/chef/platform.rb +434 -0
- data/lib/chef/provider.rb +124 -0
- data/lib/chef/provider/breakpoint.rb +36 -0
- data/lib/chef/provider/cookbook_file.rb +100 -0
- data/lib/chef/provider/cron.rb +186 -0
- data/lib/chef/provider/cron/solaris.rb +195 -0
- data/lib/chef/provider/deploy.rb +418 -0
- data/lib/chef/provider/deploy/revision.rb +80 -0
- data/lib/chef/provider/deploy/timestamped.rb +33 -0
- data/lib/chef/provider/directory.rb +72 -0
- data/lib/chef/provider/env.rb +152 -0
- data/lib/chef/provider/env/windows.rb +75 -0
- data/lib/chef/provider/erl_call.rb +101 -0
- data/lib/chef/provider/execute.rb +65 -0
- data/lib/chef/provider/file.rb +226 -0
- data/lib/chef/provider/git.rb +243 -0
- data/lib/chef/provider/group.rb +133 -0
- data/lib/chef/provider/group/aix.rb +70 -0
- data/lib/chef/provider/group/dscl.rb +121 -0
- data/lib/chef/provider/group/gpasswd.rb +53 -0
- data/lib/chef/provider/group/groupadd.rb +91 -0
- data/lib/chef/provider/group/pw.rb +84 -0
- data/lib/chef/provider/group/suse.rb +53 -0
- data/lib/chef/provider/group/usermod.rb +57 -0
- data/lib/chef/provider/group/windows.rb +79 -0
- data/lib/chef/provider/http_request.rb +122 -0
- data/lib/chef/provider/ifconfig.rb +195 -0
- data/lib/chef/provider/link.rb +164 -0
- data/lib/chef/provider/log.rb +54 -0
- data/lib/chef/provider/mdadm.rb +91 -0
- data/lib/chef/provider/mount.rb +114 -0
- data/lib/chef/provider/mount/mount.rb +240 -0
- data/lib/chef/provider/mount/windows.rb +81 -0
- data/lib/chef/provider/ohai.rb +42 -0
- data/lib/chef/provider/package.rb +200 -0
- data/lib/chef/provider/package/apt.rb +145 -0
- data/lib/chef/provider/package/dpkg.rb +115 -0
- data/lib/chef/provider/package/easy_install.rb +136 -0
- data/lib/chef/provider/package/freebsd.rb +125 -0
- data/lib/chef/provider/package/macports.rb +105 -0
- data/lib/chef/provider/package/pacman.rb +101 -0
- data/lib/chef/provider/package/portage.rb +135 -0
- data/lib/chef/provider/package/rpm.rb +104 -0
- data/lib/chef/provider/package/rubygems.rb +465 -0
- data/lib/chef/provider/package/solaris.rb +130 -0
- data/lib/chef/provider/package/yum-dump.py +286 -0
- data/lib/chef/provider/package/yum.rb +1173 -0
- data/lib/chef/provider/package/zypper.rb +144 -0
- data/lib/chef/provider/remote_directory.rb +137 -0
- data/lib/chef/provider/remote_file.rb +118 -0
- data/lib/chef/provider/route.rb +193 -0
- data/lib/chef/provider/ruby_block.rb +34 -0
- data/lib/chef/provider/script.rb +55 -0
- data/lib/chef/provider/service.rb +122 -0
- data/lib/chef/provider/service/arch.rb +116 -0
- data/lib/chef/provider/service/debian.rb +130 -0
- data/lib/chef/provider/service/freebsd.rb +154 -0
- data/lib/chef/provider/service/gentoo.rb +53 -0
- data/lib/chef/provider/service/init.rb +71 -0
- data/lib/chef/provider/service/insserv.rb +52 -0
- data/lib/chef/provider/service/invokercd.rb +35 -0
- data/lib/chef/provider/service/redhat.rb +60 -0
- data/lib/chef/provider/service/simple.rb +120 -0
- data/lib/chef/provider/service/solaris.rb +85 -0
- data/lib/chef/provider/service/systemd.rb +102 -0
- data/lib/chef/provider/service/upstart.rb +198 -0
- data/lib/chef/provider/service/windows.rb +155 -0
- data/lib/chef/provider/subversion.rb +197 -0
- data/lib/chef/provider/template.rb +104 -0
- data/lib/chef/provider/user.rb +186 -0
- data/lib/chef/provider/user/dscl.rb +280 -0
- data/lib/chef/provider/user/pw.rb +113 -0
- data/lib/chef/provider/user/useradd.rb +137 -0
- data/lib/chef/provider/user/windows.rb +124 -0
- data/lib/chef/providers.rb +95 -0
- data/lib/chef/recipe.rb +129 -0
- data/lib/chef/resource.rb +609 -0
- data/lib/chef/resource/apt_package.rb +34 -0
- data/lib/chef/resource/bash.rb +33 -0
- data/lib/chef/resource/breakpoint.rb +35 -0
- data/lib/chef/resource/conditional.rb +90 -0
- data/lib/chef/resource/cookbook_file.rb +45 -0
- data/lib/chef/resource/cron.rb +188 -0
- data/lib/chef/resource/csh.rb +33 -0
- data/lib/chef/resource/deploy.rb +389 -0
- data/lib/chef/resource/deploy_revision.rb +40 -0
- data/lib/chef/resource/directory.rb +76 -0
- data/lib/chef/resource/dpkg_package.rb +34 -0
- data/lib/chef/resource/easy_install_package.rb +57 -0
- data/lib/chef/resource/env.rb +58 -0
- data/lib/chef/resource/erl_call.rb +83 -0
- data/lib/chef/resource/execute.rb +127 -0
- data/lib/chef/resource/file.rb +99 -0
- data/lib/chef/resource/freebsd_package.rb +35 -0
- data/lib/chef/resource/gem_package.rb +53 -0
- data/lib/chef/resource/git.rb +46 -0
- data/lib/chef/resource/group.rb +78 -0
- data/lib/chef/resource/http_request.rb +61 -0
- data/lib/chef/resource/ifconfig.rb +144 -0
- data/lib/chef/resource/link.rb +78 -0
- data/lib/chef/resource/log.rb +62 -0
- data/lib/chef/resource/macports_package.rb +29 -0
- data/lib/chef/resource/mdadm.rb +82 -0
- data/lib/chef/resource/mount.rb +134 -0
- data/lib/chef/resource/ohai.rb +40 -0
- data/lib/chef/resource/package.rb +80 -0
- data/lib/chef/resource/pacman_package.rb +33 -0
- data/lib/chef/resource/perl.rb +33 -0
- data/lib/chef/resource/portage_package.rb +33 -0
- data/lib/chef/resource/python.rb +33 -0
- data/lib/chef/resource/remote_directory.rb +109 -0
- data/lib/chef/resource/remote_file.rb +83 -0
- data/lib/chef/resource/route.rb +135 -0
- data/lib/chef/resource/rpm_package.rb +34 -0
- data/lib/chef/resource/ruby.rb +33 -0
- data/lib/chef/resource/ruby_block.rb +40 -0
- data/lib/chef/resource/scm.rb +147 -0
- data/lib/chef/resource/script.rb +60 -0
- data/lib/chef/resource/service.rb +151 -0
- data/lib/chef/resource/solaris_package.rb +36 -0
- data/lib/chef/resource/subversion.rb +36 -0
- data/lib/chef/resource/template.rb +69 -0
- data/lib/chef/resource/timestamped_deploy.rb +31 -0
- data/lib/chef/resource/user.rb +130 -0
- data/lib/chef/resource/yum_package.rb +63 -0
- data/lib/chef/resource_collection.rb +217 -0
- data/lib/chef/resource_collection/stepable_iterator.rb +124 -0
- data/lib/chef/resource_definition.rb +67 -0
- data/lib/chef/resource_definition_list.rb +38 -0
- data/lib/chef/resources.rb +64 -0
- data/lib/chef/rest.rb +400 -0
- data/lib/chef/rest/auth_credentials.rb +71 -0
- data/lib/chef/rest/cookie_jar.rb +31 -0
- data/lib/chef/rest/rest_request.rb +213 -0
- data/lib/chef/role.rb +343 -0
- data/lib/chef/run_context.rb +126 -0
- data/lib/chef/run_list.rb +165 -0
- data/lib/chef/run_list/run_list_expansion.rb +193 -0
- data/lib/chef/run_list/run_list_item.rb +92 -0
- data/lib/chef/run_list/versioned_recipe_list.rb +68 -0
- data/lib/chef/run_status.rb +121 -0
- data/lib/chef/runner.rb +105 -0
- data/lib/chef/sandbox.rb +153 -0
- data/lib/chef/search/query.rb +65 -0
- data/lib/chef/shef.rb +327 -0
- data/lib/chef/shef/ext.rb +569 -0
- data/lib/chef/shef/model_wrapper.rb +120 -0
- data/lib/chef/shef/shef_rest.rb +28 -0
- data/lib/chef/shef/shef_session.rb +285 -0
- data/lib/chef/shell_out.rb +249 -0
- data/lib/chef/shell_out/unix.rb +223 -0
- data/lib/chef/shell_out/windows.rb +588 -0
- data/lib/chef/solr_query.rb +187 -0
- data/lib/chef/solr_query/lucene.treetop +150 -0
- data/lib/chef/solr_query/lucene_nodes.rb +285 -0
- data/lib/chef/solr_query/query_transform.rb +65 -0
- data/lib/chef/solr_query/solr_http_request.rb +132 -0
- data/lib/chef/streaming_cookbook_uploader.rb +201 -0
- data/lib/chef/tasks/chef_repo.rake +334 -0
- data/lib/chef/util/file_edit.rb +122 -0
- data/lib/chef/util/windows.rb +56 -0
- data/lib/chef/util/windows/net_group.rb +101 -0
- data/lib/chef/util/windows/net_use.rb +121 -0
- data/lib/chef/util/windows/net_user.rb +198 -0
- data/lib/chef/util/windows/volume.rb +59 -0
- data/lib/chef/version.rb +23 -0
- data/lib/chef/version_class.rb +70 -0
- data/lib/chef/version_constraint.rb +116 -0
- data/lib/chef/webui_user.rb +231 -0
- metadata +764 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Toomas Pelberg (<toomasp@gmx.net>)
|
|
3
|
+
# Copyright:: Copyright (c) 2010 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/provider/service'
|
|
20
|
+
require 'chef/mixin/command'
|
|
21
|
+
|
|
22
|
+
class Chef
|
|
23
|
+
class Provider
|
|
24
|
+
class Service
|
|
25
|
+
class Solaris < Chef::Provider::Service
|
|
26
|
+
|
|
27
|
+
def initialize(new_resource, run_context=nil)
|
|
28
|
+
super
|
|
29
|
+
@init_command = "/usr/sbin/svcadm"
|
|
30
|
+
@status_command = "/bin/svcs -l"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def load_current_resource
|
|
34
|
+
@current_resource = Chef::Resource::Service.new(@new_resource.name)
|
|
35
|
+
@current_resource.service_name(@new_resource.service_name)
|
|
36
|
+
unless ::File.exists? "/bin/svcs"
|
|
37
|
+
raise Chef::Exceptions::Service, "/bin/svcs does not exist!"
|
|
38
|
+
end
|
|
39
|
+
@status = service_status.enabled
|
|
40
|
+
@current_resource
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def enable_service
|
|
44
|
+
run_command(:command => "#{@init_command} enable #{@new_resource.service_name}")
|
|
45
|
+
return service_status.enabled
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def disable_service
|
|
49
|
+
run_command(:command => "#{@init_command} disable #{@new_resource.service_name}")
|
|
50
|
+
return service_status.enabled
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
alias_method :stop_service, :disable_service
|
|
54
|
+
alias_method :start_service, :enable_service
|
|
55
|
+
|
|
56
|
+
def reload_service
|
|
57
|
+
run_command(:command => "#{@init_command} refresh #{@new_resource.service_name}")
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def restart_service
|
|
61
|
+
disable_service
|
|
62
|
+
return enable_service
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def service_status
|
|
66
|
+
status = popen4("#{@status_command} #{@current_resource.service_name}") do |pid, stdin, stdout, stderr|
|
|
67
|
+
stdout.each do |line|
|
|
68
|
+
case line
|
|
69
|
+
when /state\s+online/
|
|
70
|
+
@current_resource.enabled(true)
|
|
71
|
+
@current_resource.running(true)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
unless @current_resource.enabled
|
|
76
|
+
@current_resource.enabled(false)
|
|
77
|
+
@current_resource.running(false)
|
|
78
|
+
end
|
|
79
|
+
@current_resource
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Stephen Haynes (<sh@nomitor.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2011 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/provider/service'
|
|
20
|
+
require 'chef/provider/service/simple'
|
|
21
|
+
require 'chef/mixin/command'
|
|
22
|
+
|
|
23
|
+
class Chef::Provider::Service::Systemd < Chef::Provider::Service::Simple
|
|
24
|
+
def load_current_resource
|
|
25
|
+
@current_resource = Chef::Resource::Service.new(@new_resource.name)
|
|
26
|
+
@current_resource.service_name(@new_resource.service_name)
|
|
27
|
+
|
|
28
|
+
if @new_resource.status_command
|
|
29
|
+
Chef::Log.debug("#{@new_resource} you have specified a status command, running..")
|
|
30
|
+
|
|
31
|
+
begin
|
|
32
|
+
if run_command_with_systems_locale(:command => @new_resource.status_command) == 0
|
|
33
|
+
@current_resource.running(true)
|
|
34
|
+
end
|
|
35
|
+
rescue Chef::Exceptions::Exec
|
|
36
|
+
@current_resource.running(false)
|
|
37
|
+
nil
|
|
38
|
+
end
|
|
39
|
+
else
|
|
40
|
+
@current_resource.running(is_active?)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
@current_resource.enabled(is_enabled?)
|
|
44
|
+
@current_resource
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def start_service
|
|
48
|
+
if @current_resource.running
|
|
49
|
+
Chef::Log.debug("#{@new_resource} already running, not starting")
|
|
50
|
+
else
|
|
51
|
+
if @new_resource.start_command
|
|
52
|
+
super
|
|
53
|
+
else
|
|
54
|
+
run_command_with_systems_locale(:command => "/bin/systemctl start #{@new_resource.service_name}")
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def stop_service
|
|
60
|
+
unless @current_resource.running
|
|
61
|
+
Chef::Log.debug("#{@new_resource} not running, not stopping")
|
|
62
|
+
else
|
|
63
|
+
if @new_resource.stop_command
|
|
64
|
+
super
|
|
65
|
+
else
|
|
66
|
+
run_command_with_systems_locale(:command => "/bin/systemctl stop #{@new_resource.service_name}")
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def restart_service
|
|
72
|
+
if @new_resource.restart_command
|
|
73
|
+
super
|
|
74
|
+
else
|
|
75
|
+
run_command_with_systems_locale(:command => "/bin/systemctl restart #{@new_resource.service_name}")
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def reload_service
|
|
80
|
+
if @new_resource.reload_command
|
|
81
|
+
super
|
|
82
|
+
else
|
|
83
|
+
run_command_with_systems_locale(:command => "/bin/systemctl reload #{@new_resource.service_name}")
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def enable_service
|
|
88
|
+
run_command_with_systems_locale(:command => "/bin/systemctl enable #{@new_resource.service_name}")
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def disable_service
|
|
92
|
+
run_command_with_systems_locale(:command => "/bin/systemctl disable #{@new_resource.service_name}")
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def is_active?
|
|
96
|
+
run_command_with_systems_locale({:command => "/bin/systemctl is-active #{@new_resource.service_name}", :ignore_failure => true}) == 0
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def is_enabled?
|
|
100
|
+
run_command_with_systems_locale({:command => "/bin/systemctl is-enabled #{@new_resource.service_name}", :ignore_failure => true}) == 0
|
|
101
|
+
end
|
|
102
|
+
end
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Bryan McLellan <btm@loftninjas.org>
|
|
3
|
+
# Copyright:: Copyright (c) 2010 Bryan McLellan
|
|
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/service'
|
|
20
|
+
require 'chef/provider/service/simple'
|
|
21
|
+
require 'chef/mixin/command'
|
|
22
|
+
require 'chef/util/file_edit'
|
|
23
|
+
|
|
24
|
+
class Chef
|
|
25
|
+
class Provider
|
|
26
|
+
class Service
|
|
27
|
+
class Upstart < Chef::Provider::Service::Simple
|
|
28
|
+
UPSTART_STATE_FORMAT = /\w+ \(?(\w+)\)?[\/ ](\w+)/
|
|
29
|
+
|
|
30
|
+
# Upstart does more than start or stop a service, creating multiple 'states' [1] that a service can be in.
|
|
31
|
+
# In chef, when we ask a service to start, we expect it to have started before performing the next step
|
|
32
|
+
# since we have top down dependencies. Which is to say we may follow witha resource next that requires
|
|
33
|
+
# that service to be running. According to [2] we can trust that sending a 'goal' such as start will not
|
|
34
|
+
# return until that 'goal' is reached, or some error has occured.
|
|
35
|
+
#
|
|
36
|
+
# [1] http://upstart.ubuntu.com/wiki/JobStates
|
|
37
|
+
# [2] http://www.netsplit.com/2008/04/27/upstart-05-events/
|
|
38
|
+
|
|
39
|
+
def initialize(new_resource, run_context)
|
|
40
|
+
# TODO: re-evaluate if this is needed after integrating cookbook fix
|
|
41
|
+
raise ArgumentError, "run_context cannot be nil" unless run_context
|
|
42
|
+
super
|
|
43
|
+
|
|
44
|
+
run_context.node
|
|
45
|
+
|
|
46
|
+
platform, version = Chef::Platform.find_platform_and_version(run_context.node)
|
|
47
|
+
if platform == "ubuntu" && (8.04..9.04).include?(version.to_f)
|
|
48
|
+
@upstart_job_dir = "/etc/event.d"
|
|
49
|
+
@upstart_conf_suffix = ""
|
|
50
|
+
else
|
|
51
|
+
@upstart_job_dir = "/etc/init"
|
|
52
|
+
@upstart_conf_suffix = ".conf"
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def load_current_resource
|
|
57
|
+
@current_resource = Chef::Resource::Service.new(@new_resource.name)
|
|
58
|
+
@current_resource.service_name(@new_resource.service_name)
|
|
59
|
+
|
|
60
|
+
# Get running/stopped state
|
|
61
|
+
# We do not support searching for a service via ps when using upstart since status is a native
|
|
62
|
+
# upstart function. We will however support status_command in case someone wants to do something special.
|
|
63
|
+
if @new_resource.status_command
|
|
64
|
+
Chef::Log.debug("#{@new_resource} you have specified a status command, running..")
|
|
65
|
+
|
|
66
|
+
begin
|
|
67
|
+
if run_command_with_systems_locale(:command => @new_resource.status_command) == 0
|
|
68
|
+
@current_resource.running true
|
|
69
|
+
end
|
|
70
|
+
rescue Chef::Exceptions::Exec
|
|
71
|
+
@current_resource.running false
|
|
72
|
+
nil
|
|
73
|
+
end
|
|
74
|
+
else
|
|
75
|
+
begin
|
|
76
|
+
if upstart_state == "running"
|
|
77
|
+
@current_resource.running true
|
|
78
|
+
else
|
|
79
|
+
@current_resource.running false
|
|
80
|
+
end
|
|
81
|
+
rescue Chef::Exceptions::Exec
|
|
82
|
+
@current_resource.running false
|
|
83
|
+
nil
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Get enabled/disabled state by reading job configuration file
|
|
88
|
+
if ::File.exists?("#{@upstart_job_dir}/#{@new_resource.service_name}#{@upstart_conf_suffix}")
|
|
89
|
+
Chef::Log.debug("#{@new_resource} found #{@upstart_job_dir}/#{@new_resource.service_name}#{@upstart_conf_suffix}")
|
|
90
|
+
::File.open("#{@upstart_job_dir}/#{@new_resource.service_name}#{@upstart_conf_suffix}",'r') do |file|
|
|
91
|
+
while line = file.gets
|
|
92
|
+
case line
|
|
93
|
+
when /^start on/
|
|
94
|
+
Chef::Log.debug("#{@new_resource} enabled: #{line.chomp}")
|
|
95
|
+
@current_resource.enabled true
|
|
96
|
+
break
|
|
97
|
+
when /^#start on/
|
|
98
|
+
Chef::Log.debug("#{@new_resource} disabled: #{line.chomp}")
|
|
99
|
+
@current_resource.enabled false
|
|
100
|
+
break
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
else
|
|
105
|
+
Chef::Log.debug("#{@new_resource} did not find #{@upstart_job_dir}/#{@new_resource.service_name}#{@upstart_conf_suffix}")
|
|
106
|
+
@current_resource.enabled false
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
@current_resource
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def start_service
|
|
113
|
+
# Calling start on a service that is already started will return 1
|
|
114
|
+
# Our 'goal' when we call start is to ensure the service is started
|
|
115
|
+
if @current_resource.running
|
|
116
|
+
Chef::Log.debug("#{@new_resource} already running, not starting")
|
|
117
|
+
else
|
|
118
|
+
if @new_resource.start_command
|
|
119
|
+
super
|
|
120
|
+
else
|
|
121
|
+
run_command_with_systems_locale(:command => "/sbin/start #{@new_resource.service_name}")
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def stop_service
|
|
127
|
+
# Calling stop on a service that is already stopped will return 1
|
|
128
|
+
# Our 'goal' when we call stop is to ensure the service is stopped
|
|
129
|
+
unless @current_resource.running
|
|
130
|
+
Chef::Log.debug("#{@new_resource} not running, not stopping")
|
|
131
|
+
else
|
|
132
|
+
if @new_resource.stop_command
|
|
133
|
+
super
|
|
134
|
+
else
|
|
135
|
+
run_command_with_systems_locale(:command => "/sbin/stop #{@new_resource.service_name}")
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def restart_service
|
|
141
|
+
if @new_resource.restart_command
|
|
142
|
+
super
|
|
143
|
+
# Upstart always provides restart functionality so we don't need to mimic it with stop/sleep/start.
|
|
144
|
+
# Older versions of upstart would fail on restart if the service was currently stopped, check for that. LP:430883
|
|
145
|
+
else @new_resource.supports[:restart]
|
|
146
|
+
if @current_resource.running
|
|
147
|
+
run_command_with_systems_locale(:command => "/sbin/restart #{@new_resource.service_name}")
|
|
148
|
+
else
|
|
149
|
+
start_service
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def reload_service
|
|
155
|
+
if @new_resource.reload_command
|
|
156
|
+
super
|
|
157
|
+
else
|
|
158
|
+
# upstart >= 0.6.3-4 supports reload (HUP)
|
|
159
|
+
run_command_with_systems_locale(:command => "/sbin/reload #{@new_resource.service_name}")
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# https://bugs.launchpad.net/upstart/+bug/94065
|
|
164
|
+
|
|
165
|
+
def enable_service
|
|
166
|
+
Chef::Log.debug("#{@new_resource} upstart lacks inherent support for enabling services, editing job config file")
|
|
167
|
+
conf = Chef::Util::FileEdit.new("#{@upstart_job_dir}/#{@new_resource.service_name}#{@upstart_conf_suffix}")
|
|
168
|
+
conf.search_file_replace(/^#start on/, "start on")
|
|
169
|
+
conf.write_file
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def disable_service
|
|
173
|
+
Chef::Log.debug("#{@new_resource} upstart lacks inherent support for disabling services, editing job config file")
|
|
174
|
+
conf = Chef::Util::FileEdit.new("#{@upstart_job_dir}/#{@new_resource.service_name}#{@upstart_conf_suffix}")
|
|
175
|
+
conf.search_file_replace(/^start on/, "#start on")
|
|
176
|
+
conf.write_file
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
def upstart_state
|
|
180
|
+
command = "/sbin/status #{@new_resource.service_name}"
|
|
181
|
+
status = popen4(command) do |pid, stdin, stdout, stderr|
|
|
182
|
+
stdout.each_line do |line|
|
|
183
|
+
# rsyslog stop/waiting
|
|
184
|
+
# service goal/state
|
|
185
|
+
# OR
|
|
186
|
+
# rsyslog (stop) waiting
|
|
187
|
+
# service (goal) state
|
|
188
|
+
line =~ UPSTART_STATE_FORMAT
|
|
189
|
+
data = Regexp.last_match
|
|
190
|
+
return data[2]
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
end
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Nuo Yan <nuo@opscode.com>
|
|
3
|
+
# Author:: Bryan McLellan <btm@loftninjas.org>
|
|
4
|
+
# Author:: Seth Chisamore <schisamo@opscode.com>
|
|
5
|
+
# Copyright:: Copyright (c) 2010-2011 Opscode, Inc
|
|
6
|
+
# License:: Apache License, Version 2.0
|
|
7
|
+
#
|
|
8
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
# you may not use this file except in compliance with the License.
|
|
10
|
+
# You may obtain a copy of the License at
|
|
11
|
+
#
|
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
#
|
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
+
# See the License for the specific language governing permissions and
|
|
18
|
+
# limitations under the License.
|
|
19
|
+
#
|
|
20
|
+
|
|
21
|
+
require 'chef/provider/service/simple'
|
|
22
|
+
if RUBY_PLATFORM =~ /mswin|mingw32|windows/
|
|
23
|
+
require 'win32/service'
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
class Chef::Provider::Service::Windows < Chef::Provider::Service
|
|
27
|
+
RUNNING = 'running'
|
|
28
|
+
STOPPED = 'stopped'
|
|
29
|
+
AUTO_START = 'auto start'
|
|
30
|
+
DISABLED = 'disabled'
|
|
31
|
+
|
|
32
|
+
def load_current_resource
|
|
33
|
+
@current_resource = Chef::Resource::Service.new(@new_resource.name)
|
|
34
|
+
@current_resource.service_name(@new_resource.service_name)
|
|
35
|
+
@current_resource.running(current_state == RUNNING)
|
|
36
|
+
Chef::Log.debug "#{@new_resource} running: #{@current_resource.running}"
|
|
37
|
+
@current_resource.enabled(start_type == AUTO_START)
|
|
38
|
+
Chef::Log.debug "#{@new_resource} enabled: #{@current_resource.enabled}"
|
|
39
|
+
@current_resource
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def start_service
|
|
43
|
+
if Win32::Service.exists?(@new_resource.service_name)
|
|
44
|
+
if current_state == RUNNING
|
|
45
|
+
Chef::Log.debug "#{@new_resource} already started - nothing to do"
|
|
46
|
+
else
|
|
47
|
+
if @new_resource.start_command
|
|
48
|
+
Chef::Log.debug "#{@new_resource} starting service using the given start_command"
|
|
49
|
+
shell_out!(@new_resource.start_command)
|
|
50
|
+
else
|
|
51
|
+
spawn_command_thread do
|
|
52
|
+
Win32::Service.start(@new_resource.service_name)
|
|
53
|
+
wait_for_state(RUNNING)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
@new_resource.updated_by_last_action(true)
|
|
57
|
+
end
|
|
58
|
+
else
|
|
59
|
+
Chef::Log.debug "#{@new_resource} does not exist - nothing to do"
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def stop_service
|
|
64
|
+
if Win32::Service.exists?(@new_resource.service_name)
|
|
65
|
+
if current_state == RUNNING
|
|
66
|
+
if @new_resource.stop_command
|
|
67
|
+
Chef::Log.debug "#{@new_resource} stopping service using the given stop_command"
|
|
68
|
+
shell_out!(@new_resource.stop_command)
|
|
69
|
+
else
|
|
70
|
+
spawn_command_thread do
|
|
71
|
+
Win32::Service.stop(@new_resource.service_name)
|
|
72
|
+
wait_for_state(STOPPED)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
@new_resource.updated_by_last_action(true)
|
|
76
|
+
else
|
|
77
|
+
Chef::Log.debug "#{@new_resource} already stopped - nothing to do"
|
|
78
|
+
end
|
|
79
|
+
else
|
|
80
|
+
Chef::Log.debug "#{@new_resource} does not exist - nothing to do"
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def restart_service
|
|
85
|
+
if Win32::Service.exists?(@new_resource.service_name)
|
|
86
|
+
if @new_resource.restart_command
|
|
87
|
+
Chef::Log.debug "#{@new_resource} restarting service using the given restart_command"
|
|
88
|
+
shell_out!(@new_resource.restart_command)
|
|
89
|
+
else
|
|
90
|
+
stop_service
|
|
91
|
+
start_service
|
|
92
|
+
end
|
|
93
|
+
@new_resource.updated_by_last_action(true)
|
|
94
|
+
else
|
|
95
|
+
Chef::Log.debug "#{@new_resource} does not exist - nothing to do"
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def enable_service
|
|
100
|
+
if Win32::Service.exists?(@new_resource.service_name)
|
|
101
|
+
if start_type == AUTO_START
|
|
102
|
+
Chef::Log.debug "#{@new_resource} already enabled - nothing to do"
|
|
103
|
+
else
|
|
104
|
+
Win32::Service.configure(
|
|
105
|
+
:service_name => @new_resource.service_name,
|
|
106
|
+
:start_type => Win32::Service::AUTO_START
|
|
107
|
+
)
|
|
108
|
+
@new_resource.updated_by_last_action(true)
|
|
109
|
+
end
|
|
110
|
+
else
|
|
111
|
+
Chef::Log.debug "#{@new_resource} does not exist - nothing to do"
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def disable_service
|
|
116
|
+
if Win32::Service.exists?(@new_resource.service_name)
|
|
117
|
+
if start_type == AUTO_START
|
|
118
|
+
Win32::Service.configure(
|
|
119
|
+
:service_name => @new_resource.service_name,
|
|
120
|
+
:start_type => Win32::Service::DISABLED
|
|
121
|
+
)
|
|
122
|
+
@new_resource.updated_by_last_action(true)
|
|
123
|
+
else
|
|
124
|
+
Chef::Log.debug "#{@new_resource} already disabled - nothing to do"
|
|
125
|
+
end
|
|
126
|
+
else
|
|
127
|
+
Chef::Log.debug "#{@new_resource} does not exist - nothing to do"
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
private
|
|
132
|
+
def current_state
|
|
133
|
+
Win32::Service.status(@new_resource.service_name).current_state
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def start_type
|
|
137
|
+
Win32::Service.config_info(@new_resource.service_name).start_type
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# Helper method that waits for a status to change its state since state
|
|
141
|
+
# changes aren't usually instantaneous.
|
|
142
|
+
def wait_for_state(desired_state)
|
|
143
|
+
sleep 1 until current_state == desired_state
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# There ain't no party like a thread party...
|
|
147
|
+
def spawn_command_thread
|
|
148
|
+
worker = Thread.new do
|
|
149
|
+
yield
|
|
150
|
+
end
|
|
151
|
+
Timeout.timeout(60) do
|
|
152
|
+
worker.join
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|