Add fixes for basic stream api support
Fixed api typo 'distinquished' Added proper json serialization for datetime and timerange Change-Id: I6af8bb15b5e9e65e7c6965cd80e1483b3df04b99
This commit is contained in:
parent
7e0c4dd829
commit
e8eaf34662
5
.gitreview
Normal file
5
.gitreview
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[gerrit]
|
||||||
|
host=review.openstack.org
|
||||||
|
port=29418
|
||||||
|
project=stackforge/stacktach-quincy.git
|
||||||
|
|
35
quincy/jsonutil.py
Normal file
35
quincy/jsonutil.py
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
import json
|
||||||
|
import datetime
|
||||||
|
import timex
|
||||||
|
|
||||||
|
|
||||||
|
class ObjectEncoder(json.JSONEncoder):
|
||||||
|
|
||||||
|
ENCODE_MAP = {datetime.datetime: "datetime",
|
||||||
|
timex.TimeRange: "timex.TimeRange",
|
||||||
|
timex.Timestamp: "timex.Timestamp"}
|
||||||
|
|
||||||
|
def default(self, obj):
|
||||||
|
if type(obj) in self.ENCODE_MAP:
|
||||||
|
typename = self.ENCODE_MAP[type(obj)]
|
||||||
|
encoder = getattr(self, '_encode_' + typename.replace('.', '_').lower())
|
||||||
|
return encoder(obj, typename)
|
||||||
|
return super(ObjectEncoder, self).default(obj)
|
||||||
|
|
||||||
|
def _encode_datetime(self, obj, name):
|
||||||
|
return {'__type__' : name,
|
||||||
|
'datetime': obj.isoformat()}
|
||||||
|
|
||||||
|
def _encode_timex_timestamp(self, obj, name):
|
||||||
|
return {'__type__' : name,
|
||||||
|
'timestamp': obj.timestamp.isoformat()}
|
||||||
|
|
||||||
|
def _encode_timex_timerange(self, obj, name):
|
||||||
|
return {'__type__' : name,
|
||||||
|
'begin': obj.begin.isoformat(),
|
||||||
|
'end': obj.end.isoformat()}
|
||||||
|
|
||||||
|
|
||||||
|
def dumps(obj, **kw):
|
||||||
|
kw['cls'] = ObjectEncoder
|
||||||
|
return json.dumps(obj, **kw)
|
@ -13,7 +13,7 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
import json
|
from quincy import jsonutil
|
||||||
|
|
||||||
from dateutil import parser
|
from dateutil import parser
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ class StreamCollection(common.FalconBase):
|
|||||||
# younger_than
|
# younger_than
|
||||||
# state
|
# state
|
||||||
# trigger_name
|
# trigger_name
|
||||||
# distinquishing_traits - find stream by dtrait values.
|
# distinguishing_traits - find stream by dtrait values.
|
||||||
#
|
#
|
||||||
# Actions on a Stream:
|
# Actions on a Stream:
|
||||||
# details - get full details on stream (including events &
|
# details - get full details on stream (including events &
|
||||||
@ -42,7 +42,7 @@ class StreamCollection(common.FalconBase):
|
|||||||
younger_than = req.get_param('younger_than')
|
younger_than = req.get_param('younger_than')
|
||||||
state = req.get_param('state')
|
state = req.get_param('state')
|
||||||
trigger = req.get_param('trigger_name')
|
trigger = req.get_param('trigger_name')
|
||||||
traits = req.get_param('distinquishing_traits')
|
traits = req.get_param('distinguishing_traits')
|
||||||
|
|
||||||
if older_than:
|
if older_than:
|
||||||
older_than = parser.parse(older_than)
|
older_than = parser.parse(older_than)
|
||||||
@ -54,15 +54,15 @@ class StreamCollection(common.FalconBase):
|
|||||||
younger_than=younger_than,
|
younger_than=younger_than,
|
||||||
state=state,
|
state=state,
|
||||||
trigger_name=trigger,
|
trigger_name=trigger,
|
||||||
distinquishing_traits=traits)
|
distinguishing_traits=traits)
|
||||||
resp.body = json.dumps(streams)
|
resp.body = jsonutil.dumps(streams)
|
||||||
|
|
||||||
|
|
||||||
class StreamItem(common.FalconBase):
|
class StreamItem(common.FalconBase):
|
||||||
def on_get(self, req, resp, stream_id, action=None):
|
def on_get(self, req, resp, stream_id, action=None):
|
||||||
details = req.get_param('details')
|
details = req.get_param('details')
|
||||||
streams = self.impl.get_stream(stream_id, details)
|
streams = self.impl.get_stream(stream_id, details)
|
||||||
resp.body = json.dumps(streams)
|
resp.body = jsonutil.dumps(streams)
|
||||||
|
|
||||||
def on_delete(self, req, resp, stream_id):
|
def on_delete(self, req, resp, stream_id):
|
||||||
self.impl.delete_stream(stream_id)
|
self.impl.delete_stream(stream_id)
|
||||||
|
@ -23,14 +23,14 @@ class Stream(object):
|
|||||||
self.stream_id = stream_id
|
self.stream_id = stream_id
|
||||||
self.trigger_name = trigger_name
|
self.trigger_name = trigger_name
|
||||||
self.state = state
|
self.state = state
|
||||||
self.distinquishing_traits = []
|
self.distinguishing_traits = []
|
||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
return {"last_updated": str(self.last_updated),
|
return {"last_updated": str(self.last_updated),
|
||||||
"stream_id": self.stream_id,
|
"stream_id": self.stream_id,
|
||||||
"trigger_name": self.trigger_name,
|
"trigger_name": self.trigger_name,
|
||||||
"state": self.state,
|
"state": self.state,
|
||||||
"distinquishing_traits": self.distinquishing_traits}
|
"distinguishing_traits": self.distinguishing_traits}
|
||||||
|
|
||||||
|
|
||||||
class Impl(object):
|
class Impl(object):
|
||||||
@ -44,7 +44,7 @@ class Impl(object):
|
|||||||
younger_than
|
younger_than
|
||||||
state
|
state
|
||||||
trigger_name
|
trigger_name
|
||||||
distinquishing_traits
|
distinguishing_traits
|
||||||
"""
|
"""
|
||||||
x = [Stream(str(uuid.uuid4()), "EOD-Exists", "Collecting"),
|
x = [Stream(str(uuid.uuid4()), "EOD-Exists", "Collecting"),
|
||||||
Stream(str(uuid.uuid4()), "EOD-Exists", "Error"),
|
Stream(str(uuid.uuid4()), "EOD-Exists", "Error"),
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
python-dateutil
|
python-dateutil
|
||||||
falcon
|
falcon
|
||||||
simport >= 0.0.dev0
|
simport >= 0.0.dev0
|
||||||
|
timex
|
||||||
|
Loading…
Reference in New Issue
Block a user