1
import boto,sys,euca_admin
2
from boto.exception import EC2ResponseError
3
from euca_admin.generic import BooleanResponse
4
from euca_admin.generic import StringList
5
from boto.resultset import ResultSet
6
from euca_admin import EucaAdmin
7
from optparse import OptionParser
9
SERVICE_PATH = '/services/Accounts'
13
def __init__(self, groupName=None):
14
self.group_groupName = groupName
15
self.group_users = StringList()
16
self.group_auths = StringList()
17
self.euca = EucaAdmin(path=SERVICE_PATH)
20
r = 'GROUP \t%s\t' % (self.group_groupName)
21
r = '%s\nUSERS\t%s\t%s' % (r,self.group_groupName,self.group_users)
22
r = '%s\nAUTH\t%s\t%s' % (r,self.group_groupName,self.group_auths)
25
def startElement(self, name, attrs, connection):
26
if name == 'euca:users':
27
return self.group_users
28
if name == 'euca:authorizations':
29
return self.group_auths
33
def endElement(self, name, value, connection):
34
if name == 'euca:groupName':
35
self.group_groupName = value
37
setattr(self, name, value)
39
def get_describe_parser(self):
40
parser = OptionParser("usage: %prog [GROUPS...]",version="Eucalyptus %prog VERSION")
41
return parser.parse_args()
43
def cli_describe(self):
44
(options, args) = self.get_describe_parser()
45
self.group_describe(args)
47
def group_describe(self,groups=None):
50
self.euca.connection.build_list_params(params,groups,'GroupNames')
52
list = self.euca.connection.get_list('DescribeGroups', params, [('euca:item', Group)])
55
except EC2ResponseError, ex:
56
self.euca.handle_error(ex)
58
def get_single_parser(self):
59
parser = OptionParser("usage: %prog GROUPNAME",version="Eucalyptus %prog VERSION")
60
(options,args) = parser.parse_args()
62
print "ERROR Required argument GROUPNAME is missing or malformed."
69
(options, args) = self.get_single_parser()
70
self.group_add(args[0])
72
def group_add(self, groupName):
74
reply = self.euca.connection.get_object('AddGroup', {'GroupName':groupName}, BooleanResponse)
76
except EC2ResponseError, ex:
77
self.euca.handle_error(ex)
80
(options, args) = self.get_single_parser()
81
self.group_delete(args[0])
83
def group_delete(self, groupName):
85
reply = self.euca.connection.get_object('DeleteGroup', {'GroupName':groupName},BooleanResponse)
87
except EC2ResponseError, ex:
88
self.euca.handle_error(ex)