mbailey-chef 0.9.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +201 -0
- data/README.rdoc +172 -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/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 +832 -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 +7 -0
- data/distro/debian/etc/default/chef-solr-indexer +7 -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/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 +177 -0
- data/distro/debian/etc/init.d/chef-solr-indexer +176 -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/api_client.rb +264 -0
- data/lib/chef/application/agent.rb +18 -0
- data/lib/chef/application/client.rb +246 -0
- data/lib/chef/application/knife.rb +171 -0
- data/lib/chef/application/solo.rb +215 -0
- data/lib/chef/application.rb +127 -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 +173 -0
- data/lib/chef/client.rb +304 -0
- data/lib/chef/config.rb +240 -0
- data/lib/chef/cookbook/cookbook_collection.rb +44 -0
- data/lib/chef/cookbook/file_system_file_vendor.rb +54 -0
- data/lib/chef/cookbook/file_vendor.rb +48 -0
- data/lib/chef/cookbook/metadata/version.rb +87 -0
- data/lib/chef/cookbook/metadata.rb +500 -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 +227 -0
- data/lib/chef/cookbook_site_streaming_uploader.rb +244 -0
- data/lib/chef/cookbook_uploader.rb +103 -0
- data/lib/chef/cookbook_version.rb +930 -0
- data/lib/chef/couchdb.rb +239 -0
- data/lib/chef/daemon.rb +172 -0
- data/lib/chef/data_bag.rb +215 -0
- data/lib/chef/data_bag_item.rb +228 -0
- data/lib/chef/exceptions.rb +66 -0
- data/lib/chef/file_access_control.rb +140 -0
- data/lib/chef/file_cache.rb +218 -0
- data/lib/chef/handler/json_file.rb +58 -0
- data/lib/chef/handler.rb +206 -0
- data/lib/chef/index_queue/amqp_client.rb +113 -0
- data/lib/chef/index_queue/consumer.rb +76 -0
- data/lib/chef/index_queue/indexable.rb +76 -0
- data/lib/chef/index_queue.rb +29 -0
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +44 -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 +43 -0
- data/lib/chef/knife/bootstrap/windows-gems.erb +34 -0
- data/lib/chef/knife/bootstrap.rb +181 -0
- data/lib/chef/knife/client_bulk_delete.rb +40 -0
- data/lib/chef/knife/client_create.rb +70 -0
- data/lib/chef/knife/client_delete.rb +45 -0
- data/lib/chef/knife/client_edit.rb +45 -0
- data/lib/chef/knife/client_list.rb +40 -0
- data/lib/chef/knife/client_reregister.rb +56 -0
- data/lib/chef/knife/client_show.rb +50 -0
- data/lib/chef/knife/configure.rb +140 -0
- data/lib/chef/knife/configure_client.rb +52 -0
- data/lib/chef/knife/cookbook_bulk_delete.rb +58 -0
- data/lib/chef/knife/cookbook_create.rb +209 -0
- data/lib/chef/knife/cookbook_delete.rb +143 -0
- data/lib/chef/knife/cookbook_download.rb +130 -0
- data/lib/chef/knife/cookbook_list.rb +41 -0
- data/lib/chef/knife/cookbook_metadata.rb +82 -0
- data/lib/chef/knife/cookbook_metadata_from_file.rb +40 -0
- data/lib/chef/knife/cookbook_show.rb +98 -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 +109 -0
- data/lib/chef/knife/cookbook_site_show.rb +57 -0
- data/lib/chef/knife/cookbook_site_unshare.rb +52 -0
- data/lib/chef/knife/cookbook_site_vendor.rb +133 -0
- data/lib/chef/knife/cookbook_test.rb +82 -0
- data/lib/chef/knife/cookbook_upload.rb +95 -0
- data/lib/chef/knife/data_bag_create.rb +59 -0
- data/lib/chef/knife/data_bag_delete.rb +48 -0
- data/lib/chef/knife/data_bag_edit.rb +50 -0
- data/lib/chef/knife/data_bag_from_file.rb +44 -0
- data/lib/chef/knife/data_bag_list.rb +43 -0
- data/lib/chef/knife/data_bag_show.rb +41 -0
- data/lib/chef/knife/ec2_instance_data.rb +46 -0
- data/lib/chef/knife/ec2_server_create.rb +216 -0
- data/lib/chef/knife/ec2_server_delete.rb +90 -0
- data/lib/chef/knife/ec2_server_list.rb +88 -0
- data/lib/chef/knife/exec.rb +52 -0
- data/lib/chef/knife/index_rebuild.rb +51 -0
- data/lib/chef/knife/node_bulk_delete.rb +43 -0
- data/lib/chef/knife/node_create.rb +47 -0
- data/lib/chef/knife/node_delete.rb +44 -0
- data/lib/chef/knife/node_edit.rb +44 -0
- data/lib/chef/knife/node_from_file.rb +42 -0
- data/lib/chef/knife/node_list.rb +41 -0
- data/lib/chef/knife/node_run_list_add.rb +64 -0
- data/lib/chef/knife/node_run_list_remove.rb +45 -0
- data/lib/chef/knife/node_show.rb +54 -0
- data/lib/chef/knife/rackspace_server_create.rb +156 -0
- data/lib/chef/knife/rackspace_server_delete.rb +57 -0
- data/lib/chef/knife/rackspace_server_list.rb +59 -0
- data/lib/chef/knife/recipe_list.rb +32 -0
- data/lib/chef/knife/role_bulk_delete.rb +44 -0
- data/lib/chef/knife/role_create.rb +52 -0
- data/lib/chef/knife/role_delete.rb +44 -0
- data/lib/chef/knife/role_edit.rb +45 -0
- data/lib/chef/knife/role_from_file.rb +46 -0
- data/lib/chef/knife/role_list.rb +40 -0
- data/lib/chef/knife/role_show.rb +51 -0
- data/lib/chef/knife/search.rb +94 -0
- data/lib/chef/knife/slicehost_images_list.rb +53 -0
- data/lib/chef/knife/slicehost_server_create.rb +103 -0
- data/lib/chef/knife/slicehost_server_delete.rb +61 -0
- data/lib/chef/knife/slicehost_server_list.rb +64 -0
- data/lib/chef/knife/ssh.rb +328 -0
- data/lib/chef/knife/status.rb +87 -0
- data/lib/chef/knife/terremark_server_create.rb +152 -0
- data/lib/chef/knife/terremark_server_delete.rb +87 -0
- data/lib/chef/knife/terremark_server_list.rb +77 -0
- data/lib/chef/knife/windows_bootstrap.rb +154 -0
- data/lib/chef/knife.rb +522 -0
- data/lib/chef/log.rb +61 -0
- data/lib/chef/mixin/check_helper.rb +31 -0
- data/lib/chef/mixin/checksum.rb +32 -0
- data/lib/chef/mixin/command/unix.rb +215 -0
- data/lib/chef/mixin/command/windows.rb +72 -0
- data/lib/chef/mixin/command.rb +220 -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/find_preferred_file.rb +92 -0
- data/lib/chef/mixin/from_file.rb +50 -0
- data/lib/chef/mixin/language.rb +156 -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 +38 -0
- data/lib/chef/mixin/template.rb +95 -0
- data/lib/chef/mixin/xml_escape.rb +140 -0
- data/lib/chef/mixins.rb +16 -0
- data/lib/chef/monkey_patches/dir.rb +36 -0
- data/lib/chef/monkey_patches/string.rb +28 -0
- data/lib/chef/monkey_patches/tempfile.rb +64 -0
- data/lib/chef/node/attribute.rb +465 -0
- data/lib/chef/node.rb +601 -0
- data/lib/chef/openid_registration.rb +187 -0
- data/lib/chef/platform.rb +371 -0
- data/lib/chef/provider/breakpoint.rb +36 -0
- data/lib/chef/provider/cookbook_file.rb +100 -0
- data/lib/chef/provider/cron/solaris.rb +195 -0
- data/lib/chef/provider/cron.rb +186 -0
- data/lib/chef/provider/deploy/revision.rb +73 -0
- data/lib/chef/provider/deploy/timestamped.rb +33 -0
- data/lib/chef/provider/deploy.rb +319 -0
- data/lib/chef/provider/directory.rb +72 -0
- data/lib/chef/provider/env/windows.rb +75 -0
- data/lib/chef/provider/env.rb +152 -0
- data/lib/chef/provider/erl_call.rb +72 -0
- data/lib/chef/provider/execute.rb +58 -0
- data/lib/chef/provider/file.rb +213 -0
- data/lib/chef/provider/git.rb +211 -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 +78 -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/group.rb +133 -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/mount.rb +232 -0
- data/lib/chef/provider/mount/windows.rb +80 -0
- data/lib/chef/provider/mount.rb +117 -0
- data/lib/chef/provider/ohai.rb +41 -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 +114 -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 +124 -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 +222 -0
- data/lib/chef/provider/package/zypper.rb +133 -0
- data/lib/chef/provider/package.rb +160 -0
- data/lib/chef/provider/remote_directory.rb +140 -0
- data/lib/chef/provider/remote_file.rb +120 -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/arch.rb +109 -0
- data/lib/chef/provider/service/debian.rb +105 -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/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 +129 -0
- data/lib/chef/provider/service.rb +128 -0
- data/lib/chef/provider/subversion.rb +159 -0
- data/lib/chef/provider/template.rb +105 -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/provider/user.rb +187 -0
- data/lib/chef/provider.rb +124 -0
- data/lib/chef/providers.rb +91 -0
- data/lib/chef/recipe.rb +130 -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 +41 -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 +92 -0
- data/lib/chef/resource/freebsd_package.rb +35 -0
- data/lib/chef/resource/gem_package.rb +49 -0
- data/lib/chef/resource/git.rb +36 -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 +146 -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.rb +523 -0
- data/lib/chef/resource_collection/stepable_iterator.rb +124 -0
- data/lib/chef/resource_collection.rb +217 -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/auth_credentials.rb +78 -0
- data/lib/chef/rest/cookie_jar.rb +31 -0
- data/lib/chef/rest/rest_request.rb +188 -0
- data/lib/chef/rest.rb +394 -0
- data/lib/chef/role.rb +287 -0
- data/lib/chef/run_context.rb +110 -0
- data/lib/chef/run_list/run_list_expansion.rb +172 -0
- data/lib/chef/run_list/run_list_item.rb +78 -0
- data/lib/chef/run_list.rb +150 -0
- data/lib/chef/run_status.rb +121 -0
- data/lib/chef/runner.rb +107 -0
- data/lib/chef/sandbox.rb +153 -0
- data/lib/chef/search/query.rb +60 -0
- data/lib/chef/shef/ext.rb +568 -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 +271 -0
- data/lib/chef/shef.rb +325 -0
- data/lib/chef/shell_out.rb +413 -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/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/util/windows.rb +56 -0
- data/lib/chef/version.rb +21 -0
- data/lib/chef/webui_user.rb +231 -0
- data/lib/chef.rb +39 -0
- metadata +533 -0
|
@@ -0,0 +1,133 @@
|
|
|
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 Zypper < Chef::Provider::Package
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def load_current_resource
|
|
31
|
+
@current_resource = Chef::Resource::Package.new(@new_resource.name)
|
|
32
|
+
@current_resource.package_name(@new_resource.package_name)
|
|
33
|
+
|
|
34
|
+
is_installed=false
|
|
35
|
+
is_out_of_date=false
|
|
36
|
+
version=''
|
|
37
|
+
oud_version=''
|
|
38
|
+
Chef::Log.debug("Checking zypper for #{@new_resource.package_name}")
|
|
39
|
+
status = popen4("zypper info #{@new_resource.package_name}") do |pid, stdin, stdout, stderr|
|
|
40
|
+
stdout.each do |line|
|
|
41
|
+
case line
|
|
42
|
+
when /^Version: (.+)$/
|
|
43
|
+
version = $1
|
|
44
|
+
Chef::Log.debug("zypper version=#{$1}")
|
|
45
|
+
when /^Installed: Yes$/
|
|
46
|
+
is_installed=true
|
|
47
|
+
Chef::Log.debug("zypper installed true")
|
|
48
|
+
|
|
49
|
+
when /^Installed: No$/
|
|
50
|
+
is_installed=false
|
|
51
|
+
Chef::Log.debug("zypper installed false")
|
|
52
|
+
when /^Status: out-of-date \(version (.+) installed\)$/
|
|
53
|
+
is_out_of_date=true
|
|
54
|
+
oud_version=$1
|
|
55
|
+
Chef::Log.debug("zypper out of date version=#{$1}")
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
if is_installed==false
|
|
61
|
+
@candidate_version=version
|
|
62
|
+
@current_resource.version(nil)
|
|
63
|
+
Chef::Log.debug("dentro installed false");
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
if is_installed==true
|
|
67
|
+
if is_out_of_date==true
|
|
68
|
+
@current_resource.version(oud_version)
|
|
69
|
+
@candidate_version=version
|
|
70
|
+
Chef::Log.debug("dentro installed outofdate");
|
|
71
|
+
else
|
|
72
|
+
@current_resource.version(version)
|
|
73
|
+
@candidate_version=version
|
|
74
|
+
Chef::Log.debug("dentro installed");
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
unless status.exitstatus == 0
|
|
80
|
+
raise Chef::Exceptions::Package, "zypper failed - #{status.inspect}!"
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
Chef::Log.debug("zypper current resource #{@current_resource}")
|
|
85
|
+
@current_resource
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def install_package(name, version)
|
|
89
|
+
if version
|
|
90
|
+
run_command(
|
|
91
|
+
:command => "zypper -n --no-gpg-checks install -l #{name}=#{version}"
|
|
92
|
+
)
|
|
93
|
+
else
|
|
94
|
+
run_command(
|
|
95
|
+
:command => "zypper -n --no-gpg-checks install -l #{name}"
|
|
96
|
+
)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def upgrade_package(name, version)
|
|
101
|
+
if version
|
|
102
|
+
run_command(
|
|
103
|
+
:command => "zypper -n --no-gpg-checks install -l #{name}=#{version}"
|
|
104
|
+
)
|
|
105
|
+
else
|
|
106
|
+
run_command(
|
|
107
|
+
:command => "zypper -n --no-gpg-checks install -l #{name}"
|
|
108
|
+
)
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def remove_package(name, version)
|
|
113
|
+
if version
|
|
114
|
+
run_command(
|
|
115
|
+
:command => "zypper -n --no-gpg-checks remove #{name}=#{version}"
|
|
116
|
+
)
|
|
117
|
+
else
|
|
118
|
+
run_command(
|
|
119
|
+
:command => "zypper -n --no-gpg-checks remove #{name}"
|
|
120
|
+
)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def purge_package(name, version)
|
|
127
|
+
remove_package(name, version)
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|
|
@@ -0,0 +1,160 @@
|
|
|
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/mixin/command'
|
|
20
|
+
require 'chef/log'
|
|
21
|
+
require 'chef/file_cache'
|
|
22
|
+
require 'chef/resource/remote_file'
|
|
23
|
+
require 'chef/platform'
|
|
24
|
+
|
|
25
|
+
class Chef
|
|
26
|
+
class Provider
|
|
27
|
+
class Package < Chef::Provider
|
|
28
|
+
|
|
29
|
+
include Chef::Mixin::Command
|
|
30
|
+
|
|
31
|
+
attr_accessor :candidate_version
|
|
32
|
+
|
|
33
|
+
def initialize(new_resource, run_context)
|
|
34
|
+
super
|
|
35
|
+
@candidate_version = nil
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def action_install
|
|
39
|
+
# If we specified a version, and it's not the current version, move to the specified version
|
|
40
|
+
if @new_resource.version != nil && @new_resource.version != @current_resource.version
|
|
41
|
+
install_version = @new_resource.version
|
|
42
|
+
# If it's not installed at all, install it
|
|
43
|
+
elsif @current_resource.version == nil
|
|
44
|
+
install_version = candidate_version
|
|
45
|
+
else
|
|
46
|
+
return
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
unless install_version
|
|
50
|
+
raise(Chef::Exceptions::Package, "No version specified, and no candidate version available for #{@new_resource.package_name}")
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
Chef::Log.info("Installing #{@new_resource} version #{install_version}")
|
|
54
|
+
|
|
55
|
+
# We need to make sure we handle the preseed file
|
|
56
|
+
if @new_resource.response_file
|
|
57
|
+
preseed_package(@new_resource.package_name, install_version)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
status = install_package(@new_resource.package_name, install_version)
|
|
61
|
+
if status
|
|
62
|
+
@new_resource.updated_by_last_action(true)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def action_upgrade
|
|
67
|
+
if @current_resource.version != candidate_version
|
|
68
|
+
orig_version = @current_resource.version || "uninstalled"
|
|
69
|
+
Chef::Log.info("Upgrading #{@new_resource} version from #{orig_version} to #{candidate_version}")
|
|
70
|
+
status = upgrade_package(@new_resource.package_name, candidate_version)
|
|
71
|
+
if status
|
|
72
|
+
@new_resource.updated_by_last_action(true)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def action_remove
|
|
78
|
+
if removing_package?
|
|
79
|
+
Chef::Log.info("Removing #{@new_resource}")
|
|
80
|
+
remove_package(@current_resource.package_name, @new_resource.version)
|
|
81
|
+
@new_resource.updated_by_last_action(true)
|
|
82
|
+
else
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def removing_package?
|
|
87
|
+
if @current_resource.version.nil?
|
|
88
|
+
false # nothing to remove
|
|
89
|
+
elsif @new_resource.version.nil?
|
|
90
|
+
true # remove any version of a package
|
|
91
|
+
elsif @new_resource.version == @current_resource.version
|
|
92
|
+
true # remove the version we have
|
|
93
|
+
else
|
|
94
|
+
false # we don't have the version we want to remove
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def action_purge
|
|
99
|
+
if removing_package?
|
|
100
|
+
Chef::Log.info("Purging #{@new_resource}")
|
|
101
|
+
purge_package(@current_resource.package_name, @new_resource.version)
|
|
102
|
+
@new_resource.updated_by_last_action(true)
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def install_package(name, version)
|
|
107
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :install"
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def upgrade_package(name, version)
|
|
111
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :upgrade"
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def remove_package(name, version)
|
|
115
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :remove"
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def purge_package(name, version)
|
|
119
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :purge"
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def preseed_package(name, version)
|
|
123
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support pre-seeding package install/upgrade instructions - don't ask it to!"
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def get_preseed_file(name, version)
|
|
127
|
+
resource = preseed_resource(name, version)
|
|
128
|
+
Chef::Log.debug("Fetching preseed file to #{resource.path}")
|
|
129
|
+
resource.run_action('create')
|
|
130
|
+
|
|
131
|
+
if resource.updated_by_last_action?
|
|
132
|
+
resource.path
|
|
133
|
+
else
|
|
134
|
+
false
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def preseed_resource(name, version)
|
|
139
|
+
# A directory in our cache to store this cookbook's preseed files in
|
|
140
|
+
file_cache_dir = Chef::FileCache.create_cache_path("preseed/#{@new_resource.cookbook_name}")
|
|
141
|
+
# The full path where the preseed file will be stored
|
|
142
|
+
cache_seed_to = "#{file_cache_dir}/#{name}-#{version}.seed"
|
|
143
|
+
|
|
144
|
+
Chef::Log.debug("Fetching preseed file to #{cache_seed_to}")
|
|
145
|
+
|
|
146
|
+
remote_file = Chef::Resource::CookbookFile.new(cache_seed_to, run_context)
|
|
147
|
+
remote_file.cookbook_name = @new_resource.cookbook_name
|
|
148
|
+
remote_file.source(@new_resource.response_file)
|
|
149
|
+
remote_file.backup(false)
|
|
150
|
+
|
|
151
|
+
remote_file
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def expand_options(options)
|
|
155
|
+
options ? " #{options}" : ""
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
end
|
|
@@ -0,0 +1,140 @@
|
|
|
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/file'
|
|
20
|
+
require 'chef/provider/directory'
|
|
21
|
+
#require 'chef/rest'
|
|
22
|
+
#require 'chef/mixin/find_preferred_file'
|
|
23
|
+
require 'chef/resource/directory'
|
|
24
|
+
require 'chef/resource/remote_file'
|
|
25
|
+
require 'chef/platform'
|
|
26
|
+
require 'uri'
|
|
27
|
+
require 'tempfile'
|
|
28
|
+
require 'net/https'
|
|
29
|
+
require 'set'
|
|
30
|
+
|
|
31
|
+
class Chef
|
|
32
|
+
class Provider
|
|
33
|
+
class RemoteDirectory < Chef::Provider::Directory
|
|
34
|
+
|
|
35
|
+
def action_create
|
|
36
|
+
super
|
|
37
|
+
Chef::Log.debug("Doing a remote recursive directory transfer for #{@new_resource}")
|
|
38
|
+
|
|
39
|
+
files_to_purge = Set.new(
|
|
40
|
+
Dir.glob(::File.join(@new_resource.path, '**', '*'), ::File::FNM_DOTMATCH).select do |name|
|
|
41
|
+
name !~ /(?:^|#{Regexp.escape(::File::SEPARATOR)})\.\.?$/
|
|
42
|
+
end
|
|
43
|
+
)
|
|
44
|
+
files_to_transfer.each do |cookbook_file_relative_path|
|
|
45
|
+
create_cookbook_file(cookbook_file_relative_path)
|
|
46
|
+
files_to_purge.delete(::File.dirname(::File.join(@new_resource.path, cookbook_file_relative_path)))
|
|
47
|
+
files_to_purge.delete(::File.join(@new_resource.path, cookbook_file_relative_path))
|
|
48
|
+
end
|
|
49
|
+
purge_unmanaged_files(files_to_purge)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def action_create_if_missing
|
|
53
|
+
# if this action is called, ignore the existing overwrite flag
|
|
54
|
+
@new_resource.overwrite = false
|
|
55
|
+
action_create
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
protected
|
|
59
|
+
|
|
60
|
+
def purge_unmanaged_files(unmanaged_files)
|
|
61
|
+
if @new_resource.purge
|
|
62
|
+
unmanaged_files.sort.reverse.each do |f|
|
|
63
|
+
if ::File.directory?(f)
|
|
64
|
+
Chef::Log.debug("Removing directory #{f}")
|
|
65
|
+
Dir::rmdir(f)
|
|
66
|
+
else
|
|
67
|
+
Chef::Log.debug("Deleting file #{f}")
|
|
68
|
+
::File.delete(f)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def files_to_transfer
|
|
75
|
+
cookbook = run_context.cookbook_collection[resource_cookbook]
|
|
76
|
+
files = cookbook.relative_filenames_in_preferred_directory(node, :files, @new_resource.source)
|
|
77
|
+
files.sort.reverse
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def directory_root_in_cookbook_cache
|
|
81
|
+
@directory_root_in_cookbook_cache ||= begin
|
|
82
|
+
cookbook = run_context.cookbook_collection[resource_cookbook]
|
|
83
|
+
cookbook.preferred_filename_on_disk_location(node, :files, @new_resource.source, @new_resource.path)
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Determine the cookbook to get the file from. If new resource sets an
|
|
88
|
+
# explicit cookbook, use it, otherwise fall back to the implicit cookbook
|
|
89
|
+
# i.e., the cookbook the resource was declared in.
|
|
90
|
+
def resource_cookbook
|
|
91
|
+
@new_resource.cookbook || @new_resource.cookbook_name
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def create_cookbook_file(cookbook_file_relative_path)
|
|
95
|
+
full_path = ::File.join(@new_resource.path, cookbook_file_relative_path)
|
|
96
|
+
|
|
97
|
+
ensure_directory_exists(::File.dirname(full_path))
|
|
98
|
+
|
|
99
|
+
file_to_fetch = cookbook_file_resource(full_path, cookbook_file_relative_path)
|
|
100
|
+
if @new_resource.overwrite
|
|
101
|
+
file_to_fetch.run_action(:create)
|
|
102
|
+
else
|
|
103
|
+
file_to_fetch.run_action(:create_if_missing)
|
|
104
|
+
end
|
|
105
|
+
@new_resource.updated_by_last_action(true) if file_to_fetch.updated?
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def cookbook_file_resource(target_path, relative_source_path)
|
|
109
|
+
cookbook_file = Chef::Resource::CookbookFile.new(target_path, run_context)
|
|
110
|
+
cookbook_file.cookbook_name = @new_resource.cookbook || @new_resource.cookbook_name
|
|
111
|
+
cookbook_file.source(::File.join(@new_resource.source, relative_source_path))
|
|
112
|
+
cookbook_file.mode(@new_resource.files_mode) if @new_resource.files_mode
|
|
113
|
+
cookbook_file.group(@new_resource.files_group) if @new_resource.files_group
|
|
114
|
+
cookbook_file.owner(@new_resource.files_owner) if @new_resource.files_owner
|
|
115
|
+
cookbook_file.backup(@new_resource.files_backup) if @new_resource.files_backup
|
|
116
|
+
|
|
117
|
+
cookbook_file
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def ensure_directory_exists(path)
|
|
121
|
+
unless ::File.directory?(path)
|
|
122
|
+
directory_to_create = resource_for_directory(path)
|
|
123
|
+
directory_to_create.run_action(:create)
|
|
124
|
+
@new_resource.updated_by_last_action(true) if directory_to_create.updated?
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def resource_for_directory(path)
|
|
129
|
+
dir = Chef::Resource::Directory.new(path, run_context)
|
|
130
|
+
dir.cookbook_name = @new_resource.cookbook || @new_resource.cookbook_name
|
|
131
|
+
dir.mode(@new_resource.mode)
|
|
132
|
+
dir.group(@new_resource.group)
|
|
133
|
+
dir.owner(@new_resource.owner)
|
|
134
|
+
dir.recursive(true)
|
|
135
|
+
dir
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|
|
@@ -0,0 +1,120 @@
|
|
|
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/file'
|
|
20
|
+
require 'chef/rest'
|
|
21
|
+
require 'chef/mixin/find_preferred_file'
|
|
22
|
+
require 'uri'
|
|
23
|
+
require 'tempfile'
|
|
24
|
+
require 'net/https'
|
|
25
|
+
|
|
26
|
+
class Chef
|
|
27
|
+
class Provider
|
|
28
|
+
class RemoteFile < Chef::Provider::File
|
|
29
|
+
|
|
30
|
+
include Chef::Mixin::FindPreferredFile
|
|
31
|
+
|
|
32
|
+
def load_current_resource
|
|
33
|
+
super
|
|
34
|
+
@current_resource.checksum(checksum(@current_resource.path)) if ::File.exist?(@current_resource.path)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def action_create
|
|
38
|
+
Chef::Log.debug("Checking #{@new_resource} for changes")
|
|
39
|
+
|
|
40
|
+
if current_resource_matches_target_checksum?
|
|
41
|
+
Chef::Log.debug("File #{@new_resource} checksum matches target checksum (#{@new_resource.checksum}), not updating")
|
|
42
|
+
else
|
|
43
|
+
Chef::REST.new(@new_resource.source, nil, nil).fetch(@new_resource.source) do |raw_file|
|
|
44
|
+
if matches_current_checksum?(raw_file)
|
|
45
|
+
Chef::Log.debug "#{@new_resource}: Target and Source checksums are the same, taking no action"
|
|
46
|
+
else
|
|
47
|
+
backup_new_resource
|
|
48
|
+
Chef::Log.debug "copying remote file from origin #{raw_file.path} to destination #{@new_resource.path}"
|
|
49
|
+
FileUtils.cp raw_file.path, @new_resource.path
|
|
50
|
+
@new_resource.updated_by_last_action(true)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
enforce_ownership_and_permissions
|
|
55
|
+
|
|
56
|
+
@new_resource.updated_by_last_action?
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def action_create_if_missing
|
|
60
|
+
if ::File.exists?(@new_resource.path)
|
|
61
|
+
Chef::Log.debug("File #{@new_resource.path} exists, taking no action.")
|
|
62
|
+
else
|
|
63
|
+
action_create
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def enforce_ownership_and_permissions
|
|
68
|
+
set_owner if @new_resource.owner
|
|
69
|
+
set_group if @new_resource.group
|
|
70
|
+
set_mode if @new_resource.mode
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def current_resource_matches_target_checksum?
|
|
74
|
+
@new_resource.checksum && @current_resource.checksum && @current_resource.checksum =~ /^#{Regexp.escape(@new_resource.checksum)}/
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def matches_current_checksum?(candidate_file)
|
|
78
|
+
Chef::Log.debug "#{@new_resource}: Checking for file existence of #{@new_resource.path}"
|
|
79
|
+
if ::File.exists?(@new_resource.path)
|
|
80
|
+
Chef::Log.debug "#{@new_resource}: File exists at #{@new_resource.path}"
|
|
81
|
+
@new_resource.checksum(checksum(candidate_file.path))
|
|
82
|
+
Chef::Log.debug "#{@new_resource}: Target checksum: #{@current_resource.checksum}"
|
|
83
|
+
Chef::Log.debug "#{@new_resource}: Source checksum: #{@new_resource.checksum}"
|
|
84
|
+
|
|
85
|
+
@new_resource.checksum == @current_resource.checksum
|
|
86
|
+
else
|
|
87
|
+
Chef::Log.info "#{@new_resource}: Creating #{@new_resource.path}"
|
|
88
|
+
false
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def backup_new_resource
|
|
93
|
+
if ::File.exists?(@new_resource.path)
|
|
94
|
+
Chef::Log.debug "#{@new_resource}: checksum changed from #{@current_resource.checksum} to #{@new_resource.checksum}"
|
|
95
|
+
Chef::Log.info "#{@new_resource}: Updating #{@new_resource.path}"
|
|
96
|
+
backup @new_resource.path
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def source_file(source, current_checksum, &block)
|
|
101
|
+
if absolute_uri?(source)
|
|
102
|
+
fetch_from_uri(source, &block)
|
|
103
|
+
elsif !Chef::Config[:solo]
|
|
104
|
+
fetch_from_chef_server(source, current_checksum, &block)
|
|
105
|
+
else
|
|
106
|
+
fetch_from_local_cookbook(source, &block)
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
private
|
|
111
|
+
|
|
112
|
+
def absolute_uri?(source)
|
|
113
|
+
URI.parse(source).absolute?
|
|
114
|
+
rescue URI::InvalidURIError
|
|
115
|
+
false
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|