blob: 0e4fd49ce895ca0b5c1a9c12a40dddc8b0cd8b52 [file] [log] [blame]
mblighbe630eb2008-08-01 16:41:48 +00001#
2# Copyright 2008 Google Inc. All Rights Reserved.
3
4"""
5The user module contains the objects and methods used to
6manage users in Autotest.
7
8The valid action is:
9list: lists user(s)
10
11The common options are:
12--ulist / -U: file containing a list of USERs
13
14See topic_common.py for a High Level Design and Algorithm.
15"""
16
17import os, sys
18from autotest_lib.cli import topic_common, action_common
19
20
21class user(topic_common.atest):
22 """User class
23 atest user list <options>"""
24 usage_action = 'list'
25 topic = msg_topic = 'user'
26 msg_items = '<users>'
27
28 def __init__(self):
29 """Add to the parser the options common to all the
30 user actions"""
31 super(user, self).__init__()
32
33 self.parser.add_option('-U', '--ulist',
34 help='File listing the users',
35 type='string',
36 default=None,
37 metavar='USER_FLIST')
38
mbligh9deeefa2009-05-01 23:11:08 +000039 self.topic_parse_info = topic_common.item_parse_info(
40 attribute_name='users',
41 filename_option='ulist',
42 use_leftover=True)
mblighbe630eb2008-08-01 16:41:48 +000043
44
45 def get_items(self):
46 return self.users
47
48
49class user_help(user):
50 """Just here to get the atest logic working.
51 Usage is set by its parent"""
52 pass
53
54
55class user_list(action_common.atest_list, user):
56 """atest user list <user>|--ulist <file>
57 [--acl <ACL>|--access_level <n>]"""
58 def __init__(self):
59 super(user_list, self).__init__()
60
61 self.parser.add_option('-a', '--acl',
62 help='Only list users within this ACL')
63
64 self.parser.add_option('-l', '--access_level',
65 help='Only list users at this access level')
66
67
68 def parse(self):
mbligh9deeefa2009-05-01 23:11:08 +000069 (options, leftover) = super(user_list, self).parse()
mblighbe630eb2008-08-01 16:41:48 +000070 self.acl = options.acl
71 self.access_level = options.access_level
72 return (options, leftover)
73
74
75 def execute(self):
76 filters = {}
77 check_results = {}
78 if self.acl:
showardd9ac4452009-02-07 02:04:37 +000079 filters['aclgroup__name__in'] = [self.acl]
80 check_results['aclgroup__name__in'] = None
mblighbe630eb2008-08-01 16:41:48 +000081
82 if self.access_level:
83 filters['access_level__in'] = [self.access_level]
84 check_results['access_level__in'] = None
85
86 if self.users:
87 filters['login__in'] = self.users
88 check_results['login__in'] = 'login'
89
90 return super(user_list, self).execute(op='get_users',
91 filters=filters,
92 check_results=check_results)
93
94
95 def output(self, results):
96 if self.verbose:
97 keys = ['id', 'login', 'access_level']
98 else:
99 keys = ['login']
100
101 super(user_list, self).output(results, keys)