Skip to content

Commit

Permalink
fixed cache
Browse files Browse the repository at this point in the history
  • Loading branch information
ticoann committed Nov 26, 2014
1 parent 3c36646 commit 9944aaa
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 45 deletions.
53 changes: 21 additions & 32 deletions src/python/WMCore/Services/ReqMgr/ReqMgr.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,78 +81,67 @@ def getRequestByNames(self, names):

query = self._createQuery({'name': names})
callname = 'request?%s' % query
#return self._getResult(callname, verb = "GET")
return self["requests"].get(callname)
return self._getResult(callname, verb = "GET")['result']

def getRequestByStatus(self, statusList, detail = False):
"""
_getRequestByStatus_
returns tuples with following format
({'result': [{'test_RequestString-OVERRIDE-ME_141125_142331_4966': {'BlockBlacklist': [],
returns list of requests
[{'test_RequestString-OVERRIDE-ME_141125_142331_4966': {'BlockBlacklist': [],
'BlockWhitelist': [],
'CMSSWVersion': 'CMSSW_4_4_2_patch2',
....
'_id': 'test_RequestString-OVERRIDE-ME_141125_142331_4966',
'inputMode': 'couchDB'}}]},
200,
'OK',
False)
'inputMode': 'couchDB'}}]
"""

query = self._createQuery({'status': statusList})
callname = 'request?%s' % query
#return self._getResult(callname, verb = "GET")
return self["requests"].get(callname)

return self._getResult(callname, verb = "GET")['result']

def insertRequests(self, requestDict):
"""
_insertRequests_
returns tuples with following format
({'result': [{'test_RequestString-OVERRIDE-ME_141125_142331_4966': {'BlockBlacklist': [],
returns list with following format
[{'test_RequestString-OVERRIDE-ME_141125_142331_4966': {'BlockBlacklist': [],
'BlockWhitelist': [],
'CMSSWVersion': 'CMSSW_4_4_2_patch2',
....
'_id': 'test_RequestString-OVERRIDE-ME_141125_142331_4966',
'inputMode': 'couchDB'}}]},
200,
'OK',
False)
'inputMode': 'couchDB'}}]
need proper error handling if status is not 200 from orignal reporting.
"""
return self["requests"].post('request', requestDict)
return self["requests"].post('request', requestDict)[0]['result']

def updateRequestStatus(self, request, status):
"""
_updateRequestStatus_
returns tuples with following format
({'result': [{'test_RequestString-OVERRIDE-ME_141125_142331_4966': {'BlockBlacklist': [],
returns list with following format
[{'test_RequestString-OVERRIDE-ME_141125_142331_4966': {'BlockBlacklist': [],
'BlockWhitelist': [],
'CMSSWVersion': 'CMSSW_4_4_2_patch2',
....
'_id': 'test_RequestString-OVERRIDE-ME_141125_142331_4966',
'inputMode': 'couchDB'}}]},
200,
'OK',
False)
'inputMode': 'couchDB'}}]
need proper error handling if status is not 200 from orignal reporting.
"""

status = {"RequestStatus": status}
return self["requests"].put('request/%s' % request, status)
return self["requests"].put('request/%s' % request, status)[0]['result']

def updateRequestProperty(self, request, propDict):
"""
_updateRequestProperty_
returns tuples with following format
({'result': [{'test_RequestString-OVERRIDE-ME_141125_142331_4966': {'BlockBlacklist': [],
returns list with following format
[{'test_RequestString-OVERRIDE-ME_141125_142331_4966': {'BlockBlacklist': [],
'BlockWhitelist': [],
'CMSSWVersion': 'CMSSW_4_4_2_patch2',
....
'_id': 'test_RequestString-OVERRIDE-ME_141125_142331_4966',
'inputMode': 'couchDB'}}]},
200,
'OK',
False)
'inputMode': 'couchDB'}}]
need proper error handling if status is not 200 from orignal reporting.
({'result': data}, status_code, response, cache_flag)
"""
return self["requests"].put('request/%s' % request, propDict)
return self["requests"].put('request/%s' % request, propDict)[0]['result']


7 changes: 5 additions & 2 deletions src/python/WMCore/Services/Service.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ def __init__(self, cfg_dict = {}):
# either passed as param to __init__, determine via scheme or default
if type(self.get('requests')) == types.TypeType:
requests = self['requests']
elif (self['accept_type'] == "application/json" and self['content_type'] == "application/json"):
elif (self.get('accept_type') == "application/json" and self.get('content_type') == "application/json"):
requests = JSONRequests
else:
requests = Requests
Expand Down Expand Up @@ -292,7 +292,10 @@ def getData(self, cachefile, url, inputdata = {}, incoming_headers = {},
cachefile.seek (0, 0) # return to beginning of file
else:
f = open(cachefile, 'w')
f.write(str(data))
if isinstance(data, dict) or isinstance(data, list):
f.write(json.dumps(data))
else:
f.write(str(data))
f.close()


Expand Down
16 changes: 5 additions & 11 deletions test/python/WMCore_t/Services_t/ReqMgr_t/ReqMgr_t.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,28 +98,22 @@ def testRequestSimpleCycle(self):
response = self.reqSvc.insertRequests(self.rerecoCreateArgs)
from pprint import pprint
pprint(response)
self.assertEqual(response[1], 200)
requestName = response[0]['result'][0]['RequestName']
self.assertEqual(len(response), 1)
requestName = response[0]['RequestName']

## test get method
# get by name
response = self.reqSvc.getRequestByNames(requestName)
pprint(response)
self.assertEqual(response[1], 200, "get by name")
self.assertEqual(self.resultLength(response), 1)
self.assertEqual(len(response), 1)

# get by status
response = self.reqSvc.getRequestByStatus('new')
pprint(response)
self.assertEqual(response[1], 200, "get by status")
self.assertEqual(self.resultLength(response), 1)
self.assertEqual(len(response), 1)


self.reqSvc.updateRequestStatus(requestName, 'assignment-approved')
pprint(response)
response = self.reqSvc.getRequestByStatus('assignment-approved')
self.assertEqual(response[1], 200, "get by status")
self.assertEqual(self.resultLength(response), 1)
self.assertEqual(len(response), 1)

if __name__ == '__main__':
unittest.main()

0 comments on commit 9944aaa

Please sign in to comment.