)]}'
{"etc/container-server.conf-sample":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5396f48624c418d96253fd82c144aef790928e37","unresolved":false,"context_lines":[{"line_number":314,"context_line":"#"},{"line_number":315,"context_line":"# The prefix used for the hidden account in which shard containers will be"},{"line_number":316,"context_line":"# created. Defaults to \u0027.\u0027."},{"line_number":317,"context_line":"# auto_create_account_prefix \u003d ."},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"# Container sharder specific settings"},{"line_number":320,"context_line":"#"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"1f9dbf25_f00821da","line":317,"updated":"2018-03-03 10:52:02.000000000","message":"We may want to move this up to the DEFAULT section, to ensure it matches the container-server\u0027s notion of it (currently at line 88).\n\nMaybe in the future we should even move it to swift.conf?","commit_id":"d723dafe23c2cbf41cf47fb9baa325926ceb009e"}],"swift/common/utils.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"cd8f0c1cabb1e3db9f29f075658383cc35c99d24","unresolved":false,"context_lines":[{"line_number":4344,"context_line":"            updated; defaults to the value of ``created_at``."},{"line_number":4345,"context_line":"        \"\"\""},{"line_number":4346,"context_line":"        self.account, self.container \u003d self._validate_path(name)"},{"line_number":4347,"context_line":"        self.name \u003d name"},{"line_number":4348,"context_line":"        self._lower \u003d ShardRange.MIN"},{"line_number":4349,"context_line":"        self._upper \u003d ShardRange.MAX"},{"line_number":4350,"context_line":"        self.lower \u003d lower"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f9dbf25_30bbe90e","line":4347,"range":{"start_line":4347,"start_character":8,"end_line":4347,"end_character":24},"updated":"2018-03-05 09:02:32.000000000","message":"off topic - I\u0027d prefer this was called path rather than name","commit_id":"79e6855bef987d1043281c02e84aea98cf9cb009"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5396f48624c418d96253fd82c144aef790928e37","unresolved":false,"context_lines":[{"line_number":4376,"context_line":"            raise ValueError(\u0027index must not be None\u0027)"},{"line_number":4377,"context_line":"        return \"%s-%s-%s-%s\" % (root_container,"},{"line_number":4378,"context_line":"                                hashlib.md5(parent_container).hexdigest(),"},{"line_number":4379,"context_line":"                                cls._to_timestamp(timestamp).internal,"},{"line_number":4380,"context_line":"                                index)"},{"line_number":4381,"context_line":""},{"line_number":4382,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f9dbf25_f03101a4","line":4379,"range":{"start_line":4379,"start_character":36,"end_line":4379,"end_character":49},"updated":"2018-03-03 10:52:02.000000000","message":"It looks like before we always had a timestamp (or assumed we did, anyway). What changed?","commit_id":"d723dafe23c2cbf41cf47fb9baa325926ceb009e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"cd8f0c1cabb1e3db9f29f075658383cc35c99d24","unresolved":false,"context_lines":[{"line_number":4376,"context_line":"            raise ValueError(\u0027index must not be None\u0027)"},{"line_number":4377,"context_line":"        return \"%s-%s-%s-%s\" % (root_container,"},{"line_number":4378,"context_line":"                                hashlib.md5(parent_container).hexdigest(),"},{"line_number":4379,"context_line":"                                cls._to_timestamp(timestamp).internal,"},{"line_number":4380,"context_line":"                                index)"},{"line_number":4381,"context_line":""},{"line_number":4382,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff6b8bd7_8309a4de","line":4379,"range":{"start_line":4379,"start_character":36,"end_line":4379,"end_character":49},"in_reply_to":"1f9dbf25_f03101a4","updated":"2018-03-05 09:02:32.000000000","message":"just making a string timestamp tolerable","commit_id":"d723dafe23c2cbf41cf47fb9baa325926ceb009e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5396f48624c418d96253fd82c144aef790928e37","unresolved":false,"context_lines":[{"line_number":4390,"context_line":"    def create(cls, root_account, root_container, lower\u003d\u0027\u0027, upper\u003d\u0027\u0027,"},{"line_number":4391,"context_line":"               parent_container\u003dNone, index\u003dNone, **kwargs):"},{"line_number":4392,"context_line":"        # avoid using this method other than for convenience in tests because"},{"line_number":4393,"context_line":"        # these defaults shouldn\u0027t be generally used"},{"line_number":4394,"context_line":"        parent_container \u003d parent_container or root_container"},{"line_number":4395,"context_line":"        index \u003d index or upper"},{"line_number":4396,"context_line":"        timestamp \u003d kwargs.pop(\u0027created_at\u0027, Timestamp.now())"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f9dbf25_301769f0","line":4393,"updated":"2018-03-03 10:52:02.000000000","message":"Should we just move the method to be a function in the test.__init__ or something?","commit_id":"d723dafe23c2cbf41cf47fb9baa325926ceb009e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"cd8f0c1cabb1e3db9f29f075658383cc35c99d24","unresolved":false,"context_lines":[{"line_number":4390,"context_line":"    def create(cls, root_account, root_container, lower\u003d\u0027\u0027, upper\u003d\u0027\u0027,"},{"line_number":4391,"context_line":"               parent_container\u003dNone, index\u003dNone, **kwargs):"},{"line_number":4392,"context_line":"        # avoid using this method other than for convenience in tests because"},{"line_number":4393,"context_line":"        # these defaults shouldn\u0027t be generally used"},{"line_number":4394,"context_line":"        parent_container \u003d parent_container or root_container"},{"line_number":4395,"context_line":"        index \u003d index or upper"},{"line_number":4396,"context_line":"        timestamp \u003d kwargs.pop(\u0027created_at\u0027, Timestamp.now())"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff6b8bd7_c3bb1c0c","line":4393,"in_reply_to":"1f9dbf25_301769f0","updated":"2018-03-05 09:02:32.000000000","message":"yes, had same (after-)thought","commit_id":"d723dafe23c2cbf41cf47fb9baa325926ceb009e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"46c63c33d4d6ba2cca35574e93a60ff43edb9184","unresolved":false,"context_lines":[{"line_number":4390,"context_line":"    def create(cls, root_account, root_container, lower\u003d\u0027\u0027, upper\u003d\u0027\u0027,"},{"line_number":4391,"context_line":"               parent_container\u003dNone, index\u003dNone, **kwargs):"},{"line_number":4392,"context_line":"        # avoid using this method other than for convenience in tests because"},{"line_number":4393,"context_line":"        # these defaults shouldn\u0027t be generally used"},{"line_number":4394,"context_line":"        parent_container \u003d parent_container or root_container"},{"line_number":4395,"context_line":"        index \u003d index or upper"},{"line_number":4396,"context_line":"        timestamp \u003d kwargs.pop(\u0027created_at\u0027, Timestamp.now())"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff6b8bd7_e9f721d4","line":4393,"in_reply_to":"ff6b8bd7_c3bb1c0c","updated":"2018-03-05 10:38:41.000000000","message":"removing it seemed simpler and reduces line count \nhttps://review.openstack.org/#/c/549733/","commit_id":"d723dafe23c2cbf41cf47fb9baa325926ceb009e"}],"swift/container/sharder.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5396f48624c418d96253fd82c144aef790928e37","unresolved":false,"context_lines":[{"line_number":911,"context_line":""},{"line_number":912,"context_line":"        # TODO: if we bring back leader election, this is about the spot where"},{"line_number":913,"context_line":"        # we should confirm we\u0027re still the scanner"},{"line_number":914,"context_line":"        shards_account \u003d \u0027%s_%s\u0027 % (self.shards_account_prefix, broker.account)"},{"line_number":915,"context_line":"        timestamp \u003d Timestamp.now()"},{"line_number":916,"context_line":"        shard_ranges \u003d ["},{"line_number":917,"context_line":"            ShardRange(ShardRange.make_path("}],"source_content_type":"text/x-python","patch_set":3,"id":"1f9dbf25_d0d3a537","line":914,"range":{"start_line":914,"start_character":28,"end_line":914,"end_character":29},"updated":"2018-03-03 10:52:02.000000000","message":"Aren\u0027t we going to double-up underscores given how the prefix is defined?","commit_id":"d723dafe23c2cbf41cf47fb9baa325926ceb009e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"cd8f0c1cabb1e3db9f29f075658383cc35c99d24","unresolved":false,"context_lines":[{"line_number":911,"context_line":""},{"line_number":912,"context_line":"        # TODO: if we bring back leader election, this is about the spot where"},{"line_number":913,"context_line":"        # we should confirm we\u0027re still the scanner"},{"line_number":914,"context_line":"        shards_account \u003d \u0027%s_%s\u0027 % (self.shards_account_prefix, broker.account)"},{"line_number":915,"context_line":"        timestamp \u003d Timestamp.now()"},{"line_number":916,"context_line":"        shard_ranges \u003d ["},{"line_number":917,"context_line":"            ShardRange(ShardRange.make_path("}],"source_content_type":"text/x-python","patch_set":3,"id":"ff6b8bd7_83d76424","line":914,"range":{"start_line":914,"start_character":28,"end_line":914,"end_character":29},"in_reply_to":"1f9dbf25_d0d3a537","updated":"2018-03-05 09:02:32.000000000","message":"good catch","commit_id":"d723dafe23c2cbf41cf47fb9baa325926ceb009e"}]}
