)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"80b5a5d4fac38b7405163857ca641871e9ef605b","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"But correct precedence should be:"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Available \u003e Any other status \u003e Creating"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This patch fixes precedence and adds unit tests to prevent it from"},{"line_number":19,"context_line":"being broken again."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a8ffd7b_4c286933","line":16,"updated":"2015-11-27 19:48:38.000000000","message":"Available \u003e Any non-transitional status \u003e Transitional Status","commit_id":"7b5bb0aa8c16a40286f38ac7ddfe93bac814804a"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"6a3050dd1e4bf2ee59a49f6eb7dc5dd815617ae3","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"But correct precedence should be:"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Available \u003e Any other status \u003e Creating"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This patch fixes precedence and adds unit tests to prevent it from"},{"line_number":19,"context_line":"being broken again."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a8ffd7b_381f28b9","line":16,"in_reply_to":"9a8ffd7b_4c286933","updated":"2015-11-30 15:03:28.000000000","message":"Done","commit_id":"7b5bb0aa8c16a40286f38ac7ddfe93bac814804a"}],"manila/db/sqlalchemy/models.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"7d1becd3f75682afb870b08586fd897ce52c18ab","unresolved":false,"context_lines":[{"line_number":248,"context_line":"            for instance in self.instances:"},{"line_number":249,"context_line":"                if instance.status \u003d\u003d constants.STATUS_AVAILABLE:"},{"line_number":250,"context_line":"                    return instance"},{"line_number":251,"context_line":"                elif instance.status !\u003d constants.STATUS_CREATING:"},{"line_number":252,"context_line":"                    result \u003d instance"},{"line_number":253,"context_line":"            if result is None:"},{"line_number":254,"context_line":"                    result \u003d self.instances[0]"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_79bc2406","line":251,"updated":"2015-11-27 11:34:04.000000000","message":"\"constants.STATUS_CREATING\" is not the only transitional status. So, maybe better to consider all transitional statuses here?","commit_id":"76a10777e52b74abebfd17fab74e3a8a38fa94ed"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"b0fbdcf6dc39598efb58ff8f592cceaebeb59cbd","unresolved":false,"context_lines":[{"line_number":248,"context_line":"            for instance in self.instances:"},{"line_number":249,"context_line":"                if instance.status \u003d\u003d constants.STATUS_AVAILABLE:"},{"line_number":250,"context_line":"                    return instance"},{"line_number":251,"context_line":"                elif instance.status !\u003d constants.STATUS_CREATING:"},{"line_number":252,"context_line":"                    result \u003d instance"},{"line_number":253,"context_line":"            if result is None:"},{"line_number":254,"context_line":"                    result \u003d self.instances[0]"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_09125357","line":251,"in_reply_to":"9a8ffd7b_79bc2406","updated":"2015-11-27 18:45:19.000000000","message":"Thanks for the suggestion! Done. :)","commit_id":"76a10777e52b74abebfd17fab74e3a8a38fa94ed"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"083b646e395b79135c717dae60fe70ef33630504","unresolved":false,"context_lines":[{"line_number":242,"context_line":"    @property"},{"line_number":243,"context_line":"    def instance(self):"},{"line_number":244,"context_line":"        # NOTE(ganso): We prefer instances with AVAILABLE status,"},{"line_number":245,"context_line":"        # and we also prefer to show any other status than CREATING"},{"line_number":246,"context_line":"        result \u003d None"},{"line_number":247,"context_line":"        if len(self.instances) \u003e 0:"},{"line_number":248,"context_line":"            for instance in self.instances:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_29aab785","line":245,"updated":"2015-11-27 19:06:04.000000000","message":"You should update this NOTE as well since you avoid TRANSITIONAL_STATUSES as well where possible.","commit_id":"7b5bb0aa8c16a40286f38ac7ddfe93bac814804a"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"6a3050dd1e4bf2ee59a49f6eb7dc5dd815617ae3","unresolved":false,"context_lines":[{"line_number":242,"context_line":"    @property"},{"line_number":243,"context_line":"    def instance(self):"},{"line_number":244,"context_line":"        # NOTE(ganso): We prefer instances with AVAILABLE status,"},{"line_number":245,"context_line":"        # and we also prefer to show any other status than CREATING"},{"line_number":246,"context_line":"        result \u003d None"},{"line_number":247,"context_line":"        if len(self.instances) \u003e 0:"},{"line_number":248,"context_line":"            for instance in self.instances:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_f8776006","line":245,"in_reply_to":"9a8ffd7b_29aab785","updated":"2015-11-30 15:03:28.000000000","message":"Done","commit_id":"7b5bb0aa8c16a40286f38ac7ddfe93bac814804a"}],"manila/tests/db/sqlalchemy/test_models.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62e23b3982ad024a835bad8f894e52f0c6e42f4c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ba8a016a_7eb85a11","updated":"2015-11-19 22:35:33.000000000","message":"Nice! This file was much needed. Now we\u0027ve a lot of debt in terms of unit tests to repay though... But this is a good start","commit_id":"c5471fcac0b7340bdb4628880101425d038ac45f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"dc6bf8bcd957d0e56bb691efd599bfe34630a877","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ba8a016a_c7a4a4ba","in_reply_to":"ba8a016a_04c06a29","updated":"2015-11-23 16:49:31.000000000","message":"True, ideally though. :)","commit_id":"c5471fcac0b7340bdb4628880101425d038ac45f"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"bc6506806d15fbed072540301d1e97227682f79a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ba8a016a_04c06a29","in_reply_to":"ba8a016a_7eb85a11","updated":"2015-11-23 16:36:17.000000000","message":"Ideally this class should not have testable code, should be only models... but later code that should be tested was added to properties.","commit_id":"c5471fcac0b7340bdb4628880101425d038ac45f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62e23b3982ad024a835bad8f894e52f0c6e42f4c","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        instance_list \u003d ["},{"line_number":34,"context_line":"            db_utils.create_share_instance(status\u003dconstants.STATUS_AVAILABLE,"},{"line_number":35,"context_line":"                                           share_id\u003d\u0027fake_id\u0027),"},{"line_number":36,"context_line":"            db_utils.create_share_instance(status\u003dconstants.STATUS_ERROR,"},{"line_number":37,"context_line":"                                           share_id\u003d\u0027fake_id\u0027)"},{"line_number":38,"context_line":"        ]"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_feb52aec","line":36,"updated":"2015-11-19 22:35:33.000000000","message":"We could use ddt (which you\u0027ve imported and not yet used).. to switch the status here from STATUS_ERROR to atleast a few more statuses.","commit_id":"c5471fcac0b7340bdb4628880101425d038ac45f"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"bc6506806d15fbed072540301d1e97227682f79a","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        instance_list \u003d ["},{"line_number":34,"context_line":"            db_utils.create_share_instance(status\u003dconstants.STATUS_AVAILABLE,"},{"line_number":35,"context_line":"                                           share_id\u003d\u0027fake_id\u0027),"},{"line_number":36,"context_line":"            db_utils.create_share_instance(status\u003dconstants.STATUS_ERROR,"},{"line_number":37,"context_line":"                                           share_id\u003d\u0027fake_id\u0027)"},{"line_number":38,"context_line":"        ]"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_849c5a5e","line":36,"in_reply_to":"ba8a016a_feb52aec","updated":"2015-11-23 16:36:17.000000000","message":"Done","commit_id":"c5471fcac0b7340bdb4628880101425d038ac45f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62e23b3982ad024a835bad8f894e52f0c6e42f4c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def test_share_instance_any_other_than_creating(self):"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        instance_list \u003d ["},{"line_number":47,"context_line":"            db_utils.create_share_instance(status\u003dconstants.STATUS_ERROR,"},{"line_number":48,"context_line":"                                           share_id\u003d\u0027fake_id\u0027),"},{"line_number":49,"context_line":"            db_utils.create_share_instance(status\u003dconstants.STATUS_CREATING,"},{"line_number":50,"context_line":"                                           share_id\u003d\u0027fake_id\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_3ea732be","line":47,"updated":"2015-11-19 22:35:33.000000000","message":"Same as above.","commit_id":"c5471fcac0b7340bdb4628880101425d038ac45f"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"bc6506806d15fbed072540301d1e97227682f79a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def test_share_instance_any_other_than_creating(self):"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        instance_list \u003d ["},{"line_number":47,"context_line":"            db_utils.create_share_instance(status\u003dconstants.STATUS_ERROR,"},{"line_number":48,"context_line":"                                           share_id\u003d\u0027fake_id\u0027),"},{"line_number":49,"context_line":"            db_utils.create_share_instance(status\u003dconstants.STATUS_CREATING,"},{"line_number":50,"context_line":"                                           share_id\u003d\u0027fake_id\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_449f5250","line":47,"in_reply_to":"ba8a016a_3ea732be","updated":"2015-11-23 16:36:17.000000000","message":"Done","commit_id":"c5471fcac0b7340bdb4628880101425d038ac45f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"60fbf2352a2105f23400209de0f7899e03e43b8c","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"@ddt.ddt"},{"line_number":25,"context_line":"class ShareTestCase(test.TestCase):"},{"line_number":26,"context_line":"    \"\"\"Testing of SQLAlchemy model classes.\"\"\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def setUp(self):"},{"line_number":29,"context_line":"        super(ShareTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_c792644b","line":26,"updated":"2015-11-23 16:50:21.000000000","message":"Share model class?","commit_id":"4bc60276da48177f080b49020945a98ab258f33a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"9728c45d4dcfc97b407ce1d23820b1d58e42cae9","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"@ddt.ddt"},{"line_number":25,"context_line":"class ShareTestCase(test.TestCase):"},{"line_number":26,"context_line":"    \"\"\"Testing of SQLAlchemy model classes.\"\"\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def setUp(self):"},{"line_number":29,"context_line":"        super(ShareTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_e0af39e1","line":26,"in_reply_to":"ba8a016a_87153c4a","updated":"2015-11-24 03:03:11.000000000","message":"Yes, I meant you should correct this string to:\n\n\"Testing of Share Model class.\" or something along the lines, if you were to make another patch.","commit_id":"4bc60276da48177f080b49020945a98ab258f33a"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"09bde0fbb6256960a4a4500079b3fdd0a9ab1588","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"@ddt.ddt"},{"line_number":25,"context_line":"class ShareTestCase(test.TestCase):"},{"line_number":26,"context_line":"    \"\"\"Testing of SQLAlchemy model classes.\"\"\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def setUp(self):"},{"line_number":29,"context_line":"        super(ShareTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_87153c4a","line":26,"in_reply_to":"ba8a016a_c792644b","updated":"2015-11-23 16:57:45.000000000","message":"Yes... Since the models.py is separated in classes, I thought it would be a good way or organizing the unit tests related to their respective classes.","commit_id":"4bc60276da48177f080b49020945a98ab258f33a"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5b6e7e77a84b080fd44c89feb07a95beb6640755","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"@ddt.ddt"},{"line_number":25,"context_line":"class ShareTestCase(test.TestCase):"},{"line_number":26,"context_line":"    \"\"\"Testing of SQLAlchemy model classes.\"\"\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def setUp(self):"},{"line_number":29,"context_line":"        super(ShareTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_241dc866","line":26,"in_reply_to":"ba8a016a_e0af39e1","updated":"2015-11-24 12:49:38.000000000","message":"Done","commit_id":"4bc60276da48177f080b49020945a98ab258f33a"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"18fb9ee40b364269dbaedc6224683e1f945271fe","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        share \u003d db_utils.create_share(instances\u003dinstance_list)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        self.assertEqual(status, share.instance[\u0027status\u0027])"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def test_share_instance_creating(self):"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a8ffd7b_008970ca","line":67,"updated":"2015-12-01 03:46:52.000000000","message":"Is there any value in testing for various ordering of the instances?  Such as:\n\n   share1 \u003d db_utils.create_share(instances\u003dinstance_list)\n   share2 \u003d db_utils.create_share(instances\u003dreversed(instance_list))\n   \n   self.assertEqual(status, share1.instance[\u0027status\u0027])\n   self.assertEqual(status, share2.instance[\u0027status\u0027])","commit_id":"ee8c72b19233cbf6a9df8384c92dc915b4af8569"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"191afdb83cfbb3ca38579d6f8b72ff6c81828085","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        share \u003d db_utils.create_share(instances\u003dinstance_list)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        self.assertEqual(status, share.instance[\u0027status\u0027])"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def test_share_instance_creating(self):"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a8ffd7b_bca7430a","line":67,"in_reply_to":"9a8ffd7b_008970ca","updated":"2015-12-01 16:40:29.000000000","message":"According to the code, no. But it is a good idea to test this as well so we can easily detect if the code has broken due to a status change or code change.","commit_id":"ee8c72b19233cbf6a9df8384c92dc915b4af8569"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"753e97ac9b88a2ddaa26d9927efb308e79423f91","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        share2 \u003d db_utils.create_share(instances\u003dlist(reversed(instance_list)))"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.assertEqual(constants.STATUS_AVAILABLE, share1.instance[\u0027status\u0027])"},{"line_number":49,"context_line":"        self.assertEqual(constants.STATUS_AVAILABLE, share2.instance[\u0027status\u0027])"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @ddt.data([constants.STATUS_MANAGE_ERROR, constants.STATUS_CREATING],"},{"line_number":52,"context_line":"              [constants.STATUS_ERROR_DELETING, constants.STATUS_DELETING],"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a8ffd7b_9998516c","line":49,"updated":"2015-12-01 16:32:06.000000000","message":"+1","commit_id":"b850e16e30f91584a280827ff6072679900fc5be"}]}
