2 # wrapper to xmlrpc server, that support dry-run commands
3 # we dont want to have to depend on PLCAPI, so:
6 server_methods = [ ('GetNodes' , []),
10 ('AddNodeNetwork' , True),
11 ('GetNodeNetworks' , True),
12 ('GetNodeNetworkSettingTypes' , True),
13 ('AddNodeNetworkSettingType' , True),
14 ('AddNodeNetworkSetting' , True),
15 ('GetBootMedium' , True),
16 ('GetNodeGroups' , True),
17 ('AddNodeGroup' , True),
18 ('AddNodeToNodeGroup' , True),
19 ('AddInitScript' , True),
21 ('AddSiteAddress' , True),
22 ('DeleteSite' , True),
23 ('DeleteSlice' , True),
25 ('AddPersonToSlice' , True),
26 ('AddSliceToNodes' , True),
27 ('AddSliceAttribute' , True),
29 ('UpdatePerson' , True),
30 ('AddRoleToPerson' , True),
31 ('AddPersonToSite' , True),
32 ('DeletePerson' , True),
33 ('AddPersonKey' , True),
34 ('GetPlcRelease', {'build': {'target-arch':'i386'}}),
39 def __init__(self,server,dry_run,method,defaults):
43 self.defaults=defaults
44 def __call__ (self, *args):
46 print "dry_run:",self.method,
47 if len(args)>0 and type(args[0])==type({}) and args[0].has_key('AuthMethod'):
53 actual_method=getattr(self.server,self.method)
54 return actual_method(*args)
56 def __init__(self,url,dry_run=False):
57 self.apiserver = xmlrpclib.Server(url,allow_none=True)
59 for (method,defaults) in server_methods:
60 setattr(self,method,TestApiserver.Callable(self.apiserver,dry_run,method,defaults))