summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesai Langenbach <langenbachs@gmail.com>2011-06-02 20:49:34 +0200
committerBryan McLellan <btm@opscode.com>2011-06-03 16:25:03 -0700
commit33be0732292e8558942df44393929a211304d41e (patch)
treedd196bdd9e627412f665316aad2b0ebca8bf4fdf
parent9d1c9acfb7e1eb01befa083ccdb0d46b874790bb (diff)
downloadchef-33be0732292e8558942df44393929a211304d41e.tar.gz
Fixed CHEF-2399 default group provider does not work on suse linux
-rw-r--r--chef/lib/chef/platform.rb3
-rw-r--r--chef/lib/chef/provider/group/suse.rb53
-rw-r--r--chef/lib/chef/providers.rb1
3 files changed, 56 insertions, 1 deletions
diff --git a/chef/lib/chef/platform.rb b/chef/lib/chef/platform.rb
index 9efba7cb75..0b91413ebd 100644
--- a/chef/lib/chef/platform.rb
+++ b/chef/lib/chef/platform.rb
@@ -126,7 +126,8 @@ class Chef
:default => {
:service => Chef::Provider::Service::Redhat,
:cron => Chef::Provider::Cron,
- :package => Chef::Provider::Package::Zypper
+ :package => Chef::Provider::Package::Zypper,
+ :group => Chef::Provider::Group::Suse
}
},
:redhat => {
diff --git a/chef/lib/chef/provider/group/suse.rb b/chef/lib/chef/provider/group/suse.rb
new file mode 100644
index 0000000000..22486eb9d0
--- /dev/null
+++ b/chef/lib/chef/provider/group/suse.rb
@@ -0,0 +1,53 @@
+#
+# Author:: AJ Christensen (<aj@opscode.com>)
+# Copyright:: Copyright (c) 2008 OpsCode, Inc.
+# 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/provider/group/groupadd'
+require 'chef/mixin/shell_out'
+
+class Chef
+ class Provider
+ class Group
+ class Suse < Chef::Provider::Group::Groupadd
+
+ include Chef::Mixin::ShellOut
+
+ def load_current_resource
+ super
+
+ raise Chef::Exceptions::Group, "Could not find binary /usr/sbin/groupmod for #{@new_resource}" unless ::File.exists?("/usr/sbin/groupmod")
+ end
+
+ def modify_group_members
+ unless @new_resource.members.empty?
+ if(@new_resource.append)
+ @new_resource.members.each do |member|
+ Chef::Log.debug("#{@new_resource} appending member #{member} to group #{@new_resource.group_name}")
+ shell_out!("groupmod -A #{member} #{@new_resource.group_name}")
+ end
+ else
+ Chef::Log.debug("#{@new_resource} setting group members to #{@new_resource.members.join(', ')}")
+ shell_out!("groupmod -A #{@new_resource.members.join(',')} #{@new_resource.group_name}")
+ end
+ else
+ Chef::Log.debug("#{@new_resource} not changing group members, the group has no members")
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/chef/lib/chef/providers.rb b/chef/lib/chef/providers.rb
index 94a7e7e1a7..d7abf0f21d 100644
--- a/chef/lib/chef/providers.rb
+++ b/chef/lib/chef/providers.rb
@@ -84,6 +84,7 @@ require 'chef/provider/group/dscl'
require 'chef/provider/group/gpasswd'
require 'chef/provider/group/groupadd'
require 'chef/provider/group/pw'
+require 'chef/provider/group/suse'
require 'chef/provider/group/usermod'
require 'chef/provider/group/windows'