1
2
3
4
5
6
7
8
9
10
11 import sys
12 import os
13 import re
14 from certificate import getGridProxyPath
15 from mdclient import MDClient
16 from mdinterface import CommandException
17
18 DEBUG = False
19
20
21
23 """Represents interface for manipulating user groups"""
24
25 - def __init__(self,
26 host = 'gangamd.cern.ch',
27 port = 8822,
28 login = 'root',
29 password = '',
30 keepalive = False,
31 reqSSL = True,
32 **kwds):
33
34 self._client = MDClient(host = host,
35 port = port,
36 login = login,
37 password = password,
38 keepalive = keepalive)
39
40 if reqSSL:
41 fn = getGridProxyPath()
42 key = kwds.get('key')
43 if not key:
44 key = fn
45 cert = kwds.get('cert')
46 if not cert:
47 cert = fn
48
49 self._client.requireSSL(key, cert)
50 self._client.connect()
51
52
54 """Creates a new group with name groupname.
55 It is not possible to create groups beloning to others."""
56 res = []
57 cmd = 'grp_create ' + groupname
58 self._client.execute(cmd)
59
60
62 """Deletes a group with name groupname (user:groupname).
63 Only root can delete groups of other users"""
64 cmd = 'grp_delete ' + groupname
65 self._client.execute(cmd)
66
67
69 """Shows all the members belonging to group gropname."""
70 res = []
71 cmd = 'grp_show ' + groupname
72 self._client.execute(cmd)
73 while not self._client.eot():
74 row = self._client.fetchRow()
75 if DEBUG:
76 print row
77 res.append(row)
78 return res
79
80
82 """Adds a user to a group.
83 Only owners of a group or root can change group membership"""
84 cmd = 'grp_adduser ' + groupname + ' ' + user
85 self._client.execute(cmd)
86
87
89 """Removes a user from a group.
90 Only owners of a group or root can change group membership"""
91 cmd = 'grp_removeuser ' + groupname + ' ' + user
92 self._client.execute(cmd)
93
94
96 """Shows to which groups a user belongs"""
97 res = []
98 cmd = 'grp_member'
99 if user:
100 cmd += ' ' + user
101 self._client.execute(cmd)
102 while not self._client.eot():
103 row = self._client.fetchRow()
104 if DEBUG:
105 print row
106 res.append(row)
107 return res
108
109
111 """Shows the groups owned by user, by default the current user"""
112 res = []
113 cmd = 'grp_list'
114 if user:
115 cmd += ' ' + user
116 self._client.execute(cmd)
117 while not self._client.eot():
118 row = self._client.fetchRow()
119 if DEBUG:
120 print row
121 res.append(row)
122 return res
123
124
125
126 usage = """
127 """
128