)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"ef4358af78b2628ec23595565a4c2a42d5c9216a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mohit Malik \u003cmohit.malik@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-08-22 18:53:03 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: Add OVO for AutoAllocateToplogy"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I478af7aa118a947cc9eab36b047cecea6ddd5170"},{"line_number":10,"context_line":"Partially-Implements: blueprint adopt-oslo-versioned-objects-for-db"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1ac06dbe_21b50bd0","line":7,"range":{"start_line":7,"start_character":17,"end_line":7,"end_character":36},"updated":"2016-08-24 18:16:28.000000000","message":"s/AutoAllocateToplogy/AutoAllocatedTopology","commit_id":"e1a1e17ba4fba476fa07d493d1e7abd3b7a086c3"},{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"d5499eaa4e74a732207b002375538b581c7dd211","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-09-06 22:16:31 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add OVO for AutoAllocateToplogy"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I478af7aa118a947cc9eab36b047cecea6ddd5170"},{"line_number":10,"context_line":"Partially-Implements: blueprint adopt-oslo-versioned-objects-for-db"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"9a89bdaa_83447e1b","line":8,"updated":"2016-09-06 23:30:56.000000000","message":"nit: Description is needed under Summary of Git commit message structure in [1],\n\n[1] https://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"57ddcaa2aacd84050d710e3668e0b6d604cb52fe"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"2baffec55e61169bb1e2c61864babc2a256f53ac","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mohit Malik \u003cmohit.malik@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-09-12 18:53:22 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add OVO for AutoAllocateToplogy"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I478af7aa118a947cc9eab36b047cecea6ddd5170"},{"line_number":10,"context_line":"Partially-Implements: blueprint adopt-oslo-versioned-objects-for-db"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"9a89bdaa_5c62113f","line":7,"range":{"start_line":7,"start_character":12,"end_line":7,"end_character":31},"updated":"2016-09-13 15:03:56.000000000","message":"s/AutoAllocateToplogy/AutoAllocateTopology","commit_id":"568dfb6575805be14af6e0ad84e24712ce73bf60"},{"author":{"_account_id":20246,"name":"Aradhana Singh","email":"aradhanamailbox@gmail.com","username":"asingh"},"change_message_id":"7e05825e187057fe3dffc9cf8a6c1f2d4ca75aaf","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-09-12 18:53:22 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add OVO for AutoAllocateToplogy"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I478af7aa118a947cc9eab36b047cecea6ddd5170"},{"line_number":10,"context_line":"Partially-Implements: blueprint adopt-oslo-versioned-objects-for-db"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"9a89bdaa_87f47c5b","line":8,"updated":"2016-09-12 19:59:55.000000000","message":"As suggested in one of the earlier reviews, description is needed.\nPlease refer Summary of Git commit message structure in [1],\n[1] https://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"568dfb6575805be14af6e0ad84e24712ce73bf60"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"a7bb5983f13ecc70019960a9464bea5fb7bdcedb","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mohit Malik \u003cmohit.malik@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-09-13 18:28:16 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add OVO for AutoAllocateTopology"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch integrates and implements Oslo-Versioned Objects for Auto"},{"line_number":10,"context_line":"Allocated Topology."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"7a8ec9b2_386d1933","line":7,"range":{"start_line":7,"start_character":12,"end_line":7,"end_character":32},"updated":"2016-09-13 19:31:13.000000000","message":"Mohit, the name of the class is AutoAllocatedTopology[1]\n\n[1] https://review.openstack.org/#/c/357506/22/neutron/objects/auto_allocate.py@28","commit_id":"d595100cb75f6037ea9c54078b36ac202bc7daf4"}],"neutron/objects/auto_allocate.py":[{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"ef4358af78b2628ec23595565a4c2a42d5c9216a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    foreign_keys \u003d {\u0027network_id\u0027: \u0027id\u0027, \u0027router_id\u0027: \u0027id\u0027}"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    fields \u003d {"},{"line_number":35,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dFalse),"},{"line_number":36,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(nullable\u003dFalse),"},{"line_number":37,"context_line":"        \u0027router_id\u0027: obj_fields.UUIDField(nullable\u003dTrue),"},{"line_number":38,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_a17bbb28","line":35,"range":{"start_line":35,"start_character":45,"end_line":35,"end_character":59},"updated":"2016-08-24 18:16:28.000000000","message":"False is the default value for nullable in Field class, so this is not required[1]\n\n[1] https://github.com/openstack/oslo.versionedobjects/blob/master/oslo_versionedobjects/fields.py#L139","commit_id":"e1a1e17ba4fba476fa07d493d1e7abd3b7a086c3"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"1783c45c1ef5e46c6a0bf6744d98ca69214ee9d3","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    foreign_keys \u003d {\u0027network_id\u0027: \u0027id\u0027, \u0027router_id\u0027: \u0027id\u0027}"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    fields \u003d {"},{"line_number":35,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dFalse),"},{"line_number":36,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(nullable\u003dFalse),"},{"line_number":37,"context_line":"        \u0027router_id\u0027: obj_fields.UUIDField(nullable\u003dTrue),"},{"line_number":38,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa7ab95a_9c1a9d6d","line":35,"range":{"start_line":35,"start_character":45,"end_line":35,"end_character":59},"in_reply_to":"1ac06dbe_a17bbb28","updated":"2016-08-25 21:42:52.000000000","message":"Fixed","commit_id":"e1a1e17ba4fba476fa07d493d1e7abd3b7a086c3"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"ef4358af78b2628ec23595565a4c2a42d5c9216a","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    fields \u003d {"},{"line_number":35,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dFalse),"},{"line_number":36,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(nullable\u003dFalse),"},{"line_number":37,"context_line":"        \u0027router_id\u0027: obj_fields.UUIDField(nullable\u003dTrue),"},{"line_number":38,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_c1723749","line":36,"range":{"start_line":36,"start_character":43,"end_line":36,"end_character":57},"updated":"2016-08-24 18:16:28.000000000","message":"ditto: line 35","commit_id":"e1a1e17ba4fba476fa07d493d1e7abd3b7a086c3"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"1783c45c1ef5e46c6a0bf6744d98ca69214ee9d3","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    fields \u003d {"},{"line_number":35,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dFalse),"},{"line_number":36,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(nullable\u003dFalse),"},{"line_number":37,"context_line":"        \u0027router_id\u0027: obj_fields.UUIDField(nullable\u003dTrue),"},{"line_number":38,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa7ab95a_dc2a657e","line":36,"range":{"start_line":36,"start_character":43,"end_line":36,"end_character":57},"in_reply_to":"1ac06dbe_c1723749","updated":"2016-08-25 21:42:52.000000000","message":"Fixed","commit_id":"e1a1e17ba4fba476fa07d493d1e7abd3b7a086c3"},{"author":{"_account_id":22774,"name":"Shashank Kumar Shankar","email":"shashank.kumar.shankar@intel.com","username":"skshankar"},"change_message_id":"510351a9e6b35fba2d299ba56aad0d6174b3c728","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    primary_keys \u003d [\u0027project_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    foreign_keys \u003d {\u0027network_id\u0027: \u0027id\u0027, \u0027router_id\u0027: \u0027id\u0027}"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    fields \u003d {"},{"line_number":35,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dFalse),"},{"line_number":36,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ac06dbe_5bb9c2ca","line":33,"updated":"2016-08-25 17:25:49.000000000","message":"Apparently, they have updated the way foreign keys are declared in Objects. Check this https://review.openstack.org/#/c/357207/3/neutron/objects/securitygroup.py","commit_id":"d66dd78c6ef60f35ba3bc0fac1f00d9b9a8436fa"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"d42aba8a9136fe21c9b0c664e3dbb79e2916336e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    primary_keys \u003d [\u0027project_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    foreign_keys \u003d {\u0027network_id\u0027: \u0027id\u0027, \u0027router_id\u0027: \u0027id\u0027}"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    fields \u003d {"},{"line_number":35,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dFalse),"},{"line_number":36,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_c5cb6c1d","line":33,"in_reply_to":"1ac06dbe_5bb9c2ca","updated":"2016-08-25 20:19:25.000000000","message":"Thanks Shashank. Will fix","commit_id":"d66dd78c6ef60f35ba3bc0fac1f00d9b9a8436fa"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"7cedd5c9f3b96c2e20f81bfeb76b81accb58c763","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    primary_keys \u003d [\u0027project_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    foreign_keys \u003d {\u0027network_id\u0027: \u0027id\u0027, \u0027router_id\u0027: \u0027id\u0027}"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    fields \u003d {"},{"line_number":35,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dFalse),"},{"line_number":36,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_5779ce2e","line":33,"in_reply_to":"fa7ab95a_c5cb6c1d","updated":"2016-08-25 22:12:05.000000000","message":"This has dependency on Network and Router Objects to be implemented first so ll fix this later.","commit_id":"d66dd78c6ef60f35ba3bc0fac1f00d9b9a8436fa"},{"author":{"_account_id":20246,"name":"Aradhana Singh","email":"aradhanamailbox@gmail.com","username":"asingh"},"change_message_id":"7b6bfd08390f778597cecb6ce6f954763f3df9c0","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    primary_keys \u003d [\u0027project_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    foreign_keys \u003d {\u0027network_id\u0027: \u0027id\u0027, \u0027router_id\u0027: \u0027id\u0027}"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    fields \u003d {"},{"line_number":35,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa7ab95a_96bb27c4","line":32,"range":{"start_line":32,"start_character":4,"end_line":32,"end_character":58},"updated":"2016-08-26 15:27:57.000000000","message":"updated format of foreign key definition for ovo https://github.com/openstack/neutron/blob/master/neutron/objects/securitygroup.py#L109 , \nPlease refer https://review.openstack.org/#/c/357207/3/neutron/objects/securitygroup.py","commit_id":"81dc174ac32628706331947d0c2757c39efe0315"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"727ed9823b3b834b1624e7c7f89cb8f3d3299009","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    primary_keys \u003d [\u0027project_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    foreign_keys \u003d {\u0027network_id\u0027: \u0027id\u0027, \u0027router_id\u0027: \u0027id\u0027}"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    fields \u003d {"},{"line_number":35,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa7ab95a_cef8ab4c","line":32,"range":{"start_line":32,"start_character":4,"end_line":32,"end_character":58},"in_reply_to":"fa7ab95a_96bb27c4","updated":"2016-08-26 18:44:29.000000000","message":"Added a comment for now to fix later","commit_id":"81dc174ac32628706331947d0c2757c39efe0315"},{"author":{"_account_id":22218,"name":"Sindhu Devale","email":"sindhu.devale@intel.com","username":"sindhudevale"},"change_message_id":"18480f4efa99a3ea6a0008c16e30fb071aa5f383","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    foreign_keys \u003d {\u0027network_id\u0027: \u0027id\u0027, \u0027router_id\u0027: \u0027id\u0027}"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    fields \u003d {"},{"line_number":36,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"},{"line_number":37,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(),"},{"line_number":38,"context_line":"        \u0027router_id\u0027: obj_fields.UUIDField(nullable\u003dTrue),"},{"line_number":39,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa7ab95a_8f477d1c","line":36,"range":{"start_line":36,"start_character":9,"end_line":36,"end_character":19},"updated":"2016-08-26 19:31:47.000000000","message":"The DB table \u0027auto_allocated_topologies\u0027 has \u0027tenant_id\u0027 as the field. Don\u0027t you need a fields_need_translation to use \u0027proiect_id\u0027?","commit_id":"6b9859d6962100c8237aa96336ab6db96acc0165"},{"author":{"_account_id":22218,"name":"Sindhu Devale","email":"sindhu.devale@intel.com","username":"sindhudevale"},"change_message_id":"2300298cf3672aaec4996d9b6b4a7cfcd2a86447","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    foreign_keys \u003d {\u0027network_id\u0027: \u0027id\u0027, \u0027router_id\u0027: \u0027id\u0027}"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    fields \u003d {"},{"line_number":36,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"},{"line_number":37,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(),"},{"line_number":38,"context_line":"        \u0027router_id\u0027: obj_fields.UUIDField(nullable\u003dTrue),"},{"line_number":39,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa7ab95a_e17d7db2","line":36,"range":{"start_line":36,"start_character":9,"end_line":36,"end_character":19},"in_reply_to":"fa7ab95a_41838904","updated":"2016-08-26 20:13:52.000000000","message":"Ignore my comment anyway. I just learnt tenant to project translation has been done at sqlalchemy level.","commit_id":"6b9859d6962100c8237aa96336ab6db96acc0165"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"f62b350393d6a5d0cca0be03b1951be8f29b1e66","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    foreign_keys \u003d {\u0027network_id\u0027: \u0027id\u0027, \u0027router_id\u0027: \u0027id\u0027}"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    fields \u003d {"},{"line_number":36,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"},{"line_number":37,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(),"},{"line_number":38,"context_line":"        \u0027router_id\u0027: obj_fields.UUIDField(nullable\u003dTrue),"},{"line_number":39,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa7ab95a_41838904","line":36,"range":{"start_line":36,"start_character":9,"end_line":36,"end_character":19},"in_reply_to":"fa7ab95a_8f477d1c","updated":"2016-08-26 20:04:46.000000000","message":"class AutoAllocatedTopology has ProjectPrimaryKey. Where is tenant_id ?","commit_id":"6b9859d6962100c8237aa96336ab6db96acc0165"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"7bdc1e040cbf8f171407d8e8e40093f6cb682562","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from oslo_versionedobjects import fields as obj_fields"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from neutron.objects import base"},{"line_number":20,"context_line":"from neutron.services.auto_allocate import models"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"@obj_base.VersionedObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":23,"id":"7a8ec9b2_b89f505e","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":48},"updated":"2016-09-14 08:55:31.000000000","message":"question, do we need to move the model to db/models?","commit_id":"90cf04b7819624108c7f8529dea898ffd1d0adf5"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"9dec8045f3c09ee9dab95e69f0a70b02ac1ff3f1","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from oslo_versionedobjects import fields as obj_fields"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from neutron.objects import base"},{"line_number":20,"context_line":"from neutron.services.auto_allocate import models"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"@obj_base.VersionedObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":23,"id":"7a8ec9b2_c9b2ed4b","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":48},"in_reply_to":"7a8ec9b2_b89f505e","updated":"2016-09-16 17:09:45.000000000","message":"Given that the model class is not located in the same file as mixin class I don\u0027t think that we need it... for now.","commit_id":"90cf04b7819624108c7f8529dea898ffd1d0adf5"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"d1dc7ac2b1112d3e602bcd4325bec76c9a4fbb20","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from oslo_versionedobjects import fields as obj_fields"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from neutron.objects import base"},{"line_number":20,"context_line":"from neutron.services.auto_allocate import models"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"@obj_base.VersionedObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":23,"id":"7a8ec9b2_dbde2fdc","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":48},"in_reply_to":"7a8ec9b2_c9b2ed4b","updated":"2016-09-16 19:59:46.000000000","message":"Agree","commit_id":"90cf04b7819624108c7f8529dea898ffd1d0adf5"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"7bdc1e040cbf8f171407d8e8e40093f6cb682562","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    primary_keys \u003d [\u0027project_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    # TODO(mmalik4): fix the foreign key format"},{"line_number":33,"context_line":"    foreign_keys \u003d {\u0027network_id\u0027: \u0027id\u0027, \u0027router_id\u0027: \u0027id\u0027}"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    fields \u003d {"},{"line_number":36,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":23,"id":"7a8ec9b2_18bf64d1","line":33,"range":{"start_line":33,"start_character":4,"end_line":33,"end_character":58},"updated":"2016-09-14 08:55:31.000000000","message":"You can safely fix the foreign keys now:\n\nforeign_keys \u003d {\u0027Network\u0027: {\u0027network_id\u0027: \u0027id\u0027}, \u0027Router\u0027: {\u0027router_id\u0027: \u0027id\u0027}}\n\nBut I\u0027m not sure if it is even required to describe the foreign keys here.","commit_id":"90cf04b7819624108c7f8529dea898ffd1d0adf5"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"d1dc7ac2b1112d3e602bcd4325bec76c9a4fbb20","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    primary_keys \u003d [\u0027project_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    # TODO(mmalik4): fix the foreign key format"},{"line_number":33,"context_line":"    foreign_keys \u003d {\u0027network_id\u0027: \u0027id\u0027, \u0027router_id\u0027: \u0027id\u0027}"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    fields \u003d {"},{"line_number":36,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":23,"id":"7a8ec9b2_3b49d3b7","line":33,"range":{"start_line":33,"start_character":4,"end_line":33,"end_character":58},"in_reply_to":"7a8ec9b2_18bf64d1","updated":"2016-09-16 19:59:46.000000000","message":"Fixed","commit_id":"90cf04b7819624108c7f8529dea898ffd1d0adf5"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"7bdc1e040cbf8f171407d8e8e40093f6cb682562","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    foreign_keys \u003d {\u0027network_id\u0027: \u0027id\u0027, \u0027router_id\u0027: \u0027id\u0027}"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    fields \u003d {"},{"line_number":36,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"},{"line_number":37,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(),"},{"line_number":38,"context_line":"        \u0027router_id\u0027: obj_fields.UUIDField(nullable\u003dTrue),"},{"line_number":39,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":23,"id":"7a8ec9b2_b8be70fd","line":36,"range":{"start_line":36,"start_character":8,"end_line":36,"end_character":47},"updated":"2016-09-14 08:55:31.000000000","message":"project_id can be nullable. Please add nullable\u003dTrue.","commit_id":"90cf04b7819624108c7f8529dea898ffd1d0adf5"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"d1dc7ac2b1112d3e602bcd4325bec76c9a4fbb20","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    foreign_keys \u003d {\u0027network_id\u0027: \u0027id\u0027, \u0027router_id\u0027: \u0027id\u0027}"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    fields \u003d {"},{"line_number":36,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"},{"line_number":37,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(),"},{"line_number":38,"context_line":"        \u0027router_id\u0027: obj_fields.UUIDField(nullable\u003dTrue),"},{"line_number":39,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":23,"id":"7a8ec9b2_7bcd1b30","line":36,"range":{"start_line":36,"start_character":8,"end_line":36,"end_character":47},"in_reply_to":"7a8ec9b2_b8be70fd","updated":"2016-09-16 19:59:46.000000000","message":"Fixed","commit_id":"90cf04b7819624108c7f8529dea898ffd1d0adf5"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"3f91ace8ee058bd2dbea829bcec61ea16822ffa8","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    }"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    fields \u003d {"},{"line_number":38,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dTrue),"},{"line_number":39,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(),"},{"line_number":40,"context_line":"        \u0027router_id\u0027: obj_fields.UUIDField(nullable\u003dTrue),"},{"line_number":41,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":25,"id":"5a8bc5a2_e46a83ec","line":38,"range":{"start_line":38,"start_character":45,"end_line":38,"end_character":58},"updated":"2016-09-26 14:30:22.000000000","message":"Ups, sorry, this should be nullable\u003dFalse, since object has project_id as primary key.","commit_id":"e99866c095f9903fe9e8736847bdc0b624019f59"},{"author":{"_account_id":22218,"name":"Sindhu Devale","email":"sindhu.devale@intel.com","username":"sindhudevale"},"change_message_id":"d9018e50a369f36cf0e90e9db800030d828a7fe4","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    }"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    fields \u003d {"},{"line_number":38,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dTrue),"},{"line_number":39,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(),"},{"line_number":40,"context_line":"        \u0027router_id\u0027: obj_fields.UUIDField(nullable\u003dTrue),"},{"line_number":41,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":25,"id":"5a8bc5a2_44c31b57","line":38,"range":{"start_line":38,"start_character":45,"end_line":38,"end_character":58},"in_reply_to":"5a8bc5a2_91500734","updated":"2016-09-26 21:51:42.000000000","message":"Yup","commit_id":"e99866c095f9903fe9e8736847bdc0b624019f59"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"731e0212a9f9a24a2cb7ab62620f6d0422aefd55","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    }"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    fields \u003d {"},{"line_number":38,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dTrue),"},{"line_number":39,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(),"},{"line_number":40,"context_line":"        \u0027router_id\u0027: obj_fields.UUIDField(nullable\u003dTrue),"},{"line_number":41,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":25,"id":"5a8bc5a2_91500734","line":38,"range":{"start_line":38,"start_character":45,"end_line":38,"end_character":58},"in_reply_to":"5a8bc5a2_e46a83ec","updated":"2016-09-26 21:33:50.000000000","message":"My bad, i should have paid attention. So basically no need for nullable as default nullable is false for oslo fields right ?","commit_id":"e99866c095f9903fe9e8736847bdc0b624019f59"},{"author":{"_account_id":20246,"name":"Aradhana Singh","email":"aradhanamailbox@gmail.com","username":"asingh"},"change_message_id":"71c0857b2189286f5bb6b76eb3e0a669e5b9ff61","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    primary_keys \u003d [\u0027project_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    foreign_keys \u003d {"},{"line_number":33,"context_line":"        \u0027Network\u0027: {\u0027network_id\u0027: \u0027id\u0027},"},{"line_number":34,"context_line":"        \u0027Router\u0027: {\u0027router_id\u0027: \u0027id\u0027}"},{"line_number":35,"context_line":"    }"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    fields \u003d {"},{"line_number":38,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa6399be_6081d8fa","line":35,"range":{"start_line":32,"start_character":0,"end_line":35,"end_character":5},"updated":"2016-10-14 19:31:49.000000000","message":"load_synthetic_db_fields method in [1] loads synthetic field from foreign_keys.\nSince Network ovo[2] doesn\u0027t contain synthetic field, foreign key \u0027Network\u0027 is not required. Same for including \u0027Router\u0027 as foreign key [3]\n[1] https://github.com/openstack/neutron/blob/master/neutron/objects/base.py#L501\n[2] https://github.com/openstack/neutron/blob/master/neutron/objects/network.py#L118-L127\n[3] https://review.openstack.org/#/c/307964/22/neutron/objects/router.py@43","commit_id":"0ccf467e3390f738e44ff82cbc898c02dd63f50b"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"9d4bd58b187cc1f2be34ee60a85672bd8cb87f42","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    primary_keys \u003d [\u0027project_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    foreign_keys \u003d {"},{"line_number":33,"context_line":"        \u0027Network\u0027: {\u0027network_id\u0027: \u0027id\u0027},"},{"line_number":34,"context_line":"        \u0027Router\u0027: {\u0027router_id\u0027: \u0027id\u0027}"},{"line_number":35,"context_line":"    }"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    fields \u003d {"},{"line_number":38,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa6399be_48af5d94","line":35,"range":{"start_line":32,"start_character":0,"end_line":35,"end_character":5},"in_reply_to":"fa6399be_6081d8fa","updated":"2016-10-17 19:30:29.000000000","message":"Fixed. Thanks","commit_id":"0ccf467e3390f738e44ff82cbc898c02dd63f50b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"cdf20efc4791810dd9198ca751450dea0ef9cd24","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    db_model \u003d models.AutoAllocatedTopology"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    primary_keys \u003d [\u0027project_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    fields \u003d {"},{"line_number":33,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":37,"id":"3a71b18c_09378bff","line":30,"updated":"2016-12-12 13:24:57.000000000","message":"I believe both other fields, network_id and router_id, are primary too.","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"096d0a77dd9969eff9269cd411dd6befa78d4b7f","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    db_model \u003d models.AutoAllocatedTopology"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    primary_keys \u003d [\u0027project_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    fields \u003d {"},{"line_number":33,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a6eadb0_8836b001","line":30,"in_reply_to":"1a6eadb0_327510cb","updated":"2016-12-13 15:39:33.000000000","message":"No, as long as you don\u0027t change the project id:\n\nmysql\u003e insert auto_allocated_topologies(project_id, network_id, router_id) values (\u002781af06137ea04d5a936f2a788a9e266c\u0027, \u00272ea9f5f6-ed57-4ed7-bf76-e6230c37f62b\u0027, \u0027c2c36f05-eacb-4ed0-ae03-bea831e7ace5\u0027);\nQuery OK, 1 row affected (0.01 sec)\n\nmysql\u003e insert auto_allocated_topologies(project_id, network_id, router_id) values (\u002781af06137ea04d5a936f2a788a9e266c\u0027, \u0027fbeebe2e-008b-4621-8d6a-a6f2e2afd065\u0027, \u0027c2c36f05-eacb-4ed0-ae03-bea831e7ace5\u0027);\nERROR 1062 (23000): Duplicate entry \u002781af06137ea04d5a936f2a788a9e266c\u0027 for key \u0027PRIMARY\u0027\n\nmysql\u003e insert auto_allocated_topologies(project_id, network_id, router_id) values (\u002781af06137ea04d5a936f2a788a9e266c\u0027, \u00272ea9f5f6-ed57-4ed7-bf76-e6230c37f62b\u0027, \u00276f56032961a64ddb8e640f705fc578fa\u0027);\nERROR 1062 (23000): Duplicate entry \u002781af06137ea04d5a936f2a788a9e266c\u0027 for key \u0027PRIMARY\u0027","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"ed9cc0275817969d57528d7654771deaa5e758d0","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    db_model \u003d models.AutoAllocatedTopology"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    primary_keys \u003d [\u0027project_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    fields \u003d {"},{"line_number":33,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a6eadb0_327510cb","line":30,"in_reply_to":"1a6eadb0_61f6fdd8","updated":"2016-12-13 13:42:57.000000000","message":"Is it allowed to have pid-1, net-id-1 with different router-id?","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b3bdb73dce79b577f49e418ceda770d838443c9a","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    db_model \u003d models.AutoAllocatedTopology"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    primary_keys \u003d [\u0027project_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    fields \u003d {"},{"line_number":33,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a6eadb0_a1b62788","line":30,"in_reply_to":"1a6eadb0_8836b001","updated":"2016-12-13 16:35:56.000000000","message":"Interesting. I thought that neutron will create a topology per nova instance, but that\u0027s apparently not the case.","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"1a1ca0014a2ee39778f8e6f96be6c438ebb7b518","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    db_model \u003d models.AutoAllocatedTopology"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    primary_keys \u003d [\u0027project_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    fields \u003d {"},{"line_number":33,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a6eadb0_db7ccced","line":30,"in_reply_to":"1a6eadb0_a1b62788","updated":"2016-12-14 09:07:42.000000000","message":"So I\u0027m ok with current primary_keys, no need to extend it.","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"a0e35874dd29b49a2fd451dee986cb67fcacfa5c","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    db_model \u003d models.AutoAllocatedTopology"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    primary_keys \u003d [\u0027project_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    fields \u003d {"},{"line_number":33,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a6eadb0_61f6fdd8","line":30,"in_reply_to":"3a71b18c_09378bff","updated":"2016-12-12 20:38:17.000000000","message":"They were defined as Foreign keys, in other way we can only have a unique allocated topology per project.  Should we consider FKs as OVO primary keys?","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"0d06c0e671ab65830d5e4a972a6fa9c8884384d6","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    db_model \u003d models.AutoAllocatedTopology"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    primary_keys \u003d [\u0027project_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    fields \u003d {"},{"line_number":33,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":37,"id":"3a71b18c_77cff155","line":30,"in_reply_to":"3a71b18c_09378bff","updated":"2016-12-12 14:46:55.000000000","message":"Ups, I missed that.","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"354fdee34402f4a0eafe5665b1c6c8fddc4920e6","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    db_model \u003d models.AutoAllocatedTopology"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    primary_keys \u003d [\u0027project_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    fields \u003d {"},{"line_number":33,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a6eadb0_4113c15c","line":30,"in_reply_to":"3a71b18c_77cff155","updated":"2016-12-12 20:24:42.000000000","message":"Didnt understand ? As per the DB model, only project_id is the primary key ?","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"}],"neutron/services/auto_allocate/db.py":[{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"ef4358af78b2628ec23595565a4c2a42d5c9216a","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def _get_auto_allocated_network(self, context, tenant_id):"},{"line_number":191,"context_line":"        \"\"\"Get the auto allocated network for the tenant.\"\"\""},{"line_number":192,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":193,"context_line":"            network \u003d auto_allocate_obj.AutoAllocatedToplogy\\"},{"line_number":194,"context_line":"                .get_object(context, id\u003dtenant_id)"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_f4d3af5d","line":192,"range":{"start_line":192,"start_character":8,"end_line":192,"end_character":57},"updated":"2016-08-24 18:16:28.000000000","message":"I don\u0027t think that it\u0027s necessary to create a transaction for this because OVO already does here[1]\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/objects/db/api.py#L23","commit_id":"e1a1e17ba4fba476fa07d493d1e7abd3b7a086c3"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"1783c45c1ef5e46c6a0bf6744d98ca69214ee9d3","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def _get_auto_allocated_network(self, context, tenant_id):"},{"line_number":191,"context_line":"        \"\"\"Get the auto allocated network for the tenant.\"\"\""},{"line_number":192,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":193,"context_line":"            network \u003d auto_allocate_obj.AutoAllocatedToplogy\\"},{"line_number":194,"context_line":"                .get_object(context, id\u003dtenant_id)"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa7ab95a_3c41913a","line":192,"range":{"start_line":192,"start_character":8,"end_line":192,"end_character":57},"in_reply_to":"1ac06dbe_f4d3af5d","updated":"2016-08-25 21:42:52.000000000","message":"Agree. I think this is redundant. Will fix.","commit_id":"e1a1e17ba4fba476fa07d493d1e7abd3b7a086c3"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"ef4358af78b2628ec23595565a4c2a42d5c9216a","unresolved":false,"context_lines":[{"line_number":190,"context_line":"    def _get_auto_allocated_network(self, context, tenant_id):"},{"line_number":191,"context_line":"        \"\"\"Get the auto allocated network for the tenant.\"\"\""},{"line_number":192,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":193,"context_line":"            network \u003d auto_allocate_obj.AutoAllocatedToplogy\\"},{"line_number":194,"context_line":"                .get_object(context, id\u003dtenant_id)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        if network:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_c1eeb7b3","line":193,"range":{"start_line":193,"start_character":60,"end_line":193,"end_character":61},"updated":"2016-08-24 18:16:28.000000000","message":"Try to don\u0027t use \"\\\" for breaking lines","commit_id":"e1a1e17ba4fba476fa07d493d1e7abd3b7a086c3"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"1783c45c1ef5e46c6a0bf6744d98ca69214ee9d3","unresolved":false,"context_lines":[{"line_number":190,"context_line":"    def _get_auto_allocated_network(self, context, tenant_id):"},{"line_number":191,"context_line":"        \"\"\"Get the auto allocated network for the tenant.\"\"\""},{"line_number":192,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":193,"context_line":"            network \u003d auto_allocate_obj.AutoAllocatedToplogy\\"},{"line_number":194,"context_line":"                .get_object(context, id\u003dtenant_id)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        if network:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa7ab95a_7c34f9dd","line":193,"range":{"start_line":193,"start_character":60,"end_line":193,"end_character":61},"in_reply_to":"1ac06dbe_c1eeb7b3","updated":"2016-08-25 21:42:52.000000000","message":"Fixed.","commit_id":"e1a1e17ba4fba476fa07d493d1e7abd3b7a086c3"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"ef4358af78b2628ec23595565a4c2a42d5c9216a","unresolved":false,"context_lines":[{"line_number":311,"context_line":"            # Neutron plugin backend in sync, thus allowing for a"},{"line_number":312,"context_line":"            # more bullet proof cleanup. Any other error will have"},{"line_number":313,"context_line":"            # to bubble up."},{"line_number":314,"context_line":"            with context.session.begin(subtransactions\u003dTrue):"},{"line_number":315,"context_line":"                pool_args \u003d {\u0027project_id\u0027: tenant_id,"},{"line_number":316,"context_line":"                             \u0027network_id\u0027: network_id,"},{"line_number":317,"context_line":"                             \u0027router_id\u0027: router_id}"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_545723ca","line":314,"updated":"2016-08-24 18:16:28.000000000","message":"ditto: line 192 \n\n[1] https://github.com/openstack/neutron/blob/master/neutron/objects/db/api.py#L56","commit_id":"e1a1e17ba4fba476fa07d493d1e7abd3b7a086c3"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"1783c45c1ef5e46c6a0bf6744d98ca69214ee9d3","unresolved":false,"context_lines":[{"line_number":311,"context_line":"            # Neutron plugin backend in sync, thus allowing for a"},{"line_number":312,"context_line":"            # more bullet proof cleanup. Any other error will have"},{"line_number":313,"context_line":"            # to bubble up."},{"line_number":314,"context_line":"            with context.session.begin(subtransactions\u003dTrue):"},{"line_number":315,"context_line":"                pool_args \u003d {\u0027project_id\u0027: tenant_id,"},{"line_number":316,"context_line":"                             \u0027network_id\u0027: network_id,"},{"line_number":317,"context_line":"                             \u0027router_id\u0027: router_id}"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa7ab95a_5c3e55b9","line":314,"in_reply_to":"1ac06dbe_545723ca","updated":"2016-08-25 21:42:52.000000000","message":"same","commit_id":"e1a1e17ba4fba476fa07d493d1e7abd3b7a086c3"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"ef4358af78b2628ec23595565a4c2a42d5c9216a","unresolved":false,"context_lines":[{"line_number":315,"context_line":"                pool_args \u003d {\u0027project_id\u0027: tenant_id,"},{"line_number":316,"context_line":"                             \u0027network_id\u0027: network_id,"},{"line_number":317,"context_line":"                             \u0027router_id\u0027: router_id}"},{"line_number":318,"context_line":"                auto_allocate \u003d auto_allocate_obj.\\"},{"line_number":319,"context_line":"                    AutoAllocatedToplogy(context, **pool_args)"},{"line_number":320,"context_line":"                auto_allocate.create()"},{"line_number":321,"context_line":"            p_utils.update_network("}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_e14813cf","line":318,"range":{"start_line":318,"start_character":49,"end_line":318,"end_character":51},"updated":"2016-08-24 18:16:28.000000000","message":"ditto: line 193","commit_id":"e1a1e17ba4fba476fa07d493d1e7abd3b7a086c3"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"1783c45c1ef5e46c6a0bf6744d98ca69214ee9d3","unresolved":false,"context_lines":[{"line_number":315,"context_line":"                pool_args \u003d {\u0027project_id\u0027: tenant_id,"},{"line_number":316,"context_line":"                             \u0027network_id\u0027: network_id,"},{"line_number":317,"context_line":"                             \u0027router_id\u0027: router_id}"},{"line_number":318,"context_line":"                auto_allocate \u003d auto_allocate_obj.\\"},{"line_number":319,"context_line":"                    AutoAllocatedToplogy(context, **pool_args)"},{"line_number":320,"context_line":"                auto_allocate.create()"},{"line_number":321,"context_line":"            p_utils.update_network("}],"source_content_type":"text/x-python","patch_set":7,"id":"fa7ab95a_fc6d69cd","line":318,"range":{"start_line":318,"start_character":49,"end_line":318,"end_character":51},"in_reply_to":"1ac06dbe_e14813cf","updated":"2016-08-25 21:42:52.000000000","message":"Fixed","commit_id":"e1a1e17ba4fba476fa07d493d1e7abd3b7a086c3"},{"author":{"_account_id":20246,"name":"Aradhana Singh","email":"aradhanamailbox@gmail.com","username":"asingh"},"change_message_id":"7e05825e187057fe3dffc9cf8a6c1f2d4ca75aaf","unresolved":false,"context_lines":[{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def _get_auto_allocated_topology(self, context, tenant_id):"},{"line_number":199,"context_line":"        \"\"\"Return the auto allocated topology record if present or None.\"\"\""},{"line_number":200,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":201,"context_line":"            return auto_allocate_obj.AutoAllocatedTopology.get_object("},{"line_number":202,"context_line":"                context, project_id\u003dtenant_id)"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"9a89bdaa_c7ea0474","line":200,"range":{"start_line":200,"start_character":7,"end_line":200,"end_character":57},"updated":"2016-09-12 19:59:55.000000000","message":"this is no more needed","commit_id":"568dfb6575805be14af6e0ad84e24712ce73bf60"},{"author":{"_account_id":20246,"name":"Aradhana Singh","email":"aradhanamailbox@gmail.com","username":"asingh"},"change_message_id":"7e05825e187057fe3dffc9cf8a6c1f2d4ca75aaf","unresolved":false,"context_lines":[{"line_number":334,"context_line":"            # Neutron plugin backend in sync, thus allowing for a"},{"line_number":335,"context_line":"            # more bullet proof cleanup. Any other error will have"},{"line_number":336,"context_line":"            # to bubble up."},{"line_number":337,"context_line":"            with context.session.begin(subtransactions\u003dTrue):"},{"line_number":338,"context_line":"                pool_args \u003d {\u0027project_id\u0027: tenant_id,"},{"line_number":339,"context_line":"                             \u0027network_id\u0027: network_id,"},{"line_number":340,"context_line":"                             \u0027router_id\u0027: router_id}"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a89bdaa_07014c38","line":337,"range":{"start_line":337,"start_character":11,"end_line":337,"end_character":61},"updated":"2016-09-12 19:59:55.000000000","message":"ditto","commit_id":"568dfb6575805be14af6e0ad84e24712ce73bf60"},{"author":{"_account_id":22776,"name":"Nakul Dahiwade","email":"nakul.dahiwade@intel.com","username":"nakul.dahiwade"},"change_message_id":"d21749128006fdd8de9b592f959c79c86473200a","unresolved":false,"context_lines":[{"line_number":336,"context_line":"            # to bubble up."},{"line_number":337,"context_line":"            pool_args \u003d {\u0027project_id\u0027: tenant_id,"},{"line_number":338,"context_line":"                         \u0027network_id\u0027: network_id,"},{"line_number":339,"context_line":"                         \u0027router_id\u0027: router_id}"},{"line_number":340,"context_line":"            auto_allocate \u003d auto_allocate_obj.AutoAllocatedTopology("},{"line_number":341,"context_line":"                context, **pool_args)"},{"line_number":342,"context_line":"            auto_allocate.create()"}],"source_content_type":"text/x-python","patch_set":27,"id":"3a98d1f4_c44b5958","line":339,"updated":"2016-09-28 19:42:36.000000000","message":"nit: would passing pool_args as separate args in AutoAllocatedToplogy() save 1 operation of creating a dict above?","commit_id":"28e53df0677890c354f811799e69995913137726"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"dbb8102f344e10e6c47791bab4ae70f5a14b03d1","unresolved":false,"context_lines":[{"line_number":336,"context_line":"            # to bubble up."},{"line_number":337,"context_line":"            pool_args \u003d {\u0027project_id\u0027: tenant_id,"},{"line_number":338,"context_line":"                         \u0027network_id\u0027: network_id,"},{"line_number":339,"context_line":"                         \u0027router_id\u0027: router_id}"},{"line_number":340,"context_line":"            auto_allocate \u003d auto_allocate_obj.AutoAllocatedTopology("},{"line_number":341,"context_line":"                context, **pool_args)"},{"line_number":342,"context_line":"            auto_allocate.create()"}],"source_content_type":"text/x-python","patch_set":27,"id":"3a98d1f4_4f16ba4c","line":339,"in_reply_to":"3a98d1f4_c44b5958","updated":"2016-10-03 20:58:33.000000000","message":"Done","commit_id":"28e53df0677890c354f811799e69995913137726"},{"author":{"_account_id":20246,"name":"Aradhana Singh","email":"aradhanamailbox@gmail.com","username":"asingh"},"change_message_id":"7e5efc27b9e4d82d1233ff8467bad4ff5e39013c","unresolved":false,"context_lines":[{"line_number":336,"context_line":"            # Neutron plugin backend in sync, thus allowing for a"},{"line_number":337,"context_line":"            # more bullet proof cleanup. Any other error will have"},{"line_number":338,"context_line":"            # to bubble up."},{"line_number":339,"context_line":"            auto_allocate \u003d auto_allocate_obj.AutoAllocatedTopology("},{"line_number":340,"context_line":"                context,"},{"line_number":341,"context_line":"                project_id\u003dtenant_id,"},{"line_number":342,"context_line":"                network_id\u003dnetwork_id,"},{"line_number":343,"context_line":"                router_id\u003drouter_id)"},{"line_number":344,"context_line":"            auto_allocate.create()"},{"line_number":345,"context_line":"            self.core_plugin.update_network("},{"line_number":346,"context_line":"                context, network_id,"},{"line_number":347,"context_line":"                {\u0027network\u0027: {\u0027admin_state_up\u0027: True}})"}],"source_content_type":"text/x-python","patch_set":35,"id":"7a77a97e_24b39aea","line":344,"range":{"start_line":339,"start_character":9,"end_line":344,"end_character":34},"updated":"2016-11-17 17:09:36.000000000","message":"no need to create auto_allocate variable.\ncan be written as follows :\n            auto_allocate_obj.AutoAllocatedTopology(context,\n                project_id\u003dtenant_id, network_id\u003dnetwork_id,\n                router_id\u003drouter_id).create()","commit_id":"120d465b2eddf12ca8da60e9fcd2070a8a5ea97a"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"a79e9ecdf32be8c5ebc055f0560bc39fbcf2b8e0","unresolved":false,"context_lines":[{"line_number":336,"context_line":"            # Neutron plugin backend in sync, thus allowing for a"},{"line_number":337,"context_line":"            # more bullet proof cleanup. Any other error will have"},{"line_number":338,"context_line":"            # to bubble up."},{"line_number":339,"context_line":"            auto_allocate \u003d auto_allocate_obj.AutoAllocatedTopology("},{"line_number":340,"context_line":"                context,"},{"line_number":341,"context_line":"                project_id\u003dtenant_id,"},{"line_number":342,"context_line":"                network_id\u003dnetwork_id,"},{"line_number":343,"context_line":"                router_id\u003drouter_id)"},{"line_number":344,"context_line":"            auto_allocate.create()"},{"line_number":345,"context_line":"            self.core_plugin.update_network("},{"line_number":346,"context_line":"                context, network_id,"},{"line_number":347,"context_line":"                {\u0027network\u0027: {\u0027admin_state_up\u0027: True}})"}],"source_content_type":"text/x-python","patch_set":35,"id":"5a74a57a_70ef84e8","line":344,"range":{"start_line":339,"start_character":9,"end_line":344,"end_character":34},"in_reply_to":"7a77a97e_24b39aea","updated":"2016-11-23 21:06:37.000000000","message":"Fixed","commit_id":"120d465b2eddf12ca8da60e9fcd2070a8a5ea97a"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"0d06c0e671ab65830d5e4a972a6fa9c8884384d6","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def _get_auto_allocated_topology(self, context, tenant_id):"},{"line_number":200,"context_line":"        \"\"\"Return the auto allocated topology record if present or None.\"\"\""},{"line_number":201,"context_line":"        return auto_allocate_obj.AutoAllocatedTopology.get_object("},{"line_number":202,"context_line":"            context, project_id\u003dtenant_id)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def _get_auto_allocated_network(self, context, tenant_id):"},{"line_number":205,"context_line":"        \"\"\"Get the auto allocated network for the tenant.\"\"\""}],"source_content_type":"text/x-python","patch_set":37,"id":"3a71b18c_975f2d0e","line":202,"range":{"start_line":201,"start_character":8,"end_line":202,"end_character":42},"updated":"2016-12-12 14:46:55.000000000","message":"After changing the primary keys, this line should be changed. It would require to use the get_objects and then pop the first object:\n\n    objs \u003d AutoAllocatedTopology.get_objects(\n            context, project_id\u003dtenant_id)\n    if objs:\n        return objs.pop()","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"554112b5e9293199303cb9a20b8147df73cdcaaf","unresolved":false,"context_lines":[{"line_number":330,"context_line":"    def _save(self, context, tenant_id, network_id, router_id, subnets):"},{"line_number":331,"context_line":"        \"\"\"Save auto-allocated topology, or revert in case of DB errors.\"\"\""},{"line_number":332,"context_line":"        try:"},{"line_number":333,"context_line":"            # NOTE(armax): saving the auto allocated topology in a"},{"line_number":334,"context_line":"            # separate transaction will keep the Neutron DB and the"},{"line_number":335,"context_line":"            # Neutron plugin backend in sync, thus allowing for a"},{"line_number":336,"context_line":"            # more bullet proof cleanup. Any other error will have"}],"source_content_type":"text/x-python","patch_set":37,"id":"3a71b18c_5a693cbd","line":333,"updated":"2016-12-12 14:58:49.000000000","message":"Seems like the comment belonged to the line 339 in the old side of the patch, that is removed now. So should we also kill it?","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"6b726165b16efbfa9dacf1f7b0a3d5ebbe908d15","unresolved":false,"context_lines":[{"line_number":330,"context_line":"    def _save(self, context, tenant_id, network_id, router_id, subnets):"},{"line_number":331,"context_line":"        \"\"\"Save auto-allocated topology, or revert in case of DB errors.\"\"\""},{"line_number":332,"context_line":"        try:"},{"line_number":333,"context_line":"            # NOTE(armax): saving the auto allocated topology in a"},{"line_number":334,"context_line":"            # separate transaction will keep the Neutron DB and the"},{"line_number":335,"context_line":"            # Neutron plugin backend in sync, thus allowing for a"},{"line_number":336,"context_line":"            # more bullet proof cleanup. Any other error will have"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a6eadb0_d0ac8f37","line":333,"in_reply_to":"1a6eadb0_5bf43c86","updated":"2016-12-14 17:07:03.000000000","message":"We already have a transaction inside the object create().","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"35a081842470ed84f13fbbc5d07b438cf926a3ec","unresolved":false,"context_lines":[{"line_number":330,"context_line":"    def _save(self, context, tenant_id, network_id, router_id, subnets):"},{"line_number":331,"context_line":"        \"\"\"Save auto-allocated topology, or revert in case of DB errors.\"\"\""},{"line_number":332,"context_line":"        try:"},{"line_number":333,"context_line":"            # NOTE(armax): saving the auto allocated topology in a"},{"line_number":334,"context_line":"            # separate transaction will keep the Neutron DB and the"},{"line_number":335,"context_line":"            # Neutron plugin backend in sync, thus allowing for a"},{"line_number":336,"context_line":"            # more bullet proof cleanup. Any other error will have"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a6eadb0_d7a8fc22","line":333,"in_reply_to":"1a6eadb0_d0ac8f37","updated":"2016-12-14 20:43:05.000000000","message":"Agree. This comment can be removed now.","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"1a1ca0014a2ee39778f8e6f96be6c438ebb7b518","unresolved":false,"context_lines":[{"line_number":330,"context_line":"    def _save(self, context, tenant_id, network_id, router_id, subnets):"},{"line_number":331,"context_line":"        \"\"\"Save auto-allocated topology, or revert in case of DB errors.\"\"\""},{"line_number":332,"context_line":"        try:"},{"line_number":333,"context_line":"            # NOTE(armax): saving the auto allocated topology in a"},{"line_number":334,"context_line":"            # separate transaction will keep the Neutron DB and the"},{"line_number":335,"context_line":"            # Neutron plugin backend in sync, thus allowing for a"},{"line_number":336,"context_line":"            # more bullet proof cleanup. Any other error will have"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a6eadb0_5bf43c86","line":333,"in_reply_to":"3a71b18c_5a693cbd","updated":"2016-12-14 09:07:42.000000000","message":"Or should we add the extra transaction and stay this comment valid?","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"e4a9b4f1b9e369c0dd34b79b52f0d58bc1ff5ec8","unresolved":false,"context_lines":[{"line_number":335,"context_line":"            # Neutron plugin backend in sync, thus allowing for a"},{"line_number":336,"context_line":"            # more bullet proof cleanup. Any other error will have"},{"line_number":337,"context_line":"            # to bubble up."},{"line_number":338,"context_line":"            auto_allocate_obj.AutoAllocatedTopology(context,"},{"line_number":339,"context_line":"                                        project_id\u003dtenant_id,"},{"line_number":340,"context_line":"                                        network_id\u003dnetwork_id,"},{"line_number":341,"context_line":"                                        router_id\u003drouter_id).create()"},{"line_number":342,"context_line":"            self.core_plugin.update_network("},{"line_number":343,"context_line":"                context, network_id,"},{"line_number":344,"context_line":"                {\u0027network\u0027: {\u0027admin_state_up\u0027: True}})"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a74a57a_492a032e","line":341,"range":{"start_line":338,"start_character":12,"end_line":341,"end_character":69},"updated":"2016-11-29 22:44:51.000000000","message":"nit: This format is valid but not the best one.  It\u0027d be better to have something like this:\n\n            auto_allocate_obj.AutoAllocatedTopology(\n                context, project_id\u003dtenant_id, network_id\u003dnetwork_id,\n                router_id\u003drouter_id).create()","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"cdf20efc4791810dd9198ca751450dea0ef9cd24","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                                        project_id\u003dtenant_id,"},{"line_number":340,"context_line":"                                        network_id\u003dnetwork_id,"},{"line_number":341,"context_line":"                                        router_id\u003drouter_id).create()"},{"line_number":342,"context_line":"            self.core_plugin.update_network("},{"line_number":343,"context_line":"                context, network_id,"},{"line_number":344,"context_line":"                {\u0027network\u0027: {\u0027admin_state_up\u0027: True}})"},{"line_number":345,"context_line":"        except obj_exc.NeutronDbObjectDuplicateEntry:"},{"line_number":346,"context_line":"            LOG.debug(\"Multiple auto-allocated networks detected for \""},{"line_number":347,"context_line":"                      \"tenant %s. Attempting clean up for network %s \""}],"source_content_type":"text/x-python","patch_set":37,"id":"3a71b18c_d45c461b","line":344,"range":{"start_line":342,"start_character":12,"end_line":344,"end_character":54},"updated":"2016-12-12 13:24:57.000000000","message":"This may still raise DBDuplicateEntry exception, right?","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"1a1ca0014a2ee39778f8e6f96be6c438ebb7b518","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                                        project_id\u003dtenant_id,"},{"line_number":340,"context_line":"                                        network_id\u003dnetwork_id,"},{"line_number":341,"context_line":"                                        router_id\u003drouter_id).create()"},{"line_number":342,"context_line":"            self.core_plugin.update_network("},{"line_number":343,"context_line":"                context, network_id,"},{"line_number":344,"context_line":"                {\u0027network\u0027: {\u0027admin_state_up\u0027: True}})"},{"line_number":345,"context_line":"        except obj_exc.NeutronDbObjectDuplicateEntry:"},{"line_number":346,"context_line":"            LOG.debug(\"Multiple auto-allocated networks detected for \""},{"line_number":347,"context_line":"                      \"tenant %s. Attempting clean up for network %s \""}],"source_content_type":"text/x-python","patch_set":37,"id":"1a6eadb0_dbf12c6c","line":344,"range":{"start_line":342,"start_character":12,"end_line":344,"end_character":54},"in_reply_to":"1a6eadb0_c52c3cae","updated":"2016-12-14 09:07:42.000000000","message":"I agree with Mohit.","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"6b726165b16efbfa9dacf1f7b0a3d5ebbe908d15","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                                        project_id\u003dtenant_id,"},{"line_number":340,"context_line":"                                        network_id\u003dnetwork_id,"},{"line_number":341,"context_line":"                                        router_id\u003drouter_id).create()"},{"line_number":342,"context_line":"            self.core_plugin.update_network("},{"line_number":343,"context_line":"                context, network_id,"},{"line_number":344,"context_line":"                {\u0027network\u0027: {\u0027admin_state_up\u0027: True}})"},{"line_number":345,"context_line":"        except obj_exc.NeutronDbObjectDuplicateEntry:"},{"line_number":346,"context_line":"            LOG.debug(\"Multiple auto-allocated networks detected for \""},{"line_number":347,"context_line":"                      \"tenant %s. Attempting clean up for network %s \""}],"source_content_type":"text/x-python","patch_set":37,"id":"1a6eadb0_1090c7eb","line":344,"range":{"start_line":342,"start_character":12,"end_line":344,"end_character":54},"in_reply_to":"1a6eadb0_dbf12c6c","updated":"2016-12-14 17:07:03.000000000","message":"ok I missed the fact that we have retry there.","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"554112b5e9293199303cb9a20b8147df73cdcaaf","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                                        project_id\u003dtenant_id,"},{"line_number":340,"context_line":"                                        network_id\u003dnetwork_id,"},{"line_number":341,"context_line":"                                        router_id\u003drouter_id).create()"},{"line_number":342,"context_line":"            self.core_plugin.update_network("},{"line_number":343,"context_line":"                context, network_id,"},{"line_number":344,"context_line":"                {\u0027network\u0027: {\u0027admin_state_up\u0027: True}})"},{"line_number":345,"context_line":"        except obj_exc.NeutronDbObjectDuplicateEntry:"},{"line_number":346,"context_line":"            LOG.debug(\"Multiple auto-allocated networks detected for \""},{"line_number":347,"context_line":"                      \"tenant %s. Attempting clean up for network %s \""}],"source_content_type":"text/x-python","patch_set":37,"id":"3a71b18c_5a421c3f","line":344,"range":{"start_line":342,"start_character":12,"end_line":344,"end_character":54},"in_reply_to":"3a71b18c_17addd83","updated":"2016-12-12 14:58:49.000000000","message":"Anywhere the plugin calls to sqlalchemy and does not catch it. Or do we know that the call is guarded against that to happen that we feel safe to not catch the exception here anymore?","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"2272b3922921e1cd1e7cb71b906687afbc03b19b","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                                        project_id\u003dtenant_id,"},{"line_number":340,"context_line":"                                        network_id\u003dnetwork_id,"},{"line_number":341,"context_line":"                                        router_id\u003drouter_id).create()"},{"line_number":342,"context_line":"            self.core_plugin.update_network("},{"line_number":343,"context_line":"                context, network_id,"},{"line_number":344,"context_line":"                {\u0027network\u0027: {\u0027admin_state_up\u0027: True}})"},{"line_number":345,"context_line":"        except obj_exc.NeutronDbObjectDuplicateEntry:"},{"line_number":346,"context_line":"            LOG.debug(\"Multiple auto-allocated networks detected for \""},{"line_number":347,"context_line":"                      \"tenant %s. Attempting clean up for network %s \""}],"source_content_type":"text/x-python","patch_set":37,"id":"1a6eadb0_c52c3cae","line":344,"range":{"start_line":342,"start_character":12,"end_line":344,"end_character":54},"in_reply_to":"3a71b18c_5a421c3f","updated":"2016-12-12 21:19:45.000000000","message":"My understanding is DBDuplicateEntry here was to handle the case for Duplication Exception  when Auto Allocated Topology already exists. For the Exceptions related to update_network() will be raised and handled by the retry logic if the exception is retriable. Correct me if I am missing sth or didnt understand ur point ?","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"0d06c0e671ab65830d5e4a972a6fa9c8884384d6","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                                        project_id\u003dtenant_id,"},{"line_number":340,"context_line":"                                        network_id\u003dnetwork_id,"},{"line_number":341,"context_line":"                                        router_id\u003drouter_id).create()"},{"line_number":342,"context_line":"            self.core_plugin.update_network("},{"line_number":343,"context_line":"                context, network_id,"},{"line_number":344,"context_line":"                {\u0027network\u0027: {\u0027admin_state_up\u0027: True}})"},{"line_number":345,"context_line":"        except obj_exc.NeutronDbObjectDuplicateEntry:"},{"line_number":346,"context_line":"            LOG.debug(\"Multiple auto-allocated networks detected for \""},{"line_number":347,"context_line":"                      \"tenant %s. Attempting clean up for network %s \""}],"source_content_type":"text/x-python","patch_set":37,"id":"3a71b18c_17addd83","line":344,"range":{"start_line":342,"start_character":12,"end_line":344,"end_character":54},"in_reply_to":"3a71b18c_d45c461b","updated":"2016-12-12 14:46:55.000000000","message":"Where exactly?","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"}],"neutron/tests/unit/objects/test_auto_allocate.py":[{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"cb030778f1450df60d9781d241f376282c8fa421","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    _test_class \u003d auto_allocate.AutoAllocatedTopology"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class AutoAllocateTopologyDbObjectTestCase(obj_test_base._BaseObjectTestCase,"},{"line_number":27,"context_line":"                                   testlib_api.SqlTestCase):"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    _test_class \u003d auto_allocate.AutoAllocatedTopology"}],"source_content_type":"text/x-python","patch_set":26,"id":"5a8bc5a2_81a17f48","line":26,"range":{"start_line":26,"start_character":43,"end_line":26,"end_character":76},"updated":"2016-09-27 09:18:36.000000000","message":"This should be the obj_test_base.BaseDbObjectTestCase, as well as you should add setUp(), where you will create the network and router DB entries.","commit_id":"ec0ce28e67c4d4e81556ef77763ca420af020147"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"6edf90e609ef56e927f96ea1fe840116a863798b","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    _test_class \u003d auto_allocate.AutoAllocatedTopology"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class AutoAllocateTopologyDbObjectTestCase(obj_test_base._BaseObjectTestCase,"},{"line_number":27,"context_line":"                                   testlib_api.SqlTestCase):"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    _test_class \u003d auto_allocate.AutoAllocatedTopology"}],"source_content_type":"text/x-python","patch_set":26,"id":"5a8bc5a2_86f16b98","line":26,"range":{"start_line":26,"start_character":43,"end_line":26,"end_character":76},"in_reply_to":"5a8bc5a2_81a17f48","updated":"2016-09-27 20:35:42.000000000","message":"Fixed","commit_id":"ec0ce28e67c4d4e81556ef77763ca420af020147"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"23292c3113d95680ec08edc155a66296a747dcbd","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class AutoAllocateTopologyDbObjectTestCase(obj_test_base.BaseDbObjectTestCase,"},{"line_number":29,"context_line":"                                   testlib_api.SqlTestCase):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    _test_class \u003d auto_allocate.AutoAllocatedTopology"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"fa6399be_ff2ff79e","line":29,"range":{"start_line":29,"start_character":35,"end_line":29,"end_character":58},"updated":"2016-10-11 13:28:53.000000000","message":"wrong identation","commit_id":"73ae4f4660c00020cd93fd27a9078be623c42be9"},{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"0cf21564288e4919b8346f2e843312ae65b3f6db","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class AutoAllocateTopologyDbObjectTestCase(obj_test_base.BaseDbObjectTestCase,"},{"line_number":29,"context_line":"                                   testlib_api.SqlTestCase):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    _test_class \u003d auto_allocate.AutoAllocatedTopology"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"fa6399be_cdba54e1","line":29,"range":{"start_line":29,"start_character":35,"end_line":29,"end_character":58},"in_reply_to":"fa6399be_ff2ff79e","updated":"2016-10-12 14:22:04.000000000","message":"Done","commit_id":"73ae4f4660c00020cd93fd27a9078be623c42be9"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"4d8181bfe1d1bef1082410244e225e428e5961b6","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class AutoAllocateTopologyDbObjectTestCase(obj_test_base.BaseDbObjectTestCase,"},{"line_number":29,"context_line":"        testlib_api.SqlTestCase):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    _test_class \u003d auto_allocate.AutoAllocatedTopology"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"9a629dbe_6c18fa75","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":8},"updated":"2016-11-11 01:33:38.000000000","message":"nit: wrong indentation","commit_id":"120d465b2eddf12ca8da60e9fcd2070a8a5ea97a"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"a79e9ecdf32be8c5ebc055f0560bc39fbcf2b8e0","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class AutoAllocateTopologyDbObjectTestCase(obj_test_base.BaseDbObjectTestCase,"},{"line_number":29,"context_line":"        testlib_api.SqlTestCase):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    _test_class \u003d auto_allocate.AutoAllocatedTopology"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"5a74a57a_90ba60e0","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":8},"in_reply_to":"7a77a97e_f17ec368","updated":"2016-11-23 21:06:37.000000000","message":"Fixed","commit_id":"120d465b2eddf12ca8da60e9fcd2070a8a5ea97a"},{"author":{"_account_id":20246,"name":"Aradhana Singh","email":"aradhanamailbox@gmail.com","username":"asingh"},"change_message_id":"7e5efc27b9e4d82d1233ff8467bad4ff5e39013c","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class AutoAllocateTopologyDbObjectTestCase(obj_test_base.BaseDbObjectTestCase,"},{"line_number":29,"context_line":"        testlib_api.SqlTestCase):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    _test_class \u003d auto_allocate.AutoAllocatedTopology"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"7a77a97e_f17ec368","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":8},"in_reply_to":"9a629dbe_6c18fa75","updated":"2016-11-17 17:09:36.000000000","message":"+1","commit_id":"120d465b2eddf12ca8da60e9fcd2070a8a5ea97a"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"cdf20efc4791810dd9198ca751450dea0ef9cd24","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        super(AutoAllocateTopologyDbObjectTestCase, self).setUp()"},{"line_number":35,"context_line":"        self._create_test_network()"},{"line_number":36,"context_line":"        self._create_test_router()"},{"line_number":37,"context_line":"        for objs in itertools.chain("},{"line_number":38,"context_line":"                self.db_objs, self.obj_fields, self.objs):"},{"line_number":39,"context_line":"            objs[\u0027network_id\u0027] \u003d self._network[\u0027id\u0027]"},{"line_number":40,"context_line":"            objs[\u0027router_id\u0027] \u003d self._router[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":37,"id":"3a71b18c_34a2dafc","line":37,"range":{"start_line":37,"start_character":20,"end_line":37,"end_character":36},"updated":"2016-12-12 13:24:57.000000000","message":"use new update_obj_fields method from the base test class.","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"94b6d52dde4e19a5675c434b8c76913c38e7abb7","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        super(AutoAllocateTopologyDbObjectTestCase, self).setUp()"},{"line_number":35,"context_line":"        self._create_test_network()"},{"line_number":36,"context_line":"        self._create_test_router()"},{"line_number":37,"context_line":"        for objs in itertools.chain("},{"line_number":38,"context_line":"                self.db_objs, self.obj_fields, self.objs):"},{"line_number":39,"context_line":"            objs[\u0027network_id\u0027] \u003d self._network[\u0027id\u0027]"},{"line_number":40,"context_line":"            objs[\u0027router_id\u0027] \u003d self._router[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a6eadb0_a8828cc6","line":37,"range":{"start_line":37,"start_character":20,"end_line":37,"end_character":36},"in_reply_to":"1a6eadb0_fdffd2fe","updated":"2016-12-19 20:21:32.000000000","message":"Fixed.","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"a9edfbdf7ab4797e9a4a7d8612fe2c6e992c30de","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        super(AutoAllocateTopologyDbObjectTestCase, self).setUp()"},{"line_number":35,"context_line":"        self._create_test_network()"},{"line_number":36,"context_line":"        self._create_test_router()"},{"line_number":37,"context_line":"        for objs in itertools.chain("},{"line_number":38,"context_line":"                self.db_objs, self.obj_fields, self.objs):"},{"line_number":39,"context_line":"            objs[\u0027network_id\u0027] \u003d self._network[\u0027id\u0027]"},{"line_number":40,"context_line":"            objs[\u0027router_id\u0027] \u003d self._router[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a6eadb0_fdffd2fe","line":37,"range":{"start_line":37,"start_character":20,"end_line":37,"end_character":36},"in_reply_to":"3a71b18c_34a2dafc","updated":"2016-12-13 21:46:19.000000000","message":"will fix. Thanks","commit_id":"31f5e96560362de4e53715bcfe8e3b837d87a4c1"}]}
