)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"dd70b55f179ae5c37f24ab27799f2f98c6339898","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: #1224978"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements: blueprint schema-enhancement-to-support-multisegment-network"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I560c34c6fe1c5425469ccdf9b8b4905c123d496d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1abeadc6_c64d9074","line":15,"updated":"2014-08-18 15:47:14.000000000","message":"I seems a BP is not required for closing a bug","commit_id":"5050516f0b0e446bba5be401a8d21aca2690483e"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"6435c4bf1c686684290761e9893e8d8c5c3c2054","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: #1224978"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements: blueprint schema-enhancement-to-support-multisegment-network"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I560c34c6fe1c5425469ccdf9b8b4905c123d496d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1abeadc6_71c71446","line":15,"in_reply_to":"1abeadc6_c64d9074","updated":"2014-08-18 16:02:40.000000000","message":"Actually, it was suggested by one of the reviewers.\n\"A change like this requires a reference to a bug and perhaps a bp/spec.\". Thats why I proposed it via bp/spec.\n\nShall I remove it ? Please suggests...","commit_id":"5050516f0b0e446bba5be401a8d21aca2690483e"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"3dec4ba1155367e10af15f2688f47bd5e586f09b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Romil Gupta \u003cromilg@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-09-21 09:21:38 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Schema enhancement to support MultiSegment Network"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, there is nothing in the schema that ensures segments"},{"line_number":10,"context_line":"for a network are returned in the same order they were specified"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"da9df570_14e504a8","line":7,"updated":"2014-09-22 08:26:16.000000000","message":"It would be great to explain why it\u0027s required (like the explanation in LP)","commit_id":"329605ee21dd1a7effa6cb5fb9f57b109a09b797"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"482dc4c04320d3a901b2860568c2d0cdcfb00ee8","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Romil Gupta \u003cromilg@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-09-21 09:21:38 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Schema enhancement to support MultiSegment Network"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, there is nothing in the schema that ensures segments"},{"line_number":10,"context_line":"for a network are returned in the same order they were specified"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"da9df570_536f9892","line":7,"in_reply_to":"da9df570_14e504a8","updated":"2014-09-22 15:19:33.000000000","message":"I think the detailed problem definition is already given in #1224978.\n\nBTW, what do we mean by LP?","commit_id":"329605ee21dd1a7effa6cb5fb9f57b109a09b797"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"7e78b0b835eda5a6decbe80488e783445b24611e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, there is nothing in the schema that ensures segments"},{"line_number":10,"context_line":"for a network are returned in the same order they were specified"},{"line_number":11,"context_line":"when the network was created, or even in a deterministic order."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: #1224978"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"da9df570_eda200fc","line":11,"updated":"2014-09-25 14:35:05.000000000","message":"Above describes the issue. Should provide a summary of the solution.","commit_id":"ef8b498dc67bc841feab7fd02a03fe34b7351b09"}],"neutron/db/migration/alembic_migrations/versions/1f71e54a85e7_ml2_net_seg_model.py":[{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"a988d04d48441801ae39c9176e7e139b2a18fef5","unresolved":false,"context_lines":[{"line_number":30,"context_line":"import sqlalchemy as sa"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def upgrade(active_plugins\u003dNone, options\u003dNone):"},{"line_number":34,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027,"},{"line_number":35,"context_line":"                sa.Column(\u0027segment_index\u0027, sa.Integer(), nullable\u003dFalse,"},{"line_number":36,"context_line":"                        server_default\u003d\u00270\u0027))"}],"source_content_type":"text/x-python","patch_set":14,"id":"da9df570_6e7e7de6","line":33,"updated":"2014-09-22 07:37:58.000000000","message":"Since this change get merged https://review.openstack.org/117913 active_plugins and options are not needed anymore. Remove this.","commit_id":"329605ee21dd1a7effa6cb5fb9f57b109a09b797"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"86a51305540689e40b11b2a99ccd57fcf29cc775","unresolved":false,"context_lines":[{"line_number":30,"context_line":"import sqlalchemy as sa"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def upgrade(active_plugins\u003dNone, options\u003dNone):"},{"line_number":34,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027,"},{"line_number":35,"context_line":"                sa.Column(\u0027segment_index\u0027, sa.Integer(), nullable\u003dFalse,"},{"line_number":36,"context_line":"                        server_default\u003d\u00270\u0027))"}],"source_content_type":"text/x-python","patch_set":14,"id":"da9df570_144984d0","line":33,"in_reply_to":"da9df570_6e7e7de6","updated":"2014-09-22 08:22:22.000000000","message":"Done","commit_id":"329605ee21dd1a7effa6cb5fb9f57b109a09b797"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"49e051dd4096d7cbbce7c30b0a9da697ae20a4b1","unresolved":false,"context_lines":[{"line_number":33,"context_line":"def upgrade(active_plugins\u003dNone, options\u003dNone):"},{"line_number":34,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027,"},{"line_number":35,"context_line":"                sa.Column(\u0027segment_index\u0027, sa.Integer(), nullable\u003dFalse,"},{"line_number":36,"context_line":"                        server_default\u003d\u00270\u0027))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def downgrade(active_plugins\u003dNone, options\u003dNone):"}],"source_content_type":"text/x-python","patch_set":14,"id":"da9df570_ad95c1e5","line":36,"updated":"2014-09-22 14:29:43.000000000","message":"Nit: In the above two lines, indent args to line up with first arg.","commit_id":"329605ee21dd1a7effa6cb5fb9f57b109a09b797"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"482dc4c04320d3a901b2860568c2d0cdcfb00ee8","unresolved":false,"context_lines":[{"line_number":33,"context_line":"def upgrade(active_plugins\u003dNone, options\u003dNone):"},{"line_number":34,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027,"},{"line_number":35,"context_line":"                sa.Column(\u0027segment_index\u0027, sa.Integer(), nullable\u003dFalse,"},{"line_number":36,"context_line":"                        server_default\u003d\u00270\u0027))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def downgrade(active_plugins\u003dNone, options\u003dNone):"}],"source_content_type":"text/x-python","patch_set":14,"id":"da9df570_53f6b8d8","line":36,"in_reply_to":"da9df570_ad95c1e5","updated":"2014-09-22 15:19:33.000000000","message":"Done","commit_id":"329605ee21dd1a7effa6cb5fb9f57b109a09b797"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"a988d04d48441801ae39c9176e7e139b2a18fef5","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                        server_default\u003d\u00270\u0027))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def downgrade(active_plugins\u003dNone, options\u003dNone):"},{"line_number":40,"context_line":"    op.drop_column(\u0027ml2_network_segments\u0027, \u0027segment_index\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da9df570_8e83a1cb","line":39,"updated":"2014-09-22 07:37:58.000000000","message":"The same","commit_id":"329605ee21dd1a7effa6cb5fb9f57b109a09b797"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"86a51305540689e40b11b2a99ccd57fcf29cc775","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                        server_default\u003d\u00270\u0027))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def downgrade(active_plugins\u003dNone, options\u003dNone):"},{"line_number":40,"context_line":"    op.drop_column(\u0027ml2_network_segments\u0027, \u0027segment_index\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da9df570_344688c0","line":39,"in_reply_to":"da9df570_8e83a1cb","updated":"2014-09-22 08:22:22.000000000","message":"Done","commit_id":"329605ee21dd1a7effa6cb5fb9f57b109a09b797"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"a489e83bb58613bab8c7282a9d1b88b0fd23ef36","unresolved":false,"context_lines":[{"line_number":33,"context_line":"def upgrade():"},{"line_number":34,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027,"},{"line_number":35,"context_line":"                sa.Column(\u0027segment_index\u0027, sa.Integer(), nullable\u003dFalse,"},{"line_number":36,"context_line":"                server_default\u003d\u00270\u0027))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def downgrade():"}],"source_content_type":"text/x-python","patch_set":16,"id":"baa201ad_e4f1c296","line":36,"updated":"2014-09-29 07:48:06.000000000","message":"Although pep8 pass seems that this two lines above are not in the right place. Indent args should be to line up with first arg.","commit_id":"910cf9901cdf72d17a93d3369568f9dcd32c2baa"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"ebecb071fd5cb6c005dea753f9a3769f93f55840","unresolved":false,"context_lines":[{"line_number":33,"context_line":"def upgrade():"},{"line_number":34,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027,"},{"line_number":35,"context_line":"                sa.Column(\u0027segment_index\u0027, sa.Integer(), nullable\u003dFalse,"},{"line_number":36,"context_line":"                server_default\u003d\u00270\u0027))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def downgrade():"}],"source_content_type":"text/x-python","patch_set":16,"id":"baa201ad_ca4d6e74","line":36,"in_reply_to":"baa201ad_0f5b0888","updated":"2014-10-01 06:10:41.000000000","message":"Sorry, I was doing it wrong way.\nAgreed with Ann and Koteswara , will update it in the next patch set if required.\n\nAlso, I think it should be considered as nit comment.","commit_id":"910cf9901cdf72d17a93d3369568f9dcd32c2baa"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"2b338bd9ff15150d01332470cc34d67694ab05ef","unresolved":false,"context_lines":[{"line_number":33,"context_line":"def upgrade():"},{"line_number":34,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027,"},{"line_number":35,"context_line":"                sa.Column(\u0027segment_index\u0027, sa.Integer(), nullable\u003dFalse,"},{"line_number":36,"context_line":"                server_default\u003d\u00270\u0027))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def downgrade():"}],"source_content_type":"text/x-python","patch_set":16,"id":"baa201ad_0f5b0888","line":36,"in_reply_to":"baa201ad_4f26f017","updated":"2014-10-01 05:44:15.000000000","message":"Then it wouldn\u0027t be multiple of 4 and pep8 gives error. I tried it earlier","commit_id":"910cf9901cdf72d17a93d3369568f9dcd32c2baa"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"a2484f487e7688cd7c48fa85e5314451d45607f3","unresolved":false,"context_lines":[{"line_number":33,"context_line":"def upgrade():"},{"line_number":34,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027,"},{"line_number":35,"context_line":"                sa.Column(\u0027segment_index\u0027, sa.Integer(), nullable\u003dFalse,"},{"line_number":36,"context_line":"                server_default\u003d\u00270\u0027))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def downgrade():"}],"source_content_type":"text/x-python","patch_set":16,"id":"baa201ad_ebaa35d1","line":36,"in_reply_to":"baa201ad_8827ef63","updated":"2014-10-01 08:26:00.000000000","message":"Done","commit_id":"910cf9901cdf72d17a93d3369568f9dcd32c2baa"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"0ee9637a603b923afad70503c58dcbc21cfafa4c","unresolved":false,"context_lines":[{"line_number":33,"context_line":"def upgrade():"},{"line_number":34,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027,"},{"line_number":35,"context_line":"                sa.Column(\u0027segment_index\u0027, sa.Integer(), nullable\u003dFalse,"},{"line_number":36,"context_line":"                server_default\u003d\u00270\u0027))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def downgrade():"}],"source_content_type":"text/x-python","patch_set":16,"id":"baa201ad_8827ef63","line":36,"in_reply_to":"baa201ad_ca4d6e74","updated":"2014-10-01 07:37:09.000000000","message":"This is nit, but as you don\u0027t have +2 on this change this could be updated with correcting this. This will look much better :)","commit_id":"910cf9901cdf72d17a93d3369568f9dcd32c2baa"},{"author":{"_account_id":11614,"name":"Koteswara Rao Kelam","email":"koteswara.kelam@hp.com","username":"koteswar"},"change_message_id":"473ae2c0d3c4fff861295b43c90de9bffb455e05","unresolved":false,"context_lines":[{"line_number":33,"context_line":"def upgrade():"},{"line_number":34,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027,"},{"line_number":35,"context_line":"                sa.Column(\u0027segment_index\u0027, sa.Integer(), nullable\u003dFalse,"},{"line_number":36,"context_line":"                server_default\u003d\u00270\u0027))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def downgrade():"}],"source_content_type":"text/x-python","patch_set":16,"id":"baa201ad_4f26f017","line":36,"in_reply_to":"baa201ad_e4f1c296","updated":"2014-10-01 05:35:54.000000000","message":"+1 to Ann\u0027s comment","commit_id":"910cf9901cdf72d17a93d3369568f9dcd32c2baa"}],"neutron/db/migration/alembic_migrations/versions/3078e7efaaa7_ml2_net_seg_model.py":[{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"0df97f770628a4dad725909fa47be7fe81832296","unresolved":false,"context_lines":[{"line_number":28,"context_line":"# Change to [\u0027*\u0027] if this migration applies to all plugins"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"migration_for_plugins \u003d ["},{"line_number":31,"context_line":"    \u0027neutron.plugins.ml2.plugin.Ml2Plugin\u0027"},{"line_number":32,"context_line":"]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from alembic import op"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_682c9d4b","line":31,"updated":"2014-08-18 08:13:40.000000000","message":"Migrations are unconditional now. This should be removed.","commit_id":"f6ed6f4eae7e715ececf2cd4e0a38c2100b11bdc"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"87873355ecb7e37bce8dfba9cf61a8832fc79631","unresolved":false,"context_lines":[{"line_number":28,"context_line":"# Change to [\u0027*\u0027] if this migration applies to all plugins"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"migration_for_plugins \u003d ["},{"line_number":31,"context_line":"    \u0027neutron.plugins.ml2.plugin.Ml2Plugin\u0027"},{"line_number":32,"context_line":"]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from alembic import op"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_bfb0a5f5","line":31,"in_reply_to":"1abeadc6_1f4b595a","updated":"2014-08-18 10:32:37.000000000","message":"Done","commit_id":"f6ed6f4eae7e715ececf2cd4e0a38c2100b11bdc"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"49c52b6523f12f1afef04fc6b1d448bbd324ab65","unresolved":false,"context_lines":[{"line_number":28,"context_line":"# Change to [\u0027*\u0027] if this migration applies to all plugins"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"migration_for_plugins \u003d ["},{"line_number":31,"context_line":"    \u0027neutron.plugins.ml2.plugin.Ml2Plugin\u0027"},{"line_number":32,"context_line":"]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from alembic import op"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_1f4b595a","line":31,"in_reply_to":"1abeadc6_3403dc10","updated":"2014-08-18 10:19:30.000000000","message":"Put [\u0027*\u0027] or remove migration_for_plugins, that is fine as change request that changes template for generating migrations has not appeared yet.","commit_id":"f6ed6f4eae7e715ececf2cd4e0a38c2100b11bdc"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"be44f004e74f83183e5c4f541814f9f7d93162f3","unresolved":false,"context_lines":[{"line_number":28,"context_line":"# Change to [\u0027*\u0027] if this migration applies to all plugins"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"migration_for_plugins \u003d ["},{"line_number":31,"context_line":"    \u0027neutron.plugins.ml2.plugin.Ml2Plugin\u0027"},{"line_number":32,"context_line":"]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from alembic import op"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_3403dc10","line":31,"in_reply_to":"1abeadc6_682c9d4b","updated":"2014-08-18 10:14:28.000000000","message":"Shall I put [\u0027*\u0027] ?\nIs it fine ...please suggests.","commit_id":"f6ed6f4eae7e715ececf2cd4e0a38c2100b11bdc"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"dd70b55f179ae5c37f24ab27799f2f98c6339898","unresolved":false,"context_lines":[{"line_number":25,"context_line":"revision \u003d \u00273078e7efaaa7\u0027"},{"line_number":26,"context_line":"down_revision \u003d \u00274eba2f05c2f4\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"migration_for_plugins \u003d ["},{"line_number":29,"context_line":"    \u0027*\u0027"},{"line_number":30,"context_line":"]"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_e63c4c96","line":28,"updated":"2014-08-18 15:47:14.000000000","message":"iirc, migration_for_plugins should not be defined and migration.should_run should not be used","commit_id":"5050516f0b0e446bba5be401a8d21aca2690483e"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"a3f5a0be3c5fd27d95184078831bec7528ea21d8","unresolved":false,"context_lines":[{"line_number":25,"context_line":"revision \u003d \u00273078e7efaaa7\u0027"},{"line_number":26,"context_line":"down_revision \u003d \u00274eba2f05c2f4\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"migration_for_plugins \u003d ["},{"line_number":29,"context_line":"    \u0027*\u0027"},{"line_number":30,"context_line":"]"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_3692ed57","line":28,"in_reply_to":"1abeadc6_e357d900","updated":"2014-08-18 17:43:51.000000000","message":"an example:  https://github.com/openstack/neutron/commit/45e8eaa1b12ae1c7b0707d42eb82661c7035e3a4","commit_id":"5050516f0b0e446bba5be401a8d21aca2690483e"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"0de7cb01272d1ce9b043cdf9246889143bd743cb","unresolved":false,"context_lines":[{"line_number":25,"context_line":"revision \u003d \u00273078e7efaaa7\u0027"},{"line_number":26,"context_line":"down_revision \u003d \u00274eba2f05c2f4\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"migration_for_plugins \u003d ["},{"line_number":29,"context_line":"    \u0027*\u0027"},{"line_number":30,"context_line":"]"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_e357d900","line":28,"in_reply_to":"1abeadc6_e63c4c96","updated":"2014-08-18 17:04:34.000000000","message":"Shall I remove following lines:\n\nmigration_for_plugins \u003d [\u0027*\u0027]\n\nfrom neutron.db import migration\n\nif not migration.should_run(active_plugins, migration_for_plugins):\n        return\n\nPlease suggests..","commit_id":"5050516f0b0e446bba5be401a8d21aca2690483e"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"91abe54045329788594a6b439378ca0221fd4654","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def upgrade(active_plugins\u003dNone, options\u003dNone):"},{"line_number":34,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027, sa.Column(\u0027segment_index\u0027,"},{"line_number":35,"context_line":"                                          sa.Integer(), nullable\u003dFalse))"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def downgrade(active_plugins\u003dNone, options\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_c4164c55","line":35,"updated":"2014-08-19 08:34:26.000000000","message":"Suggestion:\n\n     op.add_column(\u0027ml2_network_segments\u0027, \n                   sa.Column(\u0027segment_index\u0027, sa.Integer(), nullable\u003dFalse))\n\nI think this is better readable.","commit_id":"c821a32a53f9cfaa02c5a61bf3ef91e52c8c32ab"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"554ecbb345de94b9e70b03ddc853f33cbbe8b6de","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def upgrade(active_plugins\u003dNone, options\u003dNone):"},{"line_number":34,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027, sa.Column(\u0027segment_index\u0027,"},{"line_number":35,"context_line":"                                          sa.Integer(), nullable\u003dFalse))"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def downgrade(active_plugins\u003dNone, options\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_cf9d855b","line":35,"in_reply_to":"1abeadc6_c4164c55","updated":"2014-08-19 08:41:16.000000000","message":"Thanks :)\nI will do it in next patch set.","commit_id":"c821a32a53f9cfaa02c5a61bf3ef91e52c8c32ab"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"8ed99c71a63f7f459f2bc851ddf7512baaeb69da","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def upgrade(active_plugins\u003dNone, options\u003dNone):"},{"line_number":34,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027,"},{"line_number":35,"context_line":"                sa.Column(\u0027segment_index\u0027, sa.Integer(), nullable\u003dFalse))"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def downgrade(active_plugins\u003dNone, options\u003dNone):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_3b4d123f","line":35,"updated":"2014-08-20 18:18:20.000000000","message":"if that column is nullable, you need to provide server_default to it, otherwise it will fail if migration is run on populated database","commit_id":"3f68fe0349c285e9b91eccc4944523497dc3ecb5"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"b8ee73ca33042dbbe7e996ed46a404b50739bad9","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def upgrade(active_plugins\u003dNone, options\u003dNone):"},{"line_number":34,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027,"},{"line_number":35,"context_line":"                sa.Column(\u0027segment_index\u0027, sa.Integer(), nullable\u003dFalse))"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def downgrade(active_plugins\u003dNone, options\u003dNone):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_76e5e136","line":35,"in_reply_to":"1abeadc6_3b4d123f","updated":"2014-08-20 18:42:28.000000000","message":"Shall I provide server_default\u003d\u0027 \u0027 ?\nplease suggests...","commit_id":"3f68fe0349c285e9b91eccc4944523497dc3ecb5"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"591625aef2736b907a310a3585e93b00f7548a0e","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def upgrade(active_plugins\u003dNone, options\u003dNone):"},{"line_number":34,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027,"},{"line_number":35,"context_line":"                sa.Column(\u0027segment_index\u0027, sa.Integer(), nullable\u003dFalse))"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def downgrade(active_plugins\u003dNone, options\u003dNone):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_aa8a9bbc","line":35,"in_reply_to":"1abeadc6_76e5e136","updated":"2014-08-21 07:32:32.000000000","message":"server_default\u003d\u00270\u0027 as it is Integer. Also add this to model.","commit_id":"3f68fe0349c285e9b91eccc4944523497dc3ecb5"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"55e9c6d700f83aef2136ae04fc9dfc2f9c475774","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def upgrade(active_plugins\u003dNone, options\u003dNone):"},{"line_number":34,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027,"},{"line_number":35,"context_line":"                sa.Column(\u0027segment_index\u0027, sa.Integer(), nullable\u003dFalse))"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def downgrade(active_plugins\u003dNone, options\u003dNone):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_f073a24b","line":35,"in_reply_to":"1abeadc6_aa8a9bbc","updated":"2014-08-21 09:40:42.000000000","message":"Done","commit_id":"3f68fe0349c285e9b91eccc4944523497dc3ecb5"}],"neutron/db/migration/alembic_migrations/versions/4f3ab3b57fba_ml2_net_seg_model.py":[{"author":{"_account_id":9820,"name":"Liping Mao","email":"limao@cisco.com","username":"LipingMao"},"change_message_id":"1760a7cbf7bfa783e56c31eb63bef1ef6e13b138","unresolved":false,"context_lines":[{"line_number":28,"context_line":"# Change to [\u0027*\u0027] if this migration applies to all plugins"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"migration_for_plugins \u003d ["},{"line_number":31,"context_line":"    \u0027neutron.plugins.ml2.plugin.Ml2Plugin\u0027"},{"line_number":32,"context_line":"]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from alembic import op"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_fdc79862","line":31,"updated":"2014-08-14 01:17:50.000000000","message":"\"multi-provider\" extension is supported by \"ml2\" and \"nicira\".","commit_id":"20e5b138edef576c8268f29a046673059aaad44b"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"6d66824dd49e53412713252cb552ba0233d9decc","unresolved":false,"context_lines":[{"line_number":28,"context_line":"# Change to [\u0027*\u0027] if this migration applies to all plugins"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"migration_for_plugins \u003d ["},{"line_number":31,"context_line":"    \u0027neutron.plugins.ml2.plugin.Ml2Plugin\u0027"},{"line_number":32,"context_line":"]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from alembic import op"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ac4a560_b5fe2037","line":31,"in_reply_to":"7ac7a964_6a9bb1c9","updated":"2014-08-16 17:53:20.000000000","message":"Hi Mao,\n\nI could see in the neutron code Ml2 plugin is using ml2_network_segments table and Multi-segment network is only supported by Ml2 plugin. I am not sure whether we should add nicira plugin here.\n\nPlease suggests.","commit_id":"20e5b138edef576c8268f29a046673059aaad44b"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"32eb8c4a588c9e230e08f59a04ebbb3b37ebbef7","unresolved":false,"context_lines":[{"line_number":28,"context_line":"# Change to [\u0027*\u0027] if this migration applies to all plugins"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"migration_for_plugins \u003d ["},{"line_number":31,"context_line":"    \u0027neutron.plugins.ml2.plugin.Ml2Plugin\u0027"},{"line_number":32,"context_line":"]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from alembic import op"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_6a9bb1c9","line":31,"in_reply_to":"7ac7a964_fdc79862","updated":"2014-08-14 07:47:10.000000000","message":"Shall I add these two lines :\n\u0027neutron.plugins.vmware.plugin.NsxPlugin\u0027,\n\u0027neutron.plugins.vmware.plugin.NsxServicePlugin\u0027\n\nIs it fine ??","commit_id":"20e5b138edef576c8268f29a046673059aaad44b"},{"author":{"_account_id":9820,"name":"Liping Mao","email":"limao@cisco.com","username":"LipingMao"},"change_message_id":"1760a7cbf7bfa783e56c31eb63bef1ef6e13b138","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    if not migration.should_run(active_plugins, migration_for_plugins):"},{"line_number":42,"context_line":"        return"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    ### commands auto generated by Alembic - please adjust! ###"},{"line_number":45,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027, sa.Column(\u0027segment_index\u0027,"},{"line_number":46,"context_line":"                                            sa.Integer(), nullable\u003dTrue))"},{"line_number":47,"context_line":"    ### end Alembic commands ###"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_7d0f08e2","line":44,"updated":"2014-08-14 01:17:50.000000000","message":"Remove this comment.","commit_id":"20e5b138edef576c8268f29a046673059aaad44b"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"32eb8c4a588c9e230e08f59a04ebbb3b37ebbef7","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    if not migration.should_run(active_plugins, migration_for_plugins):"},{"line_number":42,"context_line":"        return"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    ### commands auto generated by Alembic - please adjust! ###"},{"line_number":45,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027, sa.Column(\u0027segment_index\u0027,"},{"line_number":46,"context_line":"                                            sa.Integer(), nullable\u003dTrue))"},{"line_number":47,"context_line":"    ### end Alembic commands ###"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_47034e0f","line":44,"in_reply_to":"7ac7a964_7d0f08e2","updated":"2014-08-14 07:47:10.000000000","message":"will do it","commit_id":"20e5b138edef576c8268f29a046673059aaad44b"},{"author":{"_account_id":9820,"name":"Liping Mao","email":"limao@cisco.com","username":"LipingMao"},"change_message_id":"1760a7cbf7bfa783e56c31eb63bef1ef6e13b138","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        return"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    ### commands auto generated by Alembic - please adjust! ###"},{"line_number":45,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027, sa.Column(\u0027segment_index\u0027,"},{"line_number":46,"context_line":"                                            sa.Integer(), nullable\u003dTrue))"},{"line_number":47,"context_line":"    ### end Alembic commands ###"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_9de22402","line":45,"updated":"2014-08-14 01:17:50.000000000","message":"In the spec file, it is named \"segment_order\"?\nhttps://review.openstack.org/#/c/110558/4/specs/juno/schema-enhancement-to-support-multisegment-network.rst","commit_id":"20e5b138edef576c8268f29a046673059aaad44b"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"32eb8c4a588c9e230e08f59a04ebbb3b37ebbef7","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        return"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    ### commands auto generated by Alembic - please adjust! ###"},{"line_number":45,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027, sa.Column(\u0027segment_index\u0027,"},{"line_number":46,"context_line":"                                            sa.Integer(), nullable\u003dTrue))"},{"line_number":47,"context_line":"    ### end Alembic commands ###"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_0a107d4d","line":45,"in_reply_to":"7ac7a964_9de22402","updated":"2014-08-14 07:47:10.000000000","message":"Shall I change in the spec file also?\nOne of the reviewers told me to change it.","commit_id":"20e5b138edef576c8268f29a046673059aaad44b"},{"author":{"_account_id":9820,"name":"Liping Mao","email":"limao@cisco.com","username":"LipingMao"},"change_message_id":"1760a7cbf7bfa783e56c31eb63bef1ef6e13b138","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    ### commands auto generated by Alembic - please adjust! ###"},{"line_number":45,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027, sa.Column(\u0027segment_index\u0027,"},{"line_number":46,"context_line":"                                            sa.Integer(), nullable\u003dTrue))"},{"line_number":47,"context_line":"    ### end Alembic commands ###"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"def downgrade(active_plugins\u003dNone, options\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_9d14e4f6","line":47,"updated":"2014-08-14 01:17:50.000000000","message":"Remove this comment.","commit_id":"20e5b138edef576c8268f29a046673059aaad44b"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"32eb8c4a588c9e230e08f59a04ebbb3b37ebbef7","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    ### commands auto generated by Alembic - please adjust! ###"},{"line_number":45,"context_line":"    op.add_column(\u0027ml2_network_segments\u0027, sa.Column(\u0027segment_index\u0027,"},{"line_number":46,"context_line":"                                            sa.Integer(), nullable\u003dTrue))"},{"line_number":47,"context_line":"    ### end Alembic commands ###"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"def downgrade(active_plugins\u003dNone, options\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_aa09492e","line":47,"in_reply_to":"7ac7a964_9d14e4f6","updated":"2014-08-14 07:47:10.000000000","message":"will do it","commit_id":"20e5b138edef576c8268f29a046673059aaad44b"},{"author":{"_account_id":9820,"name":"Liping Mao","email":"limao@cisco.com","username":"LipingMao"},"change_message_id":"1760a7cbf7bfa783e56c31eb63bef1ef6e13b138","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    if not migration.should_run(active_plugins, migration_for_plugins):"},{"line_number":52,"context_line":"        return"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    ### commands auto generated by Alembic - please adjust! ###"},{"line_number":55,"context_line":"    op.drop_column(\u0027ml2_network_segments\u0027, \u0027segment_index\u0027)"},{"line_number":56,"context_line":"    ### end Alembic commands ###"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_bdf8c0c5","line":54,"updated":"2014-08-14 01:17:50.000000000","message":"Remove this comment.","commit_id":"20e5b138edef576c8268f29a046673059aaad44b"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"32eb8c4a588c9e230e08f59a04ebbb3b37ebbef7","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    if not migration.should_run(active_plugins, migration_for_plugins):"},{"line_number":52,"context_line":"        return"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    ### commands auto generated by Alembic - please adjust! ###"},{"line_number":55,"context_line":"    op.drop_column(\u0027ml2_network_segments\u0027, \u0027segment_index\u0027)"},{"line_number":56,"context_line":"    ### end Alembic commands ###"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_ca0e8534","line":54,"in_reply_to":"7ac7a964_bdf8c0c5","updated":"2014-08-14 07:47:10.000000000","message":"will do it","commit_id":"20e5b138edef576c8268f29a046673059aaad44b"},{"author":{"_account_id":9820,"name":"Liping Mao","email":"limao@cisco.com","username":"LipingMao"},"change_message_id":"1760a7cbf7bfa783e56c31eb63bef1ef6e13b138","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    ### commands auto generated by Alembic - please adjust! ###"},{"line_number":55,"context_line":"    op.drop_column(\u0027ml2_network_segments\u0027, \u0027segment_index\u0027)"},{"line_number":56,"context_line":"    ### end Alembic commands ###"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_ddf57ccc","line":56,"updated":"2014-08-14 01:17:50.000000000","message":"Remove this comment.","commit_id":"20e5b138edef576c8268f29a046673059aaad44b"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"32eb8c4a588c9e230e08f59a04ebbb3b37ebbef7","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    ### commands auto generated by Alembic - please adjust! ###"},{"line_number":55,"context_line":"    op.drop_column(\u0027ml2_network_segments\u0027, \u0027segment_index\u0027)"},{"line_number":56,"context_line":"    ### end Alembic commands ###"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_ea126157","line":56,"in_reply_to":"7ac7a964_ddf57ccc","updated":"2014-08-14 07:47:10.000000000","message":"will do it","commit_id":"20e5b138edef576c8268f29a046673059aaad44b"}],"neutron/plugins/ml2/db.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5a2275ab88c3c9c543a6aca1d93b84ec4ee13f86","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            api.NETWORK_TYPE: record.network_type,"},{"line_number":38,"context_line":"            api.PHYSICAL_NETWORK: record.physical_network,"},{"line_number":39,"context_line":"            api.SEGMENTATION_ID: record.segmentation_id,"},{"line_number":40,"context_line":"            \u0027segment_index\u0027: record.segment_index}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def add_network_segment(session, network_id, segment, segment_index\u003d0,"}],"source_content_type":"text/x-python","patch_set":21,"id":"baa201ad_4ed596e3","line":40,"updated":"2014-10-16 14:49:15.000000000","message":"perhaps you\u0027d want to use a symbolic label for this too. But do we really need to represent this in the dict? If the objective is only to retrieve the elements in order perhaps we don\u0027t need to track that, do we?","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"8857def5428f761523a7bad0b8c072cf51c64266","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            api.NETWORK_TYPE: record.network_type,"},{"line_number":38,"context_line":"            api.PHYSICAL_NETWORK: record.physical_network,"},{"line_number":39,"context_line":"            api.SEGMENTATION_ID: record.segmentation_id,"},{"line_number":40,"context_line":"            \u0027segment_index\u0027: record.segment_index}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def add_network_segment(session, network_id, segment, segment_index\u003d0,"}],"source_content_type":"text/x-python","patch_set":21,"id":"9aa7fdbe_b1c37389","line":40,"in_reply_to":"9aa7fdbe_118d1f7c","updated":"2014-10-19 19:26:42.000000000","message":"I could see that there is already a bug https://bugs.launchpad.net/neutron/+bug/1269131 for ML2 unit test coverage - db. I will sync up with assigned person and will write UT for add_network_segment and get_network_segment present in ml2/db.py if he allows me :)","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8534f287a7f63e1712857e43ae23239b19f24ca6","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            api.NETWORK_TYPE: record.network_type,"},{"line_number":38,"context_line":"            api.PHYSICAL_NETWORK: record.physical_network,"},{"line_number":39,"context_line":"            api.SEGMENTATION_ID: record.segmentation_id,"},{"line_number":40,"context_line":"            \u0027segment_index\u0027: record.segment_index}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def add_network_segment(session, network_id, segment, segment_index\u003d0,"}],"source_content_type":"text/x-python","patch_set":21,"id":"baa201ad_db605fa7","line":40,"in_reply_to":"baa201ad_1f7e56af","updated":"2014-10-16 17:07:34.000000000","message":"Perhaps this is not the best test then. Maybe we can verify that the segment order is preserved and that would be enough. Can\u0027t comparing the structure be enough?\n\nIn general is a bad idea to add util code in order to address a test need.","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"8a6c45da3fdf3e7c4dad4b0a396602edacb56f0d","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            api.NETWORK_TYPE: record.network_type,"},{"line_number":38,"context_line":"            api.PHYSICAL_NETWORK: record.physical_network,"},{"line_number":39,"context_line":"            api.SEGMENTATION_ID: record.segmentation_id,"},{"line_number":40,"context_line":"            \u0027segment_index\u0027: record.segment_index}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def add_network_segment(session, network_id, segment, segment_index\u003d0,"}],"source_content_type":"text/x-python","patch_set":21,"id":"baa201ad_1f7e56af","line":40,"in_reply_to":"baa201ad_4ed596e3","updated":"2014-10-16 16:23:32.000000000","message":"Actually this is required to verify in the unit test, I am reading segment_index value in following UT.\n\nhttps://review.openstack.org/#/c/103546/21/neutron/tests/unit/ml2/test_ml2_plugin.py\n\n self.assertEqual(segment_index,\n                            segments[segment_index][\u0027segment_index\u0027])\n\nI am not sure how I could avoid that. It would be great if you could provide a suggestion.\n\nOne think I can propose currently there is not UT for add_network_segment . Shall I write that and test there ?\n\nFor that shall I rename this file https://github.com/openstack/neutron/blob/master/neutron/tests/unit/ml2/db/test_ml2_dvr_db.py to test_ml2_db.py and add the tests for add_network_segment and get_network_segments ?","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"1c070c3eaa0e571e700c30c087f786138ec29a5c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            api.NETWORK_TYPE: record.network_type,"},{"line_number":38,"context_line":"            api.PHYSICAL_NETWORK: record.physical_network,"},{"line_number":39,"context_line":"            api.SEGMENTATION_ID: record.segmentation_id,"},{"line_number":40,"context_line":"            \u0027segment_index\u0027: record.segment_index}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def add_network_segment(session, network_id, segment, segment_index\u003d0,"}],"source_content_type":"text/x-python","patch_set":21,"id":"baa201ad_de604da7","line":40,"in_reply_to":"baa201ad_db605fa7","updated":"2014-10-16 17:49:49.000000000","message":"Thanks, I will do it accordingly and verify that the segment order is preserved.\n\nAlso, Could I post another bug and write a UT for remaining functions like add_network_segment and get_network_segment present in ml2/db.py ?","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3e5160e948db90e168102e0dadd9e95f1efd6cbd","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            api.NETWORK_TYPE: record.network_type,"},{"line_number":38,"context_line":"            api.PHYSICAL_NETWORK: record.physical_network,"},{"line_number":39,"context_line":"            api.SEGMENTATION_ID: record.segmentation_id,"},{"line_number":40,"context_line":"            \u0027segment_index\u0027: record.segment_index}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def add_network_segment(session, network_id, segment, segment_index\u003d0,"}],"source_content_type":"text/x-python","patch_set":21,"id":"9aa7fdbe_118d1f7c","line":40,"in_reply_to":"baa201ad_de604da7","updated":"2014-10-19 19:18:06.000000000","message":"sure","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5a2275ab88c3c9c543a6aca1d93b84ec4ee13f86","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            \u0027segment_index\u0027: record.segment_index}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def add_network_segment(session, network_id, segment, segment_index\u003d0,"},{"line_number":44,"context_line":"                        is_dynamic\u003dFalse):"},{"line_number":45,"context_line":"    with session.begin(subtransactions\u003dTrue):"},{"line_number":46,"context_line":"        record \u003d models.NetworkSegment("}],"source_content_type":"text/x-python","patch_set":21,"id":"baa201ad_aefb6279","line":43,"updated":"2014-10-16 14:49:15.000000000","message":"to be sure we don\u0027t mess up code that uses this method, consider preserving the signature by adding segment_index as last default parameter. If you 100% sure this change is safe, then I think it\u0027s okay.","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"8a6c45da3fdf3e7c4dad4b0a396602edacb56f0d","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            \u0027segment_index\u0027: record.segment_index}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def add_network_segment(session, network_id, segment, segment_index\u003d0,"},{"line_number":44,"context_line":"                        is_dynamic\u003dFalse):"},{"line_number":45,"context_line":"    with session.begin(subtransactions\u003dTrue):"},{"line_number":46,"context_line":"        record \u003d models.NetworkSegment("}],"source_content_type":"text/x-python","patch_set":21,"id":"baa201ad_7a53f016","line":43,"in_reply_to":"baa201ad_aefb6279","updated":"2014-10-16 16:23:32.000000000","message":"As per my understanding it is safe :)","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"}],"neutron/plugins/ml2/managers.py":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"49e051dd4096d7cbbce7c30b0a9da697ae20a4b1","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            else:"},{"line_number":162,"context_line":"                segment \u003d self.allocate_tenant_segment(session)"},{"line_number":163,"context_line":"                db.add_network_segment(session, network_id,"},{"line_number":164,"context_line":"                                       segment)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def is_partial_segment(self, segment):"},{"line_number":167,"context_line":"        network_type \u003d segment[api.NETWORK_TYPE]"}],"source_content_type":"text/x-python","patch_set":14,"id":"da9df570_cdc125e6","line":164,"updated":"2014-09-22 14:29:43.000000000","message":"Nit: whitespace change not needed.","commit_id":"329605ee21dd1a7effa6cb5fb9f57b109a09b797"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"482dc4c04320d3a901b2860568c2d0cdcfb00ee8","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            else:"},{"line_number":162,"context_line":"                segment \u003d self.allocate_tenant_segment(session)"},{"line_number":163,"context_line":"                db.add_network_segment(session, network_id,"},{"line_number":164,"context_line":"                                       segment)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def is_partial_segment(self, segment):"},{"line_number":167,"context_line":"        network_type \u003d segment[api.NETWORK_TYPE]"}],"source_content_type":"text/x-python","patch_set":14,"id":"da9df570_f326cc67","line":164,"in_reply_to":"da9df570_cdc125e6","updated":"2014-09-22 15:19:33.000000000","message":"Done","commit_id":"329605ee21dd1a7effa6cb5fb9f57b109a09b797"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5a2275ab88c3c9c543a6aca1d93b84ec4ee13f86","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                {provider.NETWORK_TYPE: segment[api.NETWORK_TYPE],"},{"line_number":134,"context_line":"                 provider.PHYSICAL_NETWORK: segment[api.PHYSICAL_NETWORK],"},{"line_number":135,"context_line":"                 provider.SEGMENTATION_ID: segment[api.SEGMENTATION_ID],"},{"line_number":136,"context_line":"                 \u0027segment_index\u0027: segment[\u0027segment_index\u0027]}"},{"line_number":137,"context_line":"                for segment in segments]"},{"line_number":138,"context_line":"        else:"},{"line_number":139,"context_line":"            segment \u003d segments[0]"}],"source_content_type":"text/x-python","patch_set":21,"id":"baa201ad_0ef62e8f","line":136,"updated":"2014-10-16 14:49:15.000000000","message":"see prior comment","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"8a6c45da3fdf3e7c4dad4b0a396602edacb56f0d","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                {provider.NETWORK_TYPE: segment[api.NETWORK_TYPE],"},{"line_number":134,"context_line":"                 provider.PHYSICAL_NETWORK: segment[api.PHYSICAL_NETWORK],"},{"line_number":135,"context_line":"                 provider.SEGMENTATION_ID: segment[api.SEGMENTATION_ID],"},{"line_number":136,"context_line":"                 \u0027segment_index\u0027: segment[\u0027segment_index\u0027]}"},{"line_number":137,"context_line":"                for segment in segments]"},{"line_number":138,"context_line":"        else:"},{"line_number":139,"context_line":"            segment \u003d segments[0]"}],"source_content_type":"text/x-python","patch_set":21,"id":"baa201ad_daa3fc9b","line":136,"in_reply_to":"baa201ad_0ef62e8f","updated":"2014-10-16 16:23:32.000000000","message":"Please find my response in https://review.openstack.org/#/c/103546/21/neutron/plugins/ml2/db.py","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5a2275ab88c3c9c543a6aca1d93b84ec4ee13f86","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":154,"context_line":"            network_id \u003d network[\u0027id\u0027]"},{"line_number":155,"context_line":"            if segments:"},{"line_number":156,"context_line":"                for segment_index, segment in enumerate(segments):"},{"line_number":157,"context_line":"                    segment \u003d self.reserve_provider_segment("},{"line_number":158,"context_line":"                        session, segment)"},{"line_number":159,"context_line":"                    db.add_network_segment(session, network_id,"}],"source_content_type":"text/x-python","patch_set":21,"id":"baa201ad_6927b4b6","line":156,"updated":"2014-10-16 14:49:15.000000000","message":"We could use an autoincrement for the Integer column, do we really have to track this in the business logic? Have you considered it?","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8534f287a7f63e1712857e43ae23239b19f24ca6","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":154,"context_line":"            network_id \u003d network[\u0027id\u0027]"},{"line_number":155,"context_line":"            if segments:"},{"line_number":156,"context_line":"                for segment_index, segment in enumerate(segments):"},{"line_number":157,"context_line":"                    segment \u003d self.reserve_provider_segment("},{"line_number":158,"context_line":"                        session, segment)"},{"line_number":159,"context_line":"                    db.add_network_segment(session, network_id,"}],"source_content_type":"text/x-python","patch_set":21,"id":"baa201ad_9b3257f0","line":156,"in_reply_to":"baa201ad_5a90ec42","updated":"2014-10-16 17:07:34.000000000","message":"autoincrement allows a monotonic number to be generated when a new record is inserted into a table. How is that any different from what you\u0027re doing here? I guess we\u0027d be saying the changes in this snippet of code, I was only wondering if you had given it any thought.","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"8a6c45da3fdf3e7c4dad4b0a396602edacb56f0d","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":154,"context_line":"            network_id \u003d network[\u0027id\u0027]"},{"line_number":155,"context_line":"            if segments:"},{"line_number":156,"context_line":"                for segment_index, segment in enumerate(segments):"},{"line_number":157,"context_line":"                    segment \u003d self.reserve_provider_segment("},{"line_number":158,"context_line":"                        session, segment)"},{"line_number":159,"context_line":"                    db.add_network_segment(session, network_id,"}],"source_content_type":"text/x-python","patch_set":21,"id":"baa201ad_5a90ec42","line":156,"in_reply_to":"baa201ad_6927b4b6","updated":"2014-10-16 16:23:32.000000000","message":"I am really not sure how autoincrement will help. I think we have to do it here itself.","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"1c070c3eaa0e571e700c30c087f786138ec29a5c","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":154,"context_line":"            network_id \u003d network[\u0027id\u0027]"},{"line_number":155,"context_line":"            if segments:"},{"line_number":156,"context_line":"                for segment_index, segment in enumerate(segments):"},{"line_number":157,"context_line":"                    segment \u003d self.reserve_provider_segment("},{"line_number":158,"context_line":"                        session, segment)"},{"line_number":159,"context_line":"                    db.add_network_segment(session, network_id,"}],"source_content_type":"text/x-python","patch_set":21,"id":"baa201ad_bebd49b3","line":156,"in_reply_to":"baa201ad_9b3257f0","updated":"2014-10-16 17:49:49.000000000","message":"I will try it tomorrow and explore with auto increment and post the new patch set if it works :)","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"}],"neutron/plugins/ml2/models.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"1942da7ea388cc72676bb7a8921c589016f438d3","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    network_type \u003d sa.Column(sa.String(32), nullable\u003dFalse)"},{"line_number":40,"context_line":"    physical_network \u003d sa.Column(sa.String(64))"},{"line_number":41,"context_line":"    segmentation_id \u003d sa.Column(sa.Integer)"},{"line_number":42,"context_line":"    segment_order \u003d sa.Column(sa.Integer)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class PortBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_f3d4274d","line":42,"updated":"2014-08-05 14:35:19.000000000","message":"segment_index seems more clear","commit_id":"dfa97ee42846eca0290fff1c09b4e880c03e0d16"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"25504c7d98caaad93e2374ffe70ff1ee9ffa5e39","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    network_type \u003d sa.Column(sa.String(32), nullable\u003dFalse)"},{"line_number":40,"context_line":"    physical_network \u003d sa.Column(sa.String(64))"},{"line_number":41,"context_line":"    segmentation_id \u003d sa.Column(sa.Integer)"},{"line_number":42,"context_line":"    segment_index \u003d sa.Column(sa.Integer)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class PortBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_a4309557","line":42,"updated":"2014-08-14 11:28:26.000000000","message":"Better to have nullable False criteria for this, since we always fill segment_index as 1, even for networks with single segments.\r\n\r\nAnd also helps since get_network_segments() is enhanced with ORDER_BY.","commit_id":"20e5b138edef576c8268f29a046673059aaad44b"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"0b4301f2d72bed6e6e58bfe937237e090eab63ed","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    network_type \u003d sa.Column(sa.String(32), nullable\u003dFalse)"},{"line_number":40,"context_line":"    physical_network \u003d sa.Column(sa.String(64))"},{"line_number":41,"context_line":"    segmentation_id \u003d sa.Column(sa.Integer)"},{"line_number":42,"context_line":"    segment_index \u003d sa.Column(sa.Integer)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class PortBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_2451e562","line":42,"in_reply_to":"7ac7a964_a4309557","updated":"2014-08-14 11:30:09.000000000","message":"will do it","commit_id":"20e5b138edef576c8268f29a046673059aaad44b"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5a2275ab88c3c9c543a6aca1d93b84ec4ee13f86","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    segmentation_id \u003d sa.Column(sa.Integer)"},{"line_number":42,"context_line":"    is_dynamic \u003d sa.Column(sa.Boolean, default\u003dFalse, nullable\u003dFalse,"},{"line_number":43,"context_line":"                           server_default\u003dsa.sql.false())"},{"line_number":44,"context_line":"    segment_index \u003d sa.Column(sa.Integer, nullable\u003dFalse, server_default\u003d\u00270\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class PortBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":21,"id":"baa201ad_699c14c1","line":44,"updated":"2014-10-16 14:49:15.000000000","message":"what about autoincrement\u003dTrue here, would that help keep the existing logic?","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"fbf7c149dedbe3f0d915c017c589f645f2e2e90f","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    segmentation_id \u003d sa.Column(sa.Integer)"},{"line_number":42,"context_line":"    is_dynamic \u003d sa.Column(sa.Boolean, default\u003dFalse, nullable\u003dFalse,"},{"line_number":43,"context_line":"                           server_default\u003dsa.sql.false())"},{"line_number":44,"context_line":"    segment_index \u003d sa.Column(sa.Integer, nullable\u003dFalse, server_default\u003d\u00270\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class PortBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":21,"id":"9aa7fdbe_8372aee3","line":44,"in_reply_to":"9aa7fdbe_03aa3e70","updated":"2014-10-18 11:00:17.000000000","message":"Lets take an example  considering segmentation_id be primary key with something else for a given data. \n\n        data \u003d {\u0027network\u0027: {\u0027name\u0027: \u0027net1\u0027,\n                            mpnet.SEGMENTS:\n                            [{pnet.NETWORK_TYPE: \u0027vlan\u0027,\n                              pnet.PHYSICAL_NETWORK: \u0027physnet1\u0027,\n                              pnet.SEGMENTATION_ID: 2000},\n                             {pnet.NETWORK_TYPE: \u0027vlan\u0027,\n                              pnet.PHYSICAL_NETWORK: \u0027physnet1\u0027,\n                              pnet.SEGMENTATION_ID: 1000}],\n                            \u0027tenant_id\u0027: \u0027tenant_one\u0027}}\n\nAnd if we ordered by seg_id and network_type we end up retrieving incorrect segment order. \n\nIdeally it should first return 2000 then 1000.\n\nDo correct me if I am missing something :)\n\nAlso, Shall I  post another patch set by addressing other comments and have segment_index as new field approach.","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"8857def5428f761523a7bad0b8c072cf51c64266","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    segmentation_id \u003d sa.Column(sa.Integer)"},{"line_number":42,"context_line":"    is_dynamic \u003d sa.Column(sa.Boolean, default\u003dFalse, nullable\u003dFalse,"},{"line_number":43,"context_line":"                           server_default\u003dsa.sql.false())"},{"line_number":44,"context_line":"    segment_index \u003d sa.Column(sa.Integer, nullable\u003dFalse, server_default\u003d\u00270\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class PortBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":21,"id":"9aa7fdbe_51d5e741","line":44,"in_reply_to":"9aa7fdbe_31822353","updated":"2014-10-19 19:26:42.000000000","message":"Thanks, I am posting another patch set.","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3e5160e948db90e168102e0dadd9e95f1efd6cbd","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    segmentation_id \u003d sa.Column(sa.Integer)"},{"line_number":42,"context_line":"    is_dynamic \u003d sa.Column(sa.Boolean, default\u003dFalse, nullable\u003dFalse,"},{"line_number":43,"context_line":"                           server_default\u003dsa.sql.false())"},{"line_number":44,"context_line":"    segment_index \u003d sa.Column(sa.Integer, nullable\u003dFalse, server_default\u003d\u00270\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class PortBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":21,"id":"9aa7fdbe_31822353","line":44,"in_reply_to":"9aa7fdbe_8372aee3","updated":"2014-10-19 19:18:06.000000000","message":"My understanding of the issue is that it is important that the segments being returned are always in the same order, but that the order between the segments is irrelevant. Irrespective of this, your proposed change clearly addresses both needs, so all things considered, I would be fine with it.","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8534f287a7f63e1712857e43ae23239b19f24ca6","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    segmentation_id \u003d sa.Column(sa.Integer)"},{"line_number":42,"context_line":"    is_dynamic \u003d sa.Column(sa.Boolean, default\u003dFalse, nullable\u003dFalse,"},{"line_number":43,"context_line":"                           server_default\u003dsa.sql.false())"},{"line_number":44,"context_line":"    segment_index \u003d sa.Column(sa.Integer, nullable\u003dFalse, server_default\u003d\u00270\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class PortBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":21,"id":"baa201ad_dbebff10","line":44,"in_reply_to":"baa201ad_1abbc40f","updated":"2014-10-16 17:07:34.000000000","message":"Don\u0027t we need just to preserve the ordering when the segments are added?  \n\nSo why does it matter if the index keeps on increasing so long as it tracks the order in which they have been entered?","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"e8bff7ec5dd7c4aa8bde433b3302fea82b122c8a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    segmentation_id \u003d sa.Column(sa.Integer)"},{"line_number":42,"context_line":"    is_dynamic \u003d sa.Column(sa.Boolean, default\u003dFalse, nullable\u003dFalse,"},{"line_number":43,"context_line":"                           server_default\u003dsa.sql.false())"},{"line_number":44,"context_line":"    segment_index \u003d sa.Column(sa.Integer, nullable\u003dFalse, server_default\u003d\u00270\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class PortBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":21,"id":"baa201ad_96ea0fd6","line":44,"in_reply_to":"baa201ad_5e28dde1","updated":"2014-10-17 17:19:00.000000000","message":"Hi Armando,\n\nI tried changing the approach to use auto increment, but I couldn\u0027t find the way to use auto increment here.\n\nReasons:\n\n1. segment_index is not a Primary key.\n2. If we make the segment_index PK then in upgrade case it fails because we have to consider the existing network entries in the ml2_network_segment table what default value we should assign for segment_index in existing table.\n\nIn the given blog I read that there can be only one AUTO_INCREMENT column per table, it must be indexed, and it cannot have a DEFAULT value.\nhttp://dba.stackexchange.com/questions/3467/mysql-why-is-auto-increment-limited-to-just-primary-keys\n\nThen I thought of making segment_index unique key which allows NULL but I didn\u0027t get much information to use auto increment with unique key \nin Mysql.\n\nSome more references:\n\nhttp://stackoverflow.com/questions/6180167/mysql-defining-column-as-unique-with-auto-increment-instead-of-as-primary-key\n\nhttp://www.w3schools.com/sql/sql_autoincrement.asp\n\n\nNeed Help !!!","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"8a6c45da3fdf3e7c4dad4b0a396602edacb56f0d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    segmentation_id \u003d sa.Column(sa.Integer)"},{"line_number":42,"context_line":"    is_dynamic \u003d sa.Column(sa.Boolean, default\u003dFalse, nullable\u003dFalse,"},{"line_number":43,"context_line":"                           server_default\u003dsa.sql.false())"},{"line_number":44,"context_line":"    segment_index \u003d sa.Column(sa.Integer, nullable\u003dFalse, server_default\u003d\u00270\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class PortBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":21,"id":"baa201ad_1abbc40f","line":44,"in_reply_to":"baa201ad_699c14c1","updated":"2014-10-16 16:23:32.000000000","message":"We want segment_index values the following way:\n\nPlease open the link for clarification you will find sample table.\n\nhttps://review.openstack.org/#/c/110558/8/specs/juno/schema-enhancement-to-support-multisegment-network.rst\n\nI am not sure how we could achieve that using autoincrement?\n\nPlease suggest !","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a81b09a779060e56b7c2b309b20066a2029dde60","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    segmentation_id \u003d sa.Column(sa.Integer)"},{"line_number":42,"context_line":"    is_dynamic \u003d sa.Column(sa.Boolean, default\u003dFalse, nullable\u003dFalse,"},{"line_number":43,"context_line":"                           server_default\u003dsa.sql.false())"},{"line_number":44,"context_line":"    segment_index \u003d sa.Column(sa.Integer, nullable\u003dFalse, server_default\u003d\u00270\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class PortBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":21,"id":"9aa7fdbe_03aa3e70","line":44,"in_reply_to":"baa201ad_96ea0fd6","updated":"2014-10-18 08:30:29.000000000","message":"Shouldn\u0027t segmentation_id be primary key with something else? There\u0027s gotta be a primary key for the table, and I am amazed that we actually don\u0027t have one defined! Perhaps we don\u0027t need an extra index column after all if we ordered by both network_type and segmentation_id; would that work? I haven\u0027t looked too deeply.\n\nSorry if I threw you off base, but it looks like we might get away without an index and without auto-increment after all. If this is not feasible, I guess that it\u0027s not worth spending any more time on this.","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"1c070c3eaa0e571e700c30c087f786138ec29a5c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    segmentation_id \u003d sa.Column(sa.Integer)"},{"line_number":42,"context_line":"    is_dynamic \u003d sa.Column(sa.Boolean, default\u003dFalse, nullable\u003dFalse,"},{"line_number":43,"context_line":"                           server_default\u003dsa.sql.false())"},{"line_number":44,"context_line":"    segment_index \u003d sa.Column(sa.Integer, nullable\u003dFalse, server_default\u003d\u00270\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class PortBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":21,"id":"baa201ad_5e28dde1","line":44,"in_reply_to":"baa201ad_dbebff10","updated":"2014-10-16 17:49:49.000000000","message":"I will try this out tomorrow and change it accordingly.","commit_id":"7502aa0227bfdf34b2ee0b72fd282377676f3358"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"1942da7ea388cc72676bb7a8921c589016f438d3","unresolved":false,"context_lines":[{"line_number":529,"context_line":"                        session, segment)"},{"line_number":530,"context_line":"                    db.add_network_segment(session, network_id,"},{"line_number":531,"context_line":"                                           segment, segment_order)"},{"line_number":532,"context_line":"                    segment_order +\u003d 1"},{"line_number":533,"context_line":"            else:"},{"line_number":534,"context_line":"                segment \u003d self.type_manager.allocate_tenant_segment(session)"},{"line_number":535,"context_line":"                db.add_network_segment(session, network_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_d36c83a1","line":532,"updated":"2014-08-05 14:35:19.000000000","message":"i think that should be a result of the query for maximum existing segment_order (or index).","commit_id":"dfa97ee42846eca0290fff1c09b4e880c03e0d16"},{"author":{"_account_id":1923,"name":"Mohammad Banikazemi","email":"mbanikazemi@gmail.com","username":"mb-s"},"change_message_id":"1ec2c15ff55c937c99f2bfefa15e6106de85a0d9","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        net_data \u003d network[\u0027network\u0027]"},{"line_number":516,"context_line":"        segments \u003d self._process_provider_create(net_data)"},{"line_number":517,"context_line":"        tenant_id \u003d self._get_tenant_id_for_create(context, net_data)"},{"line_number":518,"context_line":"        segment_index \u003d 1"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        session \u003d context.session"},{"line_number":521,"context_line":"        with session.begin(subtransactions\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5ac4a560_fed795eb","line":518,"updated":"2014-08-17 00:41:57.000000000","message":"Any reason not to start the index from 0? (Starting from 0 would also solve the mismatch between the segment_index and list_index in the unit test as well.)","commit_id":"a1b79ea4bbb18fa2500b5a79e7d767e1116ec2d2"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"95daf763eb890605372cfebba21e7e545c12d9b7","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        net_data \u003d network[\u0027network\u0027]"},{"line_number":516,"context_line":"        segments \u003d self._process_provider_create(net_data)"},{"line_number":517,"context_line":"        tenant_id \u003d self._get_tenant_id_for_create(context, net_data)"},{"line_number":518,"context_line":"        segment_index \u003d 1"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        session \u003d context.session"},{"line_number":521,"context_line":"        with session.begin(subtransactions\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_1912abb4","line":518,"in_reply_to":"5ac4a560_fed795eb","updated":"2014-08-17 09:14:33.000000000","message":"I assumed a segment_index field may be also useful to represent the no. of segment a network will have so I started with 1.\nNow, as per your comments I think it should start from 0.\n\nI will do it in a next patch set.","commit_id":"a1b79ea4bbb18fa2500b5a79e7d767e1116ec2d2"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"dd70b55f179ae5c37f24ab27799f2f98c6339898","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                {provider.NETWORK_TYPE: segment[api.NETWORK_TYPE],"},{"line_number":205,"context_line":"                 provider.PHYSICAL_NETWORK: segment[api.PHYSICAL_NETWORK],"},{"line_number":206,"context_line":"                 provider.SEGMENTATION_ID: segment[api.SEGMENTATION_ID],"},{"line_number":207,"context_line":"                 \u0027segment_index\u0027: segment[\u0027segment_index\u0027]}"},{"line_number":208,"context_line":"                for segment in segments]"},{"line_number":209,"context_line":"        else:"},{"line_number":210,"context_line":"            segment \u003d segments[0]"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_66ff5c35","line":207,"updated":"2014-08-18 15:47:14.000000000","message":"why do we need this?","commit_id":"5050516f0b0e446bba5be401a8d21aca2690483e"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"0de7cb01272d1ce9b043cdf9246889143bd743cb","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                {provider.NETWORK_TYPE: segment[api.NETWORK_TYPE],"},{"line_number":205,"context_line":"                 provider.PHYSICAL_NETWORK: segment[api.PHYSICAL_NETWORK],"},{"line_number":206,"context_line":"                 provider.SEGMENTATION_ID: segment[api.SEGMENTATION_ID],"},{"line_number":207,"context_line":"                 \u0027segment_index\u0027: segment[\u0027segment_index\u0027]}"},{"line_number":208,"context_line":"                for segment in segments]"},{"line_number":209,"context_line":"        else:"},{"line_number":210,"context_line":"            segment \u003d segments[0]"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_00884b1e","line":207,"in_reply_to":"1abeadc6_66ff5c35","updated":"2014-08-18 17:04:34.000000000","message":"This is required for UT.\nThis segment_index will be part of \nnetwork \u003d self.deserialize(self.fmt, network_req.get_response(self.api))","commit_id":"5050516f0b0e446bba5be401a8d21aca2690483e"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"dd70b55f179ae5c37f24ab27799f2f98c6339898","unresolved":false,"context_lines":[{"line_number":526,"context_line":"            # REVISIT(rkukura): Consider moving all segment management"},{"line_number":527,"context_line":"            # to TypeManager."},{"line_number":528,"context_line":"            if segments:"},{"line_number":529,"context_line":"                for segment in segments:"},{"line_number":530,"context_line":"                    segment \u003d self.type_manager.reserve_provider_segment("},{"line_number":531,"context_line":"                        session, segment)"},{"line_number":532,"context_line":"                    db.add_network_segment(session, network_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_e68d2c33","line":529,"updated":"2014-08-18 15:47:14.000000000","message":"please use:\n\n  for segment_index, segment in enumerate(segments):\n\nwhich is more pythonic","commit_id":"5050516f0b0e446bba5be401a8d21aca2690483e"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"0de7cb01272d1ce9b043cdf9246889143bd743cb","unresolved":false,"context_lines":[{"line_number":526,"context_line":"            # REVISIT(rkukura): Consider moving all segment management"},{"line_number":527,"context_line":"            # to TypeManager."},{"line_number":528,"context_line":"            if segments:"},{"line_number":529,"context_line":"                for segment in segments:"},{"line_number":530,"context_line":"                    segment \u003d self.type_manager.reserve_provider_segment("},{"line_number":531,"context_line":"                        session, segment)"},{"line_number":532,"context_line":"                    db.add_network_segment(session, network_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_40924358","line":529,"in_reply_to":"1abeadc6_e68d2c33","updated":"2014-08-18 17:04:34.000000000","message":"thanks :)\nWill do it.","commit_id":"5050516f0b0e446bba5be401a8d21aca2690483e"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"22b5ade34fd9bc203f8ed6827442a4d6a4c5ca82","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        net_data \u003d network[\u0027network\u0027]"},{"line_number":516,"context_line":"        segments \u003d self._process_provider_create(net_data)"},{"line_number":517,"context_line":"        tenant_id \u003d self._get_tenant_id_for_create(context, net_data)"},{"line_number":518,"context_line":"        segment_index \u003d 0"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        session \u003d context.session"},{"line_number":521,"context_line":"        with session.begin(subtransactions\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_1dd7aec0","line":518,"updated":"2014-08-19 11:37:24.000000000","message":"defining segment_index becomes useless here comes useless","commit_id":"57dd62b7626bd67839738cb43600054dec0584f8"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"24ba29367fd1f64be2f6d2a373b5d96f90278fcd","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        net_data \u003d network[\u0027network\u0027]"},{"line_number":516,"context_line":"        segments \u003d self._process_provider_create(net_data)"},{"line_number":517,"context_line":"        tenant_id \u003d self._get_tenant_id_for_create(context, net_data)"},{"line_number":518,"context_line":"        segment_index \u003d 0"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        session \u003d context.session"},{"line_number":521,"context_line":"        with session.begin(subtransactions\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_9383af55","line":518,"in_reply_to":"1abeadc6_1dd7aec0","updated":"2014-08-19 12:09:32.000000000","message":"Done","commit_id":"57dd62b7626bd67839738cb43600054dec0584f8"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"22b5ade34fd9bc203f8ed6827442a4d6a4c5ca82","unresolved":false,"context_lines":[{"line_number":534,"context_line":"            else:"},{"line_number":535,"context_line":"                segment \u003d self.type_manager.allocate_tenant_segment(session)"},{"line_number":536,"context_line":"                db.add_network_segment(session, network_id,"},{"line_number":537,"context_line":"                                       segment, segment_index)"},{"line_number":538,"context_line":"            self._extend_network_dict_provider(context, result)"},{"line_number":539,"context_line":"            mech_context \u003d driver_context.NetworkContext(self, context,"},{"line_number":540,"context_line":"                                                         result)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_7defc287","line":537,"updated":"2014-08-19 11:37:24.000000000","message":"replace segment_index by 0","commit_id":"57dd62b7626bd67839738cb43600054dec0584f8"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"24ba29367fd1f64be2f6d2a373b5d96f90278fcd","unresolved":false,"context_lines":[{"line_number":534,"context_line":"            else:"},{"line_number":535,"context_line":"                segment \u003d self.type_manager.allocate_tenant_segment(session)"},{"line_number":536,"context_line":"                db.add_network_segment(session, network_id,"},{"line_number":537,"context_line":"                                       segment, segment_index)"},{"line_number":538,"context_line":"            self._extend_network_dict_provider(context, result)"},{"line_number":539,"context_line":"            mech_context \u003d driver_context.NetworkContext(self, context,"},{"line_number":540,"context_line":"                                                         result)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_b386eb63","line":537,"in_reply_to":"1abeadc6_7defc287","updated":"2014-08-19 12:09:32.000000000","message":"Done","commit_id":"57dd62b7626bd67839738cb43600054dec0584f8"}],"neutron/tests/unit/ml2/test_ml2_plugin.py":[{"author":{"_account_id":1923,"name":"Mohammad Banikazemi","email":"mbanikazemi@gmail.com","username":"mb-s"},"change_message_id":"1ec2c15ff55c937c99f2bfefa15e6106de85a0d9","unresolved":false,"context_lines":[{"line_number":406,"context_line":"        network \u003d self.deserialize(self.fmt,"},{"line_number":407,"context_line":"                                   network_req.get_response(self.api))"},{"line_number":408,"context_line":"        segment_index \u003d 1"},{"line_number":409,"context_line":"        list_index \u003d 0"},{"line_number":410,"context_line":"        segments \u003d network[\u0027network\u0027][mpnet.SEGMENTS]"},{"line_number":411,"context_line":"        for segment in data[\u0027network\u0027][mpnet.SEGMENTS]:"},{"line_number":412,"context_line":"            for field in [pnet.NETWORK_TYPE, pnet.PHYSICAL_NETWORK,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5ac4a560_3ee2edd5","line":409,"updated":"2014-08-17 00:41:57.000000000","message":"Isn\u0027t segment_index always equal to list_index +1? If yes, do you really need to use two variables?","commit_id":"a1b79ea4bbb18fa2500b5a79e7d767e1116ec2d2"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"95daf763eb890605372cfebba21e7e545c12d9b7","unresolved":false,"context_lines":[{"line_number":406,"context_line":"        network \u003d self.deserialize(self.fmt,"},{"line_number":407,"context_line":"                                   network_req.get_response(self.api))"},{"line_number":408,"context_line":"        segment_index \u003d 1"},{"line_number":409,"context_line":"        list_index \u003d 0"},{"line_number":410,"context_line":"        segments \u003d network[\u0027network\u0027][mpnet.SEGMENTS]"},{"line_number":411,"context_line":"        for segment in data[\u0027network\u0027][mpnet.SEGMENTS]:"},{"line_number":412,"context_line":"            for field in [pnet.NETWORK_TYPE, pnet.PHYSICAL_NETWORK,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_99531b6c","line":409,"in_reply_to":"5ac4a560_3ee2edd5","updated":"2014-08-17 09:14:33.000000000","message":"Done","commit_id":"a1b79ea4bbb18fa2500b5a79e7d767e1116ec2d2"},{"author":{"_account_id":1923,"name":"Mohammad Banikazemi","email":"mbanikazemi@gmail.com","username":"mb-s"},"change_message_id":"1ec2c15ff55c937c99f2bfefa15e6106de85a0d9","unresolved":false,"context_lines":[{"line_number":422,"context_line":"        net_req \u003d self.new_show_request(\u0027networks\u0027, network[\u0027network\u0027][\u0027id\u0027])"},{"line_number":423,"context_line":"        network \u003d self.deserialize(self.fmt, net_req.get_response(self.api))"},{"line_number":424,"context_line":"        segment_index \u003d 1"},{"line_number":425,"context_line":"        list_index \u003d 0"},{"line_number":426,"context_line":"        segments \u003d network[\u0027network\u0027][mpnet.SEGMENTS]"},{"line_number":427,"context_line":"        for segment in data[\u0027network\u0027][mpnet.SEGMENTS]:"},{"line_number":428,"context_line":"            for field in [pnet.NETWORK_TYPE, pnet.PHYSICAL_NETWORK,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5ac4a560_7e3aa537","line":425,"updated":"2014-08-17 00:41:57.000000000","message":"Same here.","commit_id":"a1b79ea4bbb18fa2500b5a79e7d767e1116ec2d2"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"95daf763eb890605372cfebba21e7e545c12d9b7","unresolved":false,"context_lines":[{"line_number":422,"context_line":"        net_req \u003d self.new_show_request(\u0027networks\u0027, network[\u0027network\u0027][\u0027id\u0027])"},{"line_number":423,"context_line":"        network \u003d self.deserialize(self.fmt, net_req.get_response(self.api))"},{"line_number":424,"context_line":"        segment_index \u003d 1"},{"line_number":425,"context_line":"        list_index \u003d 0"},{"line_number":426,"context_line":"        segments \u003d network[\u0027network\u0027][mpnet.SEGMENTS]"},{"line_number":427,"context_line":"        for segment in data[\u0027network\u0027][mpnet.SEGMENTS]:"},{"line_number":428,"context_line":"            for field in [pnet.NETWORK_TYPE, pnet.PHYSICAL_NETWORK,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_795f1f73","line":425,"in_reply_to":"5ac4a560_7e3aa537","updated":"2014-08-17 09:14:33.000000000","message":"Done","commit_id":"a1b79ea4bbb18fa2500b5a79e7d767e1116ec2d2"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"dd70b55f179ae5c37f24ab27799f2f98c6339898","unresolved":false,"context_lines":[{"line_number":407,"context_line":"                                   network_req.get_response(self.api))"},{"line_number":408,"context_line":"        segment_index \u003d 0"},{"line_number":409,"context_line":"        segments \u003d network[\u0027network\u0027][mpnet.SEGMENTS]"},{"line_number":410,"context_line":"        for segment in data[\u0027network\u0027][mpnet.SEGMENTS]:"},{"line_number":411,"context_line":"            for field in [pnet.NETWORK_TYPE, pnet.PHYSICAL_NETWORK,"},{"line_number":412,"context_line":"                          pnet.SEGMENTATION_ID]:"},{"line_number":413,"context_line":"                self.assertEqual(segments[segment_index][field],"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_66ce7c5c","line":410,"updated":"2014-08-18 15:47:14.000000000","message":"same remark about enumerate use","commit_id":"5050516f0b0e446bba5be401a8d21aca2690483e"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"0de7cb01272d1ce9b043cdf9246889143bd743cb","unresolved":false,"context_lines":[{"line_number":407,"context_line":"                                   network_req.get_response(self.api))"},{"line_number":408,"context_line":"        segment_index \u003d 0"},{"line_number":409,"context_line":"        segments \u003d network[\u0027network\u0027][mpnet.SEGMENTS]"},{"line_number":410,"context_line":"        for segment in data[\u0027network\u0027][mpnet.SEGMENTS]:"},{"line_number":411,"context_line":"            for field in [pnet.NETWORK_TYPE, pnet.PHYSICAL_NETWORK,"},{"line_number":412,"context_line":"                          pnet.SEGMENTATION_ID]:"},{"line_number":413,"context_line":"                self.assertEqual(segments[segment_index][field],"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_207c6720","line":410,"in_reply_to":"1abeadc6_66ce7c5c","updated":"2014-08-18 17:04:34.000000000","message":"Done","commit_id":"5050516f0b0e446bba5be401a8d21aca2690483e"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"dd70b55f179ae5c37f24ab27799f2f98c6339898","unresolved":false,"context_lines":[{"line_number":421,"context_line":"        network \u003d self.deserialize(self.fmt, net_req.get_response(self.api))"},{"line_number":422,"context_line":"        segment_index \u003d 0"},{"line_number":423,"context_line":"        segments \u003d network[\u0027network\u0027][mpnet.SEGMENTS]"},{"line_number":424,"context_line":"        for segment in data[\u0027network\u0027][mpnet.SEGMENTS]:"},{"line_number":425,"context_line":"            for field in [pnet.NETWORK_TYPE, pnet.PHYSICAL_NETWORK,"},{"line_number":426,"context_line":"                          pnet.SEGMENTATION_ID]:"},{"line_number":427,"context_line":"                self.assertEqual(segments[segment_index][field],"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_c604b080","line":424,"updated":"2014-08-18 15:47:14.000000000","message":"itto","commit_id":"5050516f0b0e446bba5be401a8d21aca2690483e"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"0de7cb01272d1ce9b043cdf9246889143bd743cb","unresolved":false,"context_lines":[{"line_number":421,"context_line":"        network \u003d self.deserialize(self.fmt, net_req.get_response(self.api))"},{"line_number":422,"context_line":"        segment_index \u003d 0"},{"line_number":423,"context_line":"        segments \u003d network[\u0027network\u0027][mpnet.SEGMENTS]"},{"line_number":424,"context_line":"        for segment in data[\u0027network\u0027][mpnet.SEGMENTS]:"},{"line_number":425,"context_line":"            for field in [pnet.NETWORK_TYPE, pnet.PHYSICAL_NETWORK,"},{"line_number":426,"context_line":"                          pnet.SEGMENTATION_ID]:"},{"line_number":427,"context_line":"                self.assertEqual(segments[segment_index][field],"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_4079632e","line":424,"in_reply_to":"1abeadc6_c604b080","updated":"2014-08-18 17:04:34.000000000","message":"Done","commit_id":"5050516f0b0e446bba5be401a8d21aca2690483e"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"22b5ade34fd9bc203f8ed6827442a4d6a4c5ca82","unresolved":false,"context_lines":[{"line_number":409,"context_line":"        for tz in data[\u0027network\u0027][mpnet.SEGMENTS]:"},{"line_number":410,"context_line":"            for field in [pnet.NETWORK_TYPE, pnet.PHYSICAL_NETWORK,"},{"line_number":411,"context_line":"                          pnet.SEGMENTATION_ID]:"},{"line_number":412,"context_line":"                self.assertEqual(tz.get(field), tz.get(field))"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        # Tests get_network()"},{"line_number":415,"context_line":"        net_req \u003d self.new_show_request(\u0027networks\u0027, network[\u0027network\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_bdb79a85","side":"PARENT","line":412,"updated":"2014-08-19 11:37:24.000000000","message":"lol, i hope such assertion never fails","commit_id":"0954a7a0b33e7e56e0fee95b38df3455ab70173a"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"22b5ade34fd9bc203f8ed6827442a4d6a4c5ca82","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                          pnet.SEGMENTATION_ID]:"},{"line_number":413,"context_line":"                self.assertEqual(segments[segment_index][field],"},{"line_number":414,"context_line":"                                 segment.get(field))"},{"line_number":415,"context_line":"            self.assertEqual(segments[segment_index][\u0027segment_index\u0027],"},{"line_number":416,"context_line":"                             segment_index)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        # Tests get_network()"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_1d5a4e50","line":415,"updated":"2014-08-19 11:37:24.000000000","message":"itto","commit_id":"57dd62b7626bd67839738cb43600054dec0584f8"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"24ba29367fd1f64be2f6d2a373b5d96f90278fcd","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                          pnet.SEGMENTATION_ID]:"},{"line_number":413,"context_line":"                self.assertEqual(segments[segment_index][field],"},{"line_number":414,"context_line":"                                 segment.get(field))"},{"line_number":415,"context_line":"            self.assertEqual(segments[segment_index][\u0027segment_index\u0027],"},{"line_number":416,"context_line":"                             segment_index)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        # Tests get_network()"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_d37d2770","line":415,"in_reply_to":"1abeadc6_1d5a4e50","updated":"2014-08-19 12:09:32.000000000","message":"Done","commit_id":"57dd62b7626bd67839738cb43600054dec0584f8"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"22b5ade34fd9bc203f8ed6827442a4d6a4c5ca82","unresolved":false,"context_lines":[{"line_number":425,"context_line":"                          pnet.SEGMENTATION_ID]:"},{"line_number":426,"context_line":"                self.assertEqual(segments[segment_index][field],"},{"line_number":427,"context_line":"                                 segment.get(field))"},{"line_number":428,"context_line":"            self.assertEqual(segments[segment_index][\u0027segment_index\u0027],"},{"line_number":429,"context_line":"                             segment_index)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    def test_create_network_with_provider_and_multiprovider_fail(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_bd45da71","line":428,"updated":"2014-08-19 11:37:24.000000000","message":"iiuc, the assertEqual argument order is invalid for the 2 assertions","commit_id":"57dd62b7626bd67839738cb43600054dec0584f8"},{"author":{"_account_id":10370,"name":"Romil Gupta","email":"romilgupta19@gmail.com","username":"romilg"},"change_message_id":"24ba29367fd1f64be2f6d2a373b5d96f90278fcd","unresolved":false,"context_lines":[{"line_number":425,"context_line":"                          pnet.SEGMENTATION_ID]:"},{"line_number":426,"context_line":"                self.assertEqual(segments[segment_index][field],"},{"line_number":427,"context_line":"                                 segment.get(field))"},{"line_number":428,"context_line":"            self.assertEqual(segments[segment_index][\u0027segment_index\u0027],"},{"line_number":429,"context_line":"                             segment_index)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    def test_create_network_with_provider_and_multiprovider_fail(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_3392db9f","line":428,"in_reply_to":"1abeadc6_bd45da71","updated":"2014-08-19 12:09:32.000000000","message":"Done","commit_id":"57dd62b7626bd67839738cb43600054dec0584f8"}]}
