)]}'
{"doc/source/configuration.rst":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":192,"context_line":"archive policy is turned into a InfluxDB continuous query. These queries"},{"line_number":193,"context_line":"downsample the incoming data as defined in the archive policy definition."},{"line_number":194,"context_line":"Retention policies are also created to match the archive policy definitions."},{"line_number":195,"context_line":"This is done using the downsampling method as described in the InfluxDB `docs`_"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"The InfluxDB driver is not carbonara based and therefore the gnocchi-metricd"},{"line_number":198,"context_line":"process is not required when using this driver."}],"source_content_type":"text/x-rst","patch_set":23,"id":"1a6eadb0_03b1a88f","line":195,"range":{"start_line":195,"start_character":78,"end_line":195,"end_character":79},"updated":"2016-12-13 16:55:42.000000000","message":"missing point at the end of the sentence?","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":192,"context_line":"archive policy is turned into a InfluxDB continuous query. These queries"},{"line_number":193,"context_line":"downsample the incoming data as defined in the archive policy definition."},{"line_number":194,"context_line":"Retention policies are also created to match the archive policy definitions."},{"line_number":195,"context_line":"This is done using the downsampling method as described in the InfluxDB `docs`_"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"The InfluxDB driver is not carbonara based and therefore the gnocchi-metricd"},{"line_number":198,"context_line":"process is not required when using this driver."}],"source_content_type":"text/x-rst","patch_set":23,"id":"1a6eadb0_3dd22ad3","line":195,"range":{"start_line":195,"start_character":78,"end_line":195,"end_character":79},"in_reply_to":"1a6eadb0_03b1a88f","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":194,"context_line":"Retention policies are also created to match the archive policy definitions."},{"line_number":195,"context_line":"This is done using the downsampling method as described in the InfluxDB `docs`_"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"The InfluxDB driver is not carbonara based and therefore the gnocchi-metricd"},{"line_number":198,"context_line":"process is not required when using this driver."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"NOTE: It is recommended to use InfluxDB version 1.0 or greater."}],"source_content_type":"text/x-rst","patch_set":23,"id":"1a6eadb0_63a89c20","line":197,"range":{"start_line":197,"start_character":27,"end_line":197,"end_character":36},"updated":"2016-12-13 16:55:42.000000000","message":"Carbonara","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":194,"context_line":"Retention policies are also created to match the archive policy definitions."},{"line_number":195,"context_line":"This is done using the downsampling method as described in the InfluxDB `docs`_"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"The InfluxDB driver is not carbonara based and therefore the gnocchi-metricd"},{"line_number":198,"context_line":"process is not required when using this driver."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"NOTE: It is recommended to use InfluxDB version 1.0 or greater."}],"source_content_type":"text/x-rst","patch_set":23,"id":"1a6eadb0_8363f819","line":197,"range":{"start_line":197,"start_character":61,"end_line":197,"end_character":76},"updated":"2016-12-13 16:55:42.000000000","message":"`gnocchi-metricd` I\u0027d say","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":194,"context_line":"Retention policies are also created to match the archive policy definitions."},{"line_number":195,"context_line":"This is done using the downsampling method as described in the InfluxDB `docs`_"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"The InfluxDB driver is not carbonara based and therefore the gnocchi-metricd"},{"line_number":198,"context_line":"process is not required when using this driver."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"NOTE: It is recommended to use InfluxDB version 1.0 or greater."}],"source_content_type":"text/x-rst","patch_set":23,"id":"1a6eadb0_9dd7bebe","line":197,"range":{"start_line":197,"start_character":27,"end_line":197,"end_character":36},"in_reply_to":"1a6eadb0_63a89c20","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":194,"context_line":"Retention policies are also created to match the archive policy definitions."},{"line_number":195,"context_line":"This is done using the downsampling method as described in the InfluxDB `docs`_"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"The InfluxDB driver is not carbonara based and therefore the gnocchi-metricd"},{"line_number":198,"context_line":"process is not required when using this driver."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"NOTE: It is recommended to use InfluxDB version 1.0 or greater."}],"source_content_type":"text/x-rst","patch_set":23,"id":"1a6eadb0_7ddca2e4","line":197,"range":{"start_line":197,"start_character":61,"end_line":197,"end_character":76},"in_reply_to":"1a6eadb0_8363f819","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"}],"gnocchi/rest/__init__.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        except indexer.ArchivePolicyAlreadyExists as e:"},{"line_number":333,"context_line":"            abort(409, e)"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        pecan.request.storage.setup_archive_policies()"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"        location \u003d \"/archive_policy/\" + ap.name"},{"line_number":338,"context_line":"        set_resp_location_hdr(location)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_8331380e","line":335,"updated":"2016-12-13 16:55:42.000000000","message":"I find it weird to not have the archive policy passed as an argument.","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        except indexer.ArchivePolicyAlreadyExists as e:"},{"line_number":333,"context_line":"            abort(409, e)"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        pecan.request.storage.setup_archive_policies()"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"        location \u003d \"/archive_policy/\" + ap.name"},{"line_number":338,"context_line":"        set_resp_location_hdr(location)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_dde1369c","line":335,"in_reply_to":"1a6eadb0_8331380e","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1e76f25ae027c494611886cf1e1e3ce9514ecb04","unresolved":false,"context_lines":[{"line_number":278,"context_line":"                self.archive_policy, ap_items)"},{"line_number":279,"context_line":"            pecan.request.storage.setup_archive_policy(ap_result, reset\u003dTrue)"},{"line_number":280,"context_line":"            return ap_result"},{"line_number":281,"context_line":"        except indexer.UnsupportedArchivePolicyChange as e:"},{"line_number":282,"context_line":"            abort(400, e)"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    @pecan.expose()"}],"source_content_type":"text/x-python","patch_set":28,"id":"1a6eadb0_3e119252","line":281,"updated":"2016-12-17 11:27:57.000000000","message":"I got a problem with this big try/except.\n\nThis should only catch the indexer.update_archive_policy() as the storage driver should not raise that.\n\nEven if it did, we would have a rollback problem.","commit_id":"d157d60982e3631fa2abf2c035156a603847f5c7"}],"gnocchi/storage/__init__.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"f7674a0f1ef15b84d511d6238f469f93e1a12794","unresolved":false,"context_lines":[{"line_number":303,"context_line":"    def search_value(metrics, query, from_timestamp\u003dNone,"},{"line_number":304,"context_line":"                     to_timestamp\u003dNone,"},{"line_number":305,"context_line":"                     aggregation\u003d\u0027mean\u0027,"},{"line_number":306,"context_line":"                     granularity\u003dNone):"},{"line_number":307,"context_line":"        \"\"\"Search for an aggregated value that realizes a predicate."},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        :param metrics: The list of metrics to look into."}],"source_content_type":"text/x-python","patch_set":2,"id":"da6895a0_142d4546","line":306,"updated":"2016-10-24 12:27:12.000000000","message":"This does not seem right. It could be ok but it needs to be a in different patch and also change the other drivers I\u0027d say.","commit_id":"9f281209025d4e886fa97d84b38f3146492f8cbc"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"2278073c07b413925fecedb8bf831909c3cba6db","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    def drop_db(self):"},{"line_number":187,"context_line":"        pass"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def setup_archive_policies(self):"},{"line_number":190,"context_line":"        pass"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def setup_archive_policy(self, ap, reset\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_6bda5c7a","line":189,"updated":"2016-12-12 19:53:56.000000000","message":"can you add docstring to explain this","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    def drop_db(self):"},{"line_number":187,"context_line":"        pass"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def setup_archive_policies(self):"},{"line_number":190,"context_line":"        pass"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def setup_archive_policy(self, ap, reset\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_13963ff0","line":189,"in_reply_to":"1a6eadb0_6bda5c7a","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"2278073c07b413925fecedb8bf831909c3cba6db","unresolved":false,"context_lines":[{"line_number":189,"context_line":"    def setup_archive_policies(self):"},{"line_number":190,"context_line":"        pass"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def setup_archive_policy(self, ap, reset\u003dTrue):"},{"line_number":193,"context_line":"        pass"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def process_background_tasks(self, index, metrics, sync\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_0bf3a80b","line":192,"updated":"2016-12-12 19:53:56.000000000","message":"same","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":189,"context_line":"    def setup_archive_policies(self):"},{"line_number":190,"context_line":"        pass"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def setup_archive_policy(self, ap, reset\u003dTrue):"},{"line_number":193,"context_line":"        pass"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def process_background_tasks(self, index, metrics, sync\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_33997b20","line":192,"in_reply_to":"1a6eadb0_0bf3a80b","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"fdfa6d59cac57b5f4c999f16bfefed2d93d2ce58","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    def upgrade(index):"},{"line_number":181,"context_line":"        pass"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def setup_archive_policies(self, index):"},{"line_number":184,"context_line":"        \"\"\"Setup all archive policies on the storage backend."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        Iterates over all archive polices and runs setup_archive_policy on them"}],"source_content_type":"text/x-python","patch_set":26,"id":"1a6eadb0_461edbbb","line":183,"updated":"2016-12-15 13:56:28.000000000","message":"both should be @staticmethod","commit_id":"fcf63cd9d281e8ca3787eed6255c99a316f04d54"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1e76f25ae027c494611886cf1e1e3ce9514ecb04","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    def upgrade(index):"},{"line_number":181,"context_line":"        pass"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def setup_archive_policy(self, ap, reset\u003dFalse):"},{"line_number":184,"context_line":"        \"\"\"Setup the archive policy on the storage backend."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        :param ap: The archive policy to setup"}],"source_content_type":"text/x-python","patch_set":28,"id":"1a6eadb0_e310675b","line":183,"updated":"2016-12-17 11:27:57.000000000","message":"@staticmethod","commit_id":"d157d60982e3631fa2abf2c035156a603847f5c7"}],"gnocchi/storage/influxdb.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"f7674a0f1ef15b84d511d6238f469f93e1a12794","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- encoding: utf-8 -*-"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright © 2015 eNovance"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6895a0_34a5e9b4","line":3,"updated":"2016-10-24 12:27:12.000000000","message":"I guess you can change this :)","commit_id":"9f281209025d4e886fa97d84b38f3146492f8cbc"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"f7674a0f1ef15b84d511d6238f469f93e1a12794","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        self.database \u003d conf.influxdb_database"},{"line_number":93,"context_line":"        self.conf \u003d conf._conf"},{"line_number":94,"context_line":"        self.measurement_prefix \u003d \u0027samples\u0027"},{"line_number":95,"context_line":"        if conf.influxdb_auto_create_db:"},{"line_number":96,"context_line":"            self.create_db()"},{"line_number":97,"context_line":"        self.setup_archive_policies()"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da6895a0_b4e3b904","line":95,"updated":"2016-10-24 12:27:12.000000000","message":"I\u0027d prefer not to have that TBH. I never though it\u0027s a good idea, we don\u0027t do that for PostgreSQL or MySQL neither :)","commit_id":"9f281209025d4e886fa97d84b38f3146492f8cbc"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"f7674a0f1ef15b84d511d6238f469f93e1a12794","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        return []"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"def find_nearest_stable_point(timestamp, granularity, next\u003dFalse):"},{"line_number":502,"context_line":"    \"\"\"Find the timetamp before another one for a particular granularity."},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    e.g. the nearest timestamp for 14:23:45"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6895a0_74b841e6","line":501,"updated":"2016-10-24 12:27:12.000000000","message":"that\u0027s actually called rounding.\n\nI think we have this function in gnocchi.carbonara already","commit_id":"9f281209025d4e886fa97d84b38f3146492f8cbc"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"f7674a0f1ef15b84d511d6238f469f93e1a12794","unresolved":false,"context_lines":[{"line_number":509,"context_line":"    :param next: Whatever to run the next timestamp"},{"line_number":510,"context_line":"                 rather than the previous one"},{"line_number":511,"context_line":"    \"\"\""},{"line_number":512,"context_line":"    seconds \u003d timeutils.delta_seconds(START_EPOCH, timestamp)"},{"line_number":513,"context_line":"    seconds \u003d int(seconds - seconds % granularity)"},{"line_number":514,"context_line":"    stable_point \u003d START_EPOCH + datetime.timedelta(seconds\u003dseconds)"},{"line_number":515,"context_line":"    if next:"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6895a0_14bb85e6","line":512,"updated":"2016-10-24 12:27:12.000000000","message":"We have things for that in gnocchi.utils I think\n\nditto for START EPOCH","commit_id":"9f281209025d4e886fa97d84b38f3146492f8cbc"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"2278073c07b413925fecedb8bf831909c3cba6db","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               default\u003d\u0027root\u0027,"},{"line_number":45,"context_line":"               help\u003d\u0027InfluxDB username\u0027),"},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027influxdb_password\u0027,"},{"line_number":47,"context_line":"               default\u003d\u0027secret\u0027,"},{"line_number":48,"context_line":"               secret\u003dTrue,"},{"line_number":49,"context_line":"               help\u003d\u0027InfluxDB password\u0027),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027influxdb_database\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_eb090cdf","line":47,"updated":"2016-12-12 19:53:56.000000000","message":"i don\u0027t think we need a default password.","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               default\u003d\u0027root\u0027,"},{"line_number":45,"context_line":"               help\u003d\u0027InfluxDB username\u0027),"},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027influxdb_password\u0027,"},{"line_number":47,"context_line":"               default\u003d\u0027secret\u0027,"},{"line_number":48,"context_line":"               secret\u003dTrue,"},{"line_number":49,"context_line":"               help\u003d\u0027InfluxDB password\u0027),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027influxdb_database\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_3de94a81","line":47,"in_reply_to":"1a6eadb0_5dbc5d05","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"2ae91d9b1a5bf68465c17a8cc76b44a523c841a5","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               default\u003d\u0027root\u0027,"},{"line_number":45,"context_line":"               help\u003d\u0027InfluxDB username\u0027),"},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027influxdb_password\u0027,"},{"line_number":47,"context_line":"               default\u003d\u0027secret\u0027,"},{"line_number":48,"context_line":"               secret\u003dTrue,"},{"line_number":49,"context_line":"               help\u003d\u0027InfluxDB password\u0027),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027influxdb_database\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_fa354bf7","line":47,"in_reply_to":"1a6eadb0_eb090cdf","updated":"2016-12-13 01:17:30.000000000","message":"I needed to set the default to a string else influx client would pass None type through to request lib which didn\u0027t like that. Could set it to an empty string instead?","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"5759948b31711964510bb78f7d84bf2baff4d296","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               default\u003d\u0027root\u0027,"},{"line_number":45,"context_line":"               help\u003d\u0027InfluxDB username\u0027),"},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027influxdb_password\u0027,"},{"line_number":47,"context_line":"               default\u003d\u0027secret\u0027,"},{"line_number":48,"context_line":"               secret\u003dTrue,"},{"line_number":49,"context_line":"               help\u003d\u0027InfluxDB password\u0027),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027influxdb_database\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_5dbc5d05","line":47,"in_reply_to":"1a6eadb0_fa354bf7","updated":"2016-12-13 13:49:48.000000000","message":"i see, maybe you can just catch it before passing to client and say conf.influxdb_password or \u0027\u0027","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"2278073c07b413925fecedb8bf831909c3cba6db","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"OPTS \u003d ["},{"line_number":37,"context_line":"    cfg.StrOpt(\u0027influxdb_host\u0027,"},{"line_number":38,"context_line":"               default\u003d\u0027localhost\u0027,"},{"line_number":39,"context_line":"               help\u003d\u0027InfluxDB host\u0027),"},{"line_number":40,"context_line":"    cfg.IntOpt(\u0027influxdb_port\u0027,"},{"line_number":41,"context_line":"               default\u003d8086,"},{"line_number":42,"context_line":"               help\u003d\u0027InfluxDB port\u0027),"},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027influxdb_username\u0027,"},{"line_number":44,"context_line":"               default\u003d\u0027root\u0027,"},{"line_number":45,"context_line":"               help\u003d\u0027InfluxDB username\u0027),"},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027influxdb_password\u0027,"},{"line_number":47,"context_line":"               default\u003d\u0027secret\u0027,"},{"line_number":48,"context_line":"               secret\u003dTrue,"},{"line_number":49,"context_line":"               help\u003d\u0027InfluxDB password\u0027),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027influxdb_database\u0027,"},{"line_number":51,"context_line":"               default\u003d\u0027gnocchi\u0027,"},{"line_number":52,"context_line":"               help\u003d\u0027InfluxDB database\u0027),"},{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027influxdb_block_until_data_ingested\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_ab9c746a","line":51,"range":{"start_line":37,"start_character":0,"end_line":51,"end_character":33},"updated":"2016-12-12 19:53:56.000000000","message":"should we handle this as single option like we do for sql using urlparse, something that parses a string? user:pw@host:port/db?","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"5759948b31711964510bb78f7d84bf2baff4d296","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"OPTS \u003d ["},{"line_number":37,"context_line":"    cfg.StrOpt(\u0027influxdb_host\u0027,"},{"line_number":38,"context_line":"               default\u003d\u0027localhost\u0027,"},{"line_number":39,"context_line":"               help\u003d\u0027InfluxDB host\u0027),"},{"line_number":40,"context_line":"    cfg.IntOpt(\u0027influxdb_port\u0027,"},{"line_number":41,"context_line":"               default\u003d8086,"},{"line_number":42,"context_line":"               help\u003d\u0027InfluxDB port\u0027),"},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027influxdb_username\u0027,"},{"line_number":44,"context_line":"               default\u003d\u0027root\u0027,"},{"line_number":45,"context_line":"               help\u003d\u0027InfluxDB username\u0027),"},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027influxdb_password\u0027,"},{"line_number":47,"context_line":"               default\u003d\u0027secret\u0027,"},{"line_number":48,"context_line":"               secret\u003dTrue,"},{"line_number":49,"context_line":"               help\u003d\u0027InfluxDB password\u0027),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027influxdb_database\u0027,"},{"line_number":51,"context_line":"               default\u003d\u0027gnocchi\u0027,"},{"line_number":52,"context_line":"               help\u003d\u0027InfluxDB database\u0027),"},{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027influxdb_block_until_data_ingested\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_bdf3b109","line":51,"range":{"start_line":37,"start_character":0,"end_line":51,"end_character":33},"in_reply_to":"1a6eadb0_7a221bbb","updated":"2016-12-13 13:49:48.000000000","message":"you can use urlparse https://pymotw.com/2/urlparse/ but i guess it does expect it to be prefix with a scheme \u0027http://\u0027, \u0027abc://\u0027, etc.. so i guess you could add it as influxdb:// scheme but just a minor nit. i\u0027m ok with having it separated too as is if it\u0027s easier.","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"2ae91d9b1a5bf68465c17a8cc76b44a523c841a5","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"OPTS \u003d ["},{"line_number":37,"context_line":"    cfg.StrOpt(\u0027influxdb_host\u0027,"},{"line_number":38,"context_line":"               default\u003d\u0027localhost\u0027,"},{"line_number":39,"context_line":"               help\u003d\u0027InfluxDB host\u0027),"},{"line_number":40,"context_line":"    cfg.IntOpt(\u0027influxdb_port\u0027,"},{"line_number":41,"context_line":"               default\u003d8086,"},{"line_number":42,"context_line":"               help\u003d\u0027InfluxDB port\u0027),"},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027influxdb_username\u0027,"},{"line_number":44,"context_line":"               default\u003d\u0027root\u0027,"},{"line_number":45,"context_line":"               help\u003d\u0027InfluxDB username\u0027),"},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027influxdb_password\u0027,"},{"line_number":47,"context_line":"               default\u003d\u0027secret\u0027,"},{"line_number":48,"context_line":"               secret\u003dTrue,"},{"line_number":49,"context_line":"               help\u003d\u0027InfluxDB password\u0027),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027influxdb_database\u0027,"},{"line_number":51,"context_line":"               default\u003d\u0027gnocchi\u0027,"},{"line_number":52,"context_line":"               help\u003d\u0027InfluxDB database\u0027),"},{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027influxdb_block_until_data_ingested\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_7a221bbb","line":51,"range":{"start_line":37,"start_character":0,"end_line":51,"end_character":33},"in_reply_to":"1a6eadb0_ab9c746a","updated":"2016-12-13 01:17:30.000000000","message":"Yeah could do. Is there any library that can help here to parse these types of strings?","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"2278073c07b413925fecedb8bf831909c3cba6db","unresolved":false,"context_lines":[{"line_number":52,"context_line":"               help\u003d\u0027InfluxDB database\u0027),"},{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027influxdb_block_until_data_ingested\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"},{"line_number":55,"context_line":"                help\u003d\u0027InfluxDB ingests data in asynchroneous ways. \u0027"},{"line_number":56,"context_line":"                \u0027Set to True to wait data are ingested.\u0027),"},{"line_number":57,"context_line":"    cfg.BoolOpt(\u0027influxdb_disable_retention_policies\u0027,"},{"line_number":58,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_4b20404a","line":55,"range":{"start_line":55,"start_character":44,"end_line":55,"end_character":65},"updated":"2016-12-12 19:53:56.000000000","message":"asynchronously.","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":52,"context_line":"               help\u003d\u0027InfluxDB database\u0027),"},{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027influxdb_block_until_data_ingested\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"},{"line_number":55,"context_line":"                help\u003d\u0027InfluxDB ingests data in asynchroneous ways. \u0027"},{"line_number":56,"context_line":"                \u0027Set to True to wait data are ingested.\u0027),"},{"line_number":57,"context_line":"    cfg.BoolOpt(\u0027influxdb_disable_retention_policies\u0027,"},{"line_number":58,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_9dfede36","line":55,"range":{"start_line":55,"start_character":44,"end_line":55,"end_character":65},"in_reply_to":"1a6eadb0_4b20404a","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"2278073c07b413925fecedb8bf831909c3cba6db","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027influxdb_block_until_data_ingested\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"},{"line_number":55,"context_line":"                help\u003d\u0027InfluxDB ingests data in asynchroneous ways. \u0027"},{"line_number":56,"context_line":"                \u0027Set to True to wait data are ingested.\u0027),"},{"line_number":57,"context_line":"    cfg.BoolOpt(\u0027influxdb_disable_retention_policies\u0027,"},{"line_number":58,"context_line":"                default\u003dFalse,"},{"line_number":59,"context_line":"                help\u003d\u0027InfluxDB disable retention policies, \u0027"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_ebd74c21","line":56,"range":{"start_line":56,"start_character":32,"end_line":56,"end_character":54},"updated":"2016-12-12 19:53:56.000000000","message":"wait for data to be ingested","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027influxdb_block_until_data_ingested\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"},{"line_number":55,"context_line":"                help\u003d\u0027InfluxDB ingests data in asynchroneous ways. \u0027"},{"line_number":56,"context_line":"                \u0027Set to True to wait data are ingested.\u0027),"},{"line_number":57,"context_line":"    cfg.BoolOpt(\u0027influxdb_disable_retention_policies\u0027,"},{"line_number":58,"context_line":"                default\u003dFalse,"},{"line_number":59,"context_line":"                help\u003d\u0027InfluxDB disable retention policies, \u0027"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_ddf8564c","line":56,"range":{"start_line":56,"start_character":32,"end_line":56,"end_character":54},"in_reply_to":"1a6eadb0_ebd74c21","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"2278073c07b413925fecedb8bf831909c3cba6db","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":66,"context_line":"START_EPOCH \u003d datetime.datetime(1, 1, 1, tzinfo\u003diso8601.iso8601.UTC)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"CQ_QUERY \u003d \"\"\"CREATE CONTINUOUS QUERY %(measure)s ON \"%(database)s\" BEGIN"},{"line_number":69,"context_line":"SELECT %(aggregation_method)s AS value INTO"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_8b55f8c7","line":66,"range":{"start_line":66,"start_character":0,"end_line":66,"end_character":11},"updated":"2016-12-12 19:53:56.000000000","message":"not used?","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":66,"context_line":"START_EPOCH \u003d datetime.datetime(1, 1, 1, tzinfo\u003diso8601.iso8601.UTC)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"CQ_QUERY \u003d \"\"\"CREATE CONTINUOUS QUERY %(measure)s ON \"%(database)s\" BEGIN"},{"line_number":69,"context_line":"SELECT %(aggregation_method)s AS value INTO"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_fd9512e4","line":66,"range":{"start_line":66,"start_character":0,"end_line":66,"end_character":11},"in_reply_to":"1a6eadb0_8b55f8c7","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":65,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":66,"context_line":"START_EPOCH \u003d datetime.datetime(1, 1, 1, tzinfo\u003diso8601.iso8601.UTC)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"CQ_QUERY \u003d \"\"\"CREATE CONTINUOUS QUERY %(measure)s ON \"%(database)s\" BEGIN"},{"line_number":69,"context_line":"SELECT %(aggregation_method)s AS value INTO"},{"line_number":70,"context_line":"\"%(database)s\".\"%(retention)s\".%(measure)s FROM"},{"line_number":71,"context_line":"\"%(database)s\".\"%(parent_retention)s\".%(parent_measure)s GROUP BY"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_de7303b0","line":68,"updated":"2016-12-13 16:55:42.000000000","message":"Should be a class variable.","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":65,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":66,"context_line":"START_EPOCH \u003d datetime.datetime(1, 1, 1, tzinfo\u003diso8601.iso8601.UTC)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"CQ_QUERY \u003d \"\"\"CREATE CONTINUOUS QUERY %(measure)s ON \"%(database)s\" BEGIN"},{"line_number":69,"context_line":"SELECT %(aggregation_method)s AS value INTO"},{"line_number":70,"context_line":"\"%(database)s\".\"%(retention)s\".%(measure)s FROM"},{"line_number":71,"context_line":"\"%(database)s\".\"%(parent_retention)s\".%(parent_measure)s GROUP BY"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_3da06a43","line":68,"in_reply_to":"1a6eadb0_de7303b0","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"2278073c07b413925fecedb8bf831909c3cba6db","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                                              conf.influxdb_password,"},{"line_number":87,"context_line":"                                              conf.influxdb_database)"},{"line_number":88,"context_line":"        self.database \u003d conf.influxdb_database"},{"line_number":89,"context_line":"        self.conf \u003d conf._conf"},{"line_number":90,"context_line":"        self.measurement_prefix \u003d \u0027samples\u0027"},{"line_number":91,"context_line":"        try:"},{"line_number":92,"context_line":"            # Test if DB exists"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_2b9ea456","line":89,"range":{"start_line":89,"start_character":25,"end_line":89,"end_character":30},"updated":"2016-12-12 19:53:56.000000000","message":"what is _conf? is that some private thing in oslo.config?","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"2ae91d9b1a5bf68465c17a8cc76b44a523c841a5","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                                              conf.influxdb_password,"},{"line_number":87,"context_line":"                                              conf.influxdb_database)"},{"line_number":88,"context_line":"        self.database \u003d conf.influxdb_database"},{"line_number":89,"context_line":"        self.conf \u003d conf._conf"},{"line_number":90,"context_line":"        self.measurement_prefix \u003d \u0027samples\u0027"},{"line_number":91,"context_line":"        try:"},{"line_number":92,"context_line":"            # Test if DB exists"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_3a17c352","line":89,"range":{"start_line":89,"start_character":25,"end_line":89,"end_character":30},"in_reply_to":"1a6eadb0_2b9ea456","updated":"2016-12-13 01:17:30.000000000","message":"Yeah I think I\u0027m doing something wrong here. I could access the config options with the \u0027conf\u0027 object but they were in the \u0027conf._conf\u0027 object. Not sure how this is meant to work","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"5759948b31711964510bb78f7d84bf2baff4d296","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                                              conf.influxdb_password,"},{"line_number":87,"context_line":"                                              conf.influxdb_database)"},{"line_number":88,"context_line":"        self.database \u003d conf.influxdb_database"},{"line_number":89,"context_line":"        self.conf \u003d conf._conf"},{"line_number":90,"context_line":"        self.measurement_prefix \u003d \u0027samples\u0027"},{"line_number":91,"context_line":"        try:"},{"line_number":92,"context_line":"            # Test if DB exists"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_5207ec1b","line":89,"range":{"start_line":89,"start_character":25,"end_line":89,"end_character":30},"in_reply_to":"1a6eadb0_3a17c352","updated":"2016-12-13 13:49:48.000000000","message":"if should just be self.conf \u003d conf (if i understand correctly). alternatively, you could skip this and just pass in conf to setup \u0027setup_archive_policies\u0027 and \u0027setup_archive_policy\u0027","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                                              conf.influxdb_password,"},{"line_number":87,"context_line":"                                              conf.influxdb_database)"},{"line_number":88,"context_line":"        self.database \u003d conf.influxdb_database"},{"line_number":89,"context_line":"        self.conf \u003d conf._conf"},{"line_number":90,"context_line":"        self.measurement_prefix \u003d \u0027samples\u0027"},{"line_number":91,"context_line":"        try:"},{"line_number":92,"context_line":"            # Test if DB exists"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_5e01b3ad","line":89,"range":{"start_line":89,"start_character":25,"end_line":89,"end_character":30},"in_reply_to":"1a6eadb0_5207ec1b","updated":"2016-12-13 16:55:42.000000000","message":"That\u0027s because the \"conf\" object passed is actually \"conf.storage\", so conf._conf is in this case the parent conf, e.g. the global conf.\n\nThe storage driver only gets access to the [storage] configuration, so what you\u0027re doing is that your violating this rule because you want to access the global conf, which is a sign of bad design :p","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"2278073c07b413925fecedb8bf831909c3cba6db","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                                              conf.influxdb_database)"},{"line_number":88,"context_line":"        self.database \u003d conf.influxdb_database"},{"line_number":89,"context_line":"        self.conf \u003d conf._conf"},{"line_number":90,"context_line":"        self.measurement_prefix \u003d \u0027samples\u0027"},{"line_number":91,"context_line":"        try:"},{"line_number":92,"context_line":"            # Test if DB exists"},{"line_number":93,"context_line":"            self.influx.get_list_retention_policies(self.database)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_6badfc30","line":90,"range":{"start_line":90,"start_character":0,"end_line":90,"end_character":43},"updated":"2016-12-12 19:53:56.000000000","message":"make this a class CONST","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                                              conf.influxdb_database)"},{"line_number":88,"context_line":"        self.database \u003d conf.influxdb_database"},{"line_number":89,"context_line":"        self.conf \u003d conf._conf"},{"line_number":90,"context_line":"        self.measurement_prefix \u003d \u0027samples\u0027"},{"line_number":91,"context_line":"        try:"},{"line_number":92,"context_line":"            # Test if DB exists"},{"line_number":93,"context_line":"            self.influx.get_list_retention_policies(self.database)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_5da3664f","line":90,"range":{"start_line":90,"start_character":0,"end_line":90,"end_character":43},"in_reply_to":"1a6eadb0_6badfc30","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        else:"},{"line_number":97,"context_line":"            self.setup_archive_policies()"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def setup_archive_policies(self):"},{"line_number":100,"context_line":"        index \u003d indexer.get_driver(self.conf)"},{"line_number":101,"context_line":"        archive_policies \u003d index.list_archive_policies()"},{"line_number":102,"context_line":"        for ap in archive_policies:"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_1ee57b08","line":99,"updated":"2016-12-13 16:55:42.000000000","message":"i don\u0027t think this should exist but i\u0027m sure you have a good reason? :)","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        else:"},{"line_number":97,"context_line":"            self.setup_archive_policies()"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def setup_archive_policies(self):"},{"line_number":100,"context_line":"        index \u003d indexer.get_driver(self.conf)"},{"line_number":101,"context_line":"        archive_policies \u003d index.list_archive_policies()"},{"line_number":102,"context_line":"        for ap in archive_policies:"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_b808082f","line":99,"in_reply_to":"1a6eadb0_1ee57b08","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            self.setup_archive_policies()"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def setup_archive_policies(self):"},{"line_number":100,"context_line":"        index \u003d indexer.get_driver(self.conf)"},{"line_number":101,"context_line":"        archive_policies \u003d index.list_archive_policies()"},{"line_number":102,"context_line":"        for ap in archive_policies:"},{"line_number":103,"context_line":"            self.setup_archive_policy(ap)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_1e1e5b0c","line":100,"updated":"2016-12-13 16:55:42.000000000","message":"don\u0027t do that. Ask for the indexer as argument","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            self.setup_archive_policies()"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def setup_archive_policies(self):"},{"line_number":100,"context_line":"        index \u003d indexer.get_driver(self.conf)"},{"line_number":101,"context_line":"        archive_policies \u003d index.list_archive_policies()"},{"line_number":102,"context_line":"        for ap in archive_policies:"},{"line_number":103,"context_line":"            self.setup_archive_policy(ap)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_f802800a","line":100,"in_reply_to":"1a6eadb0_1e1e5b0c","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"2278073c07b413925fecedb8bf831909c3cba6db","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                    retention \u003d \u0027INF\u0027"},{"line_number":119,"context_line":"                elif retention \u003c 3600:"},{"line_number":120,"context_line":"                    # Can\u0027t have a retention policy \u003c 1 hour in influxDB"},{"line_number":121,"context_line":"                    retention \u003d 3600"},{"line_number":122,"context_line":"                else:"},{"line_number":123,"context_line":"                    retention \u003d \"%ss\" % retention"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_2bece4c6","line":121,"updated":"2016-12-12 19:53:56.000000000","message":"is this an influx thing? you can pass in int(3600) or \u00273600s\u0027?","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                    retention \u003d \u0027INF\u0027"},{"line_number":119,"context_line":"                elif retention \u003c 3600:"},{"line_number":120,"context_line":"                    # Can\u0027t have a retention policy \u003c 1 hour in influxDB"},{"line_number":121,"context_line":"                    retention \u003d 3600"},{"line_number":122,"context_line":"                else:"},{"line_number":123,"context_line":"                    retention \u003d \"%ss\" % retention"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_9d85feae","line":121,"in_reply_to":"1a6eadb0_2bece4c6","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def create_db(self):"},{"line_number":167,"context_line":"        self.influx.create_database(self.database)"},{"line_number":168,"context_line":"        self.setup_archive_policies()"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def drop_db(self):"},{"line_number":171,"context_line":"        self.influx.drop_database(self.database)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_7e2bcfeb","line":168,"updated":"2016-12-13 16:55:42.000000000","message":"this likely should be in upgrade() IIRC","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def create_db(self):"},{"line_number":167,"context_line":"        self.influx.create_database(self.database)"},{"line_number":168,"context_line":"        self.setup_archive_policies()"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def drop_db(self):"},{"line_number":171,"context_line":"        self.influx.drop_database(self.database)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_33033b0f","line":168,"in_reply_to":"1a6eadb0_7e2bcfeb","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"2278073c07b413925fecedb8bf831909c3cba6db","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                                            replication\u003d1)"},{"line_number":164,"context_line":"        return incoming_rp"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def create_db(self):"},{"line_number":167,"context_line":"        self.influx.create_database(self.database)"},{"line_number":168,"context_line":"        self.setup_archive_policies()"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def drop_db(self):"},{"line_number":171,"context_line":"        self.influx.drop_database(self.database)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def _get_aggregation_method(self, aggregation):"},{"line_number":174,"context_line":"        if aggregation \u003d\u003d \u0027std\u0027:"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_ebcbcc1c","line":171,"range":{"start_line":166,"start_character":0,"end_line":171,"end_character":48},"updated":"2016-12-12 19:53:56.000000000","message":"are these used anywhere aside from tests? maybe just put it in  gnocchi/tests/base.py?","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                                            replication\u003d1)"},{"line_number":164,"context_line":"        return incoming_rp"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def create_db(self):"},{"line_number":167,"context_line":"        self.influx.create_database(self.database)"},{"line_number":168,"context_line":"        self.setup_archive_policies()"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def drop_db(self):"},{"line_number":171,"context_line":"        self.influx.drop_database(self.database)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def _get_aggregation_method(self, aggregation):"},{"line_number":174,"context_line":"        if aggregation \u003d\u003d \u0027std\u0027:"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_dd7db6b2","line":171,"range":{"start_line":166,"start_character":0,"end_line":171,"end_character":48},"in_reply_to":"1a6eadb0_1ef65b8f","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                                            replication\u003d1)"},{"line_number":164,"context_line":"        return incoming_rp"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def create_db(self):"},{"line_number":167,"context_line":"        self.influx.create_database(self.database)"},{"line_number":168,"context_line":"        self.setup_archive_policies()"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def drop_db(self):"},{"line_number":171,"context_line":"        self.influx.drop_database(self.database)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def _get_aggregation_method(self, aggregation):"},{"line_number":174,"context_line":"        if aggregation \u003d\u003d \u0027std\u0027:"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_1ef65b8f","line":171,"range":{"start_line":166,"start_character":0,"end_line":171,"end_character":48},"in_reply_to":"1a6eadb0_5a0c7f42","updated":"2016-12-13 16:55:42.000000000","message":"I\u0027m ok with having that as private method here. Just add an underscore and s/db/database/\n\nOTOH if you can leverage pifpaf to create the database for you, I think it\u0027d be even better.","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"2ae91d9b1a5bf68465c17a8cc76b44a523c841a5","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                                            replication\u003d1)"},{"line_number":164,"context_line":"        return incoming_rp"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def create_db(self):"},{"line_number":167,"context_line":"        self.influx.create_database(self.database)"},{"line_number":168,"context_line":"        self.setup_archive_policies()"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def drop_db(self):"},{"line_number":171,"context_line":"        self.influx.drop_database(self.database)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def _get_aggregation_method(self, aggregation):"},{"line_number":174,"context_line":"        if aggregation \u003d\u003d \u0027std\u0027:"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_5a0c7f42","line":171,"range":{"start_line":166,"start_character":0,"end_line":171,"end_character":48},"in_reply_to":"1a6eadb0_ebcbcc1c","updated":"2016-12-13 01:17:30.000000000","message":"OK will do","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    def drop_db(self):"},{"line_number":171,"context_line":"        self.influx.drop_database(self.database)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def _get_aggregation_method(self, aggregation):"},{"line_number":174,"context_line":"        if aggregation \u003d\u003d \u0027std\u0027:"},{"line_number":175,"context_line":"            return \u0027STDDEV(value)\u0027"},{"line_number":176,"context_line":"        elif aggregation.endswith(\u0027pct\u0027):"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_9e17cba2","line":173,"updated":"2016-12-13 16:55:42.000000000","message":"@staticmethod","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    def drop_db(self):"},{"line_number":171,"context_line":"        self.influx.drop_database(self.database)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def _get_aggregation_method(self, aggregation):"},{"line_number":174,"context_line":"        if aggregation \u003d\u003d \u0027std\u0027:"},{"line_number":175,"context_line":"            return \u0027STDDEV(value)\u0027"},{"line_number":176,"context_line":"        elif aggregation.endswith(\u0027pct\u0027):"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_3d6eaa01","line":173,"in_reply_to":"1a6eadb0_9e17cba2","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":189,"context_line":"    def _sanitize_ap_name(name):"},{"line_number":190,"context_line":"        return name.replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def earliest_time(self, measurement, rp\u003dNone, metrics\u003d[]):"},{"line_number":193,"context_line":"        \"\"\"Find the earliest point for a metric\"\"\""},{"line_number":194,"context_line":"        where \u003d \"\""},{"line_number":195,"context_line":"        if metrics:"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_5518b11d","line":192,"range":{"start_line":192,"start_character":50,"end_line":192,"end_character":60},"updated":"2016-12-13 16:55:42.000000000","message":"Dont put [] in default. If you ever manipulate metrics some day, you\u0027ll change the list of the default value for all future callers.\n\nSo go with None, it\u0027s safer.","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":189,"context_line":"    def _sanitize_ap_name(name):"},{"line_number":190,"context_line":"        return name.replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def earliest_time(self, measurement, rp\u003dNone, metrics\u003d[]):"},{"line_number":193,"context_line":"        \"\"\"Find the earliest point for a metric\"\"\""},{"line_number":194,"context_line":"        where \u003d \"\""},{"line_number":195,"context_line":"        if metrics:"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_550191ad","line":192,"updated":"2016-12-13 16:55:42.000000000","message":"private so prefix with _","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":189,"context_line":"    def _sanitize_ap_name(name):"},{"line_number":190,"context_line":"        return name.replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def earliest_time(self, measurement, rp\u003dNone, metrics\u003d[]):"},{"line_number":193,"context_line":"        \"\"\"Find the earliest point for a metric\"\"\""},{"line_number":194,"context_line":"        where \u003d \"\""},{"line_number":195,"context_line":"        if metrics:"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_1d4e4e96","line":192,"range":{"start_line":192,"start_character":50,"end_line":192,"end_character":60},"in_reply_to":"1a6eadb0_5518b11d","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            return None"},{"line_number":209,"context_line":"        return list(result[measurement])[0][\u0027time\u0027]"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    def backfill_data(self, ap):"},{"line_number":212,"context_line":"        measurement \u003d self._get_ap_measurement(ap)"},{"line_number":213,"context_line":"        rp \u003d self.setup_incoming_rp(ap)"},{"line_number":214,"context_line":"        result \u003d self._query("}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_9e7eebe2","line":211,"updated":"2016-12-13 16:55:42.000000000","message":"add _ since it\u0027s private\n\nalso I don\u0027t understand why this needed to be called in the background process that seems to be unused except in tests.\n\nMaybe you could add a comment to explain what it is?","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            return None"},{"line_number":209,"context_line":"        return list(result[measurement])[0][\u0027time\u0027]"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    def backfill_data(self, ap):"},{"line_number":212,"context_line":"        measurement \u003d self._get_ap_measurement(ap)"},{"line_number":213,"context_line":"        rp \u003d self.setup_incoming_rp(ap)"},{"line_number":214,"context_line":"        result \u003d self._query("}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_6eceaab5","line":211,"in_reply_to":"1a6eadb0_9e7eebe2","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        return str(metric.id)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def _query(self, query):"},{"line_number":247,"context_line":"        LOG.debug(\u0027INFLUX Query %s\u0027 % query)"},{"line_number":248,"context_line":"        result \u003d self.influx.query(query, database\u003dself.database)"},{"line_number":249,"context_line":"        LOG.debug(\u0027INFLUX Result %s\u0027 % result)"},{"line_number":250,"context_line":"        return result"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_1e6bbb1f","line":247,"updated":"2016-12-13 16:55:42.000000000","message":"use , rather than % with LOG","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        return str(metric.id)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def _query(self, query):"},{"line_number":247,"context_line":"        LOG.debug(\u0027INFLUX Query %s\u0027 % query)"},{"line_number":248,"context_line":"        result \u003d self.influx.query(query, database\u003dself.database)"},{"line_number":249,"context_line":"        LOG.debug(\u0027INFLUX Result %s\u0027 % result)"},{"line_number":250,"context_line":"        return result"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_3d45ca6f","line":247,"in_reply_to":"1a6eadb0_1e6bbb1f","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":246,"context_line":"    def _query(self, query):"},{"line_number":247,"context_line":"        LOG.debug(\u0027INFLUX Query %s\u0027 % query)"},{"line_number":248,"context_line":"        result \u003d self.influx.query(query, database\u003dself.database)"},{"line_number":249,"context_line":"        LOG.debug(\u0027INFLUX Result %s\u0027 % result)"},{"line_number":250,"context_line":"        return result"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    @utils.retry"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_5e7533f7","line":249,"updated":"2016-12-13 16:55:42.000000000","message":"ditto","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":246,"context_line":"    def _query(self, query):"},{"line_number":247,"context_line":"        LOG.debug(\u0027INFLUX Query %s\u0027 % query)"},{"line_number":248,"context_line":"        result \u003d self.influx.query(query, database\u003dself.database)"},{"line_number":249,"context_line":"        LOG.debug(\u0027INFLUX Result %s\u0027 % result)"},{"line_number":250,"context_line":"        return result"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    @utils.retry"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_5d48c687","line":249,"in_reply_to":"1a6eadb0_5e7533f7","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"2278073c07b413925fecedb8bf831909c3cba6db","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        # just inserted data. perhaps related:"},{"line_number":258,"context_line":"        # https://github.com/influxdb/influxdb/issues/2450 This is a workaround"},{"line_number":259,"context_line":"        # to wait that data appear in influxdb..."},{"line_number":260,"context_line":"        if not self._block_until_data_ingested:"},{"line_number":261,"context_line":"            return"},{"line_number":262,"context_line":"        try:"},{"line_number":263,"context_line":"            result \u003d self._query(\"SELECT * FROM \\\"%(measurment)s\\\" \""},{"line_number":264,"context_line":"                                 \"WHERE metric_id\u003d\\\"%(metric_id)s\\\" AND \""}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_2625fbaa","line":261,"range":{"start_line":260,"start_character":0,"end_line":261,"end_character":18},"updated":"2016-12-12 19:53:56.000000000","message":"is this solely for testing? if so, we probably don\u0027t need a config option.","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"2ae91d9b1a5bf68465c17a8cc76b44a523c841a5","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        # just inserted data. perhaps related:"},{"line_number":258,"context_line":"        # https://github.com/influxdb/influxdb/issues/2450 This is a workaround"},{"line_number":259,"context_line":"        # to wait that data appear in influxdb..."},{"line_number":260,"context_line":"        if not self._block_until_data_ingested:"},{"line_number":261,"context_line":"            return"},{"line_number":262,"context_line":"        try:"},{"line_number":263,"context_line":"            result \u003d self._query(\"SELECT * FROM \\\"%(measurment)s\\\" \""},{"line_number":264,"context_line":"                                 \"WHERE metric_id\u003d\\\"%(metric_id)s\\\" AND \""}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_ce1d3468","line":261,"range":{"start_line":260,"start_character":0,"end_line":261,"end_character":18},"in_reply_to":"1a6eadb0_2625fbaa","updated":"2016-12-13 01:17:30.000000000","message":"It was from the old driver and I left it here. I might just remove it completely as I don\u0027t think it\u0027s that useful","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"5759948b31711964510bb78f7d84bf2baff4d296","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        # just inserted data. perhaps related:"},{"line_number":258,"context_line":"        # https://github.com/influxdb/influxdb/issues/2450 This is a workaround"},{"line_number":259,"context_line":"        # to wait that data appear in influxdb..."},{"line_number":260,"context_line":"        if not self._block_until_data_ingested:"},{"line_number":261,"context_line":"            return"},{"line_number":262,"context_line":"        try:"},{"line_number":263,"context_line":"            result \u003d self._query(\"SELECT * FROM \\\"%(measurment)s\\\" \""},{"line_number":264,"context_line":"                                 \"WHERE metric_id\u003d\\\"%(metric_id)s\\\" AND \""}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_f2ed588c","line":261,"range":{"start_line":260,"start_character":0,"end_line":261,"end_character":18},"in_reply_to":"1a6eadb0_ce1d3468","updated":"2016-12-13 13:49:48.000000000","message":"i see. yeah, i\u0027m not familiar with original driver so i\u0027m not exactly sure if this is still relevant. not sure who wrote original driver. sileht maybe?","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        # just inserted data. perhaps related:"},{"line_number":258,"context_line":"        # https://github.com/influxdb/influxdb/issues/2450 This is a workaround"},{"line_number":259,"context_line":"        # to wait that data appear in influxdb..."},{"line_number":260,"context_line":"        if not self._block_until_data_ingested:"},{"line_number":261,"context_line":"            return"},{"line_number":262,"context_line":"        try:"},{"line_number":263,"context_line":"            result \u003d self._query(\"SELECT * FROM \\\"%(measurment)s\\\" \""},{"line_number":264,"context_line":"                                 \"WHERE metric_id\u003d\\\"%(metric_id)s\\\" AND \""}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_9d5a5e4f","line":261,"range":{"start_line":260,"start_character":0,"end_line":261,"end_character":18},"in_reply_to":"1a6eadb0_f2ed588c","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"2278073c07b413925fecedb8bf831909c3cba6db","unresolved":false,"context_lines":[{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        return list(results)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def _add_measures(self, aggregation, archive_policy_def,"},{"line_number":507,"context_line":"                      metric, timeserie):"},{"line_number":508,"context_line":"        pass"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"    def _store_metric_measures(self, metric, aggregation, granularity, data):"},{"line_number":511,"context_line":"        pass"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"    def _list_split_keys_for_metric(self, metric, aggregation, granularity,"},{"line_number":514,"context_line":"                                    version\u003dNone):"},{"line_number":515,"context_line":"        pass"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"    def list_metric_with_measures_to_process(self, size, part, full\u003dFalse):"},{"line_number":518,"context_line":"        return []"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"    def measures_report(self, details\u003dTrue):"},{"line_number":521,"context_line":"        report \u003d {\u0027summary\u0027: {\u0027metrics\u0027: 0, \u0027measures\u0027: 0}}"},{"line_number":522,"context_line":"        if details:"},{"line_number":523,"context_line":"            report[\u0027details\u0027] \u003d {}"},{"line_number":524,"context_line":"        return report"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_4b0cc042","line":524,"range":{"start_line":506,"start_character":0,"end_line":524,"end_character":21},"updated":"2016-12-12 19:53:56.000000000","message":"does this crash if you just leave this out? it\u0027d be cleaner to just not have this i think since we don\u0027t use metricd","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"5759948b31711964510bb78f7d84bf2baff4d296","unresolved":false,"context_lines":[{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        return list(results)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def _add_measures(self, aggregation, archive_policy_def,"},{"line_number":507,"context_line":"                      metric, timeserie):"},{"line_number":508,"context_line":"        pass"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"    def _store_metric_measures(self, metric, aggregation, granularity, data):"},{"line_number":511,"context_line":"        pass"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"    def _list_split_keys_for_metric(self, metric, aggregation, granularity,"},{"line_number":514,"context_line":"                                    version\u003dNone):"},{"line_number":515,"context_line":"        pass"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"    def list_metric_with_measures_to_process(self, size, part, full\u003dFalse):"},{"line_number":518,"context_line":"        return []"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"    def measures_report(self, details\u003dTrue):"},{"line_number":521,"context_line":"        report \u003d {\u0027summary\u0027: {\u0027metrics\u0027: 0, \u0027measures\u0027: 0}}"},{"line_number":522,"context_line":"        if details:"},{"line_number":523,"context_line":"            report[\u0027details\u0027] \u003d {}"},{"line_number":524,"context_line":"        return report"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_32d990f4","line":524,"range":{"start_line":506,"start_character":0,"end_line":524,"end_character":21},"in_reply_to":"1a6eadb0_2e04e813","updated":"2016-12-13 13:49:48.000000000","message":"ah, i see. i guess we can just leave it then.","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        return list(results)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def _add_measures(self, aggregation, archive_policy_def,"},{"line_number":507,"context_line":"                      metric, timeserie):"},{"line_number":508,"context_line":"        pass"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"    def _store_metric_measures(self, metric, aggregation, granularity, data):"},{"line_number":511,"context_line":"        pass"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"    def _list_split_keys_for_metric(self, metric, aggregation, granularity,"},{"line_number":514,"context_line":"                                    version\u003dNone):"},{"line_number":515,"context_line":"        pass"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"    def list_metric_with_measures_to_process(self, size, part, full\u003dFalse):"},{"line_number":518,"context_line":"        return []"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"    def measures_report(self, details\u003dTrue):"},{"line_number":521,"context_line":"        report \u003d {\u0027summary\u0027: {\u0027metrics\u0027: 0, \u0027measures\u0027: 0}}"},{"line_number":522,"context_line":"        if details:"},{"line_number":523,"context_line":"            report[\u0027details\u0027] \u003d {}"},{"line_number":524,"context_line":"        return report"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_fcc7e242","line":524,"range":{"start_line":506,"start_character":0,"end_line":524,"end_character":21},"in_reply_to":"1a6eadb0_32d990f4","updated":"2016-12-13 16:55:42.000000000","message":"The first 3 with _ should not be there. Feel free to fix the test in a previous patch. :)\n\nThe list_metric_with_measures_to_process and measures_report are required.","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"2ae91d9b1a5bf68465c17a8cc76b44a523c841a5","unresolved":false,"context_lines":[{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        return list(results)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def _add_measures(self, aggregation, archive_policy_def,"},{"line_number":507,"context_line":"                      metric, timeserie):"},{"line_number":508,"context_line":"        pass"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"    def _store_metric_measures(self, metric, aggregation, granularity, data):"},{"line_number":511,"context_line":"        pass"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"    def _list_split_keys_for_metric(self, metric, aggregation, granularity,"},{"line_number":514,"context_line":"                                    version\u003dNone):"},{"line_number":515,"context_line":"        pass"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"    def list_metric_with_measures_to_process(self, size, part, full\u003dFalse):"},{"line_number":518,"context_line":"        return []"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"    def measures_report(self, details\u003dTrue):"},{"line_number":521,"context_line":"        report \u003d {\u0027summary\u0027: {\u0027metrics\u0027: 0, \u0027measures\u0027: 0}}"},{"line_number":522,"context_line":"        if details:"},{"line_number":523,"context_line":"            report[\u0027details\u0027] \u003d {}"},{"line_number":524,"context_line":"        return report"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_2e04e813","line":524,"range":{"start_line":506,"start_character":0,"end_line":524,"end_character":21},"in_reply_to":"1a6eadb0_4b0cc042","updated":"2016-12-13 01:17:30.000000000","message":"These are here to make the tests pass because some of the tests mock these methods out. They could be added to the base storage class instead? Measures report test I guess could be disabled for influx since it doesn\u0027t make any sense","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        return list(results)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def _add_measures(self, aggregation, archive_policy_def,"},{"line_number":507,"context_line":"                      metric, timeserie):"},{"line_number":508,"context_line":"        pass"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"    def _store_metric_measures(self, metric, aggregation, granularity, data):"},{"line_number":511,"context_line":"        pass"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"    def _list_split_keys_for_metric(self, metric, aggregation, granularity,"},{"line_number":514,"context_line":"                                    version\u003dNone):"},{"line_number":515,"context_line":"        pass"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"    def list_metric_with_measures_to_process(self, size, part, full\u003dFalse):"},{"line_number":518,"context_line":"        return []"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"    def measures_report(self, details\u003dTrue):"},{"line_number":521,"context_line":"        report \u003d {\u0027summary\u0027: {\u0027metrics\u0027: 0, \u0027measures\u0027: 0}}"},{"line_number":522,"context_line":"        if details:"},{"line_number":523,"context_line":"            report[\u0027details\u0027] \u003d {}"},{"line_number":524,"context_line":"        return report"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_1dcbae1f","line":524,"range":{"start_line":506,"start_character":0,"end_line":524,"end_character":21},"in_reply_to":"1a6eadb0_fcc7e242","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"01a8503f78d75d295d0b20f7493678f60a2c7f1b","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    \"%(database)s\".\"%(parent_retention)s\".%(parent_measure)s GROUP BY"},{"line_number":67,"context_line":"    time(%(granularity)ss), metric_id END\"\"\""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    measurement_prefix \u003d \u0027samples\u0027"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def __init__(self, conf):"},{"line_number":72,"context_line":"        if not influxdb:"}],"source_content_type":"text/x-python","patch_set":26,"id":"1a6eadb0_59b315e9","line":69,"range":{"start_line":69,"start_character":26,"end_line":69,"end_character":33},"updated":"2016-12-15 15:25:04.000000000","message":"nit but if samples is not a influxdb thing, can we switch to measures to be inline with other drivers.","commit_id":"fcf63cd9d281e8ca3787eed6255c99a316f04d54"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"fdfa6d59cac57b5f4c999f16bfefed2d93d2ce58","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            # Test if DB exists"},{"line_number":85,"context_line":"            self.influx.get_list_retention_policies(self.database)"},{"line_number":86,"context_line":"        except Exception:"},{"line_number":87,"context_line":"            LOG.warn(\"Coudn\u0027t setup influxDB CQs as DB doesn\u0027t exist\")"},{"line_number":88,"context_line":"        else:"},{"line_number":89,"context_line":"            # NOTE(sorrison) I don\u0027t like this, maybe it should be removed"},{"line_number":90,"context_line":"            #                completely and users need to run gnocchi-upgrade"}],"source_content_type":"text/x-python","patch_set":26,"id":"1a6eadb0_e68527cf","line":87,"range":{"start_line":87,"start_character":36,"end_line":87,"end_character":44},"updated":"2016-12-15 13:56:28.000000000","message":"InfluxDB","commit_id":"fcf63cd9d281e8ca3787eed6255c99a316f04d54"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"01a8503f78d75d295d0b20f7493678f60a2c7f1b","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            LOG.warn(\"Coudn\u0027t setup influxDB CQs as DB doesn\u0027t exist\")"},{"line_number":88,"context_line":"        else:"},{"line_number":89,"context_line":"            # NOTE(sorrison) I don\u0027t like this, maybe it should be removed"},{"line_number":90,"context_line":"            #                completely and users need to run gnocchi-upgrade"},{"line_number":91,"context_line":"            #                on new installations?"},{"line_number":92,"context_line":"            index \u003d indexer.get_driver(conf._conf)"},{"line_number":93,"context_line":"            self.setup_archive_policies(index)"}],"source_content_type":"text/x-python","patch_set":26,"id":"1a6eadb0_1d4620bf","line":90,"updated":"2016-12-15 15:25:04.000000000","message":"i\u0027d prefer this too","commit_id":"fcf63cd9d281e8ca3787eed6255c99a316f04d54"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"fdfa6d59cac57b5f4c999f16bfefed2d93d2ce58","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            #                completely and users need to run gnocchi-upgrade"},{"line_number":91,"context_line":"            #                on new installations?"},{"line_number":92,"context_line":"            index \u003d indexer.get_driver(conf._conf)"},{"line_number":93,"context_line":"            self.setup_archive_policies(index)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def setup_archive_policies(self, index):"},{"line_number":96,"context_line":"        archive_policies \u003d index.list_archive_policies()"}],"source_content_type":"text/x-python","patch_set":26,"id":"1a6eadb0_06b22394","line":93,"updated":"2016-12-15 13:56:28.000000000","message":"Agree with note, creating an indexer here and accessing a private conf object is a no go.\n\nThis should be done when the archive policy is created via the API, that\u0027s it. So if default archive policies are created, it\u0027s done during gnocchi-upgrade and that\u0027s where InfluxDB should get the setup done.","commit_id":"fcf63cd9d281e8ca3787eed6255c99a316f04d54"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"fdfa6d59cac57b5f4c999f16bfefed2d93d2ce58","unresolved":false,"context_lines":[{"line_number":478,"context_line":""},{"line_number":479,"context_line":"        return list(results)"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    def list_metric_with_measures_to_process(self, size, part, full\u003dFalse):"},{"line_number":482,"context_line":"        return []"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    def measures_report(self, details\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":26,"id":"1a6eadb0_667cb7b5","line":481,"updated":"2016-12-15 13:56:28.000000000","message":"should be @staticmethod","commit_id":"fcf63cd9d281e8ca3787eed6255c99a316f04d54"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"fdfa6d59cac57b5f4c999f16bfefed2d93d2ce58","unresolved":false,"context_lines":[{"line_number":481,"context_line":"    def list_metric_with_measures_to_process(self, size, part, full\u003dFalse):"},{"line_number":482,"context_line":"        return []"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    def measures_report(self, details\u003dTrue):"},{"line_number":485,"context_line":"        report \u003d {\u0027summary\u0027: {\u0027metrics\u0027: 0, \u0027measures\u0027: 0}}"},{"line_number":486,"context_line":"        if details:"},{"line_number":487,"context_line":"            report[\u0027details\u0027] \u003d {}"}],"source_content_type":"text/x-python","patch_set":26,"id":"1a6eadb0_c6410b65","line":484,"updated":"2016-12-15 13:56:28.000000000","message":"should be @staticmethod, except if you can report data from InfluxDB but I imagine no :)","commit_id":"fcf63cd9d281e8ca3787eed6255c99a316f04d54"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1e76f25ae027c494611886cf1e1e3ce9514ecb04","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        self.influxdb_disable_retention_policies \u003d \\"},{"line_number":81,"context_line":"            conf.influxdb_disable_retention_policies"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def setup_archive_policy(self, ap, reset\u003dFalse):"},{"line_number":84,"context_line":"        incoming_measure \u003d self._get_incoming_measurement(ap)"},{"line_number":85,"context_line":"        # Set up an archive policy for incoming measures"},{"line_number":86,"context_line":"        incoming_rp \u003d self.setup_incoming_rp(ap)"}],"source_content_type":"text/x-python","patch_set":28,"id":"1a6eadb0_9e28e687","line":83,"updated":"2016-12-17 11:27:57.000000000","message":"I\u0027m surprised that there is nothing to do when deleting an archive policy. Is this something missing?","commit_id":"d157d60982e3631fa2abf2c035156a603847f5c7"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1e76f25ae027c494611886cf1e1e3ce9514ecb04","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                                int(granularity))"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    @staticmethod"},{"line_number":177,"context_line":"    def _sanitize_ap_name(name):"},{"line_number":178,"context_line":"        return name.replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def _earliest_time(self, measurement, rp\u003dNone, metrics\u003dNone):"}],"source_content_type":"text/x-python","patch_set":28,"id":"1a6eadb0_fe21da9e","line":177,"updated":"2016-12-17 11:27:57.000000000","message":"This looks fragile.","commit_id":"d157d60982e3631fa2abf2c035156a603847f5c7"}],"gnocchi/tests/base.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":272,"context_line":"            self.conf.set_override(\u0027ceph_pool\u0027, pool_name, \u0027storage\u0027)"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        if self.conf.storage.driver \u003d\u003d \u0027influxdb\u0027:"},{"line_number":275,"context_line":"            db_name \u003d \u0027gnocchitest%s\u0027 % uuid.uuid4().hex"},{"line_number":276,"context_line":"            self.conf.set_override(\u0027influxdb_database\u0027,"},{"line_number":277,"context_line":"                                   db_name,"},{"line_number":278,"context_line":"                                   \u0027storage\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_7c1752a3","line":275,"updated":"2016-12-13 16:55:42.000000000","message":"Do you really need a new database for each test?","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":272,"context_line":"            self.conf.set_override(\u0027ceph_pool\u0027, pool_name, \u0027storage\u0027)"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        if self.conf.storage.driver \u003d\u003d \u0027influxdb\u0027:"},{"line_number":275,"context_line":"            db_name \u003d \u0027gnocchitest%s\u0027 % uuid.uuid4().hex"},{"line_number":276,"context_line":"            self.conf.set_override(\u0027influxdb_database\u0027,"},{"line_number":277,"context_line":"                                   db_name,"},{"line_number":278,"context_line":"                                   \u0027storage\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_580a9422","line":275,"in_reply_to":"1a6eadb0_7c1752a3","updated":"2016-12-14 00:42:52.000000000","message":"This is for performance reasons and also because different tests have different archive polices and therefore continuous queries and they could conflict etc.","commit_id":"f24e9909005df22dc0461949cd007918d831c580"}],"gnocchi/tests/test_rest.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":1642,"context_line":""},{"line_number":1643,"context_line":"    def test_get_res_named_metric_measure_aggregation_nooverlap(self):"},{"line_number":1644,"context_line":"        if self.conf.storage.driver \u003d\u003d \u0027influxdb\u0027:"},{"line_number":1645,"context_line":"            self.skipTest(\"Influxdb driver doesn\u0027t currently handle overlap\")"},{"line_number":1646,"context_line":"        result \u003d self.app.post_json(\"/v1/metric\","},{"line_number":1647,"context_line":"                                    params\u003d{\"archive_policy_name\": \"medium\"})"},{"line_number":1648,"context_line":"        metric1 \u003d json.loads(result.text)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_3c1ebaba","line":1645,"updated":"2016-12-13 16:55:42.000000000","message":"Best thing would be to have it raise NotImplementedError so it\u0027d be skip I think? Though not sure since it\u0027s on the API side here.\n\nNot a big deal","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1e76f25ae027c494611886cf1e1e3ce9514ecb04","unresolved":false,"context_lines":[{"line_number":388,"context_line":"                status\u003d403)"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"    def test_add_measures_back_window(self):"},{"line_number":391,"context_line":"        if self.conf.storage.driver \u003d\u003d \u0027influxdb\u0027:"},{"line_number":392,"context_line":"            self.skipTest(\"Influxdb driver handles retention differently\")"},{"line_number":393,"context_line":"        ap_name \u003d str(uuid.uuid4())"},{"line_number":394,"context_line":"        with self.app.use_admin_user():"}],"source_content_type":"text/x-python","patch_set":28,"id":"1a6eadb0_430afb26","line":391,"updated":"2016-12-17 11:27:57.000000000","message":"should check for instance of the driver to be carbonara based, but no big deal","commit_id":"d157d60982e3631fa2abf2c035156a603847f5c7"}],"gnocchi/tests/test_statsd.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.conf.set_override(\"archive_policy_name\","},{"line_number":43,"context_line":"                               self.STATSD_ARCHIVE_POLICY_NAME, \"statsd\")"},{"line_number":44,"context_line":"        if self.conf.storage.driver \u003d\u003d \u0027influxdb\u0027:"},{"line_number":45,"context_line":"            self.skipTest(\"Influxdb driver doesn\u0027t work with statsd tests\")"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # NOTE(jd) Always use self.stats.storage and self.stats.indexer to"},{"line_number":48,"context_line":"        # pick at the right storage/indexer used by the statsd server, and not"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_bc880ae9","line":45,"updated":"2016-12-13 16:55:42.000000000","message":"That\u0027s sad. Why? :)","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.conf.set_override(\"archive_policy_name\","},{"line_number":43,"context_line":"                               self.STATSD_ARCHIVE_POLICY_NAME, \"statsd\")"},{"line_number":44,"context_line":"        if self.conf.storage.driver \u003d\u003d \u0027influxdb\u0027:"},{"line_number":45,"context_line":"            self.skipTest(\"Influxdb driver doesn\u0027t work with statsd tests\")"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # NOTE(jd) Always use self.stats.storage and self.stats.indexer to"},{"line_number":48,"context_line":"        # pick at the right storage/indexer used by the statsd server, and not"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_09bd3068","line":45,"in_reply_to":"1a6eadb0_bc880ae9","updated":"2016-12-14 00:42:52.000000000","message":"OK had a look into why it\u0027s not working with statsd\n\nI get the following error when statsd flush calls add_measures\n\n\"Parent instance \u003cMetric at 0x7fcc93e0f3d0\u003e is not bound to a Session; lazy load operation of attribute \u0027archive_policy\u0027 cannot proceed\"\n\nI think this is because from statsd it gets a newly create Metric object which is different from a Metric object retrieved from the DB? I\u0027m no sqlchemy  expert here","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.conf.set_override(\"archive_policy_name\","},{"line_number":43,"context_line":"                               self.STATSD_ARCHIVE_POLICY_NAME, \"statsd\")"},{"line_number":44,"context_line":"        if self.conf.storage.driver \u003d\u003d \u0027influxdb\u0027:"},{"line_number":45,"context_line":"            self.skipTest(\"Influxdb driver doesn\u0027t work with statsd tests\")"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # NOTE(jd) Always use self.stats.storage and self.stats.indexer to"},{"line_number":48,"context_line":"        # pick at the right storage/indexer used by the statsd server, and not"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_89b14092","line":45,"in_reply_to":"1a6eadb0_bc880ae9","updated":"2016-12-14 00:42:52.000000000","message":"OK had a look into why it\u0027s not working with statsd\n\nI get the following error when statsd flush calls add_measures\n\n\"Parent instance \u003cMetric at 0x7fcc93e0f3d0\u003e is not bound to a Session; lazy load operation of attribute \u0027archive_policy\u0027 cannot proceed\"\n\nI think this is because from statsd it gets a newly create Metric object which is different from a Metric object retrieved from the DB? I\u0027m no sqlchemy  expert here","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.conf.set_override(\"archive_policy_name\","},{"line_number":43,"context_line":"                               self.STATSD_ARCHIVE_POLICY_NAME, \"statsd\")"},{"line_number":44,"context_line":"        if self.conf.storage.driver \u003d\u003d \u0027influxdb\u0027:"},{"line_number":45,"context_line":"            self.skipTest(\"Influxdb driver doesn\u0027t work with statsd tests\")"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # NOTE(jd) Always use self.stats.storage and self.stats.indexer to"},{"line_number":48,"context_line":"        # pick at the right storage/indexer used by the statsd server, and not"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_a9851cae","line":45,"in_reply_to":"1a6eadb0_bc880ae9","updated":"2016-12-14 00:42:52.000000000","message":"OK had a look into why it\u0027s not working with statsd\n\nI get the following error when statsd flush calls add_measures\n\n\"Parent instance \u003cMetric at 0x7fcc93e0f3d0\u003e is not bound to a Session; lazy load operation of attribute \u0027archive_policy\u0027 cannot proceed\"\n\nI think this is because from statsd it gets a newly create Metric object which is different from a Metric object retrieved from the DB? I\u0027m no sqlchemy  expert here","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.conf.set_override(\"archive_policy_name\","},{"line_number":43,"context_line":"                               self.STATSD_ARCHIVE_POLICY_NAME, \"statsd\")"},{"line_number":44,"context_line":"        if self.conf.storage.driver \u003d\u003d \u0027influxdb\u0027:"},{"line_number":45,"context_line":"            self.skipTest(\"Influxdb driver doesn\u0027t work with statsd tests\")"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # NOTE(jd) Always use self.stats.storage and self.stats.indexer to"},{"line_number":48,"context_line":"        # pick at the right storage/indexer used by the statsd server, and not"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_a9fefc35","line":45,"in_reply_to":"1a6eadb0_bc880ae9","updated":"2016-12-14 00:42:52.000000000","message":"OK had a look into why it\u0027s not working with statsd\n\nI get the following error when statsd flush calls add_measures\n\n\"Parent instance \u003cMetric at 0x7fcc93e0f3d0\u003e is not bound to a Session; lazy load operation of attribute \u0027archive_policy\u0027 cannot proceed\"\n\nI think this is because from statsd it gets a newly create Metric object which is different from a Metric object retrieved from the DB? I\u0027m no sqlchemy  expert here","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.conf.set_override(\"archive_policy_name\","},{"line_number":43,"context_line":"                               self.STATSD_ARCHIVE_POLICY_NAME, \"statsd\")"},{"line_number":44,"context_line":"        if self.conf.storage.driver \u003d\u003d \u0027influxdb\u0027:"},{"line_number":45,"context_line":"            self.skipTest(\"Influxdb driver doesn\u0027t work with statsd tests\")"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # NOTE(jd) Always use self.stats.storage and self.stats.indexer to"},{"line_number":48,"context_line":"        # pick at the right storage/indexer used by the statsd server, and not"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_c99418e4","line":45,"in_reply_to":"1a6eadb0_bc880ae9","updated":"2016-12-14 00:42:52.000000000","message":"OK had a look into why it\u0027s not working with statsd\n\nI get the following error when statsd flush calls add_measures\n\n\"Parent instance \u003cMetric at 0x7fcc93e0f3d0\u003e is not bound to a Session; lazy load operation of attribute \u0027archive_policy\u0027 cannot proceed\"\n\nI think this is because from statsd it gets a newly create Metric object which is different from a Metric object retrieved from the DB? I\u0027m no sqlchemy  expert here","commit_id":"f24e9909005df22dc0461949cd007918d831c580"}],"gnocchi/tests/test_storage.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            self.skipTest("},{"line_number":87,"context_line":"                \"This test does not work with S3 as backend as the S3 driver \""},{"line_number":88,"context_line":"                \"has no fake client, and tests run in parallel.\")"},{"line_number":89,"context_line":"        if self.conf.storage.driver \u003d\u003d \"influxdb\":"},{"line_number":90,"context_line":"            self.skipTest(\"This test does not work with the influxdb driver \""},{"line_number":91,"context_line":"                          \" as it is not based on Carbonara\")"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_dc54e655","line":89,"updated":"2016-12-13 16:55:42.000000000","message":"Can you rather check that the self.storage isinstance of Carbonara based driver?\n\nnot a big deal though","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            self.skipTest("},{"line_number":87,"context_line":"                \"This test does not work with S3 as backend as the S3 driver \""},{"line_number":88,"context_line":"                \"has no fake client, and tests run in parallel.\")"},{"line_number":89,"context_line":"        if self.conf.storage.driver \u003d\u003d \"influxdb\":"},{"line_number":90,"context_line":"            self.skipTest(\"This test does not work with the influxdb driver \""},{"line_number":91,"context_line":"                          \" as it is not based on Carbonara\")"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1a6eadb0_cd92634b","line":89,"in_reply_to":"1a6eadb0_dc54e655","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"}],"releasenotes/notes/influxdb-driver-dd1ab3f090f7f31d.yaml":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - New storage driver for InfluxDB."},{"line_number":4,"context_line":"    This new driver works differently than other drivers as it doesn\u0027t"},{"line_number":5,"context_line":"    use carbonara."}],"source_content_type":"text/x-yaml","patch_set":23,"id":"1a6eadb0_3c4cfac6","line":5,"range":{"start_line":5,"start_character":8,"end_line":5,"end_character":17},"updated":"2016-12-13 16:55:42.000000000","message":"Carbonara","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - New storage driver for InfluxDB."},{"line_number":4,"context_line":"    This new driver works differently than other drivers as it doesn\u0027t"},{"line_number":5,"context_line":"    use carbonara."}],"source_content_type":"text/x-yaml","patch_set":23,"id":"1a6eadb0_d835c4da","line":5,"range":{"start_line":5,"start_character":8,"end_line":5,"end_character":17},"in_reply_to":"1a6eadb0_3c4cfac6","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"}],"run-tests.sh":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":2,"context_line":"set -e"},{"line_number":3,"context_line":"GNOCCHI_TEST_STORAGE_DRIVERS\u003d${GNOCCHI_TEST_STORAGE_DRIVERS:-file}"},{"line_number":4,"context_line":"GNOCCHI_TEST_INDEXER_DRIVERS\u003d${GNOCCHI_TEST_INDEXER_DRIVERS:-postgresql}"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"for storage in ${GNOCCHI_TEST_STORAGE_DRIVERS}"},{"line_number":7,"context_line":"do"},{"line_number":8,"context_line":"    export GNOCCHI_TEST_STORAGE_DRIVER\u003d$storage"}],"source_content_type":"text/x-sh","patch_set":23,"id":"1a6eadb0_7cccb235","line":5,"updated":"2016-12-13 16:55:42.000000000","message":":)","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":2,"context_line":"set -e"},{"line_number":3,"context_line":"GNOCCHI_TEST_STORAGE_DRIVERS\u003d${GNOCCHI_TEST_STORAGE_DRIVERS:-file}"},{"line_number":4,"context_line":"GNOCCHI_TEST_INDEXER_DRIVERS\u003d${GNOCCHI_TEST_INDEXER_DRIVERS:-postgresql}"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"for storage in ${GNOCCHI_TEST_STORAGE_DRIVERS}"},{"line_number":7,"context_line":"do"},{"line_number":8,"context_line":"    export GNOCCHI_TEST_STORAGE_DRIVER\u003d$storage"}],"source_content_type":"text/x-sh","patch_set":23,"id":"1a6eadb0_d84ce472","line":5,"in_reply_to":"1a6eadb0_7cccb235","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"}],"setup.cfg":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    cradox\u003e\u003d1.0.9"},{"line_number":53,"context_line":"influxdb \u003d"},{"line_number":54,"context_line":"    influxdb"},{"line_number":55,"context_line":"    lz4"},{"line_number":56,"context_line":"ceph_alternative_lib \u003d"},{"line_number":57,"context_line":"    python-rados\u003e\u003d10.1.0 # not available on pypi"},{"line_number":58,"context_line":"file \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":23,"id":"1a6eadb0_dcdb06ec","line":55,"updated":"2016-12-13 16:55:42.000000000","message":"hum why is lz4 needed?","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    cradox\u003e\u003d1.0.9"},{"line_number":53,"context_line":"influxdb \u003d"},{"line_number":54,"context_line":"    influxdb"},{"line_number":55,"context_line":"    lz4"},{"line_number":56,"context_line":"ceph_alternative_lib \u003d"},{"line_number":57,"context_line":"    python-rados\u003e\u003d10.1.0 # not available on pypi"},{"line_number":58,"context_line":"file \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":23,"id":"1a6eadb0_18de5c11","line":55,"in_reply_to":"1a6eadb0_dcdb06ec","updated":"2016-12-14 00:42:52.000000000","message":"Because without it I get \n\n  File \"/home/sam/projects/gnocchi/gnocchi/opts.py\", line 23, in \u003cmodule\u003e\n    import gnocchi.storage.ceph\n  File \"/home/sam/projects/gnocchi/gnocchi/storage/ceph.py\", line 29, in \u003cmodule\u003e\n    from gnocchi.storage import _carbonara\n  File \"/home/sam/projects/gnocchi/gnocchi/storage/_carbonara.py\", line 33, in \u003cmodule\u003e\n    from gnocchi import carbonara\n  File \"/home/sam/projects/gnocchi/gnocchi/carbonara.py\", line 30, in \u003cmodule\u003e\n    import lz4\nImportError: No module named lz4","commit_id":"f24e9909005df22dc0461949cd007918d831c580"}],"tools/setup-influxdb-env.sh":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1801aca0834c6d6e13f9804c43a40fcb3adcb08f","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    mkdir -p $influxdb_dir"},{"line_number":18,"context_line":"    curl -L $INFLUXDB_RELEASE_URL/$influxdb_file \u003e $influxdb_dir/$influxdb_file"},{"line_number":19,"context_line":"    tar xf $influxdb_dir/$influxdb_file -C $influxdb_dir"},{"line_number":20,"context_line":"    export PATH\u003d$PATH:$influxdb_dir/influxdb-${INFLUXDB_VERSION}-1/usr/bin/"},{"line_number":21,"context_line":"fi"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# Yield execution to venv command"}],"source_content_type":"text/x-sh","patch_set":23,"id":"1a6eadb0_dc8946cc","line":20,"updated":"2016-12-13 16:55:42.000000000","message":"if you do that around line 3, that\u0027ll make sure that you don\u0027t re-download each time influxdb, which would be a good thing for everyone running the tests at home :)","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"c3d2f30558e581da938696c2e559151b5163ac9c","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    mkdir -p $influxdb_dir"},{"line_number":18,"context_line":"    curl -L $INFLUXDB_RELEASE_URL/$influxdb_file \u003e $influxdb_dir/$influxdb_file"},{"line_number":19,"context_line":"    tar xf $influxdb_dir/$influxdb_file -C $influxdb_dir"},{"line_number":20,"context_line":"    export PATH\u003d$PATH:$influxdb_dir/influxdb-${INFLUXDB_VERSION}-1/usr/bin/"},{"line_number":21,"context_line":"fi"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# Yield execution to venv command"}],"source_content_type":"text/x-sh","patch_set":23,"id":"1a6eadb0_f85e0011","line":20,"in_reply_to":"1a6eadb0_dc8946cc","updated":"2016-12-14 00:42:52.000000000","message":"Done","commit_id":"f24e9909005df22dc0461949cd007918d831c580"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"fdfa6d59cac57b5f4c999f16bfefed2d93d2ce58","unresolved":false,"context_lines":[{"line_number":17,"context_line":"export PATH\u003d$PATH:$influxdb_dir/influxdb-${INFLUXDB_VERSION}-1/usr/bin/"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"if [ -z \"$(which influxd)\" ]; then"},{"line_number":20,"context_line":"    "},{"line_number":21,"context_line":"    mkdir -p $influxdb_dir"},{"line_number":22,"context_line":"    curl -L $INFLUXDB_RELEASE_URL/$influxdb_file \u003e $influxdb_dir/$influxdb_file"},{"line_number":23,"context_line":"    tar xf $influxdb_dir/$influxdb_file -C $influxdb_dir"}],"source_content_type":"text/x-sh","patch_set":26,"id":"1a6eadb0_29129057","line":20,"updated":"2016-12-15 13:56:28.000000000","message":"whitespace","commit_id":"fcf63cd9d281e8ca3787eed6255c99a316f04d54"}]}
