Merge branch 'master' of ssh://git.fedorahosted.org/git/fedora-infrastructure

This commit is contained in:
Toshio Kuratomi 2008-03-09 12:59:07 -07:00
commit 7e9dade9f9
2 changed files with 48 additions and 10 deletions

View file

@ -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()

View file

@ -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()