#!/usr/bin/python
# -*- coding: utf-8 -*-

# unicornidm-account-info.py
# - Get User List from the User Repository by Unicorn ID Manager
#
# Copyright (C) NOMURA Kentaro @ Open Source Solution Technology Co. Ltd.
# License: GNU General Public License version 2 or later
# Date: 2010-05-10

import os
import subprocess
import sys
from optparse import OptionParser

def main():
    UNICORNIDM_PATH = "/opt/osstech/lib/unicornIDM"
    UNICORNIDM_CMD = "%s/manage.py" % UNICORNIDM_PATH

    if os.getuid() != 0:
        sys.stderr.write("You are not root.\n")
        sys.exit(1)

    usage = "usage: %prog -t <target> -f <out_file>"

    parser = OptionParser(usage=usage)
    parser.add_option("-t", "--target",
                      dest="orgname", help="Target organization name")
    parser.add_option("-u", "--username",
                      dest="username", help="Target user name")
    parser.add_option("-f", "--file",
                      dest="outfile", help="Output file(CSV)"),

    (opts, args) = parser.parse_args(sys.argv)

    if not args:
        parser.print_help()
        sys.exit(1)

    if not opts.outfile:
        sys.stderr.write("Output file is not specified.\n")
        parser.print_help()
        sys.exit(1)
    else:
        outfile = opts.outfile
        filename = os.path.abspath(outfile)

    if not opts.orgname:
        sys.stderr.write("Target organization is not specified.\n")
        parser.print_help()
        sys.exit(1)
    else:
        orgname = opts.orgname

    if not opts.username:
        sys.stderr.write("Target user is not specified.\n")
        parser.print_help()
        sys.exit(1)
    else:
        username = opts.username

    try:
        cmd = [UNICORNIDM_CMD, "userinfo",
                "-t", orgname, "-f", filename, "-u", username]
        p = subprocess.Popen(cmd, stdin=subprocess.PIPE,
                            stdout=subprocess.PIPE,
                            stderr=subprocess.PIPE,
                            cwd=UNICORNIDM_PATH)
        errstr = p.stderr.readlines()
        r = p.wait()
    except Exception, e:
        sys.stderr.write("Failed to get user info. \n%s\n" % str(e))
        sys.exit(1)

    if (r != 0):
        # Fail to execute
        sys.stderr.write("Failed to get user info.\n%s\n" % str(errstr))
        sys.exit(1)

    return

main()

