X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fdummy%2Fdummy_testbed_api.py;h=697cda589077ac3db35346b7b598437ea54b87a7;hb=fd395e1944dcd49f10a4d5b27ce4983ad389fb96;hp=f37e52c54f6841d838a3b3508faecd8585a6ec8f;hpb=ebe5391dbd5e8382cfabdc12c0de3d0cc54f9a68;p=sfa.git diff --git a/sfa/dummy/dummy_testbed_api.py b/sfa/dummy/dummy_testbed_api.py index f37e52c5..697cda58 100644 --- a/sfa/dummy/dummy_testbed_api.py +++ b/sfa/dummy/dummy_testbed_api.py @@ -3,113 +3,130 @@ import time dummy_api_addr = ("localhost", 8080) -# Fake Testbed DB +# Fake Testbed DB nodes_list = [] -for i in range(1,11): - node = {'hostname': 'node'+str(i)+'.dummy-testbed.org', 'type': 'dummy-node', 'node_id': i} +for i in range(1, 11): + node = {'hostname': 'node' + + str(i) + '.dummy-testbed.org', 'type': 'dummy-node', 'node_id': i} nodes_list.append(node) slices_list = [] -for i in range(1,3): - slice = {'slice_name': 'slice'+str(i), 'user_ids': range(i,4,2), 'slice_id': i, 'node_ids': range(i,10,2), 'enabled': True, 'expires': int(time.time())+60*60*24*30} +for i in range(1, 3): + slice = {'slice_name': 'slice' + str(i), + 'user_ids': range(i, 4, 2), + 'slice_id': i, + 'node_ids': range(i, 10, 2), + 'enabled': True, + 'expires': int(time.time()) + 60 * 60 * 24 * 30} slices_list.append(slice) users_list = [] -for i in range(1,5): - user = {'user_name': 'user'+str(i), 'user_id': i, 'email': 'user'+str(i)+'@dummy-testbed.org', 'keys': ['user_ssh_pub_key_'+str(i)]} +for i in range(1, 5): + user = {'user_name': 'user' + str(i), 'user_id': i, 'email': 'user' + str( + i) + '@dummy-testbed.org', 'keys': ['user_ssh_pub_key_' + str(i)]} users_list.append(user) -DB = {'nodes_list': nodes_list,'node_index': 11, 'slices_list': slices_list, 'slice_index': 3, 'users_list': users_list, 'user_index': 5} +DB = {'nodes_list': nodes_list, 'node_index': 11, 'slices_list': slices_list, + 'slice_index': 3, 'users_list': users_list, 'user_index': 5} + +# Filter function gor the GET methods -#Filter function gor the GET methods def FilterList(myfilter, mylist): result = [] result.extend(mylist) for item in mylist: - for key in myfilter.keys(): - if 'ids' in key: - pass - else: - if myfilter[key] != item[key]: - result.remove(item) - break + for key in myfilter.keys(): + if 'ids' in key: + pass + else: + if isinstance(myfilter[key], str) and myfilter[key] != item[key] or isinstance(myfilter[key], list) and item[key] not in myfilter[key]: + result.remove(item) + break return result # RPC functions definition -#GET +# GET def GetTestbedInfo(): - return {'name': 'dummy', 'longitude': 123456, 'latitude': 654321, 'domain':'dummy-testbed.org'} + return {'name': 'dummy', 'longitude': 123456, 'latitude': 654321, 'domain': 'dummy-testbed.org'} + -def GetNodes(filter={}): +def GetNodes(filter=None): + if filter is None: + filter = {} global DB result = [] result.extend(DB['nodes_list']) if 'node_ids' in filter: for node in DB['nodes_list']: - if node['node_id'] not in filter['node_ids']: - result.remove(node) + if node['node_id'] not in filter['node_ids']: + result.remove(node) if filter: result = FilterList(filter, result) return result -def GetSlices(filter={}): + +def GetSlices(filter=None): + if filter is None: + filter = {} global DB result = [] result.extend(DB['slices_list']) if 'slice_ids' in filter: for slice in DB['slices_list']: - if slice['slice_id'] not in filter['slice_ids']: - result.remove(slice) + if slice['slice_id'] not in filter['slice_ids']: + result.remove(slice) if filter: result = FilterList(filter, result) return result -def GetUsers(filter={}): +def GetUsers(filter=None): + if filter is None: + filter = {} global DB result = [] result.extend(DB['users_list']) if 'user_ids' in filter: for user in DB['users_list']: - if user['user_id'] not in filter['user_ids']: - result.remove(user) + if user['user_id'] not in filter['user_ids']: + result.remove(user) if filter: result = FilterList(filter, result) return result -#def GetKeys(): - +# def GetKeys(): -#add +# add def AddNode(node): global DB if not isinstance(node, dict): return False for key in node.keys(): - if key not in ['hostname', 'type']: - return False + if key not in ['hostname', 'type']: + return False node['node_id'] = DB['node_index'] DB['node_index'] += 1 - DB['nodes_list'].append(node) + DB['nodes_list'].append(node) return node['node_id'] + def AddSlice(slice): global DB if not isinstance(slice, dict): return False for key in slice.keys(): - if key not in ['slice_name', 'user_ids', 'node_ids', 'enabled', 'expires']: - return False + if key not in ['slice_name', 'user_ids', 'node_ids', 'enabled', 'expires']: + return False slice['slice_id'] = DB['slice_index'] - slice['expires'] = int(time.time())+60*60*24*30 + slice['expires'] = int(time.time()) + 60 * 60 * 24 * 30 DB['slice_index'] += 1 DB['slices_list'].append(slice) return slice['slice_id'] @@ -120,8 +137,8 @@ def AddUser(user): if not isinstance(user, dict): return False for key in user.keys(): - if key not in ['user_name', 'email', 'keys']: - return False + if key not in ['user_name', 'email', 'keys']: + return False user['user_id'] = DB['user_index'] DB['user_index'] += 1 DB['users_list'].append(user) @@ -134,46 +151,50 @@ def AddUserKey(param): return False try: for user in DB['users_list']: - if param['user_id'] == user['user_id']: - if 'keys' in user.keys(): - user['keys'].append(param['key']) - else: - user['keys'] = [param['key']] - return True + if param['user_id'] == user['user_id']: + if 'keys' in user.keys(): + user['keys'].append(param['key']) + else: + user['keys'] = [param['key']] + return True return False except: return False + def AddUserToSlice(param): global DB if not isinstance(param, dict): return False try: for slice in DB['slices_list']: - if param['slice_id'] == slice['slice_id']: - if not 'user_ids' in slice: slice['user_ids'] = [] - slice['user_ids'].append(param['user_id']) - return True + if param['slice_id'] == slice['slice_id']: + if not 'user_ids' in slice: + slice['user_ids'] = [] + slice['user_ids'].append(param['user_id']) + return True return False except: return False + def AddSliceToNodes(param): global DB if not isinstance(param, dict): return False try: for slice in DB['slices_list']: - if param['slice_id'] == slice['slice_id']: - if not 'node_ids' in slice: slice['node_ids'] = [] - slice['node_ids'].extend(param['node_ids']) - return True + if param['slice_id'] == slice['slice_id']: + if not 'node_ids' in slice: + slice['node_ids'] = [] + slice['node_ids'].extend(param['node_ids']) + return True return False except: return False -#Delete +# Delete def DeleteNode(param): global DB @@ -181,14 +202,14 @@ def DeleteNode(param): return False try: for node in DB['nodes_list']: - if param['node_id'] == node['node_id']: - DB['nodes_list'].remove(node) - for slice in DB['slices_list']: - if param['node_id'] in slice['node_ids']: - slice['node_ids'].remove(param['node_id']) - return True + if param['node_id'] == node['node_id']: + DB['nodes_list'].remove(node) + for slice in DB['slices_list']: + if param['node_id'] in slice['node_ids']: + slice['node_ids'].remove(param['node_id']) + return True return False - except: + except: return False @@ -198,9 +219,9 @@ def DeleteSlice(param): return False try: for slice in DB['slices_list']: - if param['slice_id'] == slice['slice_id']: - DB['slices_list'].remove(slice) - return True + if param['slice_id'] == slice['slice_id']: + DB['slices_list'].remove(slice) + return True return False except: return False @@ -212,16 +233,16 @@ def DeleteUser(param): return False try: for user in DB['users_list']: - if param['user_id'] == user['user_id']: - DB['users_list'].remove(user) - for slice in DB['slices_list']: - if param['user_id'] in slice['user_ids']: - slice['user_ids'].remove(param['user_id']) - return True + if param['user_id'] == user['user_id']: + DB['users_list'].remove(user) + for slice in DB['slices_list']: + if param['user_id'] in slice['user_ids']: + slice['user_ids'].remove(param['user_id']) + return True return False except: return False - + def DeleteKey(param): global DB @@ -229,26 +250,27 @@ def DeleteKey(param): return False try: for user in DB['users_list']: - if param['key'] in user['keys']: - user['keys'].remove(param['key']) - return True + if param['key'] in user['keys']: + user['keys'].remove(param['key']) + return True return False except: return False + def DeleteUserFromSlice(param): global DB if not isinstance(param, dict): return False try: for slice in DB['slices_list']: - if param['slice_id'] == slice['slice_id'] and param['user_id'] in slice['user_ids']: - slice['user_ids'].remove(param['user_id']) - return True + if param['slice_id'] == slice['slice_id'] and param['user_id'] in slice['user_ids']: + slice['user_ids'].remove(param['user_id']) + return True return False except: return False - + def DeleteSliceFromNodes(param): global DB @@ -256,16 +278,17 @@ def DeleteSliceFromNodes(param): return False try: for slice in DB['slices_list']: - if param['slice_id'] == slice['slice_id']: - for node_id in param['node_ids']: - if node_id in slice['node_ids']: slice['node_ids'].remove(node_id) - return True + if param['slice_id'] == slice['slice_id']: + for node_id in param['node_ids']: + if node_id in slice['node_ids']: + slice['node_ids'].remove(node_id) + return True return False except: return False -#Update +# Update def UpdateNode(param): global DB @@ -273,11 +296,11 @@ def UpdateNode(param): return False try: for node in DB['nodes_list']: - if param['node_id'] == node['node_id']: - for key in param['fields'].keys(): - if key in ['hostname', 'type']: - node[key] = param['fields'][key] - return True + if param['node_id'] == node['node_id']: + for key in param['fields'].keys(): + if key in ['hostname', 'type']: + node[key] = param['fields'][key] + return True return False except: return False @@ -289,11 +312,11 @@ def UpdateSlice(param): return False try: for slice in DB['slices_list']: - if param['slice_id'] == slice['slice_id']: - for key in param['fields'].keys(): - if key in ['slice_name']: - slice[key] = param['fields'][key] - return True + if param['slice_id'] == slice['slice_id']: + for key in param['fields'].keys(): + if key in ['slice_name']: + slice[key] = param['fields'][key] + return True return False except: return False @@ -305,19 +328,17 @@ def UpdateUser(param): return False try: for user in DB['users_list']: - if param['user_id'] == user['user_id']: - for key in param['fields'].keys(): - if key in ['user_name', 'email']: - user[key] = param['fields'][key] - return True + if param['user_id'] == user['user_id']: + for key in param['fields'].keys(): + if key in ['user_name', 'email']: + user[key] = param['fields'][key] + return True return False except: return False - - -# Instantiate the XMLRPC server +# Instantiate the XMLRPC server dummy_api_server = SimpleXMLRPCServer.SimpleXMLRPCServer(dummy_api_addr) # RPC functions registration @@ -347,6 +368,3 @@ dummy_api_server.register_introspection_functions() # Handle requests dummy_api_server.serve_forever() - - -