class Wright::Provider::Group

Group provider. Used as a base class for {Resource::Group} providers.

Public Instance Methods

create() click to toggle source

Creates or updates the group.

@return [void]

# File lib/wright/provider/group.rb, line 12
def create
  unless_uptodate(:create, "group already created: '#{group_name}'") do
    unless_dry_run("create group: '#{group_name}'") do
      ensure_group_exists
      set_members unless members_uptodate?
    end
  end
end
remove() click to toggle source

Removes the group.

@return [void]

# File lib/wright/provider/group.rb, line 24
def remove
  unless_uptodate(:remove, "group already removed: '#{group_name}'") do
    unless_dry_run("remove group: '#{group_name}'") do
      remove_group
    end
  end
end

Private Instance Methods

add_member(_member, _group) click to toggle source
# File lib/wright/provider/group.rb, line 113
def add_member(_member, _group)
  fail NotImplementedError
end
create_group() click to toggle source
# File lib/wright/provider/group.rb, line 101
def create_group
  fail NotImplementedError
end
ensure_group_exists() click to toggle source
# File lib/wright/provider/group.rb, line 50
def ensure_group_exists
  if group_exists?
    set_gid unless gid_uptodate?
  else
    create_group
  end
end
gid() click to toggle source
# File lib/wright/provider/group.rb, line 38
def gid
  resource.gid
end
gid_uptodate?() click to toggle source
# File lib/wright/provider/group.rb, line 82
def gid_uptodate?
  gid.nil? || group_data.gid == gid
end
group_data() click to toggle source
# File lib/wright/provider/group.rb, line 78
def group_data
  Wright::Util::User.safe_getgrnam(group_name)
end
group_exists?() click to toggle source
# File lib/wright/provider/group.rb, line 90
def group_exists?
  !group_data.nil?
end
group_name() click to toggle source
# File lib/wright/provider/group.rb, line 34
def group_name
  resource.name
end
members() click to toggle source
# File lib/wright/provider/group.rb, line 42
def members
  resource.members
end
members_uptodate?() click to toggle source
# File lib/wright/provider/group.rb, line 86
def members_uptodate?
  members.nil? || group_data.mem == members
end
remove_group() click to toggle source
# File lib/wright/provider/group.rb, line 105
def remove_group
  fail NotImplementedError
end
remove_member(_member, _group) click to toggle source
# File lib/wright/provider/group.rb, line 117
def remove_member(_member, _group)
  fail NotImplementedError
end
set_gid() click to toggle source
# File lib/wright/provider/group.rb, line 109
def set_gid
  fail NotImplementedError
end
set_members() click to toggle source
# File lib/wright/provider/group.rb, line 94
def set_members
  new_members = members - group_data.mem
  unwanted_members = group_data.mem - members
  new_members.each { |m| add_member(m, group_name) }
  unwanted_members.each { |m| remove_member(m, group_name) }
end
system_group?() click to toggle source
# File lib/wright/provider/group.rb, line 46
def system_group?
  resource.system
end
uptodate?(action) click to toggle source

@api public Checks if the group is up-to-date for a given action.

@param action [Symbol] the action. Currently supports

+:create+ and +:remove+.

@return [Bool] true if the group is up-to-date and false

otherwise

@raise [ArgumentError] if the action is invalid

# File lib/wright/provider/group.rb, line 67
def uptodate?(action)
  case action
  when :create
    group_exists? && gid_uptodate? && members_uptodate?
  when :remove
    !group_exists?
  else
    fail ArgumentError, "invalid action '#{action}'"
  end
end