ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/RegSvc/src/python/RegSvcRESTModel.py
Revision: 1.1
Committed: Mon May 18 20:17:43 2009 UTC (15 years, 11 months ago) by sekhri
Content type: text/x-python
Branch: MAIN
CVS Tags: HEAD
Log Message:
implementing reg service in WMCORE

File Contents

# User Rev Content
1 sekhri 1.1 #!/usr/bin/env python
2    
3     __author__ = "Vijay Sekhri <sekhri at fnal dot gov>"
4     __revision__ = "$Id: RegSvcRESTModel.py,v 1.6 2009/03/19 15:37:40 sekhri Exp $"
5     __version__ = "$Revision: 1.6 $"
6     #from WMCore.WebTools import RESTModel
7     from WMCore.WebTools.Page import DatabasePage
8     from ServiceDAO import *
9     import simplejson
10     import sys
11    
12    
13    
14    
15     class RegSvcRESTModel(DatabasePage):
16     """Rest model class implementation"""
17     def __init__(self, args):
18     DatabasePage.__init__(self, args)
19     self.methods = {
20     'addService':ServiceDAO(self).addService,
21     'updateService':ServiceDAO(self).updateService,
22     'listServices':ServiceDAO(self).listServices,
23     }
24    
25     def getData(self, kwargs):
26     """ To retrieve dict from string"""
27     #FIXME this should not be needed
28     self.debug(str(kwargs))
29     keys = kwargs.keys()
30     if len(keys) <= 0 :
31     return {}
32     return simplejson.loads(keys[0])
33    
34     def validateData(self, args):
35     if len(args) < 1: raise 'NO API specified and none invoked'
36     if args[0] not in self.methods.keys(): raise 'Specified API ' + str(args[0]) + ' not implemented'
37    
38    
39    
40     def handle_get(self, args, kwargs):
41     data = {"args": args, "kwargs": kwargs}
42     self.debug(str(data))
43     try:
44     self.validateData(args)
45     if not args[0].startswith('list'): raise 'Specified API ' + str(args[0]) + ' not implemented in http get. Try http post or http put'
46     return self.methods[args[0]](kwargs)
47     except :
48     print sys.exc_info()[0]
49     return [{'ERROR': sys.exc_info()[0]}]
50    
51    
52     def handle_post(self, args, kwargs):
53     data = {"args": args, "kwargs": kwargs}
54     self.debug(str(data))
55     data = self.getData(kwargs)
56     try:
57     self.validateData(args)
58     if not args[0].startswith('add'): raise 'Specified API ' + str(args[0]) + ' not implemented in http post. Try http get or http put'
59     return self.methods[args[0]](data)
60     except :
61     print sys.exc_info()[0]
62     return [{'ERROR': sys.exc_info()[0]}]
63    
64    
65     def handle_put(self, args, kwargs):
66     data = {"args": args, "kwargs": kwargs}
67     self.debug(str(data))
68     data = self.getData(kwargs)
69     try:
70     self.validateData(args)
71     if not args[0].startswith('update'): raise 'Specified API ' + str(args[0]) + ' not implemented in http put. Try http post or http get'
72     return self.methods[args[0]](data)
73     except :
74     print sys.exc_info()[0]
75     return [{'ERROR': sys.exc_info()[0]}]
76    
77    
78     def handle_delete(self, args, kwargs):
79     data = {"args": args, "kwargs": kwargs}
80     self.debug(str(data))
81     return data
82    
83     def handle_update(self, args, kwargs):
84     data = {"args": args, "kwargs": kwargs}
85     self.debug(str(data))
86     return data
87