Merge branch 'master' of ssh://git.fedorahosted.org/git/fedora-infrastructure
This commit is contained in:
commit
7e9dade9f9
2 changed files with 48 additions and 10 deletions
|
@ -200,13 +200,8 @@ class MakeShellAccounts(BaseClient):
|
|||
print >> sys.stderr, 'Could not determine shell for %s. Defaulting to /sbin/nologin' % username
|
||||
return '/sbin/nologin'
|
||||
|
||||
def aliases_txt(self):
|
||||
''' update your mail aliases file '''
|
||||
self.emails = self.email_list()
|
||||
email_file = codecs.open(self.temp + '/aliases', mode='w', encoding='utf-8')
|
||||
for person in self.emails:
|
||||
email_file.write("%s: %s" % (person, self.emails[person]))
|
||||
email_file.close()
|
||||
def install_aliases_txt(self):
|
||||
move(self.temp + '/aliases', '/tmp/aliases')
|
||||
|
||||
def passwd_text(self, people=None):
|
||||
i = 0
|
||||
|
@ -243,6 +238,17 @@ class MakeShellAccounts(BaseClient):
|
|||
return True
|
||||
return False
|
||||
|
||||
def usernames(self):
|
||||
usernames = {}
|
||||
if not self.people:
|
||||
self.people_list()
|
||||
for person in self.people:
|
||||
uid = person['id']
|
||||
if self.valid_user_group(uid):
|
||||
username = person['username']
|
||||
usernames[uid] = username
|
||||
return usernames
|
||||
|
||||
def groups_text(self, groups=None, people=None):
|
||||
i = 0
|
||||
file = open(self.temp + '/group.txt', 'w')
|
||||
|
@ -252,17 +258,16 @@ class MakeShellAccounts(BaseClient):
|
|||
people = self.people_list()
|
||||
|
||||
''' First create all of our users/groups combo '''
|
||||
usernames = {}
|
||||
for person in people:
|
||||
uid = person['id']
|
||||
if self.valid_user_group(uid):
|
||||
username = person['username']
|
||||
usernames[uid] = username
|
||||
file.write("=%i %s:x:%i:\n" % (uid, username, uid))
|
||||
file.write("0%i %s:x:%i:\n" % (i, username, uid))
|
||||
file.write(".%s %s:x:%i:\n" % (username, username, uid))
|
||||
i = i + 1
|
||||
|
||||
usernames = self.usernames()
|
||||
for group in groups:
|
||||
gid = group['id']
|
||||
name = group['name']
|
||||
|
@ -373,6 +378,35 @@ class MakeShellAccounts(BaseClient):
|
|||
os.chmod(os.path.join(ssh_dir, 'authorized_keys'), 0600)
|
||||
os.path.walk(ssh_dir, _chown, [person['id'], person['id']])
|
||||
|
||||
def make_aliases_txt(self):
|
||||
''' update your mail aliases file '''
|
||||
if not self.groups:
|
||||
groups = self.group_list()
|
||||
|
||||
self.emails = self.email_list()
|
||||
email_file = codecs.open(self.temp + '/aliases', mode='w', encoding='utf-8')
|
||||
email_template = codecs.open(config.get('host', 'aliases_template').strip('"'))
|
||||
email_file.write("# Generated by fasClient\n")
|
||||
for line in email_template.readlines():
|
||||
email_file.write(line)
|
||||
sorted = self.emails.keys()
|
||||
sorted.sort()
|
||||
for person in sorted:
|
||||
email_file.write("%s: %s\n" % (person, self.emails[person]))
|
||||
usernames = self.usernames()
|
||||
for group in self.groups:
|
||||
name = group['name']
|
||||
members = {}
|
||||
for membership in self.memberships[name]:
|
||||
role_type = membership['role_type']
|
||||
person = usernames[membership['person_id']]
|
||||
try:
|
||||
members[role_type].append(person)
|
||||
except KeyError:
|
||||
members[role_type] = [person]
|
||||
for role in members:
|
||||
print "%s-%s: %s" % (name, role, members[role])
|
||||
email_file.close()
|
||||
|
||||
def enable():
|
||||
temp = tempfile.mkdtemp('-tmp', 'fas-', config.get('global', 'temp').strip('"'))
|
||||
|
@ -447,7 +481,9 @@ if __name__ == '__main__':
|
|||
except AuthError, e:
|
||||
print >> sys.stderr, e
|
||||
sys.exit(1)
|
||||
fas.create_aliases()
|
||||
fas.mk_tempdir()
|
||||
fas.make_aliases_txt()
|
||||
fas.install_aliases_txt()
|
||||
|
||||
if not (opts.install or opts.enable or opts.disable or opts.aliases):
|
||||
parser.print_help()
|
||||
|
|
|
@ -142,9 +142,11 @@ for role in c.fetchall():
|
|||
session.flush()
|
||||
except ProgrammingError, e:
|
||||
print "\tERROR - The role %s -> %s could not be created - %s" % (person_id, project_group_id, e)
|
||||
session.close()
|
||||
except IntegrityError, e:
|
||||
if e.message.find('dupilcate key'):
|
||||
print "\tERROR - The role %s -> %s already exists! Skipping" % (person_id, project_group_id)
|
||||
session.close()
|
||||
continue
|
||||
print "\tERROR - The role %s -> %s could not be created - %s" % (person_id, project_group_id, e)
|
||||
session.close()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue