summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Justice <jjustice6@bloomberg.net>2019-01-24 16:17:35 -0500
committerJoshua Justice <jjustice6@bloomberg.net>2019-01-25 13:01:12 -0500
commit1f80a342ebe99f35c6deeba5a6fb071fe41dd8fb (patch)
tree3ccc14fd1ccff02e4f27b76710ba8764636a5888
parent6c091de2dc5dd27551e818a2487b4b28c5564e49 (diff)
downloadchef-1f80a342ebe99f35c6deeba5a6fb071fe41dd8fb.tar.gz
Start modifying the files.
Signed-off-by: Joshua Justice <jjustice6@bloomberg.net>
-rw-r--r--lib/chef/provider/group/solaris.rb47
-rw-r--r--spec/unit/provider/group/solaris_spec.rb38
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