diff options
author | Joshua Justice <jjustice6@bloomberg.net> | 2019-01-24 16:17:35 -0500 |
---|---|---|
committer | Joshua Justice <jjustice6@bloomberg.net> | 2019-01-25 13:01:12 -0500 |
commit | 1f80a342ebe99f35c6deeba5a6fb071fe41dd8fb (patch) | |
tree | 3ccc14fd1ccff02e4f27b76710ba8764636a5888 | |
parent | 6c091de2dc5dd27551e818a2487b4b28c5564e49 (diff) | |
download | chef-1f80a342ebe99f35c6deeba5a6fb071fe41dd8fb.tar.gz |
Start modifying the files.
Signed-off-by: Joshua Justice <jjustice6@bloomberg.net>
-rw-r--r-- | lib/chef/provider/group/solaris.rb | 47 | ||||
-rw-r--r-- | spec/unit/provider/group/solaris_spec.rb | 38 |
2 files changed, 29 insertions, 56 deletions
diff --git a/lib/chef/provider/group/solaris.rb b/lib/chef/provider/group/solaris.rb index 6b040b7190..ab0915f221 100644 --- a/lib/chef/provider/group/solaris.rb +++ b/lib/chef/provider/group/solaris.rb @@ -1,6 +1,6 @@ # -# Author:: AJ Christensen (<aj@chef.io>) -# Copyright:: Copyright 2008-2016, Chef Software Inc. +# Author:: Joshua Justice (<jjustice6@bloomberg.net>) +# Copyright:: Copyright 2008-2019, Chef Software Inc. # License:: Apache License, Version 2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -21,10 +21,9 @@ require "chef/provider/group/groupadd" class Chef class Provider class Group - class Usermod < Chef::Provider::Group::Groupadd + class Solaris < Chef::Provider::Group::Groupadd - provides :group, os: %w{openbsd solaris2 hpux} - provides :group, platform: "opensuse" + provides :group, os: "solaris2" def load_current_resource super @@ -40,48 +39,32 @@ class Chef end requirements.assert(:modify, :manage) do |a| - a.assertion { new_resource.members.empty? || new_resource.append } + a.assertion { (new_resource.members.empty? && new_resource.excluded_members.empty?) || new_resource.append } a.failure_message Chef::Exceptions::Group, "setting group members directly is not supported by #{self}, must set append true in group" # No whyrun alternative - this action is simply not supported. end - requirements.assert(:all_actions) do |a| - a.assertion { new_resource.excluded_members.empty? } - a.failure_message Chef::Exceptions::Group, "excluded_members is not supported by #{self}" - # No whyrun alternative - this action is simply not supported. - end end def set_members(members) - return if members.empty? - # This provider only supports adding members with - # append. Only if the action is create we will go - # ahead and add members. - unless new_resource.action.include?(:create) - raise Chef::Exceptions::UnsupportedAction, "Setting members directly is not supported by #{self}" + unless members.empty? + members.each do |member| + add_member(member) + end end - members.each do |member| - add_member(member) + unless excluded_members.empty? + excluded_members.each do |excluded_member| + remove_member(excluded_member) + end end end def add_member(member) - shell_out!("usermod", append_flags, new_resource.group_name, member) + shell_out!("usermod", "-G", "+#{new_resource.group_name}", member) end def remove_member(member) - # This provider only supports adding members with - # append. This function should never be called. - raise Chef::Exceptions::UnsupportedAction, "Removing members members is not supported by #{self}" - end - - def append_flags - case node[:platform] - when "openbsd", "netbsd", "aix", "solaris2", "smartos", "omnios" - "-G" - when "solaris", "suse", "opensuse" - [ "-a", "-G" ] - end + shell_out!("usermod", "-G", "-#{new_resource.group_name}", member) end end diff --git a/spec/unit/provider/group/solaris_spec.rb b/spec/unit/provider/group/solaris_spec.rb index e34949f839..675f8cf12b 100644 --- a/spec/unit/provider/group/solaris_spec.rb +++ b/spec/unit/provider/group/solaris_spec.rb @@ -18,7 +18,7 @@ require "spec_helper" -describe Chef::Provider::Group::Usermod do +describe Chef::Provider::Group::Solaris do before do @node = Chef::Node.new @events = Chef::EventDispatch::Dispatcher.new @@ -26,7 +26,7 @@ describe Chef::Provider::Group::Usermod do @new_resource = Chef::Resource::Group.new("wheel") @new_resource.members %w{all your base} @new_resource.excluded_members [ ] - @provider = Chef::Provider::Group::Usermod.new(@new_resource, @run_context) + @provider = Chef::Provider::Group::Solaris.new(@new_resource, @run_context) allow(@provider).to receive(:run_command) end @@ -46,13 +46,7 @@ describe Chef::Provider::Group::Usermod do describe "with supplied members" do platforms = { - "openbsd" => [ "-G" ], - "netbsd" => [ "-G" ], - "solaris" => [ "-a", "-G" ], - "suse" => [ "-a", "-G" ], - "opensuse" => [ "-a", "-G" ], - "smartos" => [ "-G" ], - "omnios" => [ "-G" ], + "solaris2" => [ "-G" ] } before do @@ -68,28 +62,24 @@ describe Chef::Provider::Group::Usermod do expect { @provider.run_action(@provider.process_resource_requirements) }.to raise_error(Chef::Exceptions::Group, "setting group members directly is not supported by #{@provider}, must set append true in group") end - it "should raise an error when excluded_members are set" do - @provider.define_resource_requirements - @provider.load_current_resource - @provider.instance_variable_set("@group_exists", true) - @provider.action = :modify - @new_resource.append(true) - @new_resource.excluded_members(["someone"]) - expect { @provider.run_action(@provider.process_resource_requirements) }.to raise_error(Chef::Exceptions::Group, "excluded_members is not supported by #{@provider}") - end - platforms.each do |platform, flags| - it "should usermod each user when the append option is set on #{platform}" do + it "should usermod +/- each user when the append option is set on #{platform}" do current_resource = @new_resource.dup - current_resource.members([ ]) + current_resource.members(%w(are belong to us)) + @new_resource.excluded_members(%w(are belong to us)) @provider.current_resource = current_resource @node.automatic_attrs[:platform] = platform @new_resource.append(true) - expect(@provider).to receive(:shell_out_compacted!).with("usermod", *flags, "wheel", "all") - expect(@provider).to receive(:shell_out_compacted!).with("usermod", *flags, "wheel", "your") - expect(@provider).to receive(:shell_out_compacted!).with("usermod", *flags, "wheel", "base") + expect(@provider).to receive(:shell_out_compacted!).with("usermod", *flags, "+wheel", "all") + expect(@provider).to receive(:shell_out_compacted!).with("usermod", *flags, "+wheel", "your") + expect(@provider).to receive(:shell_out_compacted!).with("usermod", *flags, "+wheel", "base") + expect(@provider).to receive(:shell_out_compacted!).with("usermod", *flags, "-wheel", "are") + expect(@provider).to receive(:shell_out_compacted!).with("usermod", *flags, "-wheel", "belong") + expect(@provider).to receive(:shell_out_compacted!).with("usermod", *flags, "-wheel", "to") + expect(@provider).to receive(:shell_out_compacted!).with("usermod", *flags, "-wheel", "us") @provider.modify_group_members end + end end end |