summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2015-06-03 07:50:10 -0700
committerLamont Granquist <lamont@scriptkiddie.org>2015-06-03 07:50:10 -0700
commitc8d94a0893561f61178f9da833b0fe204dd8afa0 (patch)
treed8ed2159577dc9141932457e5689785fc8c92c1b
parent770b1b5475d871ed7affa1fef605d64be1922457 (diff)
downloadchef-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.rb27
-rw-r--r--lib/chef/resource/zypper_package.rb29
-rw-r--r--lib/chef/resources.rb1
-rw-r--r--spec/unit/provider/package/zypper_spec.rb4
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