diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2015-06-03 07:50:10 -0700 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2015-06-03 07:50:10 -0700 |
commit | c8d94a0893561f61178f9da833b0fe204dd8afa0 (patch) | |
tree | d8ed2159577dc9141932457e5689785fc8c92c1b | |
parent | 770b1b5475d871ed7affa1fef605d64be1922457 (diff) | |
download | chef-c8d94a0893561f61178f9da833b0fe204dd8afa0.tar.gz |
wire zypper_package up to the DSL
i'm not sure how anybody has been using this resource, but think
we may have broken this in 12.0.0 at some point, at any rate this
will make it a lot easier for people to actually use.
-rw-r--r-- | lib/chef/provider/package/zypper.rb | 27 | ||||
-rw-r--r-- | lib/chef/resource/zypper_package.rb | 29 | ||||
-rw-r--r-- | lib/chef/resources.rb | 1 | ||||
-rw-r--r-- | spec/unit/provider/package/zypper_spec.rb | 4 |
4 files changed, 46 insertions, 15 deletions
diff --git a/lib/chef/provider/package/zypper.rb b/lib/chef/provider/package/zypper.rb index f77fb27013..c2a3ac4ba8 100644 --- a/lib/chef/provider/package/zypper.rb +++ b/lib/chef/provider/package/zypper.rb @@ -29,47 +29,48 @@ class Chef class Package class Zypper < Chef::Provider::Package + provides :zypper_package, os: "linux" + def load_current_resource - # FIXME: zypper needs a Chef::Resource::ZypperPackage wired up to :zypper_package - @current_resource = Chef::Resource::Package.new(@new_resource.name) - @current_resource.package_name(@new_resource.package_name) + @current_resource = Chef::Resource::ZypperPackage.new(new_resource.name) + current_resource.package_name(new_resource.package_name) is_installed=false is_out_of_date=false version='' oud_version='' - Chef::Log.debug("#{@new_resource} checking zypper") - status = shell_out_with_timeout("zypper --non-interactive info #{@new_resource.package_name}") + Chef::Log.debug("#{new_resource} checking zypper") + status = shell_out_with_timeout("zypper --non-interactive info #{new_resource.package_name}") status.stdout.each_line do |line| case line when /^Version: (.+)$/ version = $1 - Chef::Log.debug("#{@new_resource} version #{$1}") + Chef::Log.debug("#{new_resource} version #{$1}") when /^Installed: Yes$/ is_installed=true - Chef::Log.debug("#{@new_resource} is installed") + Chef::Log.debug("#{new_resource} is installed") when /^Installed: No$/ is_installed=false - Chef::Log.debug("#{@new_resource} is not installed") + Chef::Log.debug("#{new_resource} is not installed") when /^Status: out-of-date \(version (.+) installed\)$/ is_out_of_date=true oud_version=$1 - Chef::Log.debug("#{@new_resource} out of date version #{$1}") + Chef::Log.debug("#{new_resource} out of date version #{$1}") end end if is_installed==false @candidate_version=version - @current_resource.version(nil) + current_resource.version(nil) end if is_installed==true if is_out_of_date==true - @current_resource.version(oud_version) + current_resource.version(oud_version) @candidate_version=version else - @current_resource.version(version) + current_resource.version(version) @candidate_version=version end end @@ -78,7 +79,7 @@ class Chef raise Chef::Exceptions::Package, "zypper failed - #{status.inspect}!" end - @current_resource + current_resource end def zypper_version() diff --git a/lib/chef/resource/zypper_package.rb b/lib/chef/resource/zypper_package.rb new file mode 100644 index 0000000000..d009a4eef8 --- /dev/null +++ b/lib/chef/resource/zypper_package.rb @@ -0,0 +1,29 @@ +# +# Author:: Joe Williams (<joe@joetify.com>) +# Copyright:: Copyright (c) 2009 Joe Williams +# License:: Apache License, Version 2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require 'chef/resource/package' + +class Chef + class Resource + class ZypperPackage < Chef::Resource::Package + + use_automatic_resource_name + + end + end +end diff --git a/lib/chef/resources.rb b/lib/chef/resources.rb index 40b12a7c5f..af4dd8a642 100644 --- a/lib/chef/resources.rb +++ b/lib/chef/resources.rb @@ -80,6 +80,7 @@ require 'chef/resource/windows_package' require 'chef/resource/yum_package' require 'chef/resource/lwrp_base' require 'chef/resource/bff_package' +require 'chef/resource/zypper_package' begin # Optional resources chef_node, chef_client, machine, machine_image, etc. diff --git a/spec/unit/provider/package/zypper_spec.rb b/spec/unit/provider/package/zypper_spec.rb index ecff9477fd..18ff739bc6 100644 --- a/spec/unit/provider/package/zypper_spec.rb +++ b/spec/unit/provider/package/zypper_spec.rb @@ -19,9 +19,9 @@ require 'spec_helper' describe Chef::Provider::Package::Zypper do - let!(:new_resource) { Chef::Resource::Package.new("cups") } + let!(:new_resource) { Chef::Resource::ZypperPackage.new("cups") } - let!(:current_resource) { Chef::Resource::Package.new("cups") } + let!(:current_resource) { Chef::Resource::ZypperPackage.new("cups") } let(:provider) do node = Chef::Node.new |