diff -Nru ceilometer-2014.1.3/AUTHORS ceilometer-2014.1.4/AUTHORS --- ceilometer-2014.1.3/AUTHORS 2014-10-02 23:08:07.000000000 +0000 +++ ceilometer-2014.1.4/AUTHORS 2015-03-13 00:31:52.000000000 +0000 @@ -141,6 +141,7 @@ lizheming lrqrun ls1175 +sh.huang shengjie min tanlin terriyu diff -Nru ceilometer-2014.1.3/ceilometer/api/middleware.py ceilometer-2014.1.4/ceilometer/api/middleware.py --- ceilometer-2014.1.3/ceilometer/api/middleware.py 2014-10-02 23:04:49.000000000 +0000 +++ ceilometer-2014.1.4/ceilometer/api/middleware.py 2015-03-13 00:28:09.000000000 +0000 @@ -124,7 +124,7 @@ except ValueError as err: body = [json.dumps({'error_message': '\n'.join(app_iter)})] state['headers'].append(('Content-Type', 'application/json')) - state['headers'].append(('Content-Length', len(body[0]))) + state['headers'].append(('Content-Length', str(len(body[0])))) else: body = app_iter return body diff -Nru ceilometer-2014.1.3/ceilometer/compute/virt/vmware/vsphere_operations.py ceilometer-2014.1.4/ceilometer/compute/virt/vmware/vsphere_operations.py --- ceilometer-2014.1.3/ceilometer/compute/virt/vmware/vsphere_operations.py 2014-10-02 23:04:49.000000000 +0000 +++ ceilometer-2014.1.4/ceilometer/compute/virt/vmware/vsphere_operations.py 2015-03-13 00:28:09.000000000 +0000 @@ -204,8 +204,8 @@ query_spec.metricId = [metric_id] query_spec.intervalId = VC_REAL_TIME_SAMPLING_INTERVAL # We query all samples which are applicable over the specified duration - samples_cnt = (duration / VC_REAL_TIME_SAMPLING_INTERVAL if duration - else 1) + samples_cnt = (int(duration / VC_REAL_TIME_SAMPLING_INTERVAL) + if duration else 1) query_spec.maxSample = samples_cnt perf_manager = session.vim.service_content.perfManager diff -Nru ceilometer-2014.1.3/ceilometer/network/notifications.py ceilometer-2014.1.4/ceilometer/network/notifications.py --- ceilometer-2014.1.3/ceilometer/network/notifications.py 2014-10-02 23:04:49.000000000 +0000 +++ ceilometer-2014.1.4/ceilometer/network/notifications.py 2015-03-13 00:28:09.000000000 +0000 @@ -19,7 +19,6 @@ events. """ -import copy from oslo.config import cfg @@ -81,21 +80,29 @@ counter_name = getattr(self, 'counter_name', self.resource_name) unit_value = getattr(self, 'unit', self.resource_name) - payload = message['payload'].get(self.resource_name) - payloads = message['payload'].get(self.resource_name + 's') - payload_list = copy.copy([payload] if payload else payloads) - for p in payload_list: - message['payload'] = p + resource = message['payload'].get(self.resource_name) + if resource: + # NOTE(liusheng): In %s.update.start notifications, the id is in + # message['payload'] instead of resource itself. + if message['event_type'].endswith('update.start'): + resource['id'] = message['payload']['id'] + resources = [resource] + else: + resources = message['payload'].get(self.resource_name + 's') + + resource_message = message.copy() + for resource in resources: + resource_message['payload'] = resource yield sample.Sample.from_notification( name=counter_name, type=sample.TYPE_GAUGE, unit=unit_value, volume=1, - user_id=message['_context_user_id'], - project_id=message['_context_tenant_id'], - resource_id=message['payload']['id'], - message=message) - event_type_split = message['event_type'].split('.') + user_id=resource_message['_context_user_id'], + project_id=resource_message['_context_tenant_id'], + resource_id=resource['id'], + message=resource_message) + event_type_split = resource_message['event_type'].split('.') if len(event_type_split) > 2: yield sample.Sample.from_notification( name=counter_name @@ -103,10 +110,10 @@ type=sample.TYPE_DELTA, unit=unit_value, volume=1, - user_id=message['_context_user_id'], - project_id=message['_context_tenant_id'], - resource_id=message['payload']['id'], - message=message) + user_id=resource_message['_context_user_id'], + project_id=resource_message['_context_tenant_id'], + resource_id=resource['id'], + message=resource_message) class Network(NetworkNotificationBase): diff -Nru ceilometer-2014.1.3/ceilometer/objectstore/swift_middleware.py ceilometer-2014.1.4/ceilometer/objectstore/swift_middleware.py --- ceilometer-2014.1.3/ceilometer/objectstore/swift_middleware.py 2014-10-02 23:04:49.000000000 +0000 +++ ceilometer-2014.1.4/ceilometer/objectstore/swift_middleware.py 2015-03-13 00:28:09.000000000 +0000 @@ -93,14 +93,22 @@ start_response_args[0] = (status, list(headers), exc_info) def iter_response(iterable): + iterator = iter(iterable) + try: + chunk = iterator.next() + while not chunk: + chunk = iterator.next() + except StopIteration: + chunk = '' + if start_response_args[0]: start_response(*start_response_args[0]) bytes_sent = 0 try: - for chunk in iterable: - if chunk: - bytes_sent += len(chunk) + while chunk: + bytes_sent += len(chunk) yield chunk + chunk = iterator.next() finally: try: self.publish_sample(env, diff -Nru ceilometer-2014.1.3/ceilometer/service.py ceilometer-2014.1.4/ceilometer/service.py --- ceilometer-2014.1.3/ceilometer/service.py 2014-10-02 23:04:49.000000000 +0000 +++ ceilometer-2014.1.4/ceilometer/service.py 2015-03-13 00:28:09.000000000 +0000 @@ -109,7 +109,6 @@ DISPATCHER_NAMESPACE = 'ceilometer.dispatcher' def start(self): - super(DispatchedService, self).start() LOG.debug(_('loading dispatchers from %s'), self.DISPATCHER_NAMESPACE) self.dispatcher_manager = named.NamedExtensionManager( @@ -120,6 +119,8 @@ if not list(self.dispatcher_manager): LOG.warning(_('Failed to load any dispatchers for %s'), self.DISPATCHER_NAMESPACE) + # ensure dispatcher is configured before starting other services + super(DispatchedService, self).start() def get_workers(name): diff -Nru ceilometer-2014.1.3/ceilometer/tests/network/test_notifications.py ceilometer-2014.1.4/ceilometer/tests/network/test_notifications.py --- ceilometer-2014.1.3/ceilometer/tests/network/test_notifications.py 2014-10-02 23:04:49.000000000 +0000 +++ ceilometer-2014.1.4/ceilometer/tests/network/test_notifications.py 2015-03-13 00:28:09.000000000 +0000 @@ -351,25 +351,35 @@ u'message_id': u'9e839576-cc47-4c60-a7d8-5743681213b1'} -NOTIFICATION_FLOATINGIP_UPDATE = { - u'_context_roles': [u'anotherrole', - u'Member'], - u'_context_read_deleted': u'no', - u'event_type': u'floatingip.update.start', - u'timestamp': u'2012-09-27 14:11:27.086575', - u'_context_tenant_id': u'82ed0c40ebe64d0bb3310027039c8ed2', - u'payload': {u'floatingip': - {u'fixed_ip_address': u'172.24.4.227', - u'id': u'a68c9390-829e-4732-bad4-e0a978498cc5', - u'port_id': u'e12150f2-885b-45bc-a248-af1c23787d55'}}, - u'priority': u'INFO', - u'_unique_id': u'e483db017b2341fd9ec314dcda88d3e9', - u'_context_is_admin': False, - u'_context_project_id': u'82ed0c40ebe64d0bb3310027039c8ed2', - u'_context_timestamp': u'2012-09-27 14:11:26.924779', - u'_context_user_id': u'b44b7ce67fc84414a5c1660a92a1b862', - u'publisher_id': u'network.ubuntu-VirtualBox', - u'message_id': u'9e839576-cc47-4c60-a7d8-5743681213b1'} +NOTIFICATION_FLOATINGIP_UPDATE_START = { + '_context_roles': [u'_member_', + u'admin', + u'heat_stack_owner'], + '_context_request_id': u'req-bd5ed336-242f-4705-836e-8e8f3d0d1ced', + '_context_read_deleted': u'no', + 'event_type': u'floatingip.update.start', + '_context_user_name': u'admin', + '_context_project_name': u'admin', + 'timestamp': u'2014-05-3107: 19: 43.463101', + '_context_tenant_id': u'9fc714821a3747c8bc4e3a9bfbe82732', + '_context_tenant_name': u'admin', + '_context_tenant': u'9fc714821a3747c8bc4e3a9bfbe82732', + 'message_id': u'0ab6d71f-ba0a-4501-86fe-6cc20521ef5a', + 'priority': 'info', + '_context_is_admin': True, + '_context_project_id': u'9fc714821a3747c8bc4e3a9bfbe82732', + '_context_timestamp': u'2014-05-3107: 19: 43.460767', + '_context_user': u'6ca7b13b33e4425cae0b85e2cf93d9a1', + '_context_user_id': u'6ca7b13b33e4425cae0b85e2cf93d9a1', + 'publisher_id': u'network.devstack', + 'payload': { + u'id': u'64262b2a-8f5d-4ade-9405-0cbdd03c1555', + u'floatingip': { + u'fixed_ip_address': u'172.24.4.227', + u'port_id': u'8ab815c8-03cc-4b45-a673-79bdd0c258f2' + } + } +} NOTIFICATION_L3_METER = { @@ -467,9 +477,10 @@ def test_floatingip_update(self): v = notifications.FloatingIP() - samples = list(v.process_notification(NOTIFICATION_FLOATINGIP_UPDATE)) + samples = list(v.process_notification( + NOTIFICATION_FLOATINGIP_UPDATE_START)) self.assertEqual(len(samples), 2) - self.assertEqual(samples[0].name, "ip.floating") + self.assertEqual("ip.floating", samples[0].name) def test_metering_report(self): v = notifications.Bandwidth() diff -Nru ceilometer-2014.1.3/ceilometer/tests/objectstore/test_swift_middleware.py ceilometer-2014.1.4/ceilometer/tests/objectstore/test_swift_middleware.py --- ceilometer-2014.1.3/ceilometer/tests/objectstore/test_swift_middleware.py 2014-10-02 23:04:49.000000000 +0000 +++ ceilometer-2014.1.4/ceilometer/tests/objectstore/test_swift_middleware.py 2015-03-13 00:28:09.000000000 +0000 @@ -34,13 +34,15 @@ self.body = body def __call__(self, env, start_response): + yield start_response('200 OK', [ ('Content-Type', 'text/plain'), ('Content-Length', str(sum(map(len, self.body)))) ]) while env['wsgi.input'].read(5): pass - return self.body + for line in self.body: + yield line class TestSwiftMiddleware(test.BaseTestCase): diff -Nru ceilometer-2014.1.3/ceilometer.egg-info/pbr.json ceilometer-2014.1.4/ceilometer.egg-info/pbr.json --- ceilometer-2014.1.3/ceilometer.egg-info/pbr.json 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1.4/ceilometer.egg-info/pbr.json 2015-03-13 00:31:52.000000000 +0000 @@ -0,0 +1 @@ +{"is_release": true, "git_version": "bc9013b"} \ No newline at end of file diff -Nru ceilometer-2014.1.3/ceilometer.egg-info/PKG-INFO ceilometer-2014.1.4/ceilometer.egg-info/PKG-INFO --- ceilometer-2014.1.3/ceilometer.egg-info/PKG-INFO 2014-10-02 23:08:07.000000000 +0000 +++ ceilometer-2014.1.4/ceilometer.egg-info/PKG-INFO 2015-03-13 00:31:52.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: ceilometer -Version: 2014.1.3 +Version: 2014.1.4 Summary: OpenStack Telemetry Home-page: http://www.openstack.org/ Author: OpenStack diff -Nru ceilometer-2014.1.3/ceilometer.egg-info/requires.txt ceilometer-2014.1.4/ceilometer.egg-info/requires.txt --- ceilometer-2014.1.3/ceilometer.egg-info/requires.txt 2014-10-02 23:08:07.000000000 +0000 +++ ceilometer-2014.1.4/ceilometer.egg-info/requires.txt 2015-03-13 00:31:52.000000000 +0000 @@ -2,7 +2,8 @@ anyjson>=0.3.3 argparse croniter>=0.3.4 # MIT License -eventlet>=0.13.0 +oslo.vmware<0.6.0 # Apache-2.0 +eventlet>=0.13.0,<0.16.0 Flask>=0.10,<1.0 happybase>=0.5,!=0.7 iso8601>=0.1.9 @@ -13,22 +14,21 @@ lxml>=2.3 msgpack-python netaddr>=0.7.6 -oslo.config>=1.2.0 -oslo.vmware>=0.2 # Apache-2.0 +oslo.config>=1.2.0,<1.5 pbr>=0.6,<1.0 pecan>=0.4.5 pysnmp>=4.2.1,<5.0.0 -python-ceilometerclient>=1.0.6 -python-glanceclient>=0.9.0 -python-keystoneclient>=0.7.0 -python-novaclient>=2.17.0 -python-swiftclient>=1.6 +python-ceilometerclient>=1.0.6,<=1.0.12 +python-glanceclient>=0.9.0,!=0.14.0,<=0.14.2 +python-keystoneclient>=0.7.0,<=0.11.2 +python-novaclient>=2.17.0,<2.21 +python-swiftclient>=1.6,<=2.3.1 pytz>=2010h PyYAML>=3.1.0 requests>=1.1 six>=1.6.0 SQLAlchemy>=0.7.8,!=0.9.5,<=0.9.99 -sqlalchemy-migrate>=0.8.2,!=0.8.4,!=0.9.2 -stevedore>=0.14 +sqlalchemy-migrate>=0.8.2,!=0.8.4,<=0.9.1 +stevedore>=0.14,<1.2 WebOb>=1.2.3 WSME>=0.6 diff -Nru ceilometer-2014.1.3/ceilometer.egg-info/SOURCES.txt ceilometer-2014.1.4/ceilometer.egg-info/SOURCES.txt --- ceilometer-2014.1.3/ceilometer.egg-info/SOURCES.txt 2014-10-02 23:08:08.000000000 +0000 +++ ceilometer-2014.1.4/ceilometer.egg-info/SOURCES.txt 2015-03-13 00:31:52.000000000 +0000 @@ -35,6 +35,7 @@ ceilometer.egg-info/dependency_links.txt ceilometer.egg-info/entry_points.txt ceilometer.egg-info/not-zip-safe +ceilometer.egg-info/pbr.json ceilometer.egg-info/requires.txt ceilometer.egg-info/top_level.txt ceilometer/alarm/__init__.py diff -Nru ceilometer-2014.1.3/ChangeLog ceilometer-2014.1.4/ChangeLog --- ceilometer-2014.1.3/ChangeLog 2014-10-02 23:08:07.000000000 +0000 +++ ceilometer-2014.1.4/ChangeLog 2015-03-13 00:31:52.000000000 +0000 @@ -1,6 +1,18 @@ CHANGES ======= +2014.1.4 +-------- + +* Transform sample_cnt type to int +* Updated from global requirements +* Updated from global requirements +* Move oslo.vmware higher in requirements.txt +* Fix listener for update.start notifications +* ensure dispatcher service is configured before rpc +* Fix a response header bug in the error middleware +* Bump stable/icehouse next version to 2014.1.4 + 2014.1.3 -------- @@ -11,6 +23,7 @@ * fix statistics query in postgres * fix StringIO errors in unit test * Bump stable/icehouse next version to 2014.1.3 +* Iterates swift response earlier to get the correct status 2014.1.2 -------- diff -Nru ceilometer-2014.1.3/debian/changelog ceilometer-2014.1.4/debian/changelog --- ceilometer-2014.1.3/debian/changelog 2014-10-03 20:02:31.000000000 +0000 +++ ceilometer-2014.1.4/debian/changelog 2015-03-19 08:53:49.000000000 +0000 @@ -1,3 +1,16 @@ +ceilometer (2014.1.4-0ubuntu1) trusty; urgency=medium + + * Resynchronize with stable/icehouse (c837d83) (LP: #1432608): + - [bc9013b] Transform sample_cnt type to int + - [449f9d5] Move oslo.vmware higher in requirements.txt + - [28f5027] Fix listener for update.start notifications + - [63d934b] ensure dispatcher service is configured before rpc + - [2a546ac] Fix a response header bug in the error middleware + - [c837d83] Iterates swift response earlier to get the correct status + * d/p/fix-requirements.patch: Rebased. + + -- Corey Bryant Thu, 19 Mar 2015 08:53:13 +0000 + ceilometer (2014.1.3-0ubuntu1) trusty; urgency=medium [ Corey Bryant ] diff -Nru ceilometer-2014.1.3/debian/patches/fix-requirements.patch ceilometer-2014.1.4/debian/patches/fix-requirements.patch --- ceilometer-2014.1.3/debian/patches/fix-requirements.patch 2014-10-03 20:02:31.000000000 +0000 +++ ceilometer-2014.1.4/debian/patches/fix-requirements.patch 2015-03-19 08:53:49.000000000 +0000 @@ -3,22 +3,22 @@ Forwarded: Not needed. --- a/requirements.txt +++ b/requirements.txt -@@ -16,8 +16,7 @@ - oslo.config>=1.2.0 - oslo.vmware>=0.2 # Apache-2.0 +@@ -18,8 +18,7 @@ + netaddr>=0.7.6 + oslo.config>=1.2.0,<1.5 pbr>=0.6,<1.0 -pecan>=0.4.5 -pysnmp>=4.2.1,<5.0.0 +pecan>=0.3.0 - python-ceilometerclient>=1.0.6 - python-glanceclient>=0.9.0 - python-keystoneclient>=0.7.0 -@@ -26,7 +25,7 @@ + python-ceilometerclient>=1.0.6,<=1.0.12 + python-glanceclient>=0.9.0,!=0.14.0,<=0.14.2 + python-keystoneclient>=0.7.0,<=0.11.2 +@@ -28,7 +27,7 @@ pytz>=2010h PyYAML>=3.1.0 requests>=1.1 -six>=1.6.0 +six>=1.5.2 SQLAlchemy>=0.7.8,!=0.9.5,<=0.9.99 - sqlalchemy-migrate>=0.8.2,!=0.8.4,!=0.9.2 - stevedore>=0.14 + sqlalchemy-migrate>=0.8.2,!=0.8.4,<=0.9.1 + stevedore>=0.14,<1.2 diff -Nru ceilometer-2014.1.3/PKG-INFO ceilometer-2014.1.4/PKG-INFO --- ceilometer-2014.1.3/PKG-INFO 2014-10-02 23:08:08.000000000 +0000 +++ ceilometer-2014.1.4/PKG-INFO 2015-03-13 00:31:53.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: ceilometer -Version: 2014.1.3 +Version: 2014.1.4 Summary: OpenStack Telemetry Home-page: http://www.openstack.org/ Author: OpenStack diff -Nru ceilometer-2014.1.3/requirements.txt ceilometer-2014.1.4/requirements.txt --- ceilometer-2014.1.3/requirements.txt 2014-10-02 23:04:49.000000000 +0000 +++ ceilometer-2014.1.4/requirements.txt 2015-03-13 00:28:09.000000000 +0000 @@ -2,7 +2,10 @@ anyjson>=0.3.3 argparse croniter>=0.3.4 # MIT License -eventlet>=0.13.0 +# List oslo.vmware early to ensure its transitive eventlet dependency +# on eventlet is satisifed. +oslo.vmware<0.6.0 # Apache-2.0 +eventlet>=0.13.0,<0.16.0 Flask>=0.10,<1.0 happybase>=0.5,!=0.7 iso8601>=0.1.9 @@ -13,22 +16,21 @@ lxml>=2.3 msgpack-python netaddr>=0.7.6 -oslo.config>=1.2.0 -oslo.vmware>=0.2 # Apache-2.0 +oslo.config>=1.2.0,<1.5 pbr>=0.6,<1.0 pecan>=0.4.5 pysnmp>=4.2.1,<5.0.0 -python-ceilometerclient>=1.0.6 -python-glanceclient>=0.9.0 -python-keystoneclient>=0.7.0 -python-novaclient>=2.17.0 -python-swiftclient>=1.6 +python-ceilometerclient>=1.0.6,<=1.0.12 +python-glanceclient>=0.9.0,!=0.14.0,<=0.14.2 +python-keystoneclient>=0.7.0,<=0.11.2 +python-novaclient>=2.17.0,<2.21 +python-swiftclient>=1.6,<=2.3.1 pytz>=2010h PyYAML>=3.1.0 requests>=1.1 six>=1.6.0 SQLAlchemy>=0.7.8,!=0.9.5,<=0.9.99 -sqlalchemy-migrate>=0.8.2,!=0.8.4,!=0.9.2 -stevedore>=0.14 +sqlalchemy-migrate>=0.8.2,!=0.8.4,<=0.9.1 +stevedore>=0.14,<1.2 WebOb>=1.2.3 WSME>=0.6 diff -Nru ceilometer-2014.1.3/setup.cfg ceilometer-2014.1.4/setup.cfg --- ceilometer-2014.1.3/setup.cfg 2014-10-02 23:08:08.000000000 +0000 +++ ceilometer-2014.1.4/setup.cfg 2015-03-13 00:31:53.000000000 +0000 @@ -1,6 +1,6 @@ [metadata] name = ceilometer -version = 2014.1.3 +version = 2014.1.4 summary = OpenStack Telemetry description-file = README.rst diff -Nru ceilometer-2014.1.3/test-requirements.txt ceilometer-2014.1.4/test-requirements.txt --- ceilometer-2014.1.3/test-requirements.txt 2014-10-02 23:04:49.000000000 +0000 +++ ceilometer-2014.1.4/test-requirements.txt 2015-03-13 00:28:09.000000000 +0000 @@ -20,4 +20,4 @@ sphinxcontrib-pecanwsme>=0.6 testrepository>=0.0.18 testscenarios>=0.4 -testtools>=0.9.34 +testtools>=0.9.34,!=1.2.0,!=1.4.0