)]}'
{"ceilometer/meter/data/meters.yaml":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"248cae401c40fc54eaf6bb37786733cb496c6641","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    type: \u0027gauge\u0027"},{"line_number":195,"context_line":"    unit: \u0027%\u0027"},{"line_number":196,"context_line":"    volume: payload.metrics[?(@.name\u003d\u0027cpu.idle.percent\u0027)].value"},{"line_number":197,"context_line":"    expr: \u0027volume * 100\u0027"},{"line_number":198,"context_line":"    resource_id:"},{"line_number":199,"context_line":"      attributes:"},{"line_number":200,"context_line":"        - payload.host"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa1b9901_bf442d1b","line":197,"updated":"2015-08-18 20:38:19.000000000","message":"can we move expr under volume? so we can visually/logically group the two?","commit_id":"49334d0f3744b206175e0fb192564164cc1b59f1"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"fb4b904f80abfef3e54488be3463b4a082a67569","unresolved":false,"context_lines":[{"line_number":235,"context_line":"    unit: \u0027%\u0027"},{"line_number":236,"context_line":"    volume:"},{"line_number":237,"context_line":"      attribute: payload.metrics[?(@.name\u003d\u0027cpu.percent\u0027)].value"},{"line_number":238,"context_line":"      scale: \u0027volume * 100\u0027"},{"line_number":239,"context_line":"    resource_id:"},{"line_number":240,"context_line":"      attribute:"},{"line_number":241,"context_line":"        - payload.host"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"fa1b9901_ef803e8d","line":238,"updated":"2015-08-20 19:36:43.000000000","message":"i assume this is wrong","commit_id":"fcd8efc7c6fa07f8c94126020d75fd9748d1c426"},{"author":{"_account_id":6924,"name":"Pradeep Kilambi","email":"pkilambi@redhat.com","username":"pkilambi"},"change_message_id":"af496d70e0c6b5cea0a8febdc9a36f64bc7d39c2","unresolved":false,"context_lines":[{"line_number":235,"context_line":"    unit: \u0027%\u0027"},{"line_number":236,"context_line":"    volume:"},{"line_number":237,"context_line":"      attribute: payload.metrics[?(@.name\u003d\u0027cpu.percent\u0027)].value"},{"line_number":238,"context_line":"      scale: \u0027volume * 100\u0027"},{"line_number":239,"context_line":"    resource_id:"},{"line_number":240,"context_line":"      attribute:"},{"line_number":241,"context_line":"        - payload.host"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"fa1b9901_83563904","line":238,"in_reply_to":"fa1b9901_ef803e8d","updated":"2015-08-20 20:09:56.000000000","message":"yea missed one","commit_id":"fcd8efc7c6fa07f8c94126020d75fd9748d1c426"}],"ceilometer/meter/notifications.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"cc29ce37520662a1113282e924ff1429138cd784","unresolved":false,"context_lines":[{"line_number":109,"context_line":"    def _process_expr(self, vol):"},{"line_number":110,"context_line":"        expr \u003d self.expr"},{"line_number":111,"context_line":"        return ((eval(expr, {}) if isinstance(expr, six.string_types)"},{"line_number":112,"context_line":"                 else vol * expr) if expr else vol)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"def get_config_file():"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_496f8292","line":112,"updated":"2015-08-10 12:26:12.000000000","message":"what if volume isn\u0027t the first value? or multiplication?","commit_id":"b5edd92cebf207a3f5d22f5d2fee601f82332102"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"67edcb90a81ffeec6fed8098ebea2bf062da3d6f","unresolved":false,"context_lines":[{"line_number":109,"context_line":"    def _process_expr(self, vol):"},{"line_number":110,"context_line":"        expr \u003d self.expr"},{"line_number":111,"context_line":"        return ((eval(expr, {}) if isinstance(expr, six.string_types)"},{"line_number":112,"context_line":"                 else vol * expr) if expr else vol)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"def get_config_file():"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_58b713f5","line":112,"in_reply_to":"1a4dcd0f_496f8292","updated":"2015-08-11 11:12:03.000000000","message":"Maybe it should be implemented as plugins in events?","commit_id":"b5edd92cebf207a3f5d22f5d2fee601f82332102"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"6c2659daa0e9f8db4666142c73292aef4b73851c","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        if values:"},{"line_number":86,"context_line":"            if not all_values:"},{"line_number":87,"context_line":"                if field \u003d\u003d \u0027volume\u0027 and self.expr:"},{"line_number":88,"context_line":"                    return self._process_expr(values[0])"},{"line_number":89,"context_line":"                return values[0]"},{"line_number":90,"context_line":"            return values"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_7be5d2d9","line":88,"updated":"2015-08-12 19:04:24.000000000","message":"I agree with gordon\u0027s question what if volume is not the first value? or that is impossible case and we have strong order of values in received massages?","commit_id":"e079b7b6c990e1fdf6b7bcf59c9d992ee56c6ff4"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"2dd6be2fbcaaa196503dd4ad44b142a3366ced9a","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            raise MeterDefinitionException("},{"line_number":91,"context_line":"                _LE(\"Parse error in JSONPath specification \""},{"line_number":92,"context_line":"                    \"\u0027%(jsonpath)s\u0027: %(err)s\")"},{"line_number":93,"context_line":"                % dict(jsonpath\u003dparts, err\u003de), self.cfg)"},{"line_number":94,"context_line":"        values \u003d [match.value for match in parts.find(message)"},{"line_number":95,"context_line":"                  if match.value is not None]"},{"line_number":96,"context_line":"        return values"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa1b9901_f4c8fca9","line":93,"updated":"2015-08-21 06:56:38.000000000","message":"Should be fval, parts is not defined here.","commit_id":"7ac88fe15f5c6995823b7b5d3c6f38ad55bb435e"}],"ceilometer/tests/unit/meter/test_notifications.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"248cae401c40fc54eaf6bb37786733cb496c6641","unresolved":false,"context_lines":[{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    def test_expr_meter(self):"},{"line_number":408,"context_line":"        cfg \u003d yaml.dump("},{"line_number":409,"context_line":"            {\u0027metric\u0027: [dict(name\u003d\"payload.metrics.[*].name\","},{"line_number":410,"context_line":"                        event_type\u003d\"compute.metrics.update\","},{"line_number":411,"context_line":"                        type\u003d\u0027gauge\u0027,"},{"line_number":412,"context_line":"                        unit\u003d\"%\","}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_bf718daa","line":409,"updated":"2015-08-18 20:38:19.000000000","message":"this should be pointing to @.name\u003d\u0027cpu.percent\u0027 as well, or a static string","commit_id":"49334d0f3744b206175e0fb192564164cc1b59f1"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"248cae401c40fc54eaf6bb37786733cb496c6641","unresolved":false,"context_lines":[{"line_number":421,"context_line":"        c \u003d list(self.handler.process_notification(METRICS_UPDATE))"},{"line_number":422,"context_line":"        self.assertEqual(1, len(c))"},{"line_number":423,"context_line":"        s1 \u003d c[0].as_dict()"},{"line_number":424,"context_line":"        self.assertEqual(2.7501485834103514, s1[\u0027volume\u0027])"},{"line_number":425,"context_line":"        self.assertEqual(\"tianst_tianst.sh.intel.com\","},{"line_number":426,"context_line":"                         s1[\u0027resource_id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_ff2f053c","line":424,"updated":"2015-08-18 20:38:19.000000000","message":"i\u0027d prefer we check the name as well... and maybe a tests which doesn\u0027t use expr","commit_id":"49334d0f3744b206175e0fb192564164cc1b59f1"}]}
