in Providers/Scripts/2.4x-2.5x/Scripts/nxGroup.py [0:0]
def Set(GroupName, Ensure, Members, MembersToInclude, MembersToExclude, PreferredGroupID):
ShowMof('SET', GroupName, Ensure, Members, MembersToInclude,
MembersToExclude, PreferredGroupID)
if not Ensure:
Ensure = "present"
group_entries = None
group_entries = ReadPasswd("/etc/group")
if group_entries is None:
return [-1]
gid_option = ""
if len(PreferredGroupID):
addme = True
for k,v in group_entries.items():
if PreferredGroupID == v[1] and not GroupName == k:
Print("ERROR: PreferredGroupID <" + PreferredGroupID + "> in use by another group, PreferredGroupID will not be used.", file=sys.stderr)
LG().Log('ERROR', "PreferredGroupID <" + PreferredGroupID + "> in use by another group, PreferredGroupID will not be used.")
addme = False
break
if addme:
gid_option = "-g " + PreferredGroupID + " "
if Ensure == "absent":
if GroupName in group_entries:
# Delete group
Print("Deleting group", file=sys.stderr)
LG().Log('INFO', "Deleting group")
retval = os.system(groupdel_path + " " + GroupName)
if retval != 0:
Print(
groupdel_path + " " + GroupName + " failed.", file=sys.stderr)
LG().Log('ERROR', groupdel_path + " " + GroupName + " failed.")
return [-1]
else:
if GroupName not in group_entries:
Print("Group does not exist. Creating it.", file=sys.stderr)
LG().Log('INFO', "Group does not exist. Creating it.")
retval = os.system(groupadd_path + " " + gid_option + GroupName)
if retval != 0:
Print(
groupadd_path + " " + gid_option + GroupName + " failed.", file=sys.stderr)
LG().Log('ERROR', groupadd_path + " " + gid_option + GroupName + " failed.")
return [-1]
# Reread /etc/group
group_entries = ReadPasswd("/etc/group")
else:
# update the GID if needed.
if len(gid_option) and str(grp.getgrnam(GroupName)[2]) != PreferredGroupID:
Print("Group exists. Updating to PreferredGroupID <" + PreferredGroupID + ">.", file=sys.stderr)
LG().Log('INFO', "Group exists. Updating to PreferredGroupID <" + PreferredGroupID + ">.")
retval = os.system(groupmod_path + " " + gid_option + GroupName)
if retval != 0:
Print(
groupmod_path + " " + gid_option + GroupName + " failed.", file=sys.stderr)
LG().Log('ERROR', groupmod_path + " " + gid_option + GroupName + " failed.")
# Continue processing.
# Reread /etc/group
group_entries = ReadPasswd("/etc/group")
if len(Members[0]):
if len(MembersToInclude[0]) or len(MembersToExclude[0]):
Print(
"If Members is provided, Include and Exclude are not allowed.", file=sys.stderr)
LG().Log(
'ERROR', "If Members is provided, Include and Exclude are not allowed.")
return [-1]
group_members = GetGroupMembers(GroupName, group_entries)
for member in Members:
if member not in group_members:
Print("Member: " + member + " not in member list for group: " +
GroupName + ". Adding.", file=sys.stderr)
LG().Log('INFO', "Member: " + member +
" not in member list for group: " + GroupName + ". Adding.")
if AddUserToGroup(member, GroupName) is False:
return [-1]
for member in group_members:
if member not in Members:
Print("Member: " + member + " is in the member list for group: " +
GroupName + " but not speficied in Members. Removing.", file=sys.stderr)
LG().Log('INFO', "Member: " + member + " is in the member list for group: " +
GroupName + " but not speficied in Members. Removing.")
if DeleteUserFromGroup(member, GroupName) is False:
return [-1]
else:
group_members = GetGroupMembers(GroupName, group_entries)
if len(MembersToInclude[0]):
for member in MembersToInclude:
if member not in group_members:
Print("Member: " + member + " not in member list for group: " +
GroupName + ". Adding.", file=sys.stderr)
LG().Log('INFO', "Member: " + member +
" not in member list for group: " + GroupName + ". Adding.")
if AddUserToGroup(member, GroupName) is False:
return [-1]
if len(MembersToExclude[0]):
for member in MembersToExclude:
if member in group_members:
Print("Member: " + member + " is in member list for group: " +
GroupName + ". Removing.", file=sys.stderr)
LG().Log('INFO', "Member: " + member +
" is in member list for group: " + GroupName + ". Removing.")
if DeleteUserFromGroup(member, GroupName) is False:
return [-1]
return [0]