)]}'
{"ceilometer/meter/data/meters.yaml":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6f5b0b9a676071cb0676538952cfa371c6c9fdcb","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    project_id: payload.tenant_id"},{"line_number":123,"context_line":"    resource_id: payload.label_id"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"  - name: payload.name"},{"line_number":126,"context_line":"    event_type: \u0027profiler.*\u0027"},{"line_number":127,"context_line":"    type: \u0027gauge\u0027"},{"line_number":128,"context_line":"    unit: \u0027trace\u0027"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"fa1b9901_05b4fcce","line":125,"updated":"2015-08-18 13:44:15.000000000","message":"should this be grouped with below?","commit_id":"25f1cb8f078130c18cf80693d65798c0ce58e1ed"},{"author":{"_account_id":6924,"name":"Pradeep Kilambi","email":"pkilambi@redhat.com","username":"pkilambi"},"change_message_id":"e91ca460e1b8f254e05cf5d888d24f5e64f4c358","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    project_id: payload.tenant_id"},{"line_number":123,"context_line":"    resource_id: payload.label_id"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"  - name: payload.name"},{"line_number":126,"context_line":"    event_type: \u0027profiler.*\u0027"},{"line_number":127,"context_line":"    type: \u0027gauge\u0027"},{"line_number":128,"context_line":"    unit: \u0027trace\u0027"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"fa1b9901_4b2a0580","line":125,"in_reply_to":"fa1b9901_05b4fcce","updated":"2015-08-18 14:05:46.000000000","message":"oh you mean move it to existence meters group? sure makes sense, I\u0027ll do that.","commit_id":"25f1cb8f078130c18cf80693d65798c0ce58e1ed"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6f5b0b9a676071cb0676538952cfa371c6c9fdcb","unresolved":false,"context_lines":[{"line_number":133,"context_line":"      attributes:"},{"line_number":134,"context_line":"        - payload.base_id"},{"line_number":135,"context_line":"      prefix: \u0027profiler-\u0027"},{"line_number":136,"context_line":"    multi: [\u0027name\u0027]"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"# NOTE: non-metric meters are generally events/existence meters"},{"line_number":139,"context_line":"# These are expected to be DEPRECATED in future releases"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"fa1b9901_65c5b83a","line":136,"updated":"2015-08-18 13:44:15.000000000","message":"not sure how name is multiple valued here.","commit_id":"25f1cb8f078130c18cf80693d65798c0ce58e1ed"},{"author":{"_account_id":6924,"name":"Pradeep Kilambi","email":"pkilambi@redhat.com","username":"pkilambi"},"change_message_id":"e91ca460e1b8f254e05cf5d888d24f5e64f4c358","unresolved":false,"context_lines":[{"line_number":133,"context_line":"      attributes:"},{"line_number":134,"context_line":"        - payload.base_id"},{"line_number":135,"context_line":"      prefix: \u0027profiler-\u0027"},{"line_number":136,"context_line":"    multi: [\u0027name\u0027]"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"# NOTE: non-metric meters are generally events/existence meters"},{"line_number":139,"context_line":"# These are expected to be DEPRECATED in future releases"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"fa1b9901_c8213bb6","line":136,"in_reply_to":"fa1b9901_65c5b83a","updated":"2015-08-18 14:05:46.000000000","message":"we could have multiple meters as part of the payload with different names. Though, We can leave this as an empty list and have the same result i think.","commit_id":"25f1cb8f078130c18cf80693d65798c0ce58e1ed"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"43baf7e3c7ca43daf3de43ea9d1ebd68e1db52ad","unresolved":false,"context_lines":[{"line_number":133,"context_line":"      attributes:"},{"line_number":134,"context_line":"        - payload.base_id"},{"line_number":135,"context_line":"      prefix: \u0027profiler-\u0027"},{"line_number":136,"context_line":"    multi: [\u0027name\u0027]"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"# NOTE: non-metric meters are generally events/existence meters"},{"line_number":139,"context_line":"# These are expected to be DEPRECATED in future releases"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"fa1b9901_0bd5edb7","line":136,"in_reply_to":"fa1b9901_c8213bb6","updated":"2015-08-18 14:19:18.000000000","message":"we should remove it i think. unless payload.name is a list itself, this isn\u0027t a multi value attr.","commit_id":"25f1cb8f078130c18cf80693d65798c0ce58e1ed"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"37b5ef36a1fa18e7d7be6311157f9944f167f804","unresolved":false,"context_lines":[{"line_number":755,"context_line":"      attributes:"},{"line_number":756,"context_line":"        - payload.base_id"},{"line_number":757,"context_line":"      prefix: \u0027profiler-\u0027"},{"line_number":758,"context_line":"    multi: []"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"fa1b9901_3fa9fd7b","line":758,"updated":"2015-08-18 20:43:50.000000000","message":"what\u0027s this multi for?","commit_id":"a4ee34f243d6a6dc71cbd3817bc7637f5274b3b9"},{"author":{"_account_id":6924,"name":"Pradeep Kilambi","email":"pkilambi@redhat.com","username":"pkilambi"},"change_message_id":"6e38c2492e5b0d51f129717ac40eb98741e75c1a","unresolved":false,"context_lines":[{"line_number":755,"context_line":"      attributes:"},{"line_number":756,"context_line":"        - payload.base_id"},{"line_number":757,"context_line":"      prefix: \u0027profiler-\u0027"},{"line_number":758,"context_line":"    multi: []"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"fa1b9901_30b9007a","line":758,"in_reply_to":"fa1b9901_3fa9fd7b","updated":"2015-08-19 15:44:25.000000000","message":"because i\u0027m treating this as a multi and use that logic. Other wise we default to  name\u003dd.cfg[\u0027name\u0027] which will end up returning just payload.name. We cant really differentiate between payload.name vs say storage.api.request","commit_id":"a4ee34f243d6a6dc71cbd3817bc7637f5274b3b9"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"01f4135e8270365e603315ebeaa96bd346057088","unresolved":false,"context_lines":[{"line_number":650,"context_line":"    resource_id:"},{"line_number":651,"context_line":"      attributes:"},{"line_number":652,"context_line":"        - payload.base_id"},{"line_number":653,"context_line":"      prefix: \u0027profiler-\u0027"},{"line_number":654,"context_line":"    lookup: [\u0027name\u0027]"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"fa1b9901_96a84479","line":653,"updated":"2015-08-24 13:28:04.000000000","message":"i think we can kill this using jsonpath-rw-ext","commit_id":"0712cc78cefc415c04253214b8247ef0fe3d26cc"}],"ceilometer/meter/notifications.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6f5b0b9a676071cb0676538952cfa371c6c9fdcb","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        if isinstance(fval, six.integer_types):"},{"line_number":77,"context_line":"            return fval"},{"line_number":78,"context_line":"        if isinstance(fval, type({})):"},{"line_number":79,"context_line":"            vals \u003d []"},{"line_number":80,"context_line":"            for val in fval.get(\u0027attributes\u0027):"},{"line_number":81,"context_line":"                vals.append(self.parse_jsonpath(val, message)[0])"},{"line_number":82,"context_line":"            if \u0027separator\u0027 in fval:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_85d7acec","line":79,"updated":"2015-08-18 13:44:15.000000000","message":"should this clause only apply to resource_id?","commit_id":"25f1cb8f078130c18cf80693d65798c0ce58e1ed"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"43baf7e3c7ca43daf3de43ea9d1ebd68e1db52ad","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        if isinstance(fval, six.integer_types):"},{"line_number":77,"context_line":"            return fval"},{"line_number":78,"context_line":"        if isinstance(fval, type({})):"},{"line_number":79,"context_line":"            vals \u003d []"},{"line_number":80,"context_line":"            for val in fval.get(\u0027attributes\u0027):"},{"line_number":81,"context_line":"                vals.append(self.parse_jsonpath(val, message)[0])"},{"line_number":82,"context_line":"            if \u0027separator\u0027 in fval:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_eb83d9ca","line":79,"in_reply_to":"fa1b9901_08ec138e","updated":"2015-08-18 14:19:18.000000000","message":"ah i see.. yeah it seemed specific to resource_id but if you think it\u0027s applicable elsewhere... i wonder if it\u0027s better to have this all contained under a \u0027string_builder\u0027 node? if we want to generalise it","commit_id":"25f1cb8f078130c18cf80693d65798c0ce58e1ed"},{"author":{"_account_id":6924,"name":"Pradeep Kilambi","email":"pkilambi@redhat.com","username":"pkilambi"},"change_message_id":"e91ca460e1b8f254e05cf5d888d24f5e64f4c358","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        if isinstance(fval, six.integer_types):"},{"line_number":77,"context_line":"            return fval"},{"line_number":78,"context_line":"        if isinstance(fval, type({})):"},{"line_number":79,"context_line":"            vals \u003d []"},{"line_number":80,"context_line":"            for val in fval.get(\u0027attributes\u0027):"},{"line_number":81,"context_line":"                vals.append(self.parse_jsonpath(val, message)[0])"},{"line_number":82,"context_line":"            if \u0027separator\u0027 in fval:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_08ec138e","line":79,"in_reply_to":"fa1b9901_85d7acec","updated":"2015-08-18 14:05:46.000000000","message":"i kept it open in case we have to something similar for other fields.","commit_id":"25f1cb8f078130c18cf80693d65798c0ce58e1ed"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6f5b0b9a676071cb0676538952cfa371c6c9fdcb","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                return sep.join(vals)"},{"line_number":85,"context_line":"            if \u0027prefix\u0027 in fval:"},{"line_number":86,"context_line":"                prefix \u003d fval.get(\u0027prefix\u0027)"},{"line_number":87,"context_line":"                return [prefix+v for v in vals][0]"},{"line_number":88,"context_line":"        values \u003d self.parse_jsonpath(fval, message)"},{"line_number":89,"context_line":"        if values:"},{"line_number":90,"context_line":"            if not all_values:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_c53b6437","line":87,"updated":"2015-08-18 13:44:15.000000000","message":"if we have two attributes, this will prefix both of them?","commit_id":"25f1cb8f078130c18cf80693d65798c0ce58e1ed"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"43baf7e3c7ca43daf3de43ea9d1ebd68e1db52ad","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                return sep.join(vals)"},{"line_number":85,"context_line":"            if \u0027prefix\u0027 in fval:"},{"line_number":86,"context_line":"                prefix \u003d fval.get(\u0027prefix\u0027)"},{"line_number":87,"context_line":"                return [prefix+v for v in vals][0]"},{"line_number":88,"context_line":"        values \u003d self.parse_jsonpath(fval, message)"},{"line_number":89,"context_line":"        if values:"},{"line_number":90,"context_line":"            if not all_values:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_6b7829f3","line":87,"in_reply_to":"fa1b9901_6894afe1","updated":"2015-08-18 14:19:18.000000000","message":"why would we prefix both? that seems strange.","commit_id":"25f1cb8f078130c18cf80693d65798c0ce58e1ed"},{"author":{"_account_id":6924,"name":"Pradeep Kilambi","email":"pkilambi@redhat.com","username":"pkilambi"},"change_message_id":"e91ca460e1b8f254e05cf5d888d24f5e64f4c358","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                return sep.join(vals)"},{"line_number":85,"context_line":"            if \u0027prefix\u0027 in fval:"},{"line_number":86,"context_line":"                prefix \u003d fval.get(\u0027prefix\u0027)"},{"line_number":87,"context_line":"                return [prefix+v for v in vals][0]"},{"line_number":88,"context_line":"        values \u003d self.parse_jsonpath(fval, message)"},{"line_number":89,"context_line":"        if values:"},{"line_number":90,"context_line":"            if not all_values:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_6894afe1","line":87,"in_reply_to":"fa1b9901_c53b6437","updated":"2015-08-18 14:05:46.000000000","message":"thats right.","commit_id":"25f1cb8f078130c18cf80693d65798c0ce58e1ed"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"37b5ef36a1fa18e7d7be6311157f9944f167f804","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                        volumes \u003d self._normalise_as_list("},{"line_number":245,"context_line":"                            \u0027volume\u0027, d, notification_body, len(meters))"},{"line_number":246,"context_line":"                        if not isinstance(volumes, type([])):"},{"line_number":247,"context_line":"                            volumes \u003d [volumes]"},{"line_number":248,"context_line":"                        units \u003d self._normalise_as_list("},{"line_number":249,"context_line":"                            \u0027unit\u0027, d, notification_body, len(meters))"},{"line_number":250,"context_line":"                        types \u003d self._normalise_as_list("}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_5fd2b101","line":247,"updated":"2015-08-18 20:43:50.000000000","message":"i don\u0027t quite understand what this is for?","commit_id":"a4ee34f243d6a6dc71cbd3817bc7637f5274b3b9"},{"author":{"_account_id":6924,"name":"Pradeep Kilambi","email":"pkilambi@redhat.com","username":"pkilambi"},"change_message_id":"6e38c2492e5b0d51f129717ac40eb98741e75c1a","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                        volumes \u003d self._normalise_as_list("},{"line_number":245,"context_line":"                            \u0027volume\u0027, d, notification_body, len(meters))"},{"line_number":246,"context_line":"                        if not isinstance(volumes, type([])):"},{"line_number":247,"context_line":"                            volumes \u003d [volumes]"},{"line_number":248,"context_line":"                        units \u003d self._normalise_as_list("},{"line_number":249,"context_line":"                            \u0027unit\u0027, d, notification_body, len(meters))"},{"line_number":250,"context_line":"                        types \u003d self._normalise_as_list("}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_706a18f0","line":247,"in_reply_to":"fa1b9901_5fd2b101","updated":"2015-08-19 15:44:25.000000000","message":"same reason, we\u0027re treating this as multi and volume here is just 1.","commit_id":"a4ee34f243d6a6dc71cbd3817bc7637f5274b3b9"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"53cba8c4bcbc33e5d1528afd4dc5d6cb9778ea43","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        elif value in d.cfg.get(\u0027lookup\u0027) and length !\u003d len(values):"},{"line_number":202,"context_line":"            LOG.warning(\u0027Not all fetched meters contain \"%s\" field\u0027, value)"},{"line_number":203,"context_line":"            raise InvalidPayload"},{"line_number":204,"context_line":"        if not isinstance(values, type([])):"},{"line_number":205,"context_line":"            values \u003d [values]"},{"line_number":206,"context_line":"        return values"},{"line_number":207,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_129ec762","line":204,"updated":"2015-08-21 14:58:37.000000000","message":"(nit) is there a reason you use type([]) and not list? can we use list to remain consistent with other code\n\nyou can probably do it inline:\n\n  return values if isinstance(values, list) else [values]","commit_id":"233f5b618a81997c6983a8a292ceea5ad4c07662"}]}
