)]}'
{"trove/instance/models.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"86984e490657016e5c02ee61e66b8fdc33849471","unresolved":false,"context_lines":[{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        datastore_cfg \u003d CONF.get(datastore_version.manager)"},{"line_number":661,"context_line":""},{"line_number":662,"context_line":"        if slave_of_id:"},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"            replication_support \u003d datastore_cfg.replication_strategy"},{"line_number":665,"context_line":"            if not replication_support:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9aa7fdbe_fda18546","line":662,"updated":"2014-10-27 17:12:22.000000000","message":"Is there a reason why the checking for slave has now moved all the way to the top? There was a reasonable order to the validations ...\n\nflavor\nvolume support\nbackup\nreplication\nnetwork\n\nThat order was something that was discussed a fair amount during the initial chkin for replication.\n\nI\u0027d like to know more about why we moved this to the top.","commit_id":"31e90f07ecfb8c70d4e0ec93491ae64ca29e7289"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"86984e490657016e5c02ee61e66b8fdc33849471","unresolved":false,"context_lines":[{"line_number":676,"context_line":"                    another_replica_source \u003d DBInstance.find_by("},{"line_number":677,"context_line":"                        context, id\u003dreplica_source.slave_of_id)"},{"line_number":678,"context_line":"                    raise exception.Forbidden("},{"line_number":679,"context_line":"                        _(\"Wrong master ID. Instance %(id)s \""},{"line_number":680,"context_line":"                          \"is a replica of %(replica_source_id)s.\")"},{"line_number":681,"context_line":"                        % {\u0027id\u0027: slave_of_id,"},{"line_number":682,"context_line":"                           \u0027replica_source_id\u0027:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9aa7fdbe_18b2d74b","line":679,"updated":"2014-10-27 17:12:22.000000000","message":"I\u0027d request you simplify this message to something more user friendly and illustrative of the limitation that you cannot create a slave of a slave.\n\n\"Cannot create a slave of %(id)s as it is a slave of %(replica_source_id)s.\"","commit_id":"31e90f07ecfb8c70d4e0ec93491ae64ca29e7289"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"86984e490657016e5c02ee61e66b8fdc33849471","unresolved":false,"context_lines":[{"line_number":682,"context_line":"                           \u0027replica_source_id\u0027:"},{"line_number":683,"context_line":"                           another_replica_source.slave_of_id})"},{"line_number":684,"context_line":"            except exception.ModelNotFoundError:"},{"line_number":685,"context_line":"                LOG.exception(_(\"Root replica not found.\"))"},{"line_number":686,"context_line":"                raise exception.NotFound(uuid\u003dslave_of_id)"},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"        client \u003d create_nova_client(context)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9aa7fdbe_f8435310","line":685,"updated":"2014-10-27 17:12:22.000000000","message":"I\u0027d request that you simplify this message and make it something like:\n\n\"Cannot create a slave of %(id) as that instance could not be found.\"","commit_id":"31e90f07ecfb8c70d4e0ec93491ae64ca29e7289"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"803aa367f30f16ea1745d1f3dff7daa107079fde","unresolved":false,"context_lines":[{"line_number":717,"context_line":"                    id\u003dslave_of_id,"},{"line_number":718,"context_line":"                    deleted\u003dFalse)"},{"line_number":719,"context_line":"                if replica_source.slave_of_id:"},{"line_number":720,"context_line":"                    another_replica_source \u003d DBInstance.find_by("},{"line_number":721,"context_line":"                        context, id\u003dreplica_source.slave_of_id)"},{"line_number":722,"context_line":"                    raise exception.Forbidden("},{"line_number":723,"context_line":"                        _(\"Cannot create a slave of %(id)s as \""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_6f0c6943","line":720,"updated":"2014-11-20 22:08:32.000000000","message":"this finder seems unnecessary. if the replica_source has a slave_id, it *must* have a slave, because the removal of a slave would have set this value back to null.\n\nany argument against the above can be surmised as \"hey, but the data in the database could be corrupt\", but in that case, all bets are off.","commit_id":"ae1711ed617236beee8aba75914a43b20db07d74"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"fa32723a4d2d8cd38c7f096d0e6fab7c07a6393e","unresolved":false,"context_lines":[{"line_number":717,"context_line":"                    id\u003dslave_of_id,"},{"line_number":718,"context_line":"                    deleted\u003dFalse)"},{"line_number":719,"context_line":"                if replica_source.slave_of_id:"},{"line_number":720,"context_line":"                    another_replica_source \u003d DBInstance.find_by("},{"line_number":721,"context_line":"                        context, id\u003dreplica_source.slave_of_id)"},{"line_number":722,"context_line":"                    raise exception.Forbidden("},{"line_number":723,"context_line":"                        _(\"Cannot create a slave of %(id)s as \""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_5713bb5b","line":720,"in_reply_to":"5a890539_6f0c6943","updated":"2014-11-21 07:31:09.000000000","message":"Agreed -- this seems extraneous.","commit_id":"ae1711ed617236beee8aba75914a43b20db07d74"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"3d693f531d84e67b3cfcb18b82c341c77f7883da","unresolved":false,"context_lines":[{"line_number":715,"context_line":"                    deleted\u003dFalse)"},{"line_number":716,"context_line":"                if replica_source.slave_of_id:"},{"line_number":717,"context_line":"                    raise exception.Forbidden("},{"line_number":718,"context_line":"                        _(\"Cannot create a slave of a slave %(id)s.\")"},{"line_number":719,"context_line":"                        % {\u0027id\u0027: slave_of_id})"},{"line_number":720,"context_line":"            except exception.ModelNotFoundError:"},{"line_number":721,"context_line":"                LOG.exception("}],"source_content_type":"text/x-python","patch_set":13,"id":"5a890539_0d6a8db2","line":718,"updated":"2014-11-25 21:30:50.000000000","message":"many patches were submitted to remove the use of the world \u0027slave\u0027 in favor of \u0027replica\u0027. these messages should follow suit.","commit_id":"e732177fbd8b61f597e38639370b782ddce697e1"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e66a8ee2b739bc3e1be5c4bb346aa233369afcf8","unresolved":false,"context_lines":[{"line_number":715,"context_line":"                    deleted\u003dFalse)"},{"line_number":716,"context_line":"                if replica_source.slave_of_id:"},{"line_number":717,"context_line":"                    raise exception.Forbidden("},{"line_number":718,"context_line":"                        _(\"Cannot create a slave of a slave %(id)s.\")"},{"line_number":719,"context_line":"                        % {\u0027id\u0027: slave_of_id})"},{"line_number":720,"context_line":"            except exception.ModelNotFoundError:"},{"line_number":721,"context_line":"                LOG.exception("}],"source_content_type":"text/x-python","patch_set":13,"id":"5a890539_66c87da8","line":718,"in_reply_to":"5a890539_0d6a8db2","updated":"2014-11-26 13:02:52.000000000","message":"Done","commit_id":"e732177fbd8b61f597e38639370b782ddce697e1"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"9c5c56ba62a5b1bdc773e69550f2a1bc0f9a8a18","unresolved":false,"context_lines":[{"line_number":717,"context_line":"                    raise exception.Forbidden("},{"line_number":718,"context_line":"                        _(\"Cannot create a slave of a slave %(id)s.\")"},{"line_number":719,"context_line":"                        % {\u0027id\u0027: slave_of_id})"},{"line_number":720,"context_line":"            except exception.ModelNotFoundError:"},{"line_number":721,"context_line":"                LOG.exception("},{"line_number":722,"context_line":"                    _(\"Cannot create a slave of %(id)s \""},{"line_number":723,"context_line":"                      \"as that instance could not be found.\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a890539_cdb24505","line":720,"updated":"2014-11-25 21:41:42.000000000","message":"Also, the model exists (we just found it above) so a 404 ModelNotFoundError doesn\u0027t seem like the right message to use in this case.","commit_id":"e732177fbd8b61f597e38639370b782ddce697e1"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"d87886248c6caaede7a9c4d0e2ff2ef8bff0ca3f","unresolved":false,"context_lines":[{"line_number":717,"context_line":"                    raise exception.Forbidden("},{"line_number":718,"context_line":"                        _(\"Cannot create a slave of a slave %(id)s.\")"},{"line_number":719,"context_line":"                        % {\u0027id\u0027: slave_of_id})"},{"line_number":720,"context_line":"            except exception.ModelNotFoundError:"},{"line_number":721,"context_line":"                LOG.exception("},{"line_number":722,"context_line":"                    _(\"Cannot create a slave of %(id)s \""},{"line_number":723,"context_line":"                      \"as that instance could not be found.\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a890539_4df01591","line":720,"in_reply_to":"5a890539_cdb24505","updated":"2014-11-25 21:47:45.000000000","message":"Nevermind, my mistake. Misread this last part. Looks like we\u0027re raising a Forbidden exception. \n\n+1 to Auston\u0027s comment above.","commit_id":"e732177fbd8b61f597e38639370b782ddce697e1"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"cd084f89f1a5f62163585f69b8219ae76889adee","unresolved":false,"context_lines":[{"line_number":708,"context_line":"                raise exception.ReplicationNotSupported("},{"line_number":709,"context_line":"                    datastore\u003ddatastore.name)"},{"line_number":710,"context_line":"            try:"},{"line_number":711,"context_line":"                # looking for replica source"},{"line_number":712,"context_line":"                replica_source \u003d DBInstance.find_by("},{"line_number":713,"context_line":"                    context,"},{"line_number":714,"context_line":"                    id\u003dslave_of_id,"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a890539_fea009a7","line":711,"updated":"2014-12-01 20:53:55.000000000","message":"the comment strikes me as not very valuable.","commit_id":"06e8d5e85a0a9ccf4b06bc04bd9b590f1b48609a"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"cd084f89f1a5f62163585f69b8219ae76889adee","unresolved":false,"context_lines":[{"line_number":715,"context_line":"                    deleted\u003dFalse)"},{"line_number":716,"context_line":"                if replica_source.slave_of_id:"},{"line_number":717,"context_line":"                    raise exception.Forbidden("},{"line_number":718,"context_line":"                        _(\"Cannot create a replica of a replica %(id)s.\")"},{"line_number":719,"context_line":"                        % {\u0027id\u0027: slave_of_id})"},{"line_number":720,"context_line":"            except exception.ModelNotFoundError:"},{"line_number":721,"context_line":"                LOG.exception("}],"source_content_type":"text/x-python","patch_set":15,"id":"5a890539_7ed099f7","line":718,"updated":"2014-12-01 20:53:55.000000000","message":"the earlier message (circa patch set 10) seemed more useful as the additional finder was able to tell you what this (id) was a slave of. Without that, the message reads funny.\n\nCannot create a replica of a replica %id. Is the %id the primary or the replica?\n\nMaybe \"Cannot create a replica of %(id)s as it is a replica of another instance\"?","commit_id":"06e8d5e85a0a9ccf4b06bc04bd9b590f1b48609a"}],"trove/tests/unittests/instance/test_instance_models.py":[{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"fa32723a4d2d8cd38c7f096d0e6fab7c07a6393e","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from trove.common import exception"},{"line_number":19,"context_line":"from trove.common.instance import ServiceStatuses"},{"line_number":20,"context_line":"from trove.datastore.models import DBDatastoreVersion"},{"line_number":21,"context_line":"from trove.instance import models"},{"line_number":22,"context_line":"from trove.tests.fakes import nova"},{"line_number":23,"context_line":"from trove.tests.unittests.util import util"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_973443df","line":21,"updated":"2014-11-21 07:31:09.000000000","message":"Why rename this all over the file?","commit_id":"ae1711ed617236beee8aba75914a43b20db07d74"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"fa32723a4d2d8cd38c7f096d0e6fab7c07a6393e","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        self.root_info.delete()"},{"line_number":125,"context_line":"        super(TestReplication, self).tearDown()"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def test_create_replica_from_non_replica_source(self):"},{"line_number":128,"context_line":"        self.assertRaises(exception.Forbidden, models.Instance.create,"},{"line_number":129,"context_line":"                          None, \u0027name\u0027, 2, \"UUID\", [], [], None,"},{"line_number":130,"context_line":"                          self.replica_datastore_version, 1,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_5741fb37","line":127,"updated":"2014-11-21 07:31:09.000000000","message":"non_replica_source? Not sure what that implies. replica is much simpler.","commit_id":"ae1711ed617236beee8aba75914a43b20db07d74"}]}
