)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"9980c02a92ea079b6cc1ac9c0ec6f9193584d0a6","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Validates that the volume size on a replica is at least as"},{"line_number":10,"context_line":"large as the master. This ensures the user doesn\u0027t attach"},{"line_number":11,"context_line":"a slave that does not have enough space."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: 1357500"},{"line_number":14,"context_line":"Change-Id: I2bcdf440f935f13630d86e893c52e6325bc2efa7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a961159_170cacec","line":11,"updated":"2014-12-19 11:09:27.000000000","message":"If slave volume size is smaller than master volume size, does it necessarily mean that I have a problem? Sometimes I may not have enough physical storage to allocate the same size (RAW volume format), but later I may add additional storage and resize my volume. Thoughts?","commit_id":"f4cee402733fb32d8f42ee6d16ebee489d4c8afe"},{"author":{"_account_id":11783,"name":"Shayne Burgess","email":"shayne.burgess@hp.com","username":"shayne-burgess"},"change_message_id":"6436c930591b71e46e9870d0ddf8dd647641459b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Validates that the volume size on a replica is at least as"},{"line_number":10,"context_line":"large as the master. This ensures the user doesn\u0027t attach"},{"line_number":11,"context_line":"a slave that does not have enough space."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: 1357500"},{"line_number":14,"context_line":"Change-Id: I2bcdf440f935f13630d86e893c52e6325bc2efa7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a961159_a05c667e","line":11,"in_reply_to":"3a961159_170cacec","updated":"2014-12-19 18:49:10.000000000","message":"Thanks for the comment Sergey. This is definitely the classic trade-off between putting up enough guard rails to ensure the user doesn\u0027t hurt themselves (creating a replica that runs out of space because it\u0027s volume is too small) and giving them the flexibility to do something bad when they know the risks. In this case I think that it\u0027s likely enough that a user would accidentally create a replica with a volume size that is too small that we should protect them from that.","commit_id":"f4cee402733fb32d8f42ee6d16ebee489d4c8afe"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"a9e5e4e138b95e25b80edcf53e5c4078310ac9b8","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Validates that the volume size on a replica is at least as"},{"line_number":10,"context_line":"large as the master. This ensures the user doesn\u0027t attach"},{"line_number":11,"context_line":"a slave that does not have enough space."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: 1357500"},{"line_number":14,"context_line":"Change-Id: I2bcdf440f935f13630d86e893c52e6325bc2efa7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a961159_c04e6ec2","line":11,"in_reply_to":"3a961159_a05c667e","updated":"2014-12-25 06:55:30.000000000","message":"The thing is that you don\u0027t really know if its too small, all you know is it\u0027s initial size is smaller which in most cases doesn\u0027t mean much.\n\nSo, what about volume resize? If user enlarge master\u0027s volume, should we automatically enlarge a slave?","commit_id":"f4cee402733fb32d8f42ee6d16ebee489d4c8afe"}],"trove/taskmanager/manager.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c5b07a76f2afaf722496ab2540ae894bf218c279","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        instance_tasks \u003d FreshInstanceTasks.load(context, instance_id)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        instance_tasks.validate_replication_slave(context, slave_of_id,"},{"line_number":99,"context_line":"                                                  volume_size)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        snapshot \u003d instance_tasks.get_replication_master_snapshot(context,"},{"line_number":102,"context_line":"                                                                  slave_of_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_6dc7a045","line":99,"updated":"2014-12-23 11:39:26.000000000","message":"this validation should be placed on API level, but not in taskmanager to allow fast-fail.\n\nsee https://github.com/openstack/trove/blob/master/trove/instance/models.py#L712-L732","commit_id":"f4cee402733fb32d8f42ee6d16ebee489d4c8afe"}],"trove/taskmanager/models.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c5b07a76f2afaf722496ab2540ae894bf218c279","unresolved":false,"context_lines":[{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    def validate_replication_slave(self, context, slave_of_id, volume_size):"},{"line_number":396,"context_line":"        master \u003d BuiltInstanceTasks.load(context, slave_of_id)"},{"line_number":397,"context_line":"        if volume_size \u003c master.volume_size:"},{"line_number":398,"context_line":"            self.update_db(task_status\u003dInstanceTasks.BUILDING_ERROR_REPLICA)"},{"line_number":399,"context_line":"            raise TroveError(message\u003d"},{"line_number":400,"context_line":"                             \"Replication instance volume size smaller than \""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_4da584a0","line":397,"updated":"2014-12-23 11:39:26.000000000","message":"why \"\u003c\" ?\n\nIMHO, should be \u003c\u003d","commit_id":"f4cee402733fb32d8f42ee6d16ebee489d4c8afe"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c5b07a76f2afaf722496ab2540ae894bf218c279","unresolved":false,"context_lines":[{"line_number":395,"context_line":"    def validate_replication_slave(self, context, slave_of_id, volume_size):"},{"line_number":396,"context_line":"        master \u003d BuiltInstanceTasks.load(context, slave_of_id)"},{"line_number":397,"context_line":"        if volume_size \u003c master.volume_size:"},{"line_number":398,"context_line":"            self.update_db(task_status\u003dInstanceTasks.BUILDING_ERROR_REPLICA)"},{"line_number":399,"context_line":"            raise TroveError(message\u003d"},{"line_number":400,"context_line":"                             \"Replication instance volume size smaller than \""},{"line_number":401,"context_line":"                             \"master for %s\" % self.id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_2db2f8e4","line":398,"updated":"2014-12-23 11:39:26.000000000","message":"why not just permitt provisioning?","commit_id":"f4cee402733fb32d8f42ee6d16ebee489d4c8afe"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c5b07a76f2afaf722496ab2540ae894bf218c279","unresolved":false,"context_lines":[{"line_number":397,"context_line":"        if volume_size \u003c master.volume_size:"},{"line_number":398,"context_line":"            self.update_db(task_status\u003dInstanceTasks.BUILDING_ERROR_REPLICA)"},{"line_number":399,"context_line":"            raise TroveError(message\u003d"},{"line_number":400,"context_line":"                             \"Replication instance volume size smaller than \""},{"line_number":401,"context_line":"                             \"master for %s\" % self.id)"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"    def report_root_enabled(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_ada6e8a8","line":400,"updated":"2014-12-23 11:39:26.000000000","message":"message should be translated _()\n\nmissing period","commit_id":"f4cee402733fb32d8f42ee6d16ebee489d4c8afe"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c5b07a76f2afaf722496ab2540ae894bf218c279","unresolved":false,"context_lines":[{"line_number":398,"context_line":"            self.update_db(task_status\u003dInstanceTasks.BUILDING_ERROR_REPLICA)"},{"line_number":399,"context_line":"            raise TroveError(message\u003d"},{"line_number":400,"context_line":"                             \"Replication instance volume size smaller than \""},{"line_number":401,"context_line":"                             \"master for %s\" % self.id)"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"    def report_root_enabled(self):"},{"line_number":404,"context_line":"        mysql_models.RootHistory.create(self.context, self.id, \u0027root\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_0d81bcfa","line":401,"updated":"2014-12-23 11:39:26.000000000","message":"what\u0027s the benifit of extracting given logic to separate method.\n\nIMHO, it was used only in one place.","commit_id":"f4cee402733fb32d8f42ee6d16ebee489d4c8afe"}],"trove/tests/api/replication.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c5b07a76f2afaf722496ab2540ae894bf218c279","unresolved":false,"context_lines":[{"line_number":40,"context_line":"GROUP \u003d \"dbaas.api.replication\""},{"line_number":41,"context_line":"slave_instance \u003d SlaveInstanceTestInfo()"},{"line_number":42,"context_line":"existing_db_on_master \u003d generate_uuid()"},{"line_number":43,"context_line":"VOLUME_SUPPORT \u003d CONFIG.get(\u0027trove_volume_support\u0027, False)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def _get_user_count(server_info):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_0db37c0a","line":43,"updated":"2014-12-23 11:39:26.000000000","message":"This is wrong statement, since volume support is defined as per-datastore option.","commit_id":"f4cee402733fb32d8f42ee6d16ebee489d4c8afe"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c5b07a76f2afaf722496ab2540ae894bf218c279","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        assert_equal(\"BUILD\", result.status)"},{"line_number":88,"context_line":"        slave_instance.id \u003d result.id"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    @test(runs_after\u003d[\u0027test_create_slave\u0027], enabled\u003dVOLUME_SUPPORT)"},{"line_number":91,"context_line":"    def test_small_volume_fails(self):"},{"line_number":92,"context_line":"        \"\"\"Test replication fails with small volume.\"\"\""},{"line_number":93,"context_line":"        result \u003d instance_info.dbaas.instances.create("}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_4dd0241f","line":90,"updated":"2014-12-23 11:39:26.000000000","message":"You can\u0027t create read replica before source replica is ACTIVE.","commit_id":"f4cee402733fb32d8f42ee6d16ebee489d4c8afe"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c5b07a76f2afaf722496ab2540ae894bf218c279","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        slave_instance.id \u003d result.id"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    @test(runs_after\u003d[\u0027test_create_slave\u0027], enabled\u003dVOLUME_SUPPORT)"},{"line_number":91,"context_line":"    def test_small_volume_fails(self):"},{"line_number":92,"context_line":"        \"\"\"Test replication fails with small volume.\"\"\""},{"line_number":93,"context_line":"        result \u003d instance_info.dbaas.instances.create("},{"line_number":94,"context_line":"            instance_info.name + \"_slave\","}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_2dad989b","line":91,"updated":"2014-12-23 11:39:26.000000000","message":"this test should be executed once master is active","commit_id":"f4cee402733fb32d8f42ee6d16ebee489d4c8afe"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c5b07a76f2afaf722496ab2540ae894bf218c279","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                assert_true(instance.status \u003d\u003d \u0027BUILD\u0027)"},{"line_number":106,"context_line":"                return False"},{"line_number":107,"context_line":"        poll_until(result_is_error)"},{"line_number":108,"context_line":"        instance_info.dbaas.instances.delete(result.id)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        def instance_is_gone():"},{"line_number":111,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_6d924058","line":108,"updated":"2014-12-23 11:39:26.000000000","message":"you can\u0027t delete slave without detaching it from master.","commit_id":"f4cee402733fb32d8f42ee6d16ebee489d4c8afe"}]}
