)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"9c887c824396d06154ae4d9853d9f78d9d99275e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Vitaly Gridnev \u003cvgridnev@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-07-29 18:04:49 +0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Integration Sahara with Ceilometer"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added ability for Ceilometer to parse notifications from Sahara"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"baada198_f9bc010a","line":7,"updated":"2014-07-29 14:13:25.000000000","message":"Probably \u0027Sahara integration with Ceilometer\u0027 will look better here.","commit_id":"862ec48750bd934206b32d8a73d31fe46e645be8"}],"ceilometer/data_processing/notifications.py":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"9720c47e89d2fbc4ca2d6fbfba69952525f13282","unresolved":false,"context_lines":[{"line_number":28,"context_line":"]"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"cfg.CONF.register_opts(OPTS)"},{"line_number":31,"context_line":"SERVICE \u003d \u0027data_processing\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class DataProcessing(plugin.NotificationBase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_c012b660","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":7},"updated":"2014-07-30 11:55:52.000000000","message":"don\u0027t think you need to rename here - afaik sahara.cluster is the name of resource","commit_id":"b9933addc2eb6c27fa45ab97b8b8d60db904839b"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"1ef4758a6f2cd5e559a8d9e37e7b51d4103c17cd","unresolved":false,"context_lines":[{"line_number":31,"context_line":"SERVICE \u003d \u0027data_processing\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class DataProcessing(plugin.NotificationBase):"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    resource_name \u003d \u0027%s.cluster\u0027 % SERVICE"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_407946c4","line":34,"updated":"2014-07-30 11:53:52.000000000","message":"yeah, not it is what I meant initially :) sorry for being unclear :)","commit_id":"b9933addc2eb6c27fa45ab97b8b8d60db904839b"}],"ceilometer/sahara/notifications.py":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"9c887c824396d06154ae4d9853d9f78d9d99275e","unresolved":false,"context_lines":[{"line_number":32,"context_line":"SERVICE \u003d \u0027sahara\u0027"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class SaharaCRUD(plugin.NotificationBase):"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    resource_name \u003d \u0027%s.cluster\u0027 % SERVICE"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_39a679ac","line":35,"updated":"2014-07-29 14:13:25.000000000","message":"I prefer just SaharaDRUD -\u003e DataProcessing here to keep the same pattern we have for other notifications (Network, etc.)","commit_id":"862ec48750bd934206b32d8a73d31fe46e645be8"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"9c887c824396d06154ae4d9853d9f78d9d99275e","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    def process_notification(self, message):"},{"line_number":58,"context_line":"        name \u003d message[\u0027event_type\u0027].replace(self.resource_name, \u0027cluster\u0027)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        project_id \u003d message[\u0027payload\u0027][\u0027tenant_id\u0027]"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        user_id \u003d message[\u0027_context_user_id\u0027]"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_99a785bc","line":60,"range":{"start_line":60,"start_character":41,"end_line":60,"end_character":50},"updated":"2014-07-29 14:13:25.000000000","message":"can\u0027t we send notification from Sahara with the \u0027project_id\u0027, not \u0027tenant_id\u0027? That\u0027s actually the new name, so let\u0027s use it if it\u0027s implemented in your code","commit_id":"862ec48750bd934206b32d8a73d31fe46e645be8"},{"author":{"_account_id":7336,"name":"Phil Neal","email":"phil.neal@hp.com","username":"nealph"},"change_message_id":"3962676438469b2db59934f05e8ab333d34fc2d6","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    def process_notification(self, message):"},{"line_number":58,"context_line":"        name \u003d message[\u0027event_type\u0027].replace(self.resource_name, \u0027cluster\u0027)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        project_id \u003d message[\u0027payload\u0027][\u0027tenant_id\u0027]"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        user_id \u003d message[\u0027_context_user_id\u0027]"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_8f42c2a9","line":60,"in_reply_to":"baada198_99a785bc","updated":"2014-07-29 23:04:05.000000000","message":"+1 on this...this convention has been adopted for some time in the broader openstack context.","commit_id":"862ec48750bd934206b32d8a73d31fe46e645be8"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"cf22169b311a12818dcbd942017c3a26eef1090d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"SERVICE \u003d \u0027sahara\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class SaharaDRUD(plugin.NotificationBase):"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    resource_name \u003d \u0027%s.cluster\u0027 % SERVICE"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_b7134900","line":34,"updated":"2014-07-30 10:42:56.000000000","message":"What does DRUD stand for in this class name?","commit_id":"7763cdb58526177eb1ec75fb986e8667973608bd"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"9fea008eaba8c9709a7e1dc92ef606a2220d96e6","unresolved":false,"context_lines":[{"line_number":31,"context_line":"SERVICE \u003d \u0027sahara\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class SaharaDRUD(plugin.NotificationBase):"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    resource_name \u003d \u0027%s.cluster\u0027 % SERVICE"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_12b16301","line":34,"in_reply_to":"baada198_123ec38b","updated":"2014-07-30 11:15:54.000000000","message":"A-ha, I had typo in my previous comment:\n\n\" SaharaDRUD -\u003e DataProcessing \"\n\nSorry, I mean I\u0027d love to see class name DataProcessing","commit_id":"7763cdb58526177eb1ec75fb986e8667973608bd"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"4c6a40dc309e6c0ce3085419e0c358e21607c47f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"SERVICE \u003d \u0027sahara\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class SaharaDRUD(plugin.NotificationBase):"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    resource_name \u003d \u0027%s.cluster\u0027 % SERVICE"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_123ec38b","line":34,"in_reply_to":"baada198_b7134900","updated":"2014-07-30 11:10:47.000000000","message":"Well, last patchset I asked Vitaly to rename SaharaCRUD to DataProcessing class to be consistent with other programs - like Network, CPU\u003csmth\u003e, etc. But I did not mean this :-\\","commit_id":"7763cdb58526177eb1ec75fb986e8667973608bd"}],"ceilometer/tests/sahara/test_notifications.py":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"9c887c824396d06154ae4d9853d9f78d9d99275e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"#      http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":8,"context_line":"#"},{"line_number":9,"context_line":"# Unless required by applicable law or agreed to in writing, software"},{"line_number":10,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":11,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_598b2d17","line":10,"updated":"2014-07-29 14:13:25.000000000","message":"don\u0027t see Mirantis copyright :) that\u0027s unusual for the Mirantis code :D","commit_id":"862ec48750bd934206b32d8a73d31fe46e645be8"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"cf22169b311a12818dcbd942017c3a26eef1090d","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"class TestNotification(test.BaseTestCase):"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _verify_common_sample(self, s, name):"},{"line_number":76,"context_line":"        self.assertIsNotNone(s)"},{"line_number":77,"context_line":"        self.assertEqual(s.name, \u0027cluster.%s\u0027 % name)"},{"line_number":78,"context_line":"        self.assertEqual(s.timestamp, NOW)"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_37281933","line":75,"updated":"2014-07-30 10:42:56.000000000","message":"I would prefer if you could use a longer variable name, than a one character long.","commit_id":"7763cdb58526177eb1ec75fb986e8667973608bd"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"cf22169b311a12818dcbd942017c3a26eef1090d","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _verify_common_sample(self, s, name):"},{"line_number":76,"context_line":"        self.assertIsNotNone(s)"},{"line_number":77,"context_line":"        self.assertEqual(s.name, \u0027cluster.%s\u0027 % name)"},{"line_number":78,"context_line":"        self.assertEqual(s.timestamp, NOW)"},{"line_number":79,"context_line":"        self.assertEqual(s.type, sample.TYPE_DELTA)"},{"line_number":80,"context_line":"        self.assertEqual(s.project_id, PROJECT_ID)"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_57f58dca","line":77,"updated":"2014-07-30 10:42:56.000000000","message":"Please change the order in assertEqual to (expected, actual) here and in the checks below.","commit_id":"7763cdb58526177eb1ec75fb986e8667973608bd"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"cf22169b311a12818dcbd942017c3a26eef1090d","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        handler \u003d notifications.SaharaDRUD(mock.Mock())"},{"line_number":89,"context_line":"        data \u003d list(handler.process_notification(notif))"},{"line_number":90,"context_line":"        self.assertEqual(len(data), 1)"},{"line_number":91,"context_line":"        self.assertEqual(data[0].user_id, USER_ID)"},{"line_number":92,"context_line":"        self._verify_common_sample(data[0], operation)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_create(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_375ad9f2","line":91,"updated":"2014-07-30 10:42:56.000000000","message":"Why is the user_id checked here instead of in _verify_common_sample?","commit_id":"7763cdb58526177eb1ec75fb986e8667973608bd"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"20590d47ba56102d6b09bdb365e292766f3e1fe9","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        handler \u003d notifications.SaharaDRUD(mock.Mock())"},{"line_number":89,"context_line":"        data \u003d list(handler.process_notification(notif))"},{"line_number":90,"context_line":"        self.assertEqual(len(data), 1)"},{"line_number":91,"context_line":"        self.assertEqual(data[0].user_id, USER_ID)"},{"line_number":92,"context_line":"        self._verify_common_sample(data[0], operation)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_create(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_92ff33ab","line":91,"in_reply_to":"baada198_375ad9f2","updated":"2014-07-30 11:13:24.000000000","message":"expected and actual order wrong here as well\n1, len(data)\nUSER_ID, data[0].user_id","commit_id":"7763cdb58526177eb1ec75fb986e8667973608bd"}]}
