)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"def6860d9bdb74a1a5665baf7fddfca6bccd5077","unresolved":false,"context_lines":[{"line_number":11,"context_line":"message is in message[\u0027payload\u0027] not the message[\u0027payload\u0027][resource]."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I6dd56fbf31c29e26670068004f6fc935b91266f0"},{"line_number":14,"context_line":"Closes-Bug: #1325172"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"baada198_67360004","line":14,"updated":"2014-07-25 09:24:59.000000000","message":"Non-blocking nitpick: good practice is to have \"Change_Id\" the last line in the commit message. :)","commit_id":"488e6b0bd3162f398e6f8d5c67f399185859903e"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"7f370cb2a203f8b91e8805c17d1368769ab27b39","unresolved":false,"context_lines":[{"line_number":11,"context_line":"message is in message[\u0027payload\u0027] not the message[\u0027payload\u0027][resource]."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I6dd56fbf31c29e26670068004f6fc935b91266f0"},{"line_number":14,"context_line":"Closes-Bug: #1325172"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"baada198_d3686a23","line":14,"in_reply_to":"baada198_67360004","updated":"2014-07-25 11:13:18.000000000","message":"not actually true as there is a rule to have it in the last *block*, not *line*. Last line or not is a question of personal code-style taste","commit_id":"488e6b0bd3162f398e6f8d5c67f399185859903e"}],"ceilometer/network/notifications.py":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"c0012c92f0c2170558c691a3714e163129c116b6","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                volume\u003d1,"},{"line_number":94,"context_line":"                user_id\u003dmessage[\u0027_context_user_id\u0027],"},{"line_number":95,"context_line":"                project_id\u003dmessage[\u0027_context_tenant_id\u0027],"},{"line_number":96,"context_line":"                resource_id\u003dmessage[\u0027payload\u0027].get(\u0027id\u0027) or res_id,"},{"line_number":97,"context_line":"                message\u003dmessage)"},{"line_number":98,"context_line":"            event_type_split \u003d message[\u0027event_type\u0027].split(\u0027.\u0027)"},{"line_number":99,"context_line":"            if len(event_type_split) \u003e 2:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_3869a7be","line":96,"updated":"2014-06-03 07:18:52.000000000","message":"hum... res_id is already message[\u0027payload\u0027].get(\u0027id\u0027)\n\nWe cannot accept to have None in a resource id.\n\nThis issue needs to be fixed in neutron, the notification must have an id.","commit_id":"87cd7002819f6c16f4a24948b74f6fbcb3eea866"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"5a45a10347d2b884291a5056feb0f4dfb7c8141b","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                volume\u003d1,"},{"line_number":94,"context_line":"                user_id\u003dmessage[\u0027_context_user_id\u0027],"},{"line_number":95,"context_line":"                project_id\u003dmessage[\u0027_context_tenant_id\u0027],"},{"line_number":96,"context_line":"                resource_id\u003dmessage[\u0027payload\u0027].get(\u0027id\u0027) or res_id,"},{"line_number":97,"context_line":"                message\u003dmessage)"},{"line_number":98,"context_line":"            event_type_split \u003d message[\u0027event_type\u0027].split(\u0027.\u0027)"},{"line_number":99,"context_line":"            if len(event_type_split) \u003e 2:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_d8ba83bf","line":96,"in_reply_to":"1ae5cdf2_3869a7be","updated":"2014-06-03 07:42:57.000000000","message":"@Mehdi Abaakouk\nL88 message[\u0027payload\u0027] has change to message[\u0027payload\u0027][{resource_name}]\n\nso this line means, try to get id from message[\u0027payload\u0027][{resource_name}][\u0027id\u0027], if fail, then try to get id from message[\u0027payload\u0027][\u0027id\u0027]\n\nsince original code doesn\u0027t check the resource_id too, if we want to ensure the resource_id is not none, then we could add a check after line 88, and raise a exception if resource_id is None","commit_id":"87cd7002819f6c16f4a24948b74f6fbcb3eea866"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"f64cb2916d70ee884c0a1b6c1e245c9877f946b5","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                volume\u003d1,"},{"line_number":94,"context_line":"                user_id\u003dmessage[\u0027_context_user_id\u0027],"},{"line_number":95,"context_line":"                project_id\u003dmessage[\u0027_context_tenant_id\u0027],"},{"line_number":96,"context_line":"                resource_id\u003dmessage[\u0027payload\u0027].get(\u0027id\u0027) or res_id,"},{"line_number":97,"context_line":"                message\u003dmessage)"},{"line_number":98,"context_line":"            event_type_split \u003d message[\u0027event_type\u0027].split(\u0027.\u0027)"},{"line_number":99,"context_line":"            if len(event_type_split) \u003e 2:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_0bec92c6","line":96,"in_reply_to":"1ae5cdf2_d8ba83bf","updated":"2014-06-03 09:38:26.000000000","message":"@Mehdi Abaakouk?ZhiQiang? thanks for ZhiQiang\u0027s explanation,in the port.update.* notification message, the payload is:\n    \u0027payload\u0027: {\n        u\u0027id\u0027: u\u002764262b2a-8f5d-4ade-9405-0cbdd03c1555\u0027,\n        u\u0027floatingip\u0027: {\n            u\u0027port_id\u0027: u\u00278ab815c8-03cc-4b45-a673-79bdd0c258f2\u0027\n        }\n    }\n\ngenerally, ceilometer accept the payload should be:\n\n    \u0027payload\u0027: {        \n        u\u0027floatingip\u0027: {\n\t    u\u0027id\u0027: u\u002764262b2a-8f5d-4ade-9405-0cbdd03c1555\u0027,\n            u\u0027port_id\u0027: u\u00278ab815c8-03cc-4b45-a673-79bdd0c258f2\u0027\n        }\n    }\n\n\nAdditionally, as ZhiQiang said, I have thought about the the id is None in both the two situations. raise an exception? if so the notification service will be broken, or just record a WARN message in log?, it is also meaningless, so I think we can assume the *id* (in at least one situation) is exist. just personal thoughts :-)","commit_id":"87cd7002819f6c16f4a24948b74f6fbcb3eea866"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"8a973fb48cb90d10ce38a8d79b3aab3f0d4a93ea","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        unit_value \u003d getattr(self, \u0027unit\u0027, self.resource_name)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # NOTE(liusheng): In notification about port.update, the id may in"},{"line_number":82,"context_line":"        # message[\u0027payload\u0027]."},{"line_number":83,"context_line":"        res_id \u003d message[\u0027payload\u0027].get(\u0027id\u0027)"},{"line_number":84,"context_line":"        payload \u003d message[\u0027payload\u0027].get(self.resource_name)"},{"line_number":85,"context_line":"        payloads \u003d message[\u0027payload\u0027].get(self.resource_name + \u0027s\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_e9110553","line":82,"updated":"2014-06-04 09:25:37.000000000","message":"\u0027may\u0027 is not a good a reason to pickup the id into the root payload.\n\nI have digged into neutron to find to root cause of the issue, the fact is :\n- update.start have id in the payload\n- update.end/create.end/exists have the id inside the resource in the payload.\n\nI wonder what is useful to keep the update.start notification ?\n- If not the code can be simplified and just drop this event_type\n- If this is needed we must explicitly handled the case of the id of \u0027%s.update.start\u0027","commit_id":"ef54351493a2cd3a95c6e985ac5637f75860a8f4"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"0dca3345fd2a8fe1ca49ae1db3bd3d11a2ae7542","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        unit_value \u003d getattr(self, \u0027unit\u0027, self.resource_name)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # NOTE(liusheng): In notification about port.update, the id may in"},{"line_number":82,"context_line":"        # message[\u0027payload\u0027]."},{"line_number":83,"context_line":"        res_id \u003d message[\u0027payload\u0027].get(\u0027id\u0027)"},{"line_number":84,"context_line":"        payload \u003d message[\u0027payload\u0027].get(self.resource_name)"},{"line_number":85,"context_line":"        payloads \u003d message[\u0027payload\u0027].get(self.resource_name + \u0027s\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_b2ebc6da","line":82,"in_reply_to":"1ae5cdf2_e9110553","updated":"2014-06-05 01:52:47.000000000","message":"thanks for review :), when starting to fix the bug, I have the same confusion as your, I think neutron should keep uniformity of the format of notification.\n\nthe update.start (for floatingip) identify the start of floatingip association, so it seems is necessary (personally)","commit_id":"ef54351493a2cd3a95c6e985ac5637f75860a8f4"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"f633f410eb8412144ab1a670094aa9a679cadd36","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            res_id \u003d message[\u0027payload\u0027].get(\u0027id\u0027)"},{"line_number":88,"context_line":"            # NOTE(liusheng): In %s.update.start notifications, the id is in"},{"line_number":89,"context_line":"            # message[\u0027payload\u0027]."},{"line_number":90,"context_line":"            if not res_id and message[\u0027event_type\u0027].endswith(\u0027update.start\u0027):"},{"line_number":91,"context_line":"                res_id \u003d message[\u0027payload\u0027].get(\u0027id\u0027)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"            yield sample.Sample.from_notification("}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_e04cc878","line":90,"updated":"2014-07-24 21:03:56.000000000","message":"Is this the only notification case where the id is embedded in the payload?","commit_id":"488e6b0bd3162f398e6f8d5c67f399185859903e"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"7f370cb2a203f8b91e8805c17d1368769ab27b39","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            res_id \u003d message[\u0027payload\u0027].get(\u0027id\u0027)"},{"line_number":88,"context_line":"            # NOTE(liusheng): In %s.update.start notifications, the id is in"},{"line_number":89,"context_line":"            # message[\u0027payload\u0027]."},{"line_number":90,"context_line":"            if not res_id and message[\u0027event_type\u0027].endswith(\u0027update.start\u0027):"},{"line_number":91,"context_line":"                res_id \u003d message[\u0027payload\u0027].get(\u0027id\u0027)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"            yield sample.Sample.from_notification("}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_d3722ae2","line":90,"in_reply_to":"baada198_e04cc878","updated":"2014-07-25 11:13:18.000000000","message":"I believe that no: https://github.com/openstack/ceilometer/blob/master/ceilometer/image/notifications.py","commit_id":"488e6b0bd3162f398e6f8d5c67f399185859903e"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"9345304f5d4d6d8ee766d454bf9156913b7cbaae","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            # NOTE(liusheng): In %s.update.start notifications, the id is in"},{"line_number":89,"context_line":"            # message[\u0027payload\u0027]."},{"line_number":90,"context_line":"            if not res_id and message[\u0027event_type\u0027].endswith(\u0027update.start\u0027):"},{"line_number":91,"context_line":"                res_id \u003d message[\u0027payload\u0027].get(\u0027id\u0027)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"            yield sample.Sample.from_notification("},{"line_number":94,"context_line":"                name\u003dcounter_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_4c772ad4","line":91,"updated":"2014-07-28 08:41:22.000000000","message":"The code does nothing, L87 and L91 are identical.\n\nI have rework this part of code to make it clearer: https://review.openstack.org/#/c/109629/1\n\nAnd then on top of the new code you can just add something like that to fix your issue:\n\n        if resource:\n+          # NOTE(liusheng): In %s.update.start notifications, the id is in \n+          # message[\u0027payload\u0027] instead of resource itself. \n+          if message[\u0027event_type\u0027].endswith(\u0027update.start\u0027):\n+              resource[\u0027id\u0027] \u003d message[\u0027payload\u0027][\u0027id\u0027]\n            resources \u003d [resource]\n        else:\n            resources \u003d message[\u0027payload\u0027].get(self.resource_name + \u0027s\u0027)","commit_id":"488e6b0bd3162f398e6f8d5c67f399185859903e"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"f9f850aca1e3d211b68bb18fe3f11126c4a06046","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            # NOTE(liusheng): In %s.update.start notifications, the id is in"},{"line_number":89,"context_line":"            # message[\u0027payload\u0027]."},{"line_number":90,"context_line":"            if not res_id and message[\u0027event_type\u0027].endswith(\u0027update.start\u0027):"},{"line_number":91,"context_line":"                res_id \u003d message[\u0027payload\u0027].get(\u0027id\u0027)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"            yield sample.Sample.from_notification("},{"line_number":94,"context_line":"                name\u003dcounter_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_bf79c6fd","line":91,"in_reply_to":"baada198_4c772ad4","updated":"2014-07-28 08:51:57.000000000","message":"Mehdi Abaakouk, thanks, I have reviewed you code, you are right, I will upload new patch set for this.","commit_id":"488e6b0bd3162f398e6f8d5c67f399185859903e"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d0029be8de54fe89b2624d5279595753fa3f0cf5","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            # NOTE(liusheng): In %s.update.start notifications, the id is in"},{"line_number":89,"context_line":"            # message[\u0027payload\u0027]."},{"line_number":90,"context_line":"            if not res_id and message[\u0027event_type\u0027].endswith(\u0027update.start\u0027):"},{"line_number":91,"context_line":"                res_id \u003d message[\u0027payload\u0027].get(\u0027id\u0027)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"            yield sample.Sample.from_notification("},{"line_number":94,"context_line":"                name\u003dcounter_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_b2cd7432","line":91,"in_reply_to":"baada198_4c772ad4","updated":"2014-07-28 12:46:46.000000000","message":"damn. copy/paste wrong thing :)\n\nlooks good to me.","commit_id":"488e6b0bd3162f398e6f8d5c67f399185859903e"}],"ceilometer/tests/network/test_notifications.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"cd50ee43b616d84cdabbff2a0f95f7f934908fd1","unresolved":false,"context_lines":[{"line_number":391,"context_line":"    u\u0027_context_tenant_id\u0027: None,"},{"line_number":392,"context_line":"    u\u0027payload\u0027: {u\u0027first_update\u0027: 1377176476,"},{"line_number":393,"context_line":"                 u\u0027bytes\u0027: 0,"},{"line_number":394,"context_line":"                 u\u0027label_id\u0027: u\u0027383244a7-e99b-433a-b4a1-d37cf5b17a15\u0027,"},{"line_number":395,"context_line":"                 u\u0027last_update\u0027: 1377177246,"},{"line_number":396,"context_line":"                 u\u0027host\u0027: u\u0027precise64\u0027,"},{"line_number":397,"context_line":"                 u\u0027tenant_id\u0027: u\u0027admin\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_fa62ae3c","line":394,"updated":"2014-06-04 03:48:36.000000000","message":"-1: this change only modify this line comparing to the previous patch set, is there any particular reason for it? although I think the modification may not break the test","commit_id":"ef54351493a2cd3a95c6e985ac5637f75860a8f4"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"8a973fb48cb90d10ce38a8d79b3aab3f0d4a93ea","unresolved":false,"context_lines":[{"line_number":391,"context_line":"    u\u0027_context_tenant_id\u0027: None,"},{"line_number":392,"context_line":"    u\u0027payload\u0027: {u\u0027first_update\u0027: 1377176476,"},{"line_number":393,"context_line":"                 u\u0027bytes\u0027: 0,"},{"line_number":394,"context_line":"                 u\u0027label_id\u0027: u\u0027383244a7-e99b-433a-b4a1-d37cf5b17a15\u0027,"},{"line_number":395,"context_line":"                 u\u0027last_update\u0027: 1377177246,"},{"line_number":396,"context_line":"                 u\u0027host\u0027: u\u0027precise64\u0027,"},{"line_number":397,"context_line":"                 u\u0027tenant_id\u0027: u\u0027admin\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_d8a17595","line":394,"in_reply_to":"1ae5cdf2_955dfd49","updated":"2014-06-04 09:25:37.000000000","message":"Please use \u0027recheck no bug\u0027 instead of modify unrelated code.","commit_id":"ef54351493a2cd3a95c6e985ac5637f75860a8f4"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"0dca3345fd2a8fe1ca49ae1db3bd3d11a2ae7542","unresolved":false,"context_lines":[{"line_number":391,"context_line":"    u\u0027_context_tenant_id\u0027: None,"},{"line_number":392,"context_line":"    u\u0027payload\u0027: {u\u0027first_update\u0027: 1377176476,"},{"line_number":393,"context_line":"                 u\u0027bytes\u0027: 0,"},{"line_number":394,"context_line":"                 u\u0027label_id\u0027: u\u0027383244a7-e99b-433a-b4a1-d37cf5b17a15\u0027,"},{"line_number":395,"context_line":"                 u\u0027last_update\u0027: 1377177246,"},{"line_number":396,"context_line":"                 u\u0027host\u0027: u\u0027precise64\u0027,"},{"line_number":397,"context_line":"                 u\u0027tenant_id\u0027: u\u0027admin\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_d26132aa","line":394,"in_reply_to":"1ae5cdf2_d8a17595","updated":"2014-06-05 01:52:47.000000000","message":"thanks for suggestion","commit_id":"ef54351493a2cd3a95c6e985ac5637f75860a8f4"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"487b27017e90943593131d79e2faddd2cc5ea925","unresolved":false,"context_lines":[{"line_number":391,"context_line":"    u\u0027_context_tenant_id\u0027: None,"},{"line_number":392,"context_line":"    u\u0027payload\u0027: {u\u0027first_update\u0027: 1377176476,"},{"line_number":393,"context_line":"                 u\u0027bytes\u0027: 0,"},{"line_number":394,"context_line":"                 u\u0027label_id\u0027: u\u0027383244a7-e99b-433a-b4a1-d37cf5b17a15\u0027,"},{"line_number":395,"context_line":"                 u\u0027last_update\u0027: 1377177246,"},{"line_number":396,"context_line":"                 u\u0027host\u0027: u\u0027precise64\u0027,"},{"line_number":397,"context_line":"                 u\u0027tenant_id\u0027: u\u0027admin\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_955dfd49","line":394,"in_reply_to":"1ae5cdf2_fa62ae3c","updated":"2014-06-04 04:51:29.000000000","message":"no reason, just for rebase and instead of \"recheck no bug\" ...","commit_id":"ef54351493a2cd3a95c6e985ac5637f75860a8f4"}]}
