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,127 @@
|
|
|
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
|
+
require 'chef/provider/package'
|
|
19
|
+
require 'chef/mixin/command'
|
|
20
|
+
require 'chef/resource/package'
|
|
21
|
+
|
|
22
|
+
class Chef
|
|
23
|
+
class Provider
|
|
24
|
+
class Package
|
|
25
|
+
class Solaris < Chef::Provider::Package
|
|
26
|
+
|
|
27
|
+
# def initialize(*args)
|
|
28
|
+
# super
|
|
29
|
+
# @current_resource = Chef::Resource::Package.new(@new_resource.name)
|
|
30
|
+
# end
|
|
31
|
+
|
|
32
|
+
def load_current_resource
|
|
33
|
+
@current_resource = Chef::Resource::Package.new(@new_resource.name)
|
|
34
|
+
@current_resource.package_name(@new_resource.package_name)
|
|
35
|
+
@new_resource.version(nil)
|
|
36
|
+
|
|
37
|
+
if @new_resource.source
|
|
38
|
+
unless ::File.exists?(@new_resource.source)
|
|
39
|
+
raise Chef::Exceptions::Package, "Package #{@new_resource.name} not found: #{@new_resource.source}"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
Chef::Log.debug("Checking pkg status for #{@new_resource.package_name}")
|
|
43
|
+
status = popen4("pkginfo -l -d #{@new_resource.source} #{@new_resource.package_name}") do |pid, stdin, stdout, stderr|
|
|
44
|
+
stdout.each do |line|
|
|
45
|
+
case line
|
|
46
|
+
when /VERSION:\s+(.+)/
|
|
47
|
+
@new_resource.version($1)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
elsif Array(@new_resource.action).include?(:install)
|
|
52
|
+
raise Chef::Exceptions::Package, "Source for package #{@new_resource.name} required for action install"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
Chef::Log.debug("Checking install state for #{@current_resource.package_name}")
|
|
56
|
+
status = popen4("pkginfo -l #{@current_resource.package_name}") do |pid, stdin, stdout, stderr|
|
|
57
|
+
stdout.each do |line|
|
|
58
|
+
case line
|
|
59
|
+
when /VERSION:\s+(.+)/
|
|
60
|
+
Chef::Log.debug("Package #{@current_resource.package_name} #{$1} is already installed")
|
|
61
|
+
@current_resource.version($1)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
unless status.exitstatus == 0 || status.exitstatus == 1
|
|
67
|
+
raise Chef::Exceptions::Package, "pkginfo failed - #{status.inspect}!"
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
unless @current_resource.version.nil?
|
|
71
|
+
@current_resource.version(nil)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
@current_resource
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def candidate_version
|
|
78
|
+
return @candidate_version if @candidate_version
|
|
79
|
+
status = popen4("pkginfo -l -d #{@new_resource.source} #{new_resource.package_name}") do |pid, stdin, stdout, stderr|
|
|
80
|
+
stdout.each_line do |line|
|
|
81
|
+
case line
|
|
82
|
+
when /VERSION:\s+(.+)/
|
|
83
|
+
@candidate_version = $1
|
|
84
|
+
@new_resource.version($1)
|
|
85
|
+
Chef::Log.debug("candidate_version: setting install candidate version to #{@candidate_version}")
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
unless status.exitstatus == 0
|
|
90
|
+
raise Chef::Exceptions::Package, "pkginfo -l -d #{@new_resource.source} - #{status.inspect}!"
|
|
91
|
+
end
|
|
92
|
+
@candidate_version
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def install_package(name, version)
|
|
96
|
+
Chef::Log.debug("Options: #{@new_resource.options}")
|
|
97
|
+
if @new_resource.options.nil?
|
|
98
|
+
run_command_with_systems_locale(
|
|
99
|
+
:command => "pkgadd -n -d #{@new_resource.source} all"
|
|
100
|
+
)
|
|
101
|
+
Chef::Log.debug("Installed package: #{@new_resource.package_name} #{@new_resource.version} from: #{@new_resource.source}")
|
|
102
|
+
else
|
|
103
|
+
run_command_with_systems_locale(
|
|
104
|
+
:command => "pkgadd -n#{expand_options(@new_resource.options)} -d #{@new_resource.source} all"
|
|
105
|
+
)
|
|
106
|
+
Chef::Log.debug("Installed package: #{@new_resource.package_name} #{@new_resource.version} from: #{@new_resource.source}")
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def remove_package(name, version)
|
|
111
|
+
if @new_resource.options.nil?
|
|
112
|
+
run_command_with_systems_locale(
|
|
113
|
+
:command => "pkgrm -n #{name}"
|
|
114
|
+
)
|
|
115
|
+
Chef::Log.debug("Removed package #{@new_resource.package_name} #{@new_resource.version}")
|
|
116
|
+
else
|
|
117
|
+
run_command_with_systems_locale(
|
|
118
|
+
:command => "pkgrm -n#{expand_options(@new_resource.options)} #{name}"
|
|
119
|
+
)
|
|
120
|
+
Chef::Log.debug("Removed package #{@new_resource.package_name} #{@new_resource.version}")
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Matthew Kent (<mkent@magoazul.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2009 Matthew Kent
|
|
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
|
+
# yum-dump.py
|
|
20
|
+
# Inspired by yumhelper.py by David Lutterkort
|
|
21
|
+
#
|
|
22
|
+
# Produce a list of installed and available packages using yum and dump the
|
|
23
|
+
# result to stdout.
|
|
24
|
+
#
|
|
25
|
+
# This invokes yum just as the command line would which makes it subject to
|
|
26
|
+
# all the caching related configuration paramaters in yum.conf.
|
|
27
|
+
#
|
|
28
|
+
# Can be run as non root, but that won't update the cache.
|
|
29
|
+
|
|
30
|
+
import os
|
|
31
|
+
import sys
|
|
32
|
+
import time
|
|
33
|
+
import yum
|
|
34
|
+
|
|
35
|
+
from yum import Errors
|
|
36
|
+
|
|
37
|
+
PIDFILE='/var/run/yum.pid'
|
|
38
|
+
|
|
39
|
+
# Seconds to wait for exclusive access to yum
|
|
40
|
+
lock_timeout = 10
|
|
41
|
+
|
|
42
|
+
failure = False
|
|
43
|
+
|
|
44
|
+
# Can't do try: except: finally: in python 2.4 it seems, hence this fun.
|
|
45
|
+
try:
|
|
46
|
+
try:
|
|
47
|
+
y = yum.YumBase()
|
|
48
|
+
try:
|
|
49
|
+
# Only want our output
|
|
50
|
+
y.doConfigSetup(errorlevel=0,debuglevel=0)
|
|
51
|
+
except:
|
|
52
|
+
# but of course, yum on even moderately old
|
|
53
|
+
# redhat/centosen doesn't know how to do logging properly
|
|
54
|
+
# so we duck punch our way to victory
|
|
55
|
+
def __log(a,b): pass
|
|
56
|
+
y.doConfigSetup()
|
|
57
|
+
y.log = __log
|
|
58
|
+
y.errorlog = __log
|
|
59
|
+
|
|
60
|
+
# Yum assumes it can update the cache directory. Disable this for non root
|
|
61
|
+
# users.
|
|
62
|
+
y.conf.cache = os.geteuid() != 0
|
|
63
|
+
|
|
64
|
+
# Override any setting in yum.conf - we only care about the newest
|
|
65
|
+
y.conf.showdupesfromrepos = False
|
|
66
|
+
|
|
67
|
+
# Spin up to lock_timeout.
|
|
68
|
+
countdown = lock_timeout
|
|
69
|
+
while True:
|
|
70
|
+
try:
|
|
71
|
+
y.doLock(PIDFILE)
|
|
72
|
+
except Errors.LockError, e:
|
|
73
|
+
time.sleep(1)
|
|
74
|
+
countdown -= 1
|
|
75
|
+
if countdown == 0:
|
|
76
|
+
print >> sys.stderr, "Error! Couldn't obtain an exclusive yum lock in %d seconds. Giving up." % lock_timeout
|
|
77
|
+
failure = True
|
|
78
|
+
sys.exit(1)
|
|
79
|
+
else:
|
|
80
|
+
break
|
|
81
|
+
|
|
82
|
+
y.doTsSetup()
|
|
83
|
+
y.doRpmDBSetup()
|
|
84
|
+
|
|
85
|
+
try:
|
|
86
|
+
db = y.doPackageLists('all')
|
|
87
|
+
except AttributeError:
|
|
88
|
+
# some people claim that testing for yum.__version__ should be
|
|
89
|
+
# enough to see if this is required, but I say they're liars.
|
|
90
|
+
# the yum on 4.8 at least understands yum.__version__ but still
|
|
91
|
+
# needs to get its repos and sacks set up manually.
|
|
92
|
+
# Thus, we just try it, fail, and then try again. WCPGW?
|
|
93
|
+
y.doRepoSetup()
|
|
94
|
+
y.doSackSetup()
|
|
95
|
+
db = y.doPackageLists('all')
|
|
96
|
+
|
|
97
|
+
y.closeRpmDB()
|
|
98
|
+
|
|
99
|
+
except Errors.YumBaseError, e:
|
|
100
|
+
print >> sys.stderr, "Error! %s" % e
|
|
101
|
+
failure = True
|
|
102
|
+
sys.exit(1)
|
|
103
|
+
|
|
104
|
+
# Ensure we clear the lock.
|
|
105
|
+
finally:
|
|
106
|
+
try:
|
|
107
|
+
y.doUnlock(PIDFILE)
|
|
108
|
+
# Keep Unlock from raising a second exception as it does with a yum.conf
|
|
109
|
+
# config error.
|
|
110
|
+
except Errors.YumBaseError:
|
|
111
|
+
if failure == False:
|
|
112
|
+
print >> sys.stderr, "Error! %s" % e
|
|
113
|
+
sys.exit(1)
|
|
114
|
+
|
|
115
|
+
for pkg in db.installed:
|
|
116
|
+
print '%s,installed,%s,%s,%s,%s' % ( pkg.name,
|
|
117
|
+
pkg.epoch,
|
|
118
|
+
pkg.version,
|
|
119
|
+
pkg.release,
|
|
120
|
+
pkg.arch )
|
|
121
|
+
for pkg in db.available:
|
|
122
|
+
print '%s,available,%s,%s,%s,%s' % ( pkg.name,
|
|
123
|
+
pkg.epoch,
|
|
124
|
+
pkg.version,
|
|
125
|
+
pkg.release,
|
|
126
|
+
pkg.arch )
|
|
127
|
+
|
|
128
|
+
sys.exit(0)
|
|
@@ -0,0 +1,261 @@
|
|
|
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/provider/package'
|
|
20
|
+
require 'chef/mixin/command'
|
|
21
|
+
require 'chef/resource/package'
|
|
22
|
+
require 'singleton'
|
|
23
|
+
|
|
24
|
+
class Chef
|
|
25
|
+
class Provider
|
|
26
|
+
class Package
|
|
27
|
+
class Yum < Chef::Provider::Package
|
|
28
|
+
|
|
29
|
+
class YumCache
|
|
30
|
+
include Chef::Mixin::Command
|
|
31
|
+
include Singleton
|
|
32
|
+
|
|
33
|
+
def initialize
|
|
34
|
+
load_data
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def stale?
|
|
38
|
+
interval = Chef::Config[:interval].to_f
|
|
39
|
+
|
|
40
|
+
# run once mode
|
|
41
|
+
if interval == 0
|
|
42
|
+
return false
|
|
43
|
+
elsif (Time.now - @updated_at) > interval
|
|
44
|
+
return true
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
false
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def refresh
|
|
51
|
+
if @data.empty?
|
|
52
|
+
reload
|
|
53
|
+
elsif stale?
|
|
54
|
+
reload
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def load_data
|
|
59
|
+
@data = Hash.new
|
|
60
|
+
error = String.new
|
|
61
|
+
|
|
62
|
+
helper = ::File.join(::File.dirname(__FILE__), 'yum-dump.py')
|
|
63
|
+
status = popen4("python #{helper}", :waitlast => true) do |pid, stdin, stdout, stderr|
|
|
64
|
+
stdout.each do |line|
|
|
65
|
+
line.chomp!
|
|
66
|
+
name, type, epoch, version, release, arch = line.split(',')
|
|
67
|
+
type_sym = type.to_sym
|
|
68
|
+
if !@data.has_key?(name)
|
|
69
|
+
@data[name] = Hash.new
|
|
70
|
+
end
|
|
71
|
+
if !@data[name].has_key?(type_sym)
|
|
72
|
+
@data[name][type_sym] = Hash.new
|
|
73
|
+
end
|
|
74
|
+
@data[name][type_sym][arch] = { :epoch => epoch, :version => version,
|
|
75
|
+
:release => release }
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
error = stderr.readlines
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
unless status.exitstatus == 0
|
|
82
|
+
raise Chef::Exceptions::Package, "yum failed - #{status.inspect} - returns: #{error}"
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
@updated_at = Time.now
|
|
86
|
+
end
|
|
87
|
+
alias :reload :load_data
|
|
88
|
+
|
|
89
|
+
def version(package_name, type, arch)
|
|
90
|
+
if (x = @data[package_name])
|
|
91
|
+
if (y = x[type])
|
|
92
|
+
if arch
|
|
93
|
+
if (z = y[arch])
|
|
94
|
+
return "#{z[:version]}-#{z[:release]}"
|
|
95
|
+
end
|
|
96
|
+
else
|
|
97
|
+
# no arch specified - take the first match
|
|
98
|
+
z = y.to_a[0][1]
|
|
99
|
+
return "#{z[:version]}-#{z[:release]}"
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
nil
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def version_available?(package_name, desired_version, arch)
|
|
108
|
+
if (package_data = @data[package_name])
|
|
109
|
+
if (available_versions = package_data[:available])
|
|
110
|
+
if arch
|
|
111
|
+
# arch gets passed like ".x86_64"
|
|
112
|
+
matching_versions = [ available_versions[arch.sub(/^./, '')]]
|
|
113
|
+
else
|
|
114
|
+
matching_versions = available_versions.values
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
if matching_versions.nil?
|
|
118
|
+
if arch.empty?
|
|
119
|
+
arch_msg = ""
|
|
120
|
+
else
|
|
121
|
+
arch_msg = "with arch #{arch.sub(/^./, '')} "
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
raise ArgumentError, "#{package_name}: Found no available versions #{arch_msg}to match"
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Expect [ { :version => "ver", :release => "rel" }, { :version => "ver", :release => "rel" }, { :version => "ver", :release => "rel" } ] ???
|
|
128
|
+
matching_versions.each do |ver|
|
|
129
|
+
Chef::Log.debug("#{package_name}: trying to match #{desired_version} to version #{ver[:version]} and release #{ver[:release]}")
|
|
130
|
+
if (desired_version == "#{ver[:version]}-#{ver[:release]}")
|
|
131
|
+
return true
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
nil
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def installed_version(package_name, arch)
|
|
141
|
+
version(package_name, :installed, arch)
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def candidate_version(package_name, arch)
|
|
145
|
+
version(package_name, :available, arch)
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def flush
|
|
149
|
+
@data.clear
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def initialize(new_resource, run_context)
|
|
154
|
+
super
|
|
155
|
+
@yum = YumCache.instance
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def arch
|
|
159
|
+
if @new_resource.respond_to?("arch")
|
|
160
|
+
@new_resource.arch
|
|
161
|
+
else
|
|
162
|
+
nil
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def yum_arch
|
|
167
|
+
arch ? ".#{arch}" : nil
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
def load_current_resource
|
|
171
|
+
@current_resource = Chef::Resource::Package.new(@new_resource.name)
|
|
172
|
+
@current_resource.package_name(@new_resource.package_name)
|
|
173
|
+
|
|
174
|
+
if @new_resource.source
|
|
175
|
+
unless ::File.exists?(@new_resource.source)
|
|
176
|
+
raise Chef::Exceptions::Package, "Package #{@new_resource.name} not found: #{@new_resource.source}"
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
Chef::Log.debug("Checking rpm status for #{@new_resource.package_name}")
|
|
180
|
+
status = popen4("rpm -qp --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' #{@new_resource.source}") do |pid, stdin, stdout, stderr|
|
|
181
|
+
stdout.each do |line|
|
|
182
|
+
case line
|
|
183
|
+
when /([\w\d_.-]+)\s([\w\d_.-]+)/
|
|
184
|
+
@current_resource.package_name($1)
|
|
185
|
+
@new_resource.version($2)
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
Chef::Log.debug("Checking yum info for #{@new_resource.package_name}#{yum_arch}")
|
|
192
|
+
|
|
193
|
+
@yum.refresh
|
|
194
|
+
|
|
195
|
+
installed_version = @yum.installed_version(@new_resource.package_name, arch)
|
|
196
|
+
@candidate_version = @yum.candidate_version(@new_resource.package_name, arch)
|
|
197
|
+
|
|
198
|
+
@current_resource.version(installed_version)
|
|
199
|
+
if candidate_version
|
|
200
|
+
@candidate_version = candidate_version
|
|
201
|
+
else
|
|
202
|
+
@candidate_version = installed_version
|
|
203
|
+
end
|
|
204
|
+
Chef::Log.debug("#{@current_resource.name}: Installed version: #{installed_version} Candidate version: #{candidate_version}")
|
|
205
|
+
|
|
206
|
+
@current_resource
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
def install_package(name, version)
|
|
210
|
+
if @new_resource.source
|
|
211
|
+
run_command_with_systems_locale(
|
|
212
|
+
:command => "yum -d0 -e0 -y #{@new_resource.options} localinstall #{@new_resource.source}"
|
|
213
|
+
)
|
|
214
|
+
else
|
|
215
|
+
# Work around yum not exiting with an error if a package doesn't exist for CHEF-2062
|
|
216
|
+
if @yum.version_available?(name, version, yum_arch)
|
|
217
|
+
run_command_with_systems_locale(
|
|
218
|
+
:command => "yum -d0 -e0 -y #{@new_resource.options} install #{name}-#{version}#{yum_arch}"
|
|
219
|
+
)
|
|
220
|
+
else
|
|
221
|
+
raise ArgumentError, "#{@new_resource.name}: Version #{version} of #{name} not found. Did you specify both version and release? (version-release, e.g. 1.84-10.fc6)"
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
@yum.flush
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
def upgrade_package(name, version)
|
|
228
|
+
# If we're not given a version, running update is the correct
|
|
229
|
+
# option. If we are, then running install_package is right.
|
|
230
|
+
unless version
|
|
231
|
+
run_command_with_systems_locale(
|
|
232
|
+
:command => "yum -d0 -e0 -y #{@new_resource.options} update #{name}#{yum_arch}"
|
|
233
|
+
)
|
|
234
|
+
@yum.flush
|
|
235
|
+
else
|
|
236
|
+
install_package(name, version)
|
|
237
|
+
end
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
def remove_package(name, version)
|
|
241
|
+
if version
|
|
242
|
+
run_command_with_systems_locale(
|
|
243
|
+
:command => "yum -d0 -e0 -y #{@new_resource.options} remove #{name}-#{version}#{yum_arch}"
|
|
244
|
+
)
|
|
245
|
+
else
|
|
246
|
+
run_command_with_systems_locale(
|
|
247
|
+
:command => "yum -d0 -e0 -y #{@new_resource.options} remove #{name}#{yum_arch}"
|
|
248
|
+
)
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
@yum.flush
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
def purge_package(name, version)
|
|
255
|
+
remove_package(name, version)
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
end
|
|
259
|
+
end
|
|
260
|
+
end
|
|
261
|
+
end
|