)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"700b499b386ede7a94941ce7ca22c4bd6bbcdca1","unresolved":false,"context_lines":[{"line_number":28,"context_line":"or /128 for retrieved values of IPv4 or IPv6 addresses appropriately."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Blueprint: db-api-tests-on-all-backends"},{"line_number":31,"context_line":"Co-Authored-By: Ilya Pekelny \u003cipekelny@mirantis.com\u003e"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Change-Id: If36f0f9133b6c7cc6f20ba189a9f5b65001811d1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAXH%2F%2FLe0%3D","line":31,"updated":"2014-04-23 14:21:09.000000000","message":"btw, you should probably do git commit --amend --reset-author and mention me here instead, I feel terrible reviewing \"my own\" patches :)","commit_id":"ec4149454815af32a5101007d59aab982a7a4aed"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"dc973a3c79b7b4a7fbe34b7dad20b56030c96a97","unresolved":false,"context_lines":[{"line_number":28,"context_line":"or /128 for retrieved values of IPv4 or IPv6 addresses appropriately."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Blueprint: db-api-tests-on-all-backends"},{"line_number":31,"context_line":"Co-Authored-By: Ilya Pekelny \u003cipekelny@mirantis.com\u003e"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Change-Id: If36f0f9133b6c7cc6f20ba189a9f5b65001811d1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAXH%2F%2FK5k%3D","line":31,"in_reply_to":"AAAAXH%2F%2FLe0%3D","updated":"2014-04-23 15:34:13.000000000","message":"Ok","commit_id":"ec4149454815af32a5101007d59aab982a7a4aed"}],"nova/db/sqlalchemy/types.py":[{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"1212564a6b3f860594ea04f0e6bf2bd9712ee2e0","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            suffix \u003d \u0027/128\u0027 if utils.is_valid_ipv6_cidr(value) else \u0027/32\u0027"},{"line_number":69,"context_line":"            return value + suffix"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        return value"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9c%2BE%3D","line":71,"updated":"2013-12-11 11:35:52.000000000","message":"What if value is None? I believe it is possible because you are check if `value` exists.","commit_id":"4ce215f33e004b501e4b817f52e5074b5a69632c"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"59c81da1dbd12ef60f91d4dd9c3504165bb9e6fc","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            suffix \u003d \u0027/128\u0027 if utils.is_valid_ipv6_cidr(value) else \u0027/32\u0027"},{"line_number":69,"context_line":"            return value + suffix"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        return value"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9c8M%3D","line":71,"in_reply_to":"AAAATn%2F9c%2BE%3D","updated":"2013-12-11 11:39:27.000000000","message":"Then we\u0027ll just return None (e.g. a NULL value in the corresponding table column)","commit_id":"4ce215f33e004b501e4b817f52e5074b5a69632c"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"f7d7c5703c5f0a0440e998953026dec79ccdde45","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            suffix \u003d \u0027/128\u0027 if utils.is_valid_ipv6_cidr(value) else \u0027/32\u0027"},{"line_number":69,"context_line":"            return value + suffix"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        return value"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9c7o%3D","line":71,"in_reply_to":"AAAATn%2F9c8M%3D","updated":"2013-12-11 11:41:23.000000000","message":"Ok, I see. Thanks for describing.","commit_id":"4ce215f33e004b501e4b817f52e5074b5a69632c"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"987bae278ecc921d7653249fc78b7f0e05331ea8","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            return utils.get_shortened_ipv6_cidr(value)"},{"line_number":63,"context_line":"        return value"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def process_result_value(self, value, dialect):"},{"line_number":66,"context_line":"        try:"},{"line_number":67,"context_line":"            return netaddr.IPNetwork(value, version\u003d4).cidr"},{"line_number":68,"context_line":"        except netaddr.AddrFormatError:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAXH%2F%2FLeE%3D","line":65,"updated":"2014-04-23 14:22:28.000000000","message":"this must also account for the case when value is None","commit_id":"ec4149454815af32a5101007d59aab982a7a4aed"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"dc973a3c79b7b4a7fbe34b7dad20b56030c96a97","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            return utils.get_shortened_ipv6_cidr(value)"},{"line_number":63,"context_line":"        return value"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def process_result_value(self, value, dialect):"},{"line_number":66,"context_line":"        try:"},{"line_number":67,"context_line":"            return netaddr.IPNetwork(value, version\u003d4).cidr"},{"line_number":68,"context_line":"        except netaddr.AddrFormatError:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAXH%2F%2FKxQ%3D","line":65,"in_reply_to":"AAAAXH%2F%2FLeE%3D","updated":"2014-04-23 15:34:13.000000000","message":"Should we raise an appropriate exception or just pass or maybe return None?","commit_id":"ec4149454815af32a5101007d59aab982a7a4aed"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"180f84d3012c448037b282abd24ea13278b5772f","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            return utils.get_shortened_ipv6_cidr(value)"},{"line_number":63,"context_line":"        return value"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def process_result_value(self, value, dialect):"},{"line_number":66,"context_line":"        try:"},{"line_number":67,"context_line":"            return netaddr.IPNetwork(value, version\u003d4).cidr"},{"line_number":68,"context_line":"        except netaddr.AddrFormatError:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAXH%2F%2FEvY%3D","line":65,"updated":"2014-04-24 08:22:34.000000000","message":"1) this method should return a cidr value as a string, so\n\n   return str(netaddr.IPNetwork(value, version\u003d4).cidr)\n   ...\n\n2) can we replace:\n\n   except TypeError:\n       return None\n  \nwith\n    \n    if value is None:\n        return None\n\n\nat the beginning of the function?","commit_id":"27fd4847c32f1248195f07e69fc74e973ef4576d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d2f5816ee2e6d2f01241c278741b176d953ad464","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        except netaddr.AddrFormatError:"},{"line_number":69,"context_line":"            return str(netaddr.IPNetwork(value, version\u003d6).cidr)"},{"line_number":70,"context_line":"        except TypeError:"},{"line_number":71,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":21,"id":"7adec928_d21a09c5","line":71,"updated":"2014-05-19 07:31:29.000000000","message":"by default None is returned. Not sure if we need the None here (i guess that is a matter of taste)","commit_id":"e43fa9571b436b7734213e34aaaaea650a7317c7"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"37b28efcf3b087dcc813523c61fd8a27d9a86d08","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        except netaddr.AddrFormatError:"},{"line_number":69,"context_line":"            return str(netaddr.IPNetwork(value, version\u003d6).cidr)"},{"line_number":70,"context_line":"        except TypeError:"},{"line_number":71,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":21,"id":"7adec928_d4cc9d6c","line":71,"in_reply_to":"7adec928_d21a09c5","updated":"2014-05-19 20:31:10.000000000","message":"My personal style on this point is, if there are other returns in the function that return other values, or if the function is documented to have a return value, I use an explicit \"return None\".  If the function could exit off the end and has no return statements with a value, then I use \"return\".  This is just my interpretation of \"explicit vs. implicit\", and it\u0027s not something I\u0027ll typically enforce in my reviews…","commit_id":"e43fa9571b436b7734213e34aaaaea650a7317c7"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"2b0bab1145ba47b83311562e6f0acf6674c344a9","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        except netaddr.AddrFormatError:"},{"line_number":69,"context_line":"            return str(netaddr.IPNetwork(value, version\u003d6).cidr)"},{"line_number":70,"context_line":"        except TypeError:"},{"line_number":71,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":21,"id":"7adec928_25456db3","line":71,"in_reply_to":"7adec928_d4cc9d6c","updated":"2014-05-20 20:16:55.000000000","message":"I agree. I find the implied return value confusing and much prefer an explicit one.","commit_id":"e43fa9571b436b7734213e34aaaaea650a7317c7"}],"nova/tests/db/test_db_api.py":[{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"3a542d792df971421fb033256f6ffed10829cdd2","unresolved":false,"context_lines":[{"line_number":7223,"context_line":"        self.table.create()"},{"line_number":7224,"context_line":"        self.addCleanup(meta.drop_all)"},{"line_number":7225,"context_line":""},{"line_number":7226,"context_line":"    def test_CIDR_repr(self):"},{"line_number":7227,"context_line":"        addrs \u003d [\u0027192.168.3.0/24\u0027, \u00272001:db8::/128\u0027,"},{"line_number":7228,"context_line":"                 \u0027192.168.3.0\u0027, \u00272001:db8::\u0027]"},{"line_number":7229,"context_line":"        with self.engine.begin() as conn:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAXH%2F%2FNKA%3D","line":7226,"updated":"2014-04-23 10:56:58.000000000","message":"please use lowercase here","commit_id":"6ac441ef872a5a9ef0159b733b80d6e954964a06"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"3f5afe8824f41b043d131338c97ad8f3e680a766","unresolved":false,"context_lines":[{"line_number":7223,"context_line":"        self.table.create()"},{"line_number":7224,"context_line":"        self.addCleanup(meta.drop_all)"},{"line_number":7225,"context_line":""},{"line_number":7226,"context_line":"    def test_CIDR_repr(self):"},{"line_number":7227,"context_line":"        addrs \u003d [\u0027192.168.3.0/24\u0027, \u00272001:db8::/128\u0027,"},{"line_number":7228,"context_line":"                 \u0027192.168.3.0\u0027, \u00272001:db8::\u0027]"},{"line_number":7229,"context_line":"        with self.engine.begin() as conn:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAXH%2F%2FNB8%3D","line":7226,"in_reply_to":"AAAAXH%2F%2FNKA%3D","updated":"2014-04-23 11:09:00.000000000","message":"Done","commit_id":"6ac441ef872a5a9ef0159b733b80d6e954964a06"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"3a542d792df971421fb033256f6ffed10829cdd2","unresolved":false,"context_lines":[{"line_number":7224,"context_line":"        self.addCleanup(meta.drop_all)"},{"line_number":7225,"context_line":""},{"line_number":7226,"context_line":"    def test_CIDR_repr(self):"},{"line_number":7227,"context_line":"        addrs \u003d [\u0027192.168.3.0/24\u0027, \u00272001:db8::/128\u0027,"},{"line_number":7228,"context_line":"                 \u0027192.168.3.0\u0027, \u00272001:db8::\u0027]"},{"line_number":7229,"context_line":"        with self.engine.begin() as conn:"},{"line_number":7230,"context_line":"            for i in addrs:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAXH%2F%2FNIY%3D","line":7227,"updated":"2014-04-23 10:56:58.000000000","message":"can we store a list of pairs here: [(value_to_saved, expected_value), ...] ?","commit_id":"6ac441ef872a5a9ef0159b733b80d6e954964a06"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"3f5afe8824f41b043d131338c97ad8f3e680a766","unresolved":false,"context_lines":[{"line_number":7224,"context_line":"        self.addCleanup(meta.drop_all)"},{"line_number":7225,"context_line":""},{"line_number":7226,"context_line":"    def test_CIDR_repr(self):"},{"line_number":7227,"context_line":"        addrs \u003d [\u0027192.168.3.0/24\u0027, \u00272001:db8::/128\u0027,"},{"line_number":7228,"context_line":"                 \u0027192.168.3.0\u0027, \u00272001:db8::\u0027]"},{"line_number":7229,"context_line":"        with self.engine.begin() as conn:"},{"line_number":7230,"context_line":"            for i in addrs:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAXH%2F%2FNCA%3D","line":7227,"in_reply_to":"AAAAXH%2F%2FNIY%3D","updated":"2014-04-23 11:09:00.000000000","message":"Done","commit_id":"6ac441ef872a5a9ef0159b733b80d6e954964a06"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"3a542d792df971421fb033256f6ffed10829cdd2","unresolved":false,"context_lines":[{"line_number":7230,"context_line":"            for i in addrs:"},{"line_number":7231,"context_line":"                conn.execute(self.table.insert(), {\u0027addr\u0027: i})"},{"line_number":7232,"context_line":""},{"line_number":7233,"context_line":"        with self.engine.begin() as conn:"},{"line_number":7234,"context_line":"            result \u003d conn.execute(self.table.select())"},{"line_number":7235,"context_line":"            for row in result:"},{"line_number":7236,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAXH%2F%2FNJ0%3D","line":7233,"updated":"2014-04-23 10:56:58.000000000","message":"why do we need a new connection here? why not just use the one from 7229?","commit_id":"6ac441ef872a5a9ef0159b733b80d6e954964a06"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"dfe1c708409b3d3239590a4ffcea8d1a91b7fd9d","unresolved":false,"context_lines":[{"line_number":7230,"context_line":"            for i in addrs:"},{"line_number":7231,"context_line":"                conn.execute(self.table.insert(), {\u0027addr\u0027: i})"},{"line_number":7232,"context_line":""},{"line_number":7233,"context_line":"        with self.engine.begin() as conn:"},{"line_number":7234,"context_line":"            result \u003d conn.execute(self.table.select())"},{"line_number":7235,"context_line":"            for row in result:"},{"line_number":7236,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAXH%2F%2FM1E%3D","line":7233,"in_reply_to":"AAAAXH%2F%2FM20%3D","updated":"2014-04-23 11:38:46.000000000","message":"Thanks! Got it.","commit_id":"6ac441ef872a5a9ef0159b733b80d6e954964a06"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"a1b47f9c24a226319dd2f3589d38b597a2741ddb","unresolved":false,"context_lines":[{"line_number":7230,"context_line":"            for i in addrs:"},{"line_number":7231,"context_line":"                conn.execute(self.table.insert(), {\u0027addr\u0027: i})"},{"line_number":7232,"context_line":""},{"line_number":7233,"context_line":"        with self.engine.begin() as conn:"},{"line_number":7234,"context_line":"            result \u003d conn.execute(self.table.select())"},{"line_number":7235,"context_line":"            for row in result:"},{"line_number":7236,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAXH%2F%2FM20%3D","line":7233,"in_reply_to":"AAAAXH%2F%2FM68%3D","updated":"2014-04-23 11:36:54.000000000","message":"The fact that you don\u0027t do an explicit commit here only matters for concurrent transactions (as they won\u0027t see any changes). At the same time, you\u0027ve already issued INSERT within the current transaction, so the data is already in the database, and SELECT here will actually go to the database and retrieve it. COMMIT here is not needed, unless you want the data be seen by concurrent transactions, and for this particular test case we don\u0027t need that.","commit_id":"6ac441ef872a5a9ef0159b733b80d6e954964a06"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"43eb425dd072e6d3a921cdc67d55fe412c24d128","unresolved":false,"context_lines":[{"line_number":7230,"context_line":"            for i in addrs:"},{"line_number":7231,"context_line":"                conn.execute(self.table.insert(), {\u0027addr\u0027: i})"},{"line_number":7232,"context_line":""},{"line_number":7233,"context_line":"        with self.engine.begin() as conn:"},{"line_number":7234,"context_line":"            result \u003d conn.execute(self.table.select())"},{"line_number":7235,"context_line":"            for row in result:"},{"line_number":7236,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAXH%2F%2FM68%3D","line":7233,"in_reply_to":"AAAAXH%2F%2FM8U%3D","updated":"2014-04-23 11:22:06.000000000","message":"So, it shouldn\u0027t be commited at all? How do we know that a database return the correct value?","commit_id":"6ac441ef872a5a9ef0159b733b80d6e954964a06"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"a3871b59eae700a3d7904bd447104f04ea4d41f4","unresolved":false,"context_lines":[{"line_number":7230,"context_line":"            for i in addrs:"},{"line_number":7231,"context_line":"                conn.execute(self.table.insert(), {\u0027addr\u0027: i})"},{"line_number":7232,"context_line":""},{"line_number":7233,"context_line":"        with self.engine.begin() as conn:"},{"line_number":7234,"context_line":"            result \u003d conn.execute(self.table.select())"},{"line_number":7235,"context_line":"            for row in result:"},{"line_number":7236,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAXH%2F%2FM8U%3D","line":7233,"in_reply_to":"AAAAXH%2F%2FNCE%3D","updated":"2014-04-23 11:19:11.000000000","message":"Right, but a read from the current transaction would succeed anyway.","commit_id":"6ac441ef872a5a9ef0159b733b80d6e954964a06"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"3f5afe8824f41b043d131338c97ad8f3e680a766","unresolved":false,"context_lines":[{"line_number":7230,"context_line":"            for i in addrs:"},{"line_number":7231,"context_line":"                conn.execute(self.table.insert(), {\u0027addr\u0027: i})"},{"line_number":7232,"context_line":""},{"line_number":7233,"context_line":"        with self.engine.begin() as conn:"},{"line_number":7234,"context_line":"            result \u003d conn.execute(self.table.select())"},{"line_number":7235,"context_line":"            for row in result:"},{"line_number":7236,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAXH%2F%2FNCE%3D","line":7233,"in_reply_to":"AAAAXH%2F%2FNJ0%3D","updated":"2014-04-23 11:09:00.000000000","message":"The entered value wouldn\u0027t be recorded to a database until the connection is opened. http://docs.sqlalchemy.org/en/rel_0_9/core/connections.html#using-transactions \nBut, yes, explicit commit will be better solution.","commit_id":"6ac441ef872a5a9ef0159b733b80d6e954964a06"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"3a542d792df971421fb033256f6ffed10829cdd2","unresolved":false,"context_lines":[{"line_number":7234,"context_line":"            result \u003d conn.execute(self.table.select())"},{"line_number":7235,"context_line":"            for row in result:"},{"line_number":7236,"context_line":"                try:"},{"line_number":7237,"context_line":"                    self.assertEqual("},{"line_number":7238,"context_line":"                        netaddr.IPNetwork(row.addr, version\u003d4).cidr,"},{"line_number":7239,"context_line":"                        row.addr)"},{"line_number":7240,"context_line":"                except netaddr.AddrFormatError:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAXH%2F%2FNHw%3D","line":7237,"updated":"2014-04-23 10:56:58.000000000","message":"Following the comment to line 7227. Can we replace this with a simple loop comparing retrieved values with the expected ones?","commit_id":"6ac441ef872a5a9ef0159b733b80d6e954964a06"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"3f5afe8824f41b043d131338c97ad8f3e680a766","unresolved":false,"context_lines":[{"line_number":7234,"context_line":"            result \u003d conn.execute(self.table.select())"},{"line_number":7235,"context_line":"            for row in result:"},{"line_number":7236,"context_line":"                try:"},{"line_number":7237,"context_line":"                    self.assertEqual("},{"line_number":7238,"context_line":"                        netaddr.IPNetwork(row.addr, version\u003d4).cidr,"},{"line_number":7239,"context_line":"                        row.addr)"},{"line_number":7240,"context_line":"                except netaddr.AddrFormatError:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAXH%2F%2FNCI%3D","line":7237,"in_reply_to":"AAAAXH%2F%2FNHw%3D","updated":"2014-04-23 11:09:00.000000000","message":"Done","commit_id":"6ac441ef872a5a9ef0159b733b80d6e954964a06"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"77a7203cc593698854e2c6846dd03351f53b3556","unresolved":false,"context_lines":[{"line_number":7232,"context_line":"            for i in addrs:"},{"line_number":7233,"context_line":"                conn.execute(self.table.insert(), {\u0027addr\u0027: i[0]})"},{"line_number":7234,"context_line":""},{"line_number":7235,"context_line":"            result \u003d conn.execute(self.table.select())"},{"line_number":7236,"context_line":"            for idx, row in enumerate(result):"},{"line_number":7237,"context_line":"                self.assertEqual(addrs[idx][1], str(row.addr.cidr))"},{"line_number":7238,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAXH%2F%2FMP4%3D","line":7235,"updated":"2014-04-23 12:54:02.000000000","message":"nit: this should probably work as it is, but in general case we should not make any assumptions on the order of rows returned by SELECT (as it provides no guarantees), unless we also use ORDER BY. E.g. we could order the results by id here.","commit_id":"ec4149454815af32a5101007d59aab982a7a4aed"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"180f84d3012c448037b282abd24ea13278b5772f","unresolved":false,"context_lines":[{"line_number":46,"context_line":"from nova import db"},{"line_number":47,"context_line":"from nova.db.sqlalchemy import api as sqlalchemy_api"},{"line_number":48,"context_line":"from nova.db.sqlalchemy import models"},{"line_number":49,"context_line":"from nova.db.sqlalchemy import types"},{"line_number":50,"context_line":"from nova.db.sqlalchemy import utils as db_utils"},{"line_number":51,"context_line":"from nova import exception"},{"line_number":52,"context_line":"from nova.openstack.common.db import api as db_api"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAXH%2F%2FEq4%3D","line":49,"updated":"2014-04-24 08:22:34.000000000","message":"I\u0027m really surprised this isn\u0027t detected by our pep8 check, but import actually shadows the one from line 24, please choose a different name for it","commit_id":"27fd4847c32f1248195f07e69fc74e973ef4576d"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"180f84d3012c448037b282abd24ea13278b5772f","unresolved":false,"context_lines":[{"line_number":7236,"context_line":"            query \u003d self.table.select().order_by(self.table.c.id)"},{"line_number":7237,"context_line":"            result \u003d conn.execute(query)"},{"line_number":7238,"context_line":"            for idx, row in enumerate(result):"},{"line_number":7239,"context_line":"                db_repr \u003d (str(row.addr.cidr)"},{"line_number":7240,"context_line":"                    if hasattr(row.addr, \u0027cidr\u0027) else row.addr)"},{"line_number":7241,"context_line":"                self.assertEqual(addrs[idx][1], db_repr)"},{"line_number":7242,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAXH%2F%2FErc%3D","line":7239,"updated":"2014-04-24 08:22:34.000000000","message":"when process_result_value() is fixed, this won\u0027t be needed any more, just use row.addr value here","commit_id":"27fd4847c32f1248195f07e69fc74e973ef4576d"}]}
