From ed7c65a0e1dc70f9ae8ec7026b42b820af14439a Mon Sep 17 00:00:00 2001 From: Michael McGrath Date: Wed, 27 Feb 2008 22:45:11 -0600 Subject: [PATCH] this code now works with Toshio's json fix. When run as root it will install the groups db file, with groups, and memberships. I'll clean it up tomorrow as well as add password and shadow information. --- fas/client/fasClient.py | 42 +++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/fas/client/fasClient.py b/fas/client/fasClient.py index 2c2668d..728fa82 100644 --- a/fas/client/fasClient.py +++ b/fas/client/fasClient.py @@ -24,6 +24,7 @@ from fedora.tg.client import BaseClient, AuthError, ServerError import sys import os +from shutil import move import logging FAS_URL = 'http://localhost:8080/fas/json/' @@ -33,7 +34,9 @@ class MakeShellAccounts(BaseClient): def group_list(self, search='*'): params = {'search' : search} data = self.send_request('group_list', auth=False, input=params) - return data['group_list'] + return data + + def groups_text(self, groups=None, people=None): i = 0 @@ -44,20 +47,34 @@ class MakeShellAccounts(BaseClient): people = self.people_list() ''' First create all of our users/groups combo ''' + usernames = {} for person in people: - uid = people[person]['id'] - username = people[person]['username'] + uid = person['id'] + username = person['username'] + usernames['%s' % 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 - for group in groups: - gid = groups[group]['id'] - name = groups[group]['name'] - file.write( "=%i %s:x:%i:\n" % (gid, name, gid)) - file.write("0%i %s:x:%i:\n" % (i, name, gid)) - file.write(".%s %s:x:%i:\n" % (name, name, gid)) + for group in groups['groups']: + gid = group['id'] + name = group['name'] +# print groups['memberships'][m] +# print groups['memberships'][1228] + memberships = '' + try: + ''' Shoot me now I know this isn't right ''' + members = [] + for member in groups['memberships'][u'%s' % gid]: + members.append(usernames['%s' % member['person_id']]) + memberships = ','.join(members) + except KeyError: + ''' No users exist in the group ''' + pass + file.write( "=%i %s:x:%i:%s\n" % (gid, name, gid, memberships)) + file.write("0%i %s:x:%i:%s\n" % (i, name, gid, memberships)) + file.write(".%s %s:x:%i:%s\n" % (name, name, gid, memberships)) i = i + 1 file.close() @@ -66,13 +83,18 @@ class MakeShellAccounts(BaseClient): def people_list(self, search='*'): params = {'search' : search} data = self.send_request('people_list', auth=False, input=params) - return data['people_list'] + return data['people'] def make_group_db(self): self.groups_text() os.system('makedb -o /tmp/group.db /tmp/group.txt') + + def install_group_db(self): + move('/tmp/group.db', '/var/db/group.db') + if __name__ == '__main__': fas = MakeShellAccounts(FAS_URL, None, None, None) fas.make_group_db() + fas.install_group_db()