Commit 3e979d59 authored by Yann Bordenave's avatar Yann Bordenave Committed by Antoine Millet
Browse files

cc-addaccount: fix missing argument & add options

CCConf was waiting for a logging argument.
Two options were added to choose the user and group running the
cc-server. This was added to put the proper rights on json file if the
user and/or group are not the default ones.
parent c3321206
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@
Script used to create an account on cc-server account directory.
'''

import logging
import logging.handlers
import os
from getpass import getpass
from pwd import getpwnam
@@ -31,8 +33,8 @@ from cloudcontrol.server.conf import CCConf
DEFAULT_ACCOUNT_DIRECTORY = '/var/lib/cc-server/'
DEFAULT_ROLE = 'cli'
UMASK = 0o0177
CHOWN_USER = 'cc-server'
CHOWN_GROUP = 'cc-server'
DEFAULT_CHOWN_USER = 'cc-server'
DEFAULT_CHOWN_GROUP = 'cc-server'

if __name__ == '__main__':
    op = OptionParser(usage='%prog [options] login')
@@ -44,6 +46,10 @@ if __name__ == '__main__':
                  help='copy this already existing account')
    op.add_option('-r', '--role', default=None, choices=('cli', 'hv', 'host'),
                  help='specify the role (default %default)')
    op.add_option('-u', '--user', default=DEFAULT_CHOWN_USER,
                  help='User running cc-server (default %default)')
    op.add_option('-g', '--group', default=DEFAULT_CHOWN_GROUP,
                  help='Group running cc-server (default %default)')

    options, args = op.parse_args()

@@ -58,7 +64,12 @@ if __name__ == '__main__':
    else:
        role = options.role

    conf = CCConf(options.directory)
    logger = logging.getLogger()
    logger.setLevel(logging.INFO)
    handler = logging.StreamHandler()
    logger.addHandler(handler)

    conf = CCConf(logger, options.directory)

    if options.password:
        password = getpass('Password: ')
@@ -78,7 +89,7 @@ if __name__ == '__main__':
        conf.copy_account(options.copy, args[0], password)

    # Chown the files:
    uid = getpwnam(CHOWN_USER).pw_uid
    gid = getgrnam(CHOWN_GROUP).gr_gid
    uid = getpwnam(options.user).pw_uid
    gid = getgrnam(options.group).gr_gid
    filename = os.path.join(options.directory, '%s.json' % args[0])
    os.chown(filename, uid, gid)