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,81 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Author:: Adam Jacob (<adam@opscode.com>)
|
|
3
|
+
# Author:: Christopher Walters (<cw@opscode.com>)
|
|
4
|
+
# Copyright:: Copyright (c) 2008, 2009 Opscode, Inc.
|
|
5
|
+
# License:: Apache License, Version 2.0
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
#
|
|
19
|
+
|
|
20
|
+
require 'chef/resource'
|
|
21
|
+
require 'chef/mixin/convert_to_class_name'
|
|
22
|
+
require 'chef/mixin/language'
|
|
23
|
+
|
|
24
|
+
#--
|
|
25
|
+
# UGH. this is a circular require that will cause an uninitialized constant
|
|
26
|
+
# error, but this file really does depend on Chef::Recipe. oh well.
|
|
27
|
+
# require 'chef/recipe'
|
|
28
|
+
|
|
29
|
+
class Chef
|
|
30
|
+
module Mixin
|
|
31
|
+
module RecipeDefinitionDSLCore
|
|
32
|
+
|
|
33
|
+
include Chef::Mixin::ConvertToClassName
|
|
34
|
+
include Chef::Mixin::Language
|
|
35
|
+
|
|
36
|
+
def method_missing(method_symbol, *args, &block)
|
|
37
|
+
# If we have a definition that matches, we want to use that instead. This should
|
|
38
|
+
# let you do some really crazy over-riding of "native" types, if you really want
|
|
39
|
+
# to.
|
|
40
|
+
if run_context.definitions.has_key?(method_symbol)
|
|
41
|
+
# This dupes the high level object, but we still need to dup the params
|
|
42
|
+
new_def = run_context.definitions[method_symbol].dup
|
|
43
|
+
new_def.params = new_def.params.dup
|
|
44
|
+
new_def.node = run_context.node
|
|
45
|
+
# This sets up the parameter overrides
|
|
46
|
+
new_def.instance_eval(&block) if block
|
|
47
|
+
new_recipe = Chef::Recipe.new(cookbook_name, @recipe_name, run_context)
|
|
48
|
+
new_recipe.params = new_def.params
|
|
49
|
+
new_recipe.params[:name] = args[0]
|
|
50
|
+
new_recipe.instance_eval(&new_def.recipe)
|
|
51
|
+
else
|
|
52
|
+
# Otherwise, we're rocking the regular resource call route.
|
|
53
|
+
method_name = method_symbol.to_s
|
|
54
|
+
rname = convert_to_class_name(method_name)
|
|
55
|
+
|
|
56
|
+
super unless Chef::Resource.const_defined?(rname)
|
|
57
|
+
raise ArgumentError, "You must supply a name when declaring a #{method_name} resource" unless args.size > 0
|
|
58
|
+
|
|
59
|
+
# If we have a resource like this one, we want to steal its state
|
|
60
|
+
args << run_context
|
|
61
|
+
resource = Chef::Resource.const_get(rname).new(*args)
|
|
62
|
+
resource.load_prior_resource
|
|
63
|
+
resource.cookbook_name = cookbook_name
|
|
64
|
+
# TODO: 5/21/2010 cw/dan: do we need recipe_name for
|
|
65
|
+
# anything? it's not even possible that this ivar is set on
|
|
66
|
+
# Chef::Provider.
|
|
67
|
+
# resource.recipe_name = @recipe_name
|
|
68
|
+
resource.params = @params
|
|
69
|
+
resource.source_line = caller[0]
|
|
70
|
+
# Determine whether this resource is being created in the context of an enclosing Provider
|
|
71
|
+
resource.enclosing_provider = self.is_a?(Chef::Provider) ? self : nil
|
|
72
|
+
resource.instance_eval(&block) if block
|
|
73
|
+
|
|
74
|
+
run_context.resource_collection.insert(resource)
|
|
75
|
+
resource
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Author:: Daniel DeLeo (<dan@opscode.com>)
|
|
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
|
+
require 'chef/shell_out'
|
|
19
|
+
|
|
20
|
+
class Chef
|
|
21
|
+
module Mixin
|
|
22
|
+
module ShellOut
|
|
23
|
+
|
|
24
|
+
def shell_out(*command_args)
|
|
25
|
+
cmd = Chef::ShellOut.new(*command_args)
|
|
26
|
+
if STDOUT.tty? && !Chef::Config[:daemon] && Chef::Log.info?
|
|
27
|
+
cmd.live_stream ||= STDOUT
|
|
28
|
+
end
|
|
29
|
+
cmd.run_command
|
|
30
|
+
cmd
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def shell_out!(*command_args)
|
|
34
|
+
cmd= shell_out(*command_args)
|
|
35
|
+
cmd.error!
|
|
36
|
+
cmd
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,95 @@
|
|
|
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 'tempfile'
|
|
20
|
+
require 'erubis'
|
|
21
|
+
|
|
22
|
+
class Chef
|
|
23
|
+
module Mixin
|
|
24
|
+
module Template
|
|
25
|
+
|
|
26
|
+
module ChefContext
|
|
27
|
+
def node
|
|
28
|
+
return @node if @node
|
|
29
|
+
raise "Could not find a value for node. If you are explicitly setting variables in a template, " +
|
|
30
|
+
"include a node variable if you plan to use it."
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
::Erubis::Context.send(:include, ChefContext)
|
|
35
|
+
|
|
36
|
+
# Render a template with Erubis. Takes a template as a string, and a
|
|
37
|
+
# context hash.
|
|
38
|
+
def render_template(template, context)
|
|
39
|
+
begin
|
|
40
|
+
eruby = Erubis::Eruby.new(template)
|
|
41
|
+
output = eruby.evaluate(context)
|
|
42
|
+
rescue Object => e
|
|
43
|
+
raise TemplateError.new(e, template, context)
|
|
44
|
+
end
|
|
45
|
+
Tempfile.open("chef-rendered-template") do |tempfile|
|
|
46
|
+
tempfile.print(output)
|
|
47
|
+
tempfile.close
|
|
48
|
+
yield tempfile
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
class TemplateError < RuntimeError
|
|
53
|
+
attr_reader :original_exception, :context
|
|
54
|
+
SOURCE_CONTEXT_WINDOW = 2
|
|
55
|
+
|
|
56
|
+
def initialize(original_exception, template, context)
|
|
57
|
+
@original_exception, @template, @context = original_exception, template, context
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def message
|
|
61
|
+
@original_exception.message
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def line_number
|
|
65
|
+
@line_number ||= $1.to_i if original_exception.backtrace.find {|line| line =~ /\(erubis\):(\d+)/ }
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def source_location
|
|
69
|
+
"on line ##{line_number}"
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def source_listing
|
|
73
|
+
@source_listing ||= begin
|
|
74
|
+
line_index = line_number - 1
|
|
75
|
+
beginning_line = line_index <= SOURCE_CONTEXT_WINDOW ? 0 : line_index - SOURCE_CONTEXT_WINDOW
|
|
76
|
+
source_size = SOURCE_CONTEXT_WINDOW * 2 + 1
|
|
77
|
+
lines = @template.split(/\n/)
|
|
78
|
+
contextual_lines = lines[beginning_line, source_size]
|
|
79
|
+
output = []
|
|
80
|
+
contextual_lines.each_with_index do |line, index|
|
|
81
|
+
line_number = (index+beginning_line+1).to_s.rjust(3)
|
|
82
|
+
output << "#{line_number}: #{line}"
|
|
83
|
+
end
|
|
84
|
+
output.join("\n")
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def to_s
|
|
89
|
+
"\n\n#{self.class} (#{message}) #{source_location}:\n\n" +
|
|
90
|
+
"#{source_listing}\n\n #{original_exception.backtrace.join("\n ")}\n\n"
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Author:: Daniel DeLeo (<dan@opscode.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2009 Opscode, Inc.
|
|
4
|
+
# Copyright:: Copyright (c) 2005 Sam Ruby
|
|
5
|
+
# License:: Apache License, Version 2.0
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
|
|
19
|
+
#--
|
|
20
|
+
# Portions of this code are adapted from Sam Ruby's xchar.rb
|
|
21
|
+
# http://intertwingly.net/stories/2005/09/28/xchar.rb
|
|
22
|
+
#
|
|
23
|
+
# Such code appears here under Sam's original MIT license, while portions of
|
|
24
|
+
# this file are covered by the above Apache License. For a completely MIT
|
|
25
|
+
# licensed version, please see Sam's original.
|
|
26
|
+
#
|
|
27
|
+
# Thanks, Sam!
|
|
28
|
+
#
|
|
29
|
+
# Copyright (c) 2005, Sam Ruby
|
|
30
|
+
#
|
|
31
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
32
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
33
|
+
# in the Software without restriction, including without limitation the rights
|
|
34
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
35
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
36
|
+
# furnished to do so, subject to the following conditions:
|
|
37
|
+
#
|
|
38
|
+
# The above copyright notice and this permission notice shall be included in
|
|
39
|
+
# all copies or substantial portions of the Software.
|
|
40
|
+
#
|
|
41
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
42
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
43
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
44
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
45
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
46
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
47
|
+
# THE SOFTWARE.
|
|
48
|
+
|
|
49
|
+
require 'chef/log'
|
|
50
|
+
|
|
51
|
+
begin
|
|
52
|
+
require 'fast_xs'
|
|
53
|
+
rescue LoadError
|
|
54
|
+
Chef::Log.info "The fast_xs gem is not installed, slower pure ruby XML escaping will be used."
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
class Chef
|
|
58
|
+
module Mixin
|
|
59
|
+
module XMLEscape
|
|
60
|
+
|
|
61
|
+
module PureRuby
|
|
62
|
+
extend self
|
|
63
|
+
|
|
64
|
+
CP1252 = {
|
|
65
|
+
128 => 8364, # euro sign
|
|
66
|
+
130 => 8218, # single low-9 quotation mark
|
|
67
|
+
131 => 402, # latin small letter f with hook
|
|
68
|
+
132 => 8222, # double low-9 quotation mark
|
|
69
|
+
133 => 8230, # horizontal ellipsis
|
|
70
|
+
134 => 8224, # dagger
|
|
71
|
+
135 => 8225, # double dagger
|
|
72
|
+
136 => 710, # modifier letter circumflex accent
|
|
73
|
+
137 => 8240, # per mille sign
|
|
74
|
+
138 => 352, # latin capital letter s with caron
|
|
75
|
+
139 => 8249, # single left-pointing angle quotation mark
|
|
76
|
+
140 => 338, # latin capital ligature oe
|
|
77
|
+
142 => 381, # latin capital letter z with caron
|
|
78
|
+
145 => 8216, # left single quotation mark
|
|
79
|
+
146 => 8217, # right single quotation mark
|
|
80
|
+
147 => 8220, # left double quotation mark
|
|
81
|
+
148 => 8221, # right double quotation mark
|
|
82
|
+
149 => 8226, # bullet
|
|
83
|
+
150 => 8211, # en dash
|
|
84
|
+
151 => 8212, # em dash
|
|
85
|
+
152 => 732, # small tilde
|
|
86
|
+
153 => 8482, # trade mark sign
|
|
87
|
+
154 => 353, # latin small letter s with caron
|
|
88
|
+
155 => 8250, # single right-pointing angle quotation mark
|
|
89
|
+
156 => 339, # latin small ligature oe
|
|
90
|
+
158 => 382, # latin small letter z with caron
|
|
91
|
+
159 => 376 # latin capital letter y with diaeresis
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
# http://www.w3.org/TR/REC-xml/#dt-chardata
|
|
95
|
+
PREDEFINED = {
|
|
96
|
+
38 => '&', # ampersand
|
|
97
|
+
60 => '<', # left angle bracket
|
|
98
|
+
62 => '>' # right angle bracket
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
# http://www.w3.org/TR/REC-xml/#charsets
|
|
102
|
+
VALID = [[0x9, 0xA, 0xD], (0x20..0xD7FF),
|
|
103
|
+
(0xE000..0xFFFD), (0x10000..0x10FFFF)]
|
|
104
|
+
|
|
105
|
+
def xml_escape(unescaped_str)
|
|
106
|
+
begin
|
|
107
|
+
unescaped_str.unpack("U*").map {|char| xml_escape_char!(char)}.join
|
|
108
|
+
rescue
|
|
109
|
+
unescaped_str.unpack("C*").map {|char| xml_escape_char!(char)}.join
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
private
|
|
114
|
+
|
|
115
|
+
def xml_escape_char!(char)
|
|
116
|
+
char = CP1252[char] || char
|
|
117
|
+
char = 42 unless VALID.detect {|range| range.include? char}
|
|
118
|
+
char = PREDEFINED[char] || (char<128 ? char.chr : "&##{char};")
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
module FastXS
|
|
123
|
+
extend self
|
|
124
|
+
|
|
125
|
+
def xml_escape(string)
|
|
126
|
+
string.fast_xs
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
if "strings".respond_to?(:fast_xs)
|
|
132
|
+
include FastXS
|
|
133
|
+
extend FastXS
|
|
134
|
+
else
|
|
135
|
+
include PureRuby
|
|
136
|
+
extend PureRuby
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|
data/lib/chef/mixins.rb
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'chef/mixin/shell_out'
|
|
2
|
+
require 'chef/mixin/check_helper'
|
|
3
|
+
require 'chef/mixin/checksum'
|
|
4
|
+
require 'chef/mixin/command'
|
|
5
|
+
require 'chef/mixin/convert_to_class_name'
|
|
6
|
+
require 'chef/mixin/create_path'
|
|
7
|
+
require 'chef/mixin/deep_merge'
|
|
8
|
+
require 'chef/mixin/from_file'
|
|
9
|
+
require 'chef/mixin/language'
|
|
10
|
+
require 'chef/mixin/language_include_attribute'
|
|
11
|
+
require 'chef/mixin/language_include_recipe'
|
|
12
|
+
require 'chef/mixin/params_validate'
|
|
13
|
+
require 'chef/mixin/recipe_definition_dsl_core'
|
|
14
|
+
require 'chef/mixin/template'
|
|
15
|
+
require 'chef/mixin/xml_escape'
|
|
@@ -0,0 +1,36 @@
|
|
|
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
|
+
if RUBY_VERSION < "1.8.6" || RUBY_PLATFORM =~ /mswin|mingw32|windows/
|
|
20
|
+
class Dir
|
|
21
|
+
class << self
|
|
22
|
+
alias_method :glob_, :glob
|
|
23
|
+
# Adds a Dir.glob to Ruby 1.8.5, for compat
|
|
24
|
+
def glob(pattern, flags=0)
|
|
25
|
+
raise ArgumentError unless (
|
|
26
|
+
!pattern.nil? and (
|
|
27
|
+
pattern.is_a? Array and !pattern.empty?
|
|
28
|
+
) or pattern.is_a? String
|
|
29
|
+
)
|
|
30
|
+
pattern.gsub!(/\\/, "/") if RUBY_PLATFORM =~ /mswin|mingw32|windows/
|
|
31
|
+
[pattern].flatten.inject([]) { |r, p| r + glob_(p, flags) }
|
|
32
|
+
end
|
|
33
|
+
alias_method :[], :glob
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Copyright (c) 2009 Marc-Andre Lafortune
|
|
2
|
+
#
|
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
# a copy of this software and associated documentation files (the
|
|
5
|
+
# "Software"), to deal in the Software without restriction, including
|
|
6
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
# the following conditions:
|
|
10
|
+
#
|
|
11
|
+
# The above copyright notice and this permission notice shall be
|
|
12
|
+
# included in all copies or substantial portions of the Software.
|
|
13
|
+
#
|
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
21
|
+
|
|
22
|
+
class Regexp
|
|
23
|
+
# Standard in Ruby 1.8.7+. See official documentation[http://www.ruby-doc.org/core-1.8.7/classes/Regexp.html]
|
|
24
|
+
class << self
|
|
25
|
+
unless (union(%w(a b)) rescue false)
|
|
26
|
+
alias :union_without_array_argument :union
|
|
27
|
+
|
|
28
|
+
def union(*arg)
|
|
29
|
+
return union_without_array_argument(*arg) unless arg.size == 1
|
|
30
|
+
union_without_array_argument(*arg.first)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|