TrueCar-chef 0.10.0.beta.3
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-server-webui.conf +10 -0
- data/distro/arch/etc/conf.d/chef-server.conf +10 -0
- data/distro/arch/etc/conf.d/chef-solr-indexer.conf +8 -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-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/arch/etc/rc.d/chef-solr-indexer +78 -0
- data/distro/common/man/man1/chef-indexer.1 +42 -0
- data/distro/common/man/man1/chef-server-webui.1 +106 -0
- data/distro/common/man/man1/chef-server.1 +107 -0
- data/distro/common/man/man1/chef-solr-indexer.1 +55 -0
- data/distro/common/man/man1/chef-solr.1 +55 -0
- data/distro/common/man/man8/chef-client.8 +63 -0
- data/distro/common/man/man8/chef-solo.8 +57 -0
- data/distro/common/man/man8/chef-solr-rebuild.8 +37 -0
- data/distro/common/man/man8/knife.8 +1349 -0
- data/distro/common/man/man8/shef.8 +45 -0
- data/distro/common/markdown/README +3 -0
- data/distro/common/markdown/knife.mkd +865 -0
- data/distro/debian/etc/default/chef-client +4 -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/default/chef-solr-indexer +7 -0
- data/distro/debian/etc/init.d/chef-client +175 -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.d/chef-solr-indexer +176 -0
- data/distro/debian/etc/init/chef-client.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-indexer.conf +17 -0
- data/distro/debian/etc/init/chef-solr.conf +17 -0
- data/distro/redhat/etc/init.d/chef-client +106 -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/init.d/chef-solr-indexer +104 -0
- data/distro/redhat/etc/logrotate.d/chef-client +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/logrotate.d/chef-solr-indexer +8 -0
- data/distro/redhat/etc/sysconfig/chef-client +15 -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/distro/redhat/etc/sysconfig/chef-solr-indexer +7 -0
- data/lib/chef.rb +40 -0
- data/lib/chef/api_client.rb +264 -0
- data/lib/chef/application.rb +137 -0
- data/lib/chef/application/agent.rb +18 -0
- data/lib/chef/application/client.rb +242 -0
- data/lib/chef/application/knife.rb +169 -0
- data/lib/chef/application/solo.rb +217 -0
- data/lib/chef/applications.rb +4 -0
- data/lib/chef/certificate.rb +194 -0
- data/lib/chef/checksum.rb +182 -0
- data/lib/chef/checksum_cache.rb +189 -0
- data/lib/chef/client.rb +362 -0
- data/lib/chef/config.rb +244 -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 +151 -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 +592 -0
- data/lib/chef/cookbook/remote_file_vendor.rb +87 -0
- data/lib/chef/cookbook/syntax_check.rb +136 -0
- data/lib/chef/cookbook_loader.rb +103 -0
- data/lib/chef/cookbook_site_streaming_uploader.rb +244 -0
- data/lib/chef/cookbook_uploader.rb +125 -0
- data/lib/chef/cookbook_version.rb +979 -0
- data/lib/chef/cookbook_version_selector.rb +163 -0
- data/lib/chef/couchdb.rb +247 -0
- data/lib/chef/daemon.rb +172 -0
- data/lib/chef/data_bag.rb +223 -0
- data/lib/chef/data_bag_item.rb +267 -0
- data/lib/chef/encrypted_data_bag_item.rb +126 -0
- data/lib/chef/environment.rb +386 -0
- data/lib/chef/exceptions.rb +153 -0
- data/lib/chef/file_access_control.rb +140 -0
- data/lib/chef/file_cache.rb +218 -0
- data/lib/chef/handler.rb +206 -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 +424 -0
- data/lib/chef/knife/bootstrap.rb +185 -0
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +47 -0
- data/lib/chef/knife/bootstrap/centos5-gems.erb +41 -0
- data/lib/chef/knife/bootstrap/client-install.vbs +80 -0
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +38 -0
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +32 -0
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +46 -0
- data/lib/chef/knife/bootstrap/windows-gems.erb +34 -0
- data/lib/chef/knife/client_bulk_delete.rb +43 -0
- data/lib/chef/knife/client_create.rb +73 -0
- data/lib/chef/knife/client_delete.rb +48 -0
- data/lib/chef/knife/client_edit.rb +48 -0
- data/lib/chef/knife/client_list.rb +43 -0
- data/lib/chef/knife/client_reregister.rb +59 -0
- data/lib/chef/knife/client_show.rb +53 -0
- data/lib/chef/knife/configure.rb +136 -0
- data/lib/chef/knife/configure_client.rb +52 -0
- data/lib/chef/knife/cookbook_bulk_delete.rb +61 -0
- data/lib/chef/knife/cookbook_create.rb +274 -0
- data/lib/chef/knife/cookbook_delete.rb +149 -0
- data/lib/chef/knife/cookbook_download.rb +134 -0
- data/lib/chef/knife/cookbook_list.rb +50 -0
- data/lib/chef/knife/cookbook_metadata.rb +102 -0
- data/lib/chef/knife/cookbook_metadata_from_file.rb +44 -0
- data/lib/chef/knife/cookbook_show.rb +101 -0
- data/lib/chef/knife/cookbook_site_download.rb +58 -0
- data/lib/chef/knife/cookbook_site_list.rb +56 -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 +145 -0
- data/lib/chef/knife/cookbook_test.rb +82 -0
- data/lib/chef/knife/cookbook_upload.rb +146 -0
- data/lib/chef/knife/data_bag_create.rb +94 -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 +85 -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 +39 -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/index_rebuild.rb +50 -0
- data/lib/chef/knife/node_bulk_delete.rb +46 -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 +163 -0
- data/lib/chef/knife/node_from_file.rb +45 -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 +62 -0
- data/lib/chef/knife/recipe_list.rb +33 -0
- data/lib/chef/knife/role_bulk_delete.rb +47 -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 +49 -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 +123 -0
- data/lib/chef/knife/ssh.rb +318 -0
- data/lib/chef/knife/status.rb +90 -0
- data/lib/chef/knife/subcommand_loader.rb +101 -0
- data/lib/chef/knife/tag_create.rb +31 -0
- data/lib/chef/knife/tag_delete.rb +31 -0
- data/lib/chef/knife/tag_list.rb +29 -0
- data/lib/chef/knife/ui.rb +227 -0
- data/lib/chef/knife/windows_bootstrap.rb +157 -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 +221 -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 +56 -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/language.rb +165 -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 +81 -0
- data/lib/chef/mixin/shell_out.rb +40 -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 +7 -0
- data/lib/chef/monkey_patches/regexp.rb +34 -0
- data/lib/chef/monkey_patches/string.rb +28 -0
- data/lib/chef/monkey_patches/tempfile.rb +64 -0
- data/lib/chef/nil_argument.rb +3 -0
- data/lib/chef/node.rb +661 -0
- data/lib/chef/node/attribute.rb +487 -0
- data/lib/chef/openid_registration.rb +187 -0
- data/lib/chef/platform.rb +409 -0
- data/lib/chef/provider.rb +124 -0
- data/lib/chef/provider/breakpoint.rb +36 -0
- data/lib/chef/provider/cookbook_file.rb +101 -0
- data/lib/chef/provider/cron.rb +186 -0
- data/lib/chef/provider/cron/solaris.rb +195 -0
- data/lib/chef/provider/deploy.rb +320 -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 +100 -0
- data/lib/chef/provider/execute.rb +60 -0
- data/lib/chef/provider/file.rb +222 -0
- data/lib/chef/provider/git.rb +221 -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 +81 -0
- data/lib/chef/provider/group/pw.rb +84 -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 +132 -0
- data/lib/chef/provider/link.rb +161 -0
- data/lib/chef/provider/log.rb +54 -0
- data/lib/chef/provider/mdadm.rb +91 -0
- data/lib/chef/provider/mount.rb +117 -0
- data/lib/chef/provider/mount/mount.rb +232 -0
- data/lib/chef/provider/mount/windows.rb +80 -0
- data/lib/chef/provider/ohai.rb +41 -0
- data/lib/chef/provider/package.rb +160 -0
- data/lib/chef/provider/package/apt.rb +110 -0
- data/lib/chef/provider/package/dpkg.rb +112 -0
- data/lib/chef/provider/package/easy_install.rb +136 -0
- data/lib/chef/provider/package/freebsd.rb +123 -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 +101 -0
- data/lib/chef/provider/package/rubygems.rb +462 -0
- data/lib/chef/provider/package/solaris.rb +127 -0
- data/lib/chef/provider/package/yum-dump.py +128 -0
- data/lib/chef/provider/package/yum.rb +261 -0
- data/lib/chef/provider/package/zypper.rb +133 -0
- data/lib/chef/provider/remote_directory.rb +138 -0
- data/lib/chef/provider/remote_file.rb +119 -0
- data/lib/chef/provider/route.rb +195 -0
- data/lib/chef/provider/ruby_block.rb +33 -0
- data/lib/chef/provider/script.rb +55 -0
- data/lib/chef/provider/service.rb +128 -0
- data/lib/chef/provider/service/arch.rb +109 -0
- data/lib/chef/provider/service/debian.rb +130 -0
- data/lib/chef/provider/service/freebsd.rb +156 -0
- data/lib/chef/provider/service/gentoo.rb +54 -0
- data/lib/chef/provider/service/init.rb +71 -0
- data/lib/chef/provider/service/insserv.rb +52 -0
- data/lib/chef/provider/service/redhat.rb +60 -0
- data/lib/chef/provider/service/simple.rb +118 -0
- data/lib/chef/provider/service/solaris.rb +85 -0
- data/lib/chef/provider/service/upstart.rb +192 -0
- data/lib/chef/provider/service/windows.rb +146 -0
- data/lib/chef/provider/subversion.rb +194 -0
- data/lib/chef/provider/template.rb +105 -0
- data/lib/chef/provider/user.rb +187 -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 +93 -0
- data/lib/chef/recipe.rb +128 -0
- data/lib/chef/resource.rb +530 -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/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 +371 -0
- data/lib/chef/resource/deploy_revision.rb +35 -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 +37 -0
- data/lib/chef/resource/group.rb +70 -0
- data/lib/chef/resource/http_request.rb +61 -0
- data/lib/chef/resource/ifconfig.rb +134 -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 +135 -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 +160 -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 +43 -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 +386 -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 +188 -0
- data/lib/chef/role.rb +341 -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 +99 -0
- data/lib/chef/sandbox.rb +153 -0
- data/lib/chef/search/query.rb +65 -0
- data/lib/chef/shef.rb +326 -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 +284 -0
- data/lib/chef/shell_out.rb +238 -0
- data/lib/chef/shell_out/unix.rb +223 -0
- data/lib/chef/shell_out/windows.rb +98 -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 +118 -0
- data/lib/chef/streaming_cookbook_uploader.rb +201 -0
- data/lib/chef/tasks/chef_repo.rake +256 -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 +600 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Daniel DeLeo (<dan@kallistec.com>)
|
|
3
|
+
# Author:: Tim Hinderliter (<tim@opscode.com>)
|
|
4
|
+
# Author:: Seth Falcon (<seth@opscode.com>)
|
|
5
|
+
# Copyright:: Copyright (c) 2009 Daniel DeLeo
|
|
6
|
+
# Copyright:: Copyright (c) 2010 Opscode, Inc.
|
|
7
|
+
# License:: Apache License, Version 2.0
|
|
8
|
+
#
|
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
# you may not use this file except in compliance with the License.
|
|
11
|
+
# You may obtain a copy of the License at
|
|
12
|
+
#
|
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
#
|
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
+
# See the License for the specific language governing permissions and
|
|
19
|
+
# limitations under the License.
|
|
20
|
+
#
|
|
21
|
+
|
|
22
|
+
require 'chef/provider'
|
|
23
|
+
require 'chef/provider/deploy'
|
|
24
|
+
require 'chef/json_compat'
|
|
25
|
+
|
|
26
|
+
class Chef
|
|
27
|
+
class Provider
|
|
28
|
+
class Deploy
|
|
29
|
+
class Revision < Chef::Provider::Deploy
|
|
30
|
+
|
|
31
|
+
def all_releases
|
|
32
|
+
sorted_releases
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
protected
|
|
36
|
+
|
|
37
|
+
def release_created(release)
|
|
38
|
+
sorted_releases {|r| r.delete(release); r << release }
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def release_deleted(release)
|
|
42
|
+
sorted_releases { |r| r.delete(release)}
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def release_slug
|
|
46
|
+
scm_provider.revision_slug
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
private
|
|
50
|
+
|
|
51
|
+
def sorted_releases
|
|
52
|
+
cache = load_cache
|
|
53
|
+
if block_given?
|
|
54
|
+
yield cache
|
|
55
|
+
save_cache(cache)
|
|
56
|
+
end
|
|
57
|
+
cache
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def sorted_releases_from_filesystem
|
|
61
|
+
Dir.glob(new_resource.deploy_to + "/releases/*").sort_by { |d| ::File.ctime(d) }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def load_cache
|
|
65
|
+
begin
|
|
66
|
+
Chef::JSONCompat.from_json(Chef::FileCache.load("revision-deploys/#{new_resource.name}"))
|
|
67
|
+
rescue Chef::Exceptions::FileNotFound
|
|
68
|
+
sorted_releases_from_filesystem
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def save_cache(cache)
|
|
73
|
+
Chef::FileCache.store("revision-deploys/#{new_resource.name}", cache.to_json)
|
|
74
|
+
cache
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Daniel DeLeo (<dan@kallistec.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2009 Daniel DeLeo
|
|
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
|
+
class Chef
|
|
20
|
+
class Provider
|
|
21
|
+
class Deploy
|
|
22
|
+
class Timestamped < Chef::Provider::Deploy
|
|
23
|
+
|
|
24
|
+
protected
|
|
25
|
+
|
|
26
|
+
def release_slug
|
|
27
|
+
Time.now.utc.strftime("%Y%m%d%H%M%S")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Adam Jacob (<adam@opscode.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2008 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/config'
|
|
20
|
+
require 'chef/log'
|
|
21
|
+
require 'chef/resource/directory'
|
|
22
|
+
require 'chef/provider'
|
|
23
|
+
require 'chef/provider/file'
|
|
24
|
+
require 'fileutils'
|
|
25
|
+
|
|
26
|
+
class Chef
|
|
27
|
+
class Provider
|
|
28
|
+
class Directory < Chef::Provider::File
|
|
29
|
+
def load_current_resource
|
|
30
|
+
@current_resource = Chef::Resource::Directory.new(@new_resource.name)
|
|
31
|
+
@current_resource.path(@new_resource.path)
|
|
32
|
+
if ::File.exist?(@current_resource.path) && ::File.directory?(@current_resource.path)
|
|
33
|
+
cstats = ::File.stat(@current_resource.path)
|
|
34
|
+
@current_resource.owner(cstats.uid)
|
|
35
|
+
@current_resource.group(cstats.gid)
|
|
36
|
+
@current_resource.mode("%o" % (cstats.mode & 007777))
|
|
37
|
+
end
|
|
38
|
+
@current_resource
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def action_create
|
|
42
|
+
unless ::File.exists?(@new_resource.path)
|
|
43
|
+
Chef::Log.info("Creating #{@new_resource} at #{@new_resource.path}")
|
|
44
|
+
if @new_resource.recursive == true
|
|
45
|
+
::FileUtils.mkdir_p(@new_resource.path)
|
|
46
|
+
else
|
|
47
|
+
::Dir.mkdir(@new_resource.path)
|
|
48
|
+
end
|
|
49
|
+
@new_resource.updated_by_last_action(true)
|
|
50
|
+
end
|
|
51
|
+
set_owner if @new_resource.owner != nil
|
|
52
|
+
set_group if @new_resource.group != nil
|
|
53
|
+
set_mode if @new_resource.mode != nil
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def action_delete
|
|
57
|
+
if ::File.directory?(@new_resource.path) && ::File.writable?(@new_resource.path)
|
|
58
|
+
if @new_resource.recursive == true
|
|
59
|
+
Chef::Log.info("Deleting #{@new_resource} recursively at #{@new_resource.path}")
|
|
60
|
+
FileUtils.rm_rf(@new_resource.path)
|
|
61
|
+
else
|
|
62
|
+
Chef::Log.info("Deleting #{@new_resource} at #{@new_resource.path}")
|
|
63
|
+
::Dir.delete(@new_resource.path)
|
|
64
|
+
end
|
|
65
|
+
@new_resource.updated_by_last_action(true)
|
|
66
|
+
else
|
|
67
|
+
raise RuntimeError, "Cannot delete #{@new_resource} at #{@new_resource_path}!" if ::File.exists?(@new_resource.path)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Doug MacEachern (<dougm@vmware.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2010 VMware, 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'
|
|
20
|
+
require 'chef/mixin/command'
|
|
21
|
+
require 'chef/resource/env'
|
|
22
|
+
|
|
23
|
+
class Chef
|
|
24
|
+
class Provider
|
|
25
|
+
class Env < Chef::Provider
|
|
26
|
+
include Chef::Mixin::Command
|
|
27
|
+
attr_accessor :key_exists
|
|
28
|
+
|
|
29
|
+
def initialize(new_resource, run_context)
|
|
30
|
+
super
|
|
31
|
+
@key_exists = true
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def load_current_resource
|
|
35
|
+
@current_resource = Chef::Resource::Env.new(@new_resource.name)
|
|
36
|
+
@current_resource.key_name(@new_resource.key_name)
|
|
37
|
+
|
|
38
|
+
if env_key_exists(@new_resource.key_name)
|
|
39
|
+
@current_resource.value(env_value(@new_resource.key_name))
|
|
40
|
+
else
|
|
41
|
+
@key_exists = false
|
|
42
|
+
Chef::Log.debug("#{@new_resource}: key does not exist")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
@current_resource
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def env_value(key_name)
|
|
49
|
+
raise Chef::Exceptions::Env, "#{@new_resource} - #{self.to_s} provider does not implement env_value!"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def env_key_exists(key_name)
|
|
53
|
+
env_value(key_name) ? true : false
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Check to see if value needs any changes
|
|
57
|
+
#
|
|
58
|
+
# ==== Returns
|
|
59
|
+
# <true>:: If a change is required
|
|
60
|
+
# <false>:: If a change is not required
|
|
61
|
+
def compare_value
|
|
62
|
+
if @new_resource.delim
|
|
63
|
+
#e.g. check for existing value within PATH
|
|
64
|
+
not @current_resource.value.split(@new_resource.delim).any? do |val|
|
|
65
|
+
val == @new_resource.value
|
|
66
|
+
end
|
|
67
|
+
else
|
|
68
|
+
@new_resource.value != @current_resource.value
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def action_create
|
|
73
|
+
if @key_exists
|
|
74
|
+
if compare_value
|
|
75
|
+
modify_env
|
|
76
|
+
Chef::Log.info("Altered #{@new_resource}")
|
|
77
|
+
@new_resource.updated_by_last_action(true)
|
|
78
|
+
end
|
|
79
|
+
else
|
|
80
|
+
create_env
|
|
81
|
+
Chef::Log.debug("Created #{@new_resource}")
|
|
82
|
+
@new_resource.updated_by_last_action(true)
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
#e.g. delete a PATH element
|
|
87
|
+
#
|
|
88
|
+
# ==== Returns
|
|
89
|
+
# <true>:: If we handled the element case and caller should not delete the key
|
|
90
|
+
# <false>:: Caller should delete the key, either no :delim was specific or value was empty
|
|
91
|
+
# after we removed the element.
|
|
92
|
+
def delete_element
|
|
93
|
+
return false unless @new_resource.delim #no delim: delete the key
|
|
94
|
+
if compare_value
|
|
95
|
+
Chef::Log.debug("#{@new_resource}: element '#{@new_resource.value}' does not exist")
|
|
96
|
+
return true #do not delete the key
|
|
97
|
+
else
|
|
98
|
+
new_value =
|
|
99
|
+
@current_resource.value.split(@new_resource.delim).select { |item|
|
|
100
|
+
item != @new_resource.value
|
|
101
|
+
}.join(@new_resource.delim)
|
|
102
|
+
|
|
103
|
+
if new_value.empty?
|
|
104
|
+
return false #nothing left here, delete the key
|
|
105
|
+
else
|
|
106
|
+
old_value = @new_resource.value(new_value)
|
|
107
|
+
create_env
|
|
108
|
+
Chef::Log.debug("Deleted #{old_value} element")
|
|
109
|
+
@new_resource.updated_by_last_action(true)
|
|
110
|
+
return true #we removed the element and updated; do not delete the key
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def action_delete
|
|
116
|
+
if @key_exists && !delete_element
|
|
117
|
+
delete_env
|
|
118
|
+
Chef::Log.debug("Deleted #{@new_resource}")
|
|
119
|
+
@new_resource.updated_by_last_action(true)
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def action_modify
|
|
124
|
+
if @key_exists
|
|
125
|
+
if compare_value
|
|
126
|
+
modify_env
|
|
127
|
+
@new_resource.updated_by_last_action(true)
|
|
128
|
+
Chef::Log.info("Modified #{@new_resource}")
|
|
129
|
+
end
|
|
130
|
+
else
|
|
131
|
+
raise Chef::Exceptions::Env, "Cannot modify #{@new_resource} - key does not exist!"
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def create_env
|
|
136
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :#{@new_resource.action}"
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def delete_env
|
|
140
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :delete"
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def modify_env
|
|
144
|
+
if @new_resource.delim
|
|
145
|
+
#e.g. add to PATH
|
|
146
|
+
@new_resource.value << @new_resource.delim << @current_resource.value
|
|
147
|
+
end
|
|
148
|
+
create_env
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Doug MacEachern (<dougm@vmware.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2010 VMware, 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
|
+
if RUBY_PLATFORM =~ /mswin|mingw32|windows/
|
|
20
|
+
require 'ruby-wmi'
|
|
21
|
+
require 'Win32API'
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
class Chef
|
|
25
|
+
class Provider
|
|
26
|
+
class Env
|
|
27
|
+
class Windows < Chef::Provider::Env
|
|
28
|
+
|
|
29
|
+
def create_env
|
|
30
|
+
obj = env_obj(@new_resource.key_name)
|
|
31
|
+
unless obj
|
|
32
|
+
obj = WIN32OLE.connect("winmgmts://").get("Win32_Environment").spawninstance_
|
|
33
|
+
obj.name = @new_resource.key_name
|
|
34
|
+
obj.username = "<System>"
|
|
35
|
+
end
|
|
36
|
+
obj.variablevalue = @new_resource.value
|
|
37
|
+
obj.put_
|
|
38
|
+
broadcast_env_change
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def delete_env
|
|
42
|
+
obj = env_obj(@new_resource.key_name)
|
|
43
|
+
if obj
|
|
44
|
+
obj.delete_
|
|
45
|
+
broadcast_env_change
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def env_value(key_name)
|
|
50
|
+
obj = env_obj(key_name)
|
|
51
|
+
return obj ? obj.variablevalue : nil
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def env_obj(key_name)
|
|
55
|
+
WMI::Win32_Environment.find(:first,
|
|
56
|
+
:conditions => { :name => key_name })
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
#see: http://msdn.microsoft.com/en-us/library/ms682653%28VS.85%29.aspx
|
|
60
|
+
HWND_BROADCAST = 0xffff
|
|
61
|
+
WM_SETTINGCHANGE = 0x001A
|
|
62
|
+
SMTO_BLOCK = 0x0001
|
|
63
|
+
SMTO_ABORTIFHUNG = 0x0002
|
|
64
|
+
SMTO_NOTIMEOUTIFNOTHUNG = 0x0008
|
|
65
|
+
|
|
66
|
+
def broadcast_env_change
|
|
67
|
+
result = 0
|
|
68
|
+
flags = SMTO_BLOCK | SMTO_ABORTIFHUNG | SMTO_NOTIMEOUTIFNOTHUNG
|
|
69
|
+
@send_message ||= Win32API.new('user32', 'SendMessageTimeout', 'LLLPLLP', 'L')
|
|
70
|
+
@send_message.call(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 'Environment', flags, 5000, result)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Joe Williams (<joe@joetify.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2009 Joe Williams
|
|
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/log'
|
|
20
|
+
require 'chef/mixin/command'
|
|
21
|
+
require 'chef/provider'
|
|
22
|
+
|
|
23
|
+
class Chef
|
|
24
|
+
class Provider
|
|
25
|
+
class ErlCall < Chef::Provider
|
|
26
|
+
include Chef::Mixin::Command
|
|
27
|
+
|
|
28
|
+
def initialize(node, new_resource)
|
|
29
|
+
super(node, new_resource)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def load_current_resource
|
|
33
|
+
true
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def action_run
|
|
37
|
+
case @new_resource.name_type
|
|
38
|
+
when "sname"
|
|
39
|
+
node = "-sname #{@new_resource.node_name}"
|
|
40
|
+
when "name"
|
|
41
|
+
node = "-name #{@new_resource.node_name}"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
if @new_resource.cookie
|
|
45
|
+
cookie = "-c #{@new_resource.cookie}"
|
|
46
|
+
else
|
|
47
|
+
cookie = ""
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
if @new_resource.distributed
|
|
51
|
+
distributed = "-s"
|
|
52
|
+
else
|
|
53
|
+
distributed = ""
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
command = "erl_call -e #{distributed} #{node} #{cookie}"
|
|
57
|
+
|
|
58
|
+
begin
|
|
59
|
+
pid, stdin, stdout, stderr = popen4(command, :waitlast => true)
|
|
60
|
+
|
|
61
|
+
Chef::Log.debug("Running erl_call[#{@new_resource.name}]")
|
|
62
|
+
Chef::Log.debug("erl_call[#{@new_resource.name}] command: #{command}")
|
|
63
|
+
Chef::Log.debug("erl_call[#{@new_resource.name}] code: #{@new_resource.code}")
|
|
64
|
+
|
|
65
|
+
@new_resource.code.each_line { |line| stdin.puts(line.chomp) }
|
|
66
|
+
|
|
67
|
+
stdin.close
|
|
68
|
+
|
|
69
|
+
Chef::Log.debug("erl_call[#{@new_resource.name}] output: ")
|
|
70
|
+
|
|
71
|
+
stdout_output = ""
|
|
72
|
+
stdout.each_line { |line| stdout_output << line }
|
|
73
|
+
stdout.close
|
|
74
|
+
|
|
75
|
+
stderr_output = ""
|
|
76
|
+
stderr.each_line { |line| stderr_output << line }
|
|
77
|
+
stderr.close
|
|
78
|
+
|
|
79
|
+
# fail if stderr contains anything
|
|
80
|
+
if stderr_output.length > 0
|
|
81
|
+
raise Chef::Exceptions::ErlCall, stderr_output
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# fail if the first 4 characters aren't "{ok,"
|
|
85
|
+
unless stdout_output[0..3].include?('{ok,')
|
|
86
|
+
raise Chef::Exceptions::ErlCall, stdout_output
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
Chef::Log.debug("#{stdout_output}")
|
|
90
|
+
Chef::Log.info("Ran erl_call[#{@new_resource.name}] successfully")
|
|
91
|
+
|
|
92
|
+
ensure
|
|
93
|
+
Process.wait(pid) if pid
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|