Commit e03a89b6 authored by Xavier Thompson's avatar Xavier Thompson

slapformat: WIP: Improve user

parent 101bbecd
...@@ -418,19 +418,19 @@ class User(object): ...@@ -418,19 +418,19 @@ class User(object):
self.groups = groups self.groups = groups
def createUser(self): def createUser(self):
grpname = 'grp_' + self.name if sys.platform == 'cygwin' else self.name groupname = 'grp_' + self.name if sys.platform == 'cygwin' else self.name
if not self.isGroupAvailable(grpname): if not self.groupExists(groupname):
call(['groupadd', grpname]) call(['groupadd', groupname])
user_parameter_list = ['-d', self.path, '-g', self.name, '-s', self.SHELL] parameters = ['-d', self.path, '-g', self.name, '-s', self.SHELL]
if self.groups: if self.groups:
user_parameter_list.extend(['-G', ','.join(self.groups), '-a']) parameters.extend(['-G', ','.join(self.groups), '-a'])
user_parameter_list.append(self.name) parameters.append(self.name)
if self.isUserAvailable(self.name): if self.userExists(self.name):
# if the user is already created and used we should not fail # if the user is already created and used we should not fail
call(['usermod'] + user_parameter_list, raise_on_error=False) call(['usermod'] + parameters, raise_on_error=False)
else: else:
user_parameter_list.append('-r') parameters.append('-r')
call(['useradd'] + user_parameter_list) call(['useradd'] + parameters)
# lock the password of user # lock the password of user
call(['passwd', '-l', self.name]) call(['passwd', '-l', self.name])
...@@ -439,7 +439,7 @@ class User(object): ...@@ -439,7 +439,7 @@ class User(object):
return pw.pw_uid, pw.pw_gid return pw.pw_uid, pw.pw_gid
@classmethod @classmethod
def isGroupAvailable(cls, name): def groupExists(cls, name):
try: try:
grp.getgrnam(name) grp.getgrnam(name)
return True return True
...@@ -447,13 +447,14 @@ class User(object): ...@@ -447,13 +447,14 @@ class User(object):
return False return False
@classmethod @classmethod
def isUserAvailable(cls, name): def userExists(cls, name):
try: try:
pwd.getpwnam(name) pwd.getpwnam(name)
return True return True
except KeyError: except KeyError:
return False return False
# Utilities # Utilities
def call(args, raise_on_error=True): def call(args, raise_on_error=True):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment