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

# Content
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