#!/usr/bin/env python
# -*- python -*-

import sys
import optparse

from ids.users import get_ldap_group_membership
from ids.users import get_irods_group_membership
from ids.users import synchronize_user_db


    
if __name__ == '__main__':

    parser = optparse.OptionParser()
    parser.add_option('--remove', '-r', action='store_true',
                      dest='remove', default=False,
                      help='remove users and groups that do not exist in the LDAP directory')
    parser.add_option('--verbose', '-v', action='store_true',
                      dest="verbose", default=False,
                      help='print progress messages')
    options, args = parser.parse_args()


    print('Getting list of users from LDAP...')
    ldap_groups = get_ldap_group_membership()
    if ldap_groups == None:
        sys.exit(1)
    if options.verbose:
        for group in ldap_groups:
            print('LDAP group %s:' % (group,))
            for user in ldap_groups[group]:
                print('\t%s' % (user,))

    
    print('Getting list of users from the \'incf\' zone...')
    irods_groups = get_irods_group_membership(None)
    if irods_groups == None:
        sys.exit(1)
    if options.verbose:
        for group in irods_groups:
            print('iRODS group %s:' % (group,))
            for user in irods_groups[group]:
                print('\t%s' % (user,))


    print('Synchronizing \'incf\' zone user DB with LDAP users and groups...')
    rc = synchronize_user_db(ldap_groups, irods_groups,
                             remove=options.remove, verbose=options.verbose)
    if rc == None:
        sys.exit(1)


    sys.exit(0)
