X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=system%2FTestApiserver.py;h=010b86c8e6fef7f271376cd7098bc83274997aa1;hb=af6722f87d9f36e7385421f9ce21e8861167d5ca;hp=0ad893517aa32542572d886f42bcfa988df1c504;hpb=585cd891bd7506b0479203242eba16235c88dcf4;p=tests.git diff --git a/system/TestApiserver.py b/system/TestApiserver.py index 0ad8935..010b86c 100644 --- a/system/TestApiserver.py +++ b/system/TestApiserver.py @@ -1,19 +1,25 @@ -# $Id$ +# Thierry Parmentelat +# Copyright (C) 2010 INRIA +# # wrapper to xmlrpc server, that support dry-run commands # we dont want to have to depend on PLCAPI, so: -import xmlrpclib +import xmlrpc.client +# the default value is for the dry run mode server_methods = [ ('GetNodes' , []), ('AddNode' , True), ('SetNodePlainBootstrapfs', True), + ('SetNodeFcdistro', True), ('DeleteNode' , True), ('UpdateNode' , True), ('AddInterface' , True), + ('AddIpAddress' , True), + ('AddRoute' , True), ('GetInterfaces' , True), ('GetTagTypes' , []), ('AddTagType' , True), ('AddInterfaceTag' , True), - ('GetBootMedium' , True), + ('GetBootMedium' , "some non-empty-string"), ('GetNodeGroups' , True), ('AddNodeGroup' , True), ('DeleteNodeGroup', True), @@ -29,6 +35,7 @@ server_methods = [ ('GetNodes' , []), ('AddSlice' , True), ('AddPersonToSlice' , True), ('AddSliceToNodes' , True), + ('DeleteSliceFromNodes' , True), ('AddSliceTag' , True), ('AddPerson' , True), ('UpdatePerson' , True), @@ -38,34 +45,48 @@ server_methods = [ ('GetNodes' , []), ('AddPersonKey' , True), ('GetPlcRelease', {'build': {'target-arch':'i386'}}), ('GetSites', []), + ('GetSlices', [{'name':'dry_run_slice','node_ids':['dry_run']}]), + ('GetLeaseGranularity', 180), + ('AddLeases', True), + ('GetLeases', []), + ('DeleteLeases',True), + ('GetConfFiles',[]), + ('AddConfFile','True'), + ('GetSliceTags',[]), + ('GetNodeFlavour','dry-run-nodeflavour'), + ('system.listMethods',[]), ] class TestApiserver: class Callable: - def __init__(self,server,dry_run,method,defaults): - self.server=server - self.dry_run=dry_run - self.method=method - self.defaults=defaults + def __init__(self, server, dry_run, method, defaults): + self.server = server + self.dry_run = dry_run + self.method = method + self.defaults = defaults def __call__ (self, *args): if self.dry_run: - print "dry_run:",self.method, - if len(args)>0 and type(args[0])==type({}) and args[0].has_key('AuthMethod'): - print '', - args=args[1:] - print '(',args,')' + print("dry_run:",self.method, end=' ') + if len(args) > 0 and type(args[0]) == type({}) and 'AuthMethod' in args[0]: + print('', end=' ') + args = args[1:] + print('(', args, ')') return self.defaults else: - actual_method=getattr(self.server,self.method) + actual_method = getattr(self.server, self.method) return actual_method(*args) - def __init__(self,url,dry_run=False): - self.apiserver = xmlrpclib.Server(url,allow_none=True) - self.dry_run=dry_run - for (method,defaults) in server_methods: - setattr(self,method,TestApiserver.Callable(self.apiserver,dry_run,method,defaults)) + def __init__(self, url, dry_run=False): + self.apiserver = xmlrpc.client.ServerProxy(url, allow_none=True, + use_builtin_types=True) + self.dry_run = dry_run + for method, defaults in server_methods: + setattr(self, method, TestApiserver.Callable(self.apiserver, dry_run, method, defaults)) def set_dry_run (self, dry_run): - self.dry_run=dry_run - for (method,defaults) in server_methods: - getattr(self,method).dry_run = dry_run + self.dry_run = dry_run + for (method, defaults) in server_methods: + getattr(self, method).dry_run = dry_run + + def has_method (self, methodname): + return methodname in self.apiserver.system.listMethods()