Can't use start_timestamp/end_timestamp with ceilometerclient

Bug #1118542 reported by Mehdi Abaakouk
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Ceilometer
Fix Released
Medium
Lianhao Lu

Bug Description

Hi,

With ceilometerclient, I use code like this to retrieve some samples:

print ceilometerclient.samples.list({
"counter_name" : "a_counter_name",
"resource_id" : "a_resource_id",
"metaquery": "start_timestamp=%s:end_timestamp=%s" % (start, end)
})

And "start" and "end" is a ISO-formatted date like "2013-02-07T16:10:25.738107"

But It don't work because ceilometerclient use ":" as separator of "metaquery" or a ISO timestamp have ":" too

In file ceilometerclient/v1/meters.py in each Manager Class we have that:

  opts = kwargs.get('metaquery')
  ....
  if opts:
       path = '/v1%s?%s' % (path, '&'.join(opts.split(':')))

The "opts.split(':')" broke usage of ISO formatted date in the metaquery field.

Additional traceback of the ceilometerclient:

Traceback (most recent call last):
  File "ceilometer-to-synaps.py", line 75, in <module>
    events = cm.samples.list(**kwargs)
  File "/vagrant/stack/python-ceilometerclient/ceilometerclient/v1/meters.py", line 129, in list
    return self._list(path, 'events')
  File "/vagrant/stack/python-ceilometerclient/ceilometerclient/common/base.py", line 53, in _list
    resp, body = self.api.json_request('GET', url)
  File "/vagrant/stack/python-ceilometerclient/ceilometerclient/common/http.py", line 178, in json_request
    resp, body_iter = self._http_request(url, method, **kwargs)
  File "/vagrant/stack/python-ceilometerclient/ceilometerclient/common/http.py", line 161, in _http_request
    raise exc.from_response(resp)
ceilometerclient.exc.HTTPInternalServerError: HTTPInternalServerError (HTTP 500)

And traceback of the ceilometer-api:

2013-02-07 16:26:19.000 26073 TRACE ceilometer.api Traceback (most recent call last):
2013-02-07 16:26:19.000 26073 TRACE ceilometer.api File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1687, in wsgi_ap
p
2013-02-07 16:26:19.000 26073 TRACE ceilometer.api response = self.full_dispatch_request()
2013-02-07 16:26:19.000 26073 TRACE ceilometer.api File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1360, in full_di
spatch_request
2013-02-07 16:26:19.000 26073 TRACE ceilometer.api rv = self.handle_user_exception(e)
2013-02-07 16:26:19.000 26073 TRACE ceilometer.api File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1358, in full_dispatch_request
2013-02-07 16:26:19.000 26073 TRACE ceilometer.api rv = self.dispatch_request()
2013-02-07 16:26:19.000 26073 TRACE ceilometer.api File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1344, in dispatch_request
2013-02-07 16:26:19.000 26073 TRACE ceilometer.api return self.view_functions[rule.endpoint](**req.view_args)
2013-02-07 16:26:19.000 26073 TRACE ceilometer.api File "/vagrant/stack/ceilometer/ceilometer/api/v1/blueprint.py", line 443, in list_events_by_resource
2013-02-07 16:26:19.000 26073 TRACE ceilometer.api project=acl.get_limited_to_project(flask.request.headers),
2013-02-07 16:26:19.000 26073 TRACE ceilometer.api File "/vagrant/stack/ceilometer/ceilometer/api/v1/blueprint.py", line 384, in _list_events
2013-02-07 16:26:19.000 26073 TRACE ceilometer.api q_ts = _get_query_timestamps(flask.request.args)
2013-02-07 16:26:19.000 26073 TRACE ceilometer.api File "/vagrant/stack/ceilometer/ceilometer/api/v1/blueprint.py", line 500, in _get_query_timestamps
2013-02-07 16:26:19.000 26073 TRACE ceilometer.api start_timestamp = timeutils.parse_isotime(start_timestamp)
2013-02-07 16:26:19.000 26073 TRACE ceilometer.api File "/vagrant/stack/ceilometer/ceilometer/openstack/common/timeutils.py", line 49, in parse_isotime
2013-02-07 16:26:19.000 26073 TRACE ceilometer.api raise ValueError(e.message)
2013-02-07 16:26:19.000 26073 TRACE ceilometer.api ValueError: int() argument must be a string or a number, not 'NoneType'
2013-02-07 16:26:19.000 26073 TRACE ceilometer.api
10.0.2.15 - - [07/Feb/2013 16:26:19] "GET /v1/resources/0f98b83f56cf420bb7b3337e5a782083/meters/storage.objects?start_timestamp=2013-02-07T16&10&25.738107 HTTP/1.1" 500 -

Regards

Mehdi Abaakouk (sileht)
description: updated
Revision history for this message
Lianhao Lu (lianhao-lu) wrote :

I think this bug should be in python-ceilometerclient scope.

affects: ceilometer → python-ceilometerclient
Revision history for this message
Lianhao Lu (lianhao-lu) wrote :

It seems the python-ceilometerclient's bug tracker is not properly configured, so have to re-route this bug to ceilometer.

affects: python-ceilometerclient → ceilometer
Revision history for this message
Lianhao Lu (lianhao-lu) wrote :

We need to fix this though v1 API would be deprecating in H release.

Changed in ceilometer:
assignee: nobody → Lianhao Lu (lianhao-lu)
status: New → Confirmed
Revision history for this message
Lianhao Lu (lianhao-lu) wrote :

The 'metaquery' is used for querying into metadata, not for timestamps. We should add start/end timestamp parameters.

Revision history for this message
Lianhao Lu (lianhao-lu) wrote :
Changed in ceilometer:
status: Confirmed → In Progress
Revision history for this message
Lianhao Lu (lianhao-lu) wrote :
Changed in ceilometer:
importance: Undecided → Medium
milestone: none → grizzly-rc1
status: In Progress → Fix Committed
Thierry Carrez (ttx)
Changed in ceilometer:
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in ceilometer:
milestone: grizzly-rc1 → 2013.1
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.