)]}'
{"monasca_agent/collector/checks/check.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"725ece0e5badaffb1bf7b2d82349170e6f0a9a15","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        if prettyprint:"},{"line_number":191,"context_line":"            for metric in metrics:"},{"line_number":192,"context_line":"                measurement \u003d metric[\u0027measurement\u0027]"},{"line_number":193,"context_line":"                print(\" Timestamp: {0}\".format(measurement[\u0027timestamp\u0027]))"},{"line_number":194,"context_line":"                print(\" Name:       {0}\".format(measurement[\u0027name\u0027]))"},{"line_number":195,"context_line":"                print(\" Value:      {0}\".format(measurement[\u0027value\u0027]))"},{"line_number":196,"context_line":"                print(\" Dimensions: \", end\u003d\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_0696863e","line":193,"updated":"2016-07-20 20:50:53.000000000","message":"Maybe that\u0027s an odd question and, of course off-topic, but why we have prints here ?","commit_id":"c355c60262b5a77cf2920b91a89f75f9ca12f103"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"cc09b0f902b4a897fb578787ae8d4b509b4944fe","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        if prettyprint:"},{"line_number":191,"context_line":"            for metric in metrics:"},{"line_number":192,"context_line":"                measurement \u003d metric[\u0027measurement\u0027]"},{"line_number":193,"context_line":"                print(\" Timestamp: {0}\".format(measurement[\u0027timestamp\u0027]))"},{"line_number":194,"context_line":"                print(\" Name:       {0}\".format(measurement[\u0027name\u0027]))"},{"line_number":195,"context_line":"                print(\" Value:      {0}\".format(measurement[\u0027value\u0027]))"},{"line_number":196,"context_line":"                print(\" Dimensions: \", end\u003d\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_f2668c4f","line":193,"in_reply_to":"dada55a8_0696863e","updated":"2016-07-20 22:34:22.000000000","message":"You can run the monasca-collector process manually to verify that it\u0027s functioning.  These prints are here to format things nicely for the terminal when you do.  It shouldn\u0027t be hit when you run the Monasca Agent as a daemon.","commit_id":"c355c60262b5a77cf2920b91a89f75f9ca12f103"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"5bf20dde2786fe9570b6aeafd930702aa4951ed8","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        if prettyprint:"},{"line_number":191,"context_line":"            for metric in metrics:"},{"line_number":192,"context_line":"                measurement \u003d metric[\u0027measurement\u0027]"},{"line_number":193,"context_line":"                print(\" Timestamp: {0}\".format(measurement[\u0027timestamp\u0027]))"},{"line_number":194,"context_line":"                print(\" Name:       {0}\".format(measurement[\u0027name\u0027]))"},{"line_number":195,"context_line":"                print(\" Value:      {0}\".format(measurement[\u0027value\u0027]))"},{"line_number":196,"context_line":"                print(\" Dimensions: \", end\u003d\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_ec57a855","line":193,"in_reply_to":"dada55a8_4a4eafc1","updated":"2016-07-21 14:38:17.000000000","message":"When running the collector manually I\u0027m not certain logging is set up properly when we hit this path.  The code to deal with the command line options is quite different from the normal runtime path.  That is something I\u0027d like to fix but that\u0027s going to involve a lot of code I\u0027m not very familiar with so I\u0027d prefer not to do it in this patch set.","commit_id":"c355c60262b5a77cf2920b91a89f75f9ca12f103"},{"author":{"_account_id":14123,"name":"Stefano Canepa","email":"sc@linux.it","username":"sc"},"change_message_id":"a06a9005367f973d01db3a2b28fff28fb434e7ce","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        if prettyprint:"},{"line_number":191,"context_line":"            for metric in metrics:"},{"line_number":192,"context_line":"                measurement \u003d metric[\u0027measurement\u0027]"},{"line_number":193,"context_line":"                print(\" Timestamp: {0}\".format(measurement[\u0027timestamp\u0027]))"},{"line_number":194,"context_line":"                print(\" Name:       {0}\".format(measurement[\u0027name\u0027]))"},{"line_number":195,"context_line":"                print(\" Value:      {0}\".format(measurement[\u0027value\u0027]))"},{"line_number":196,"context_line":"                print(\" Dimensions: \", end\u003d\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_4a4eafc1","line":193,"in_reply_to":"dada55a8_f2668c4f","updated":"2016-07-21 07:46:31.000000000","message":"It may be a stupid question but couldn\u0027t those debug prints be better managed as log lines at debug level?","commit_id":"c355c60262b5a77cf2920b91a89f75f9ca12f103"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"33127492810986eb1d1203e0cf27b64a07c4f63d","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        if prettyprint:"},{"line_number":191,"context_line":"            for metric in metrics:"},{"line_number":192,"context_line":"                measurement \u003d metric[\u0027measurement\u0027]"},{"line_number":193,"context_line":"                print(\" Timestamp: {0}\".format(measurement[\u0027timestamp\u0027]))"},{"line_number":194,"context_line":"                print(\" Name:       {0}\".format(measurement[\u0027name\u0027]))"},{"line_number":195,"context_line":"                print(\" Value:      {0}\".format(measurement[\u0027value\u0027]))"},{"line_number":196,"context_line":"                print(\" Dimensions: \", end\u003d\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_ab00e402","line":193,"in_reply_to":"dada55a8_f2668c4f","updated":"2016-07-21 20:39:17.000000000","message":"That\u0027s good to know. Normally you wouldn\u0027t see something like that. I\u0027d suggest leaving a comment here for the future.","commit_id":"c355c60262b5a77cf2920b91a89f75f9ca12f103"}],"monasca_agent/collector/checks_d/http_metrics.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"f97bd42e46453718b50b9bb7883f52ece185d081","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"                value \u003d current"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"                # everything requires a number, except set"},{"line_number":64,"context_line":"                if metric_type in [\u0027gauge\u0027, \u0027counter\u0027, \u0027histogram\u0027, \u0027rate\u0027]:"},{"line_number":65,"context_line":"                    if not self._valid_number(value, metric_name):"},{"line_number":66,"context_line":"                        self.log.warning(\"Invalid value \u0027{0}\u0027 for metric \u0027{1}\u0027\".format(value, metric_name))"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_00af3d7d","side":"PARENT","line":63,"range":{"start_line":63,"start_character":48,"end_line":63,"end_character":54},"updated":"2016-06-27 11:19:14.000000000","message":"I am not sure if I am reading that correctly, but it looks like set is no longer supported here so this comment should be removed to avoid any confusion.","commit_id":"0c62a9397ef02fff036f1f3ba206181da5189fd8"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"e3b6a085dbc05a3cf6e571dfb9bbaea42d37fd8a","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"                value \u003d current"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"                # everything requires a number, except set"},{"line_number":64,"context_line":"                if metric_type in [\u0027gauge\u0027, \u0027counter\u0027, \u0027histogram\u0027, \u0027rate\u0027]:"},{"line_number":65,"context_line":"                    if not self._valid_number(value, metric_name):"},{"line_number":66,"context_line":"                        self.log.warning(\"Invalid value \u0027{0}\u0027 for metric \u0027{1}\u0027\".format(value, metric_name))"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_1ec66016","side":"PARENT","line":63,"range":{"start_line":63,"start_character":48,"end_line":63,"end_character":54},"in_reply_to":"3aaa91ec_00af3d7d","updated":"2016-06-27 19:15:34.000000000","message":"Done","commit_id":"0c62a9397ef02fff036f1f3ba206181da5189fd8"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"66612955616b8f397b6307d80afb67dae6e69288","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                value \u003d current"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"                # everything requires a number"},{"line_number":62,"context_line":"                if metric_type in [\u0027gauge\u0027, \u0027counter\u0027, \u0027rate\u0027]:"},{"line_number":63,"context_line":"                    if not self._valid_number(value, metric_name):"},{"line_number":64,"context_line":"                        self.log.warning(\"Invalid value \u0027{0}\u0027 for metric \u0027{1}\u0027\".format(value, metric_name))"},{"line_number":65,"context_line":"                        continue"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_24781d8f","line":62,"range":{"start_line":62,"start_character":16,"end_line":62,"end_character":63},"updated":"2016-07-19 22:43:14.000000000","message":"if everything requires a number, why do the conditional validation here? Should be able to validate everything","commit_id":"82d09f41b7484d56fac03562f076cab16267e3f6"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"725ece0e5badaffb1bf7b2d82349170e6f0a9a15","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                value \u003d current"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"                # everything requires a number"},{"line_number":62,"context_line":"                if metric_type in [\u0027gauge\u0027, \u0027counter\u0027, \u0027rate\u0027]:"},{"line_number":63,"context_line":"                    if not self._valid_number(value, metric_name):"},{"line_number":64,"context_line":"                        self.log.warning(\"Invalid value \u0027{0}\u0027 for metric \u0027{1}\u0027\".format(value, metric_name))"},{"line_number":65,"context_line":"                        continue"}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_e67532fa","line":62,"updated":"2016-07-20 20:50:53.000000000","message":"Do we really need that if anymore ? Above you specify that only [gauge, counter, rate] are an option for HTTPMetrics right ? If that\u0027s actually needed, due to reason I cannot see right now, maybe it would be good to put a warning message if metric_type is actually one of [histogram, set] ?","commit_id":"c355c60262b5a77cf2920b91a89f75f9ca12f103"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"b548f30d1c89e462fd063d4507d82b32457330f7","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                value \u003d current"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"                # everything requires a number"},{"line_number":62,"context_line":"                if metric_type in [\u0027gauge\u0027, \u0027counter\u0027, \u0027rate\u0027]:"},{"line_number":63,"context_line":"                    if not self._valid_number(value, metric_name):"},{"line_number":64,"context_line":"                        self.log.warning(\"Invalid value \u0027{0}\u0027 for metric \u0027{1}\u0027\".format(value, metric_name))"},{"line_number":65,"context_line":"                        continue"}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_5258388a","line":62,"in_reply_to":"dada55a8_e67532fa","updated":"2016-07-20 22:34:29.000000000","message":"This actually should probably be inverted to check if the type is something we don\u0027t understand (i.e. not one of [gauge,counter,rate]) because this is user data (the metric whitelist) being validated here. It might actually be good to do that in a separate change as it\u0027s not really related to the topic here.","commit_id":"c355c60262b5a77cf2920b91a89f75f9ca12f103"}],"monasca_agent/common/aggregator.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"f97bd42e46453718b50b9bb7883f52ece185d081","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        hostname_to_post \u003d self.get_hostname_to_post(hostname)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        if \u0027hostname\u0027 not in dimensions and hostname:"},{"line_number":221,"context_line":"            dimensions.update({\u0027hostname\u0027: hostname_to_post})"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        # TODO(joe): Shouldn\u0027t device_name be added to dimensions in the check"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_e036714f","line":220,"range":{"start_line":220,"start_character":44,"end_line":220,"end_character":52},"updated":"2016-06-27 11:19:14.000000000","message":"Shouldn\u0027t that be:\n\n if \u0027hostname\u0027 not in dimensions and hostname_to_post:\n   ...","commit_id":"5c209d53a12e7830e06935a878b7751f4f5a061f"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"e3b6a085dbc05a3cf6e571dfb9bbaea42d37fd8a","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        hostname_to_post \u003d self.get_hostname_to_post(hostname)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        if \u0027hostname\u0027 not in dimensions and hostname:"},{"line_number":221,"context_line":"            dimensions.update({\u0027hostname\u0027: hostname_to_post})"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        # TODO(joe): Shouldn\u0027t device_name be added to dimensions in the check"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_9eda50e8","line":220,"range":{"start_line":220,"start_character":44,"end_line":220,"end_character":52},"in_reply_to":"3aaa91ec_e036714f","updated":"2016-06-27 19:15:34.000000000","message":"Done","commit_id":"5c209d53a12e7830e06935a878b7751f4f5a061f"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"66612955616b8f397b6307d80afb67dae6e69288","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        if device_name:"},{"line_number":223,"context_line":"            dimensions.update({\u0027device\u0027: device_name})"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"        # TODO(joe): Decide if hostname_to_post and device_name are necessary"},{"line_number":226,"context_line":"        #            for the context tuple"},{"line_number":227,"context_line":"        context \u003d (name, tuple(dimensions.items()), delegated_tenant,"},{"line_number":228,"context_line":"                   hostname_to_post, device_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_249f7db5","line":225,"range":{"start_line":225,"start_character":21,"end_line":225,"end_character":27},"updated":"2016-07-19 22:43:14.000000000","message":"they are in the dimensions, so I don\u0027t think they are required for the rest.","commit_id":"82d09f41b7484d56fac03562f076cab16267e3f6"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"2797adf2f1ca5d994a166ca90592268e4b79e07d","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        if device_name:"},{"line_number":223,"context_line":"            dimensions.update({\u0027device\u0027: device_name})"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"        # TODO(joe): Decide if hostname_to_post and device_name are necessary"},{"line_number":226,"context_line":"        #            for the context tuple"},{"line_number":227,"context_line":"        context \u003d (name, tuple(dimensions.items()), delegated_tenant,"},{"line_number":228,"context_line":"                   hostname_to_post, device_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_c4d2e1ff","line":225,"range":{"start_line":225,"start_character":21,"end_line":225,"end_character":27},"in_reply_to":"dada55a8_249f7db5","updated":"2016-07-19 22:56:14.000000000","message":"That\u0027s what I was leaning towards as well.","commit_id":"82d09f41b7484d56fac03562f076cab16267e3f6"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"64cb341f529348ea54d8ee18f1d83e8b1120a314","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        # TODO(joe): Shouldn\u0027t device_name be added to dimensions in the check"},{"line_number":174,"context_line":"        #            plugin?  Why is it special cased through so many layers?"},{"line_number":175,"context_line":"        if device_name:"},{"line_number":176,"context_line":"            dimensions.update({\u0027device\u0027: device_name})"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        # TODO(joe): Decide if hostname_to_post and device_name are necessary"},{"line_number":179,"context_line":"        #            for the context tuple"}],"source_content_type":"text/x-python","patch_set":16,"id":"dada55a8_b80bdc2a","line":176,"range":{"start_line":176,"start_character":12,"end_line":176,"end_character":22},"updated":"2016-07-22 21:59:44.000000000","message":"That is a good question. And it looks like \"device_name\" is being converted to \"device\", why is that?","commit_id":"26be8b2adf1f5ed65a6c3411c6ca97784ecb9ed9"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"5f054474068c47949bfa9dbd427fedd83724e9bd","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        # TODO(joe): Shouldn\u0027t device_name be added to dimensions in the check"},{"line_number":174,"context_line":"        #            plugin?  Why is it special cased through so many layers?"},{"line_number":175,"context_line":"        if device_name:"},{"line_number":176,"context_line":"            dimensions.update({\u0027device\u0027: device_name})"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        # TODO(joe): Decide if hostname_to_post and device_name are necessary"},{"line_number":179,"context_line":"        #            for the context tuple"}],"source_content_type":"text/x-python","patch_set":16,"id":"dada55a8_13cbeb1f","line":176,"range":{"start_line":176,"start_character":12,"end_line":176,"end_character":22},"in_reply_to":"dada55a8_b80bdc2a","updated":"2016-07-22 22:19:15.000000000","message":"It\u0027s used in our network and disk checks but I don\u0027t see any reason it couldn\u0027t be part of the dimensions there.  I\u0027m wondering if it was a way to differentiate metrics before we had dimensions available?","commit_id":"26be8b2adf1f5ed65a6c3411c6ca97784ecb9ed9"}],"monasca_agent/common/metrics.py":[{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"d1968603449bd424d949b88a517567922ed0ba5c","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        raise NotImplementedError()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def flush(self):"},{"line_number":48,"context_line":"        \"\"\"Flush all metrics up to the given timestamp. \"\"\""},{"line_number":49,"context_line":"        raise NotImplementedError()"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"dada55a8_1a93b250","line":48,"range":{"start_line":48,"start_character":39,"end_line":48,"end_character":54},"updated":"2016-07-20 00:20:13.000000000","message":"Edit comment so that it matches the new args","commit_id":"165a0da869a7b0d4e92c330ed6b86819a068cdd1"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"be4f80899136db7fe11160009bcc50f227c8b3cb","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        raise NotImplementedError()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def flush(self):"},{"line_number":48,"context_line":"        \"\"\"Flush all metrics up to the given timestamp. \"\"\""},{"line_number":49,"context_line":"        raise NotImplementedError()"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"dada55a8_6e45cc6e","line":48,"range":{"start_line":48,"start_character":39,"end_line":48,"end_character":54},"in_reply_to":"dada55a8_1a93b250","updated":"2016-07-20 03:40:44.000000000","message":"Good catch.  I don\u0027t trust comments so I hardly ever read them.  I never would have noticed that.","commit_id":"165a0da869a7b0d4e92c330ed6b86819a068cdd1"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"69a0dc82ae8de2f04e7bd9f149137d22199a961c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# (C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP"},{"line_number":2,"context_line":"\"\"\" Metric data types"},{"line_number":3,"context_line":"\"\"\""},{"line_number":4,"context_line":"from collections import namedtuple"},{"line_number":5,"context_line":"import logging"},{"line_number":6,"context_line":"from time import time"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"dada55a8_e3740437","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":34},"updated":"2016-07-20 20:21:16.000000000","message":"namedtuple is not used in metrics.py","commit_id":"1d5da6fc9148fd5e0118410d49a80a4a5f1f6150"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"0e3bac7ea675177d19fd10eada91935e8a4b0937","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# (C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP"},{"line_number":2,"context_line":"\"\"\" Metric data types"},{"line_number":3,"context_line":"\"\"\""},{"line_number":4,"context_line":"from collections import namedtuple"},{"line_number":5,"context_line":"import logging"},{"line_number":6,"context_line":"from time import time"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"dada55a8_03c318ee","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":34},"in_reply_to":"dada55a8_e3740437","updated":"2016-07-20 20:30:10.000000000","message":"Done","commit_id":"1d5da6fc9148fd5e0118410d49a80a4a5f1f6150"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"69a0dc82ae8de2f04e7bd9f149137d22199a961c","unresolved":false,"context_lines":[{"line_number":3,"context_line":"\"\"\""},{"line_number":4,"context_line":"from collections import namedtuple"},{"line_number":5,"context_line":"import logging"},{"line_number":6,"context_line":"from time import time"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"from monasca_agent.common.exceptions import Infinity"},{"line_number":9,"context_line":"from monasca_agent.common.exceptions import UnknownValue"}],"source_content_type":"text/x-python","patch_set":13,"id":"dada55a8_0396783e","line":6,"range":{"start_line":6,"start_character":17,"end_line":6,"end_character":21},"updated":"2016-07-20 20:21:16.000000000","message":"same here","commit_id":"1d5da6fc9148fd5e0118410d49a80a4a5f1f6150"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"0e3bac7ea675177d19fd10eada91935e8a4b0937","unresolved":false,"context_lines":[{"line_number":3,"context_line":"\"\"\""},{"line_number":4,"context_line":"from collections import namedtuple"},{"line_number":5,"context_line":"import logging"},{"line_number":6,"context_line":"from time import time"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"from monasca_agent.common.exceptions import Infinity"},{"line_number":9,"context_line":"from monasca_agent.common.exceptions import UnknownValue"}],"source_content_type":"text/x-python","patch_set":13,"id":"dada55a8_63b49481","line":6,"range":{"start_line":6,"start_character":17,"end_line":6,"end_character":21},"in_reply_to":"dada55a8_0396783e","updated":"2016-07-20 20:30:10.000000000","message":"Done","commit_id":"1d5da6fc9148fd5e0118410d49a80a4a5f1f6150"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"64cb341f529348ea54d8ee18f1d83e8b1120a314","unresolved":false,"context_lines":[{"line_number":49,"context_line":"class Gauge(Metric):"},{"line_number":50,"context_line":"    \"\"\"A metric that tracks a value at particular points in time. \"\"\""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __init__(self, name, dimensions, tenant\u003dNone, value_meta\u003dNone):"},{"line_number":53,"context_line":"        super(Gauge, self).__init__(name, dimensions, tenant)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def sample(self, value, sample_rate, timestamp):"}],"source_content_type":"text/x-python","patch_set":16,"id":"dada55a8_9de36a05","line":52,"range":{"start_line":52,"start_character":54,"end_line":52,"end_character":64},"updated":"2016-07-22 21:59:44.000000000","message":"Was wondering by value_meta wasn\u0027t declared in the base metric class. It is declared for all the derived classes, such as Gauge, Counter and Rate, and it is event initialized in the Metric class, but it isn\u0027t a part of the initializer.","commit_id":"26be8b2adf1f5ed65a6c3411c6ca97784ecb9ed9"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"5f054474068c47949bfa9dbd427fedd83724e9bd","unresolved":false,"context_lines":[{"line_number":49,"context_line":"class Gauge(Metric):"},{"line_number":50,"context_line":"    \"\"\"A metric that tracks a value at particular points in time. \"\"\""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __init__(self, name, dimensions, tenant\u003dNone, value_meta\u003dNone):"},{"line_number":53,"context_line":"        super(Gauge, self).__init__(name, dimensions, tenant)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def sample(self, value, sample_rate, timestamp):"}],"source_content_type":"text/x-python","patch_set":16,"id":"dada55a8_d3ee73b3","line":52,"range":{"start_line":52,"start_character":54,"end_line":52,"end_character":64},"in_reply_to":"dada55a8_9de36a05","updated":"2016-07-22 22:19:15.000000000","message":"You\u0027re right.  I removed it from the initialization when I found the bug with how we were assigning value_meta.","commit_id":"26be8b2adf1f5ed65a6c3411c6ca97784ecb9ed9"}]}
