former option -i split into -N and -P for setting nodes and plcs IP addresses separat...
[tests.git] / system / TestApiserver.py
1 # $Id$
2 # wrapper to xmlrpc server, that support dry-run commands
3 # we dont want to have to depend on PLCAPI, so:
4 import xmlrpclib
5
6 server_methods = [ ('GetNodes' ,  []),
7                    ('AddNode' , True),
8                    ('DeleteNode' , True),
9                    ('UpdateNode' , True),
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),
20                    ('DeleteInitScript', True),
21                    ('GetInitScripts', True),
22                    ('AddSite' , True),
23                    ('AddSiteAddress' , True),
24                    ('DeleteSite' , True),
25                    ('DeleteSlice' , True),
26                    ('AddSlice' , True),
27                    ('AddPersonToSlice' , True),
28                    ('AddSliceToNodes' , True),
29                    ('AddSliceAttribute' , True),
30                    ('AddPerson' , True),
31                    ('UpdatePerson' , True),
32                    ('AddRoleToPerson' , True),
33                    ('AddPersonToSite' , True),
34                    ('DeletePerson' , True),
35                    ('AddPersonKey' , True),
36                    ('GetPlcRelease', {'build': {'target-arch':'i386'}}),
37                    ]
38
39 class TestApiserver:
40     class Callable:
41         def __init__(self,server,dry_run,method,defaults):
42             self.server=server
43             self.dry_run=dry_run
44             self.method=method
45             self.defaults=defaults
46         def __call__ (self, *args):
47             if self.dry_run:
48                 print "dry_run:",self.method,
49                 if len(args)>0 and type(args[0])==type({}) and args[0].has_key('AuthMethod'):
50                     print '<auth>',
51                     args=args[1:]
52                 print '(',args,')'
53                 return self.defaults
54             else:
55                 actual_method=getattr(self.server,self.method)
56                 return actual_method(*args)
57
58     def __init__(self,url,dry_run=False):
59         self.apiserver = xmlrpclib.Server(url,allow_none=True)
60         self.dry_run=dry_run
61         for (method,defaults) in server_methods:
62             setattr(self,method,TestApiserver.Callable(self.apiserver,dry_run,method,defaults))