You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
2.8 KiB
102 lines
2.8 KiB
#
|
|
# Copyright 2008 Google Inc. All Rights Reserved.
|
|
|
|
"""
|
|
The user module contains the objects and methods used to
|
|
manage users in Autotest.
|
|
|
|
The valid action is:
|
|
list: lists user(s)
|
|
|
|
The common options are:
|
|
--ulist / -U: file containing a list of USERs
|
|
|
|
See topic_common.py for a High Level Design and Algorithm.
|
|
"""
|
|
|
|
import os, sys
|
|
from autotest_lib.cli import topic_common, action_common
|
|
|
|
|
|
class user(topic_common.atest):
|
|
"""User class
|
|
atest user list <options>"""
|
|
usage_action = 'list'
|
|
topic = msg_topic = 'user'
|
|
msg_items = '<users>'
|
|
|
|
def __init__(self):
|
|
"""Add to the parser the options common to all the
|
|
user actions"""
|
|
super(user, self).__init__()
|
|
|
|
self.parser.add_option('-U', '--ulist',
|
|
help='File listing the users',
|
|
type='string',
|
|
default=None,
|
|
metavar='USER_FLIST')
|
|
|
|
self.topic_parse_info = topic_common.item_parse_info(
|
|
attribute_name='users',
|
|
filename_option='ulist',
|
|
use_leftover=True)
|
|
|
|
|
|
def get_items(self):
|
|
return self.users
|
|
|
|
|
|
class user_help(user):
|
|
"""Just here to get the atest logic working.
|
|
Usage is set by its parent"""
|
|
pass
|
|
|
|
|
|
class user_list(action_common.atest_list, user):
|
|
"""atest user list <user>|--ulist <file>
|
|
[--acl <ACL>|--access_level <n>]"""
|
|
def __init__(self):
|
|
super(user_list, self).__init__()
|
|
|
|
self.parser.add_option('-a', '--acl',
|
|
help='Only list users within this ACL')
|
|
|
|
self.parser.add_option('-l', '--access_level',
|
|
help='Only list users at this access level')
|
|
|
|
|
|
def parse(self):
|
|
(options, leftover) = super(user_list, self).parse()
|
|
self.acl = options.acl
|
|
self.access_level = options.access_level
|
|
return (options, leftover)
|
|
|
|
|
|
def execute(self):
|
|
filters = {}
|
|
check_results = {}
|
|
if self.acl:
|
|
filters['aclgroup__name__in'] = [self.acl]
|
|
check_results['aclgroup__name__in'] = None
|
|
|
|
if self.access_level:
|
|
filters['access_level__in'] = [self.access_level]
|
|
check_results['access_level__in'] = None
|
|
|
|
if self.users:
|
|
filters['login__in'] = self.users
|
|
check_results['login__in'] = 'login'
|
|
|
|
return super(user_list, self).execute(op='get_users',
|
|
filters=filters,
|
|
check_results=check_results)
|
|
|
|
|
|
def output(self, results):
|
|
if self.verbose:
|
|
keys = ['id', 'login', 'access_level']
|
|
else:
|
|
keys = ['login']
|
|
|
|
super(user_list, self).output(results, keys)
|