From 33be0732292e8558942df44393929a211304d41e Mon Sep 17 00:00:00 2001 From: Jesai Langenbach Date: Thu, 2 Jun 2011 20:49:34 +0200 Subject: Fixed CHEF-2399 default group provider does not work on suse linux --- chef/lib/chef/platform.rb | 3 +- chef/lib/chef/provider/group/suse.rb | 53 ++++++++++++++++++++++++++++++++++++ chef/lib/chef/providers.rb | 1 + 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 chef/lib/chef/provider/group/suse.rb 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 () +# 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' -- cgit v1.2.1