)]}'
{"ceilometer/identity/notifications.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d87bacc2e9eba300e98f543ac69a0fec44eb488f","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class _Base(plugin.NotificationBase):"},{"line_number":35,"context_line":"    \"\"\"Convert identity notification into Counters.\"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    resource_type \u003d None"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_dec82777","line":35,"updated":"2014-07-28 18:22:49.000000000","message":"s/Counters/Samples","commit_id":"4a1258170e33c44425ba05e7876f126250d093d2"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1d9994899540a2efe1ecf7cd1714fb894a18acc8","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class _Base(plugin.NotificationBase):"},{"line_number":35,"context_line":"    \"\"\"Convert identity notification into Counters.\"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    resource_type \u003d None"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_e162aed7","line":35,"in_reply_to":"baada198_dec82777","updated":"2014-07-28 18:47:55.000000000","message":"Done","commit_id":"4a1258170e33c44425ba05e7876f126250d093d2"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"ed123ab04569abf4dfacaa7a6e7a08b3a196be2e","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def process_notification(self, message):"},{"line_number":51,"context_line":"        yield sample.Sample.from_notification("},{"line_number":52,"context_line":"            name\u003d\u0027identity\u0027,"},{"line_number":53,"context_line":"            type\u003dsample.TYPE_DELTA,"},{"line_number":54,"context_line":"            unit\u003dself.resource_type,"},{"line_number":55,"context_line":"            volume\u003d1,"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_5cbc5fb5","line":52,"updated":"2014-07-25 16:32:11.000000000","message":"I\u0027m not sure if this is the best name, if other ceilometer pros could advise that would be great.\n\nI was thinking of using resource_name, identity.user, for instance.","commit_id":"4a1258170e33c44425ba05e7876f126250d093d2"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d87bacc2e9eba300e98f543ac69a0fec44eb488f","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def process_notification(self, message):"},{"line_number":51,"context_line":"        yield sample.Sample.from_notification("},{"line_number":52,"context_line":"            name\u003d\u0027identity\u0027,"},{"line_number":53,"context_line":"            type\u003dsample.TYPE_DELTA,"},{"line_number":54,"context_line":"            unit\u003dself.resource_type,"},{"line_number":55,"context_line":"            volume\u003d1,"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_9e814ffc","line":52,"updated":"2014-07-28 18:22:49.000000000","message":"i would suggest this be closer to the event_type value. ie. identity.user/group/project.create/update/delete just so it\u0027s easier to group the different notifications","commit_id":"4a1258170e33c44425ba05e7876f126250d093d2"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1d9994899540a2efe1ecf7cd1714fb894a18acc8","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def process_notification(self, message):"},{"line_number":51,"context_line":"        yield sample.Sample.from_notification("},{"line_number":52,"context_line":"            name\u003d\u0027identity\u0027,"},{"line_number":53,"context_line":"            type\u003dsample.TYPE_DELTA,"},{"line_number":54,"context_line":"            unit\u003dself.resource_type,"},{"line_number":55,"context_line":"            volume\u003d1,"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_a16d16cd","line":52,"in_reply_to":"baada198_9e814ffc","updated":"2014-07-28 18:47:55.000000000","message":"ok, it\u0027ll be identity.user/group/project.create/update/delete now","commit_id":"4a1258170e33c44425ba05e7876f126250d093d2"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"ed123ab04569abf4dfacaa7a6e7a08b3a196be2e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            unit\u003dself.resource_type,"},{"line_number":55,"context_line":"            volume\u003d1,"},{"line_number":56,"context_line":"            resource_id\u003dmessage[\u0027payload\u0027][\u0027resource_info\u0027],"},{"line_number":57,"context_line":"            user_id\u003dNone,"},{"line_number":58,"context_line":"            project_id\u003dNone,"},{"line_number":59,"context_line":"            message\u003dmessage)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_dce78fe1","line":57,"updated":"2014-07-25 16:32:11.000000000","message":"currently, in the events we emit in keystone, we do not supply the user_id or project_id, http://docs.openstack.org/developer/keystone/event_notifications.html","commit_id":"4a1258170e33c44425ba05e7876f126250d093d2"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d87bacc2e9eba300e98f543ac69a0fec44eb488f","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    @property"},{"line_number":68,"context_line":"    def event_types(self):"},{"line_number":69,"context_line":"        return ["},{"line_number":70,"context_line":"            \u0027%s.created\u0027 % (self.resource_name),"},{"line_number":71,"context_line":"            \u0027%s.updated\u0027 % (self.resource_name),"},{"line_number":72,"context_line":"            \u0027%s.deleted\u0027 % (self.resource_name)"},{"line_number":73,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_def2e799","line":70,"updated":"2014-07-28 18:22:49.000000000","message":"are there other notifications that isn\u0027t create/update/delete that we\u0027re purposely avoiding? if so we can just make this one line: %s.*","commit_id":"4a1258170e33c44425ba05e7876f126250d093d2"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1d9994899540a2efe1ecf7cd1714fb894a18acc8","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    @property"},{"line_number":68,"context_line":"    def event_types(self):"},{"line_number":69,"context_line":"        return ["},{"line_number":70,"context_line":"            \u0027%s.created\u0027 % (self.resource_name),"},{"line_number":71,"context_line":"            \u0027%s.updated\u0027 % (self.resource_name),"},{"line_number":72,"context_line":"            \u0027%s.deleted\u0027 % (self.resource_name)"},{"line_number":73,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_fe016b07","line":70,"in_reply_to":"baada198_def2e799","updated":"2014-07-28 18:47:55.000000000","message":"no, just those, i will use %s.*","commit_id":"4a1258170e33c44425ba05e7876f126250d093d2"}],"ceilometer/tests/identity/test_notifications.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"01601556f4aca580a86e84611bcd65909f27772c","unresolved":false,"context_lines":[{"line_number":31,"context_line":"GROUP_ID \u003d u\u0027group_id\u0027"},{"line_number":32,"context_line":"TRUST_ID \u003d u\u0027trust_id\u0027"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CONF \u003d cfg.CONF"},{"line_number":35,"context_line":"CONF.set_override(\u0027use_stderr\u0027, True)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"LOG \u003d log.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_963b369b","line":34,"updated":"2014-07-25 15:33:08.000000000","message":"can probably remove this too.","commit_id":"5d7773266f5884dbb863f5d26947feda55a7cbad"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"01601556f4aca580a86e84611bcd65909f27772c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"CONF \u003d cfg.CONF"},{"line_number":35,"context_line":"CONF.set_override(\u0027use_stderr\u0027, True)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def notification_for(resource_type, operation, resource_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_d67cce73","line":37,"updated":"2014-07-25 15:33:08.000000000","message":"get rid of log","commit_id":"5d7773266f5884dbb863f5d26947feda55a7cbad"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"01601556f4aca580a86e84611bcd65909f27772c","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        self.assertEqual(s.user_id, None)"},{"line_number":64,"context_line":"        metadata \u003d s.resource_metadata"},{"line_number":65,"context_line":"        self.assertEqual(metadata.get(\u0027host\u0027),"},{"line_number":66,"context_line":"                         u\u0027identity.node-n5x66lxdy67d\u0027)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _test_operation(self, resource_type, operation, resource_id):"},{"line_number":69,"context_line":"        notif \u003d notification_for(resource_type, operation, resource_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_d6f3ee06","line":66,"updated":"2014-07-25 15:33:08.000000000","message":"nit: swap order here (expected, actual)","commit_id":"5d7773266f5884dbb863f5d26947feda55a7cbad"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"01601556f4aca580a86e84611bcd65909f27772c","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _test_operation(self, resource_type, operation, resource_id):"},{"line_number":69,"context_line":"        notif \u003d notification_for(resource_type, operation, resource_id)"},{"line_number":70,"context_line":"        handler \u003d notifications.User(mock.Mock())"},{"line_number":71,"context_line":"        data \u003d list(handler.process_notification(notif))"},{"line_number":72,"context_line":"        self.assertEqual(len(data), 1)"},{"line_number":73,"context_line":"        self.assertEqual(data[0].resource_id, resource_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_d6576eff","line":70,"updated":"2014-07-25 15:33:08.000000000","message":"i think this should probably pass in notifications.User/Group/etc.","commit_id":"5d7773266f5884dbb863f5d26947feda55a7cbad"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"01601556f4aca580a86e84611bcd65909f27772c","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        notif \u003d notification_for(resource_type, operation, resource_id)"},{"line_number":70,"context_line":"        handler \u003d notifications.User(mock.Mock())"},{"line_number":71,"context_line":"        data \u003d list(handler.process_notification(notif))"},{"line_number":72,"context_line":"        self.assertEqual(len(data), 1)"},{"line_number":73,"context_line":"        self.assertEqual(data[0].resource_id, resource_id)"},{"line_number":74,"context_line":"        self._verify_common_sample(data[0])"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_b6c59a91","line":72,"updated":"2014-07-25 15:33:08.000000000","message":"(nit) swap","commit_id":"5d7773266f5884dbb863f5d26947feda55a7cbad"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"01601556f4aca580a86e84611bcd65909f27772c","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        handler \u003d notifications.User(mock.Mock())"},{"line_number":71,"context_line":"        data \u003d list(handler.process_notification(notif))"},{"line_number":72,"context_line":"        self.assertEqual(len(data), 1)"},{"line_number":73,"context_line":"        self.assertEqual(data[0].resource_id, resource_id)"},{"line_number":74,"context_line":"        self._verify_common_sample(data[0])"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def test_create_user(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_76cf82b3","line":73,"updated":"2014-07-25 15:33:08.000000000","message":"(nit) swap","commit_id":"5d7773266f5884dbb863f5d26947feda55a7cbad"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"a9c69fc036140ca51cf82a0783ae5f63002c95d5","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    }"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class TestNotification(test.BaseTestCase):"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _verify_common_sample(self, s):"},{"line_number":50,"context_line":"        self.assertIsNotNone(s)"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_c277533b","line":47,"updated":"2014-07-29 08:30:20.000000000","message":"Could you please change argument order to (expected, actual) in assertEqual?","commit_id":"12414691b59df4339e741d14ce5535c184ad73e0"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"38620e2f520ff20bc832da452e52f6c82e1d42f0","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    }"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class TestNotification(test.BaseTestCase):"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _verify_common_sample(self, s):"},{"line_number":50,"context_line":"        self.assertIsNotNone(s)"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_be10af01","line":47,"in_reply_to":"baada198_c277533b","updated":"2014-07-29 13:45:40.000000000","message":"oops, thanks","commit_id":"12414691b59df4339e741d14ce5535c184ad73e0"}]}
