)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b11bdfdc75c721f1849baf905061200643bcb8ad","unresolved":false,"context_lines":[{"line_number":7,"context_line":"[WIP] Add is_default to Network"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I465ea140910af50d62ab281d26357861cf96952b"},{"line_number":10,"context_line":"Closes-Bug: #1690439"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5f4e5783_ddeb5375","line":10,"updated":"2017-10-16 23:04:37.000000000","message":"As this introduces an API change, we\u0027ll probably need a release note. Also, because of the API change, we may want to consider client-side changes too, as well as documentation, so this is most likely a Partial- fix.","commit_id":"7f9ad9f9203a5340bd75cbf6ce0aba84116255bf"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e554677beb28237fb386921f7256e073b673fa79","unresolved":false,"context_lines":[{"line_number":7,"context_line":"[WIP] Add is_default to Network"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I465ea140910af50d62ab281d26357861cf96952b"},{"line_number":10,"context_line":"Closes-Bug: #1690439"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f4b6375_fe6aa517","line":10,"in_reply_to":"5f4e5783_ddeb5375","updated":"2017-10-24 19:00:06.000000000","message":"Done","commit_id":"7f9ad9f9203a5340bd75cbf6ce0aba84116255bf"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9e81b2dfe59f8d8bf4f8acb94141e0d6b3a4423f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add is_default to Network"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduce an attribute \u0027is_default\u0027 to network. This attribute indicates"},{"line_number":10,"context_line":"if a network is a default network. If a network is created or updated"},{"line_number":11,"context_line":"as default, neutron will ensure the following:"},{"line_number":12,"context_line":"* At most one default external network exists globally."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3f4b6375_f34e4c6d","line":9,"updated":"2017-10-25 08:34:59.000000000","message":"@garyk: This bug: https://bugs.launchpad.net/neutron/+bug/1690439 is rfe-approved already so do You think that it\u0027s still specs necessary?","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d5b87708c42b1a59260f63d8391040e0f8d2d487","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add is_default to Network"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduce an attribute \u0027is_default\u0027 to network. This attribute indicates"},{"line_number":10,"context_line":"if a network is a default network. If a network is created or updated"},{"line_number":11,"context_line":"as default, neutron will ensure the following:"},{"line_number":12,"context_line":"* At most one default external network exists globally."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3f4b6375_cd1a93ca","line":9,"range":{"start_line":9,"start_character":24,"end_line":9,"end_character":34},"updated":"2017-10-25 07:36:39.000000000","message":"why do we need this. can you please provide a use case?\nI think that this requires a spec.","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"2bbdaa4733ba92c24776627cc0afd44eca458998","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add is_default to Network"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduce an attribute \u0027is_default\u0027 to network. This attribute indicates"},{"line_number":10,"context_line":"if a network is a default network. If a network is created or updated"},{"line_number":11,"context_line":"as default, neutron will ensure the following:"},{"line_number":12,"context_line":"* At most one default external network exists globally."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"1f485f77_0e3fa187","line":9,"range":{"start_line":9,"start_character":24,"end_line":9,"end_character":34},"in_reply_to":"3f4b6375_cd1a93ca","updated":"2017-11-16 00:16:20.000000000","message":"Yes, the bug was approved so spec in neutron seems not mandatory. I am writing a spec in Nova though: https://review.openstack.org/#/c/520247/ .","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4f02fd5ff0b1e8f1eab2bfa2ff1b80dbcbeccee5","unresolved":false,"context_lines":[{"line_number":14,"context_line":"* At most one default network exists per-tenant."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch introduces an \u0027is_default\u0027 column in networks table. Note that"},{"line_number":17,"context_line":"there is another \u0027is_default\u0027 attribute existed in the externalnetworks"},{"line_number":18,"context_line":"table. For now, we allow both attributes co-existed to satisfy the"},{"line_number":19,"context_line":"requirements of online db migration. The following strategy is proposed:"},{"line_number":20,"context_line":"* If a network is created, the \u0027is_default\u0027 column of both networks and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3f4b6375_24b567ce","line":17,"range":{"start_line":17,"start_character":40,"end_line":17,"end_character":48},"updated":"2017-10-27 23:47:15.000000000","message":"remove this. doesn\u0027t make sense","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"c1c68bffe6794f7be9a32336d5b9dcce380a28c2","unresolved":false,"context_lines":[{"line_number":14,"context_line":"* At most one default network exists per-tenant."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch introduces an \u0027is_default\u0027 column in networks table. Note that"},{"line_number":17,"context_line":"there is another \u0027is_default\u0027 attribute existed in the externalnetworks"},{"line_number":18,"context_line":"table. For now, we allow both attributes co-existed to satisfy the"},{"line_number":19,"context_line":"requirements of online db migration. The following strategy is proposed:"},{"line_number":20,"context_line":"* If a network is created, the \u0027is_default\u0027 column of both networks and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"1f485f77_5dc1f22d","line":17,"range":{"start_line":17,"start_character":40,"end_line":17,"end_character":48},"in_reply_to":"3f4b6375_24b567ce","updated":"2017-11-15 00:08:59.000000000","message":"Done","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4f02fd5ff0b1e8f1eab2bfa2ff1b80dbcbeccee5","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch introduces an \u0027is_default\u0027 column in networks table. Note that"},{"line_number":17,"context_line":"there is another \u0027is_default\u0027 attribute existed in the externalnetworks"},{"line_number":18,"context_line":"table. For now, we allow both attributes co-existed to satisfy the"},{"line_number":19,"context_line":"requirements of online db migration. The following strategy is proposed:"},{"line_number":20,"context_line":"* If a network is created, the \u0027is_default\u0027 column of both networks and"},{"line_number":21,"context_line":"  externalnetworks tables will be populated."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3f4b6375_c4c33338","line":18,"range":{"start_line":18,"start_character":41,"end_line":18,"end_character":51},"updated":"2017-10-27 23:47:15.000000000","message":"co-exist","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"c1c68bffe6794f7be9a32336d5b9dcce380a28c2","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch introduces an \u0027is_default\u0027 column in networks table. Note that"},{"line_number":17,"context_line":"there is another \u0027is_default\u0027 attribute existed in the externalnetworks"},{"line_number":18,"context_line":"table. For now, we allow both attributes co-existed to satisfy the"},{"line_number":19,"context_line":"requirements of online db migration. The following strategy is proposed:"},{"line_number":20,"context_line":"* If a network is created, the \u0027is_default\u0027 column of both networks and"},{"line_number":21,"context_line":"  externalnetworks tables will be populated."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"1f485f77_1de13ad1","line":18,"range":{"start_line":18,"start_character":41,"end_line":18,"end_character":51},"in_reply_to":"3f4b6375_c4c33338","updated":"2017-11-15 00:08:59.000000000","message":"Done","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4f02fd5ff0b1e8f1eab2bfa2ff1b80dbcbeccee5","unresolved":false,"context_lines":[{"line_number":25,"context_line":"  is external, otherwise, read from networks table."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The goal is to allow both older and newer version of neutron components"},{"line_number":28,"context_line":"co-existed. Once we reach a point in time that contract migration is"},{"line_number":29,"context_line":"allowed for Queens, another patch should follow to drop the \u0027is_default\u0027"},{"line_number":30,"context_line":"column from externalnetworks table."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3f4b6375_84dbfb1f","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":10},"updated":"2017-10-27 23:47:15.000000000","message":"co-exist","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"c1c68bffe6794f7be9a32336d5b9dcce380a28c2","unresolved":false,"context_lines":[{"line_number":25,"context_line":"  is external, otherwise, read from networks table."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The goal is to allow both older and newer version of neutron components"},{"line_number":28,"context_line":"co-existed. Once we reach a point in time that contract migration is"},{"line_number":29,"context_line":"allowed for Queens, another patch should follow to drop the \u0027is_default\u0027"},{"line_number":30,"context_line":"column from externalnetworks table."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"1f485f77_fde77ee3","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":10},"in_reply_to":"3f4b6375_84dbfb1f","updated":"2017-11-15 00:08:59.000000000","message":"Done","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9e81b2dfe59f8d8bf4f8acb94141e0d6b3a4423f","unresolved":false,"context_lines":[{"line_number":27,"context_line":"The goal is to allow both older and newer version of neutron components"},{"line_number":28,"context_line":"co-existed. Once we reach a point in time that contract migration is"},{"line_number":29,"context_line":"allowed for Queens, another patch should follow to drop the \u0027is_default\u0027"},{"line_number":30,"context_line":"column from externalnetworks table."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Change-Id: I465ea140910af50d62ab281d26357861cf96952b"},{"line_number":33,"context_line":"Partial-Bug: #1690439"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3f4b6375_d3535016","line":30,"updated":"2017-10-25 08:34:59.000000000","message":"shouldn\u0027t You add here APIImpact flag? I\u0027m not sure exactly what is current policy for that","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"c1c68bffe6794f7be9a32336d5b9dcce380a28c2","unresolved":false,"context_lines":[{"line_number":27,"context_line":"The goal is to allow both older and newer version of neutron components"},{"line_number":28,"context_line":"co-existed. Once we reach a point in time that contract migration is"},{"line_number":29,"context_line":"allowed for Queens, another patch should follow to drop the \u0027is_default\u0027"},{"line_number":30,"context_line":"column from externalnetworks table."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Change-Id: I465ea140910af50d62ab281d26357861cf96952b"},{"line_number":33,"context_line":"Partial-Bug: #1690439"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"1f485f77_ddea82aa","line":30,"in_reply_to":"3f4b6375_d3535016","updated":"2017-11-15 00:08:59.000000000","message":"Done","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":13,"context_line":"* At most one default shared network exists globally."},{"line_number":14,"context_line":"* At most one default non-shared network exists per-tenant."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch introduces an \u0027is_default\u0027 column in networks table. Note that"},{"line_number":17,"context_line":"there is another \u0027is_default\u0027 attribute in the externalnetworks"},{"line_number":18,"context_line":"table. For now, we allow both attributes co-exist to satisfy the"},{"line_number":19,"context_line":"requirements of online db migration. Once we reach a point in time that"},{"line_number":20,"context_line":"contract migration is allowed for Queens, another patch should follow to"},{"line_number":21,"context_line":"drop the \u0027is_default\u0027 column from externalnetworks table."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"APIImpact"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"ff82abbf_4153be39","line":21,"range":{"start_line":16,"start_character":0,"end_line":21,"end_character":57},"updated":"2017-11-28 22:53:53.000000000","message":"this description is out of date currently, no?","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":13,"context_line":"* At most one default shared network exists globally."},{"line_number":14,"context_line":"* At most one default non-shared network exists per-tenant."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch introduces an \u0027is_default\u0027 column in networks table. Note that"},{"line_number":17,"context_line":"there is another \u0027is_default\u0027 attribute in the externalnetworks"},{"line_number":18,"context_line":"table. For now, we allow both attributes co-exist to satisfy the"},{"line_number":19,"context_line":"requirements of online db migration. Once we reach a point in time that"},{"line_number":20,"context_line":"contract migration is allowed for Queens, another patch should follow to"},{"line_number":21,"context_line":"drop the \u0027is_default\u0027 column from externalnetworks table."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"APIImpact"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"df87a7cf_ea60c9d1","line":21,"range":{"start_line":16,"start_character":0,"end_line":21,"end_character":57},"in_reply_to":"ff82abbf_4153be39","updated":"2017-12-08 19:12:00.000000000","message":"Done. The description is removed.","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"}],"devstack/plugin.sh":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"683af3c26f244c202df5fc8ee8086811561d638d","unresolved":false,"context_lines":[{"line_number":30,"context_line":"            fi"},{"line_number":31,"context_line":"            ;;"},{"line_number":32,"context_line":"        post-config)"},{"line_number":33,"context_line":"            configure_default_network_extension"},{"line_number":34,"context_line":"            if is_service_enabled q-flavors neutron-flavors; then"},{"line_number":35,"context_line":"                configure_flavors"},{"line_number":36,"context_line":"            fi"}],"source_content_type":"text/x-sh","patch_set":45,"id":"bf659307_3ec68a69","line":33,"updated":"2018-03-26 10:57:50.000000000","message":"shouldn\u0027t You allow to disable it by setting service as disabled as it is for other things?","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"1ad4a49e35cbe535ab376b6313f3802d9b83d676","unresolved":false,"context_lines":[{"line_number":30,"context_line":"            fi"},{"line_number":31,"context_line":"            ;;"},{"line_number":32,"context_line":"        post-config)"},{"line_number":33,"context_line":"            configure_default_network_extension"},{"line_number":34,"context_line":"            if is_service_enabled q-flavors neutron-flavors; then"},{"line_number":35,"context_line":"                configure_flavors"},{"line_number":36,"context_line":"            fi"}],"source_content_type":"text/x-sh","patch_set":45,"id":"bf659307_0898fabd","line":33,"in_reply_to":"bf659307_3ec68a69","updated":"2018-03-27 19:24:53.000000000","message":"Done","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"}],"neutron/api/v2/attributes.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"c9accaad3587fc11a8ea837f4d856610d8ebe3fd","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                          \u0027type:string\u0027: db_const.PROJECT_ID_FIELD_SIZE},"},{"line_number":77,"context_line":"                      \u0027required_by_policy\u0027: True,"},{"line_number":78,"context_line":"                      \u0027is_visible\u0027: True},"},{"line_number":79,"context_line":"        \u0027is_default\u0027: {\u0027allow_post\u0027: True,"},{"line_number":80,"context_line":"                       \u0027allow_put\u0027: True,"},{"line_number":81,"context_line":"                       \u0027default\u0027: False,"},{"line_number":82,"context_line":"                       \u0027convert_to\u0027: lib_converters.convert_to_boolean,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f4e5783_bddd37e1","line":79,"updated":"2017-10-16 23:03:22.000000000","message":"this should be handled in [1] as well.\n\n[1] https://github.com/openstack/neutron-lib/blob/master/neutron_lib/api/definitions/network.py","commit_id":"7f9ad9f9203a5340bd75cbf6ce0aba84116255bf"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e554677beb28237fb386921f7256e073b673fa79","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                          \u0027type:string\u0027: db_const.PROJECT_ID_FIELD_SIZE},"},{"line_number":77,"context_line":"                      \u0027required_by_policy\u0027: True,"},{"line_number":78,"context_line":"                      \u0027is_visible\u0027: True},"},{"line_number":79,"context_line":"        \u0027is_default\u0027: {\u0027allow_post\u0027: True,"},{"line_number":80,"context_line":"                       \u0027allow_put\u0027: True,"},{"line_number":81,"context_line":"                       \u0027default\u0027: False,"},{"line_number":82,"context_line":"                       \u0027convert_to\u0027: lib_converters.convert_to_boolean,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_1e57c15a","line":79,"in_reply_to":"5f4e5783_bddd37e1","updated":"2017-10-24 19:00:06.000000000","message":"Proposed a patch there: https://review.openstack.org/#/c/514110/","commit_id":"7f9ad9f9203a5340bd75cbf6ce0aba84116255bf"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9e81b2dfe59f8d8bf4f8acb94141e0d6b3a4423f","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                       \u0027convert_to\u0027: lib_converters.convert_to_boolean,"},{"line_number":83,"context_line":"                       \u0027is_visible\u0027: True,"},{"line_number":84,"context_line":"                       \u0027required_by_policy\u0027: True,"},{"line_number":85,"context_line":"                       \u0027enforce_policy\u0027: True},"},{"line_number":86,"context_line":"        SHARED: {\u0027allow_post\u0027: True,"},{"line_number":87,"context_line":"                 \u0027allow_put\u0027: True,"},{"line_number":88,"context_line":"                 \u0027default\u0027: False,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f4b6375_1330c8e7","line":85,"updated":"2017-10-25 08:34:59.000000000","message":"You shoudn\u0027t add it to default attributes but propose new API extension for it IMHO. Please check how e.g. qos-default is done: https://github.com/openstack/neutron/blob/master/neutron/extensions/qos_default.py","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"4e90f421d8b960f08a97e09746ce358c80e9b8b7","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                       \u0027convert_to\u0027: lib_converters.convert_to_boolean,"},{"line_number":83,"context_line":"                       \u0027is_visible\u0027: True,"},{"line_number":84,"context_line":"                       \u0027required_by_policy\u0027: True,"},{"line_number":85,"context_line":"                       \u0027enforce_policy\u0027: True},"},{"line_number":86,"context_line":"        SHARED: {\u0027allow_post\u0027: True,"},{"line_number":87,"context_line":"                 \u0027allow_put\u0027: True,"},{"line_number":88,"context_line":"                 \u0027default\u0027: False,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f4b6375_526621c3","line":85,"in_reply_to":"3f4b6375_1330c8e7","updated":"2017-10-26 01:29:25.000000000","message":"Agree. Because we have many neutron stadium projects and they might not support the feature so we must not add drastic change into default model. We should add new extension.","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"c1c68bffe6794f7be9a32336d5b9dcce380a28c2","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                       \u0027convert_to\u0027: lib_converters.convert_to_boolean,"},{"line_number":83,"context_line":"                       \u0027is_visible\u0027: True,"},{"line_number":84,"context_line":"                       \u0027required_by_policy\u0027: True,"},{"line_number":85,"context_line":"                       \u0027enforce_policy\u0027: True},"},{"line_number":86,"context_line":"        SHARED: {\u0027allow_post\u0027: True,"},{"line_number":87,"context_line":"                 \u0027allow_put\u0027: True,"},{"line_number":88,"context_line":"                 \u0027default\u0027: False,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f485f77_9dcc0a62","line":85,"in_reply_to":"3f4b6375_1330c8e7","updated":"2017-11-15 00:08:59.000000000","message":"Done","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"}],"neutron/common/exceptions.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":358,"context_line":"    message \u003d _(\"A default network already exists in project: %(project_id)s.\")"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    def __init__(self, **kwargs):"},{"line_number":361,"context_line":"        if kwargs[\u0027project_id\u0027] \u003d\u003d \u0027*\u0027:"},{"line_number":362,"context_line":"            self.message \u003d _(\"A default network already exists globally.\")"},{"line_number":363,"context_line":"        super(DefaultNetworkExists, self).__init__(**kwargs)"},{"line_number":364,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_e133f212","line":361,"range":{"start_line":361,"start_character":35,"end_line":361,"end_character":38},"updated":"2017-11-28 22:53:53.000000000","message":"IMHO it should be constant defined somewhere","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":358,"context_line":"    message \u003d _(\"A default network already exists in project: %(project_id)s.\")"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    def __init__(self, **kwargs):"},{"line_number":361,"context_line":"        if kwargs[\u0027project_id\u0027] \u003d\u003d \u0027*\u0027:"},{"line_number":362,"context_line":"            self.message \u003d _(\"A default network already exists globally.\")"},{"line_number":363,"context_line":"        super(DefaultNetworkExists, self).__init__(**kwargs)"},{"line_number":364,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_4a68d5b7","line":361,"range":{"start_line":361,"start_character":35,"end_line":361,"end_character":38},"in_reply_to":"ff82abbf_e133f212","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"}],"neutron/db/db_base_plugin_common.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9e81b2dfe59f8d8bf4f8acb94141e0d6b3a4423f","unresolved":false,"context_lines":[{"line_number":268,"context_line":"               \u0027admin_state_up\u0027: network[\u0027admin_state_up\u0027],"},{"line_number":269,"context_line":"               \u0027mtu\u0027: network.get(\u0027mtu\u0027, n_const.DEFAULT_NETWORK_MTU),"},{"line_number":270,"context_line":"               \u0027status\u0027: network[\u0027status\u0027],"},{"line_number":271,"context_line":"               \u0027is_default\u0027: network[\u0027is_default\u0027],"},{"line_number":272,"context_line":"               \u0027subnets\u0027: [subnet[\u0027id\u0027]"},{"line_number":273,"context_line":"                           for subnet in network[\u0027subnets\u0027]]}"},{"line_number":274,"context_line":"        res[\u0027shared\u0027] \u003d self._is_network_shared(context, network.rbac_entries)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f4b6375_533ac0cb","line":271,"updated":"2017-10-25 08:34:59.000000000","message":"IMO if it will be moved to new API extension, You can\u0027t assume that it will be available always. Some plugins might not support it","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"c1c68bffe6794f7be9a32336d5b9dcce380a28c2","unresolved":false,"context_lines":[{"line_number":268,"context_line":"               \u0027admin_state_up\u0027: network[\u0027admin_state_up\u0027],"},{"line_number":269,"context_line":"               \u0027mtu\u0027: network.get(\u0027mtu\u0027, n_const.DEFAULT_NETWORK_MTU),"},{"line_number":270,"context_line":"               \u0027status\u0027: network[\u0027status\u0027],"},{"line_number":271,"context_line":"               \u0027is_default\u0027: network[\u0027is_default\u0027],"},{"line_number":272,"context_line":"               \u0027subnets\u0027: [subnet[\u0027id\u0027]"},{"line_number":273,"context_line":"                           for subnet in network[\u0027subnets\u0027]]}"},{"line_number":274,"context_line":"        res[\u0027shared\u0027] \u003d self._is_network_shared(context, network.rbac_entries)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f485f77_7ddb8e1a","line":271,"in_reply_to":"3f4b6375_533ac0cb","updated":"2017-11-15 00:08:59.000000000","message":"Done","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"}],"neutron/db/db_base_plugin_v2.py":[{"author":{"_account_id":20363,"name":"Adit Sarfaty","email":"asarfaty@vmware.com","username":"asarfaty"},"change_message_id":"7284df9bb1a4c1c8e955254e5e89cb7b02d99a08","unresolved":false,"context_lines":[{"line_number":403,"context_line":"            args \u003d {\u0027tenant_id\u0027: n[\u0027tenant_id\u0027],"},{"line_number":404,"context_line":"                    \u0027id\u0027: n.get(\u0027id\u0027) or uuidutils.generate_uuid(),"},{"line_number":405,"context_line":"                    \u0027name\u0027: n[\u0027name\u0027],"},{"line_number":406,"context_line":"                    \u0027is_default\u0027: n[\u0027is_default\u0027],"},{"line_number":407,"context_line":"                    \u0027mtu\u0027: n.get(\u0027mtu\u0027),"},{"line_number":408,"context_line":"                    \u0027admin_state_up\u0027: n[\u0027admin_state_up\u0027],"},{"line_number":409,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE),"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f4b6375_0dfd4bb0","line":406,"updated":"2017-10-25 07:20:04.000000000","message":"Maybe you can do n.get(\u0027is_default\u0027, False) here instead. This code breaks plugins unit tests until all the tests will add this attribute.","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"c1c68bffe6794f7be9a32336d5b9dcce380a28c2","unresolved":false,"context_lines":[{"line_number":403,"context_line":"            args \u003d {\u0027tenant_id\u0027: n[\u0027tenant_id\u0027],"},{"line_number":404,"context_line":"                    \u0027id\u0027: n.get(\u0027id\u0027) or uuidutils.generate_uuid(),"},{"line_number":405,"context_line":"                    \u0027name\u0027: n[\u0027name\u0027],"},{"line_number":406,"context_line":"                    \u0027is_default\u0027: n[\u0027is_default\u0027],"},{"line_number":407,"context_line":"                    \u0027mtu\u0027: n.get(\u0027mtu\u0027),"},{"line_number":408,"context_line":"                    \u0027admin_state_up\u0027: n[\u0027admin_state_up\u0027],"},{"line_number":409,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE),"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f485f77_3d075685","line":406,"in_reply_to":"3f4b6375_0dfd4bb0","updated":"2017-11-15 00:08:59.000000000","message":"Done","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":20363,"name":"Adit Sarfaty","email":"asarfaty@vmware.com","username":"asarfaty"},"change_message_id":"7284df9bb1a4c1c8e955254e5e89cb7b02d99a08","unresolved":false,"context_lines":[{"line_number":409,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE),"},{"line_number":410,"context_line":"                    \u0027description\u0027: n.get(\u0027description\u0027)}"},{"line_number":411,"context_line":"            network \u003d models_v2.Network(**args)"},{"line_number":412,"context_line":"            if n[\u0027is_default\u0027]:"},{"line_number":413,"context_line":"                self._check_default_network_exists(context, n, network)"},{"line_number":414,"context_line":"            if n[\u0027shared\u0027]:"},{"line_number":415,"context_line":"                entry \u003d rbac_db.NetworkRBAC("}],"source_content_type":"text/x-python","patch_set":11,"id":"3f4b6375_ad25175e","line":412,"updated":"2017-10-25 07:20:04.000000000","message":"same here","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"c1c68bffe6794f7be9a32336d5b9dcce380a28c2","unresolved":false,"context_lines":[{"line_number":409,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE),"},{"line_number":410,"context_line":"                    \u0027description\u0027: n.get(\u0027description\u0027)}"},{"line_number":411,"context_line":"            network \u003d models_v2.Network(**args)"},{"line_number":412,"context_line":"            if n[\u0027is_default\u0027]:"},{"line_number":413,"context_line":"                self._check_default_network_exists(context, n, network)"},{"line_number":414,"context_line":"            if n[\u0027shared\u0027]:"},{"line_number":415,"context_line":"                entry \u003d rbac_db.NetworkRBAC("}],"source_content_type":"text/x-python","patch_set":11,"id":"1f485f77_1d0a5a89","line":412,"in_reply_to":"3f4b6375_ad25175e","updated":"2017-11-15 00:08:59.000000000","message":"Done","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9e81b2dfe59f8d8bf4f8acb94141e0d6b3a4423f","unresolved":false,"context_lines":[{"line_number":424,"context_line":"        n \u003d network[\u0027network\u0027]"},{"line_number":425,"context_line":"        with db_api.context_manager.writer.using(context):"},{"line_number":426,"context_line":"            network \u003d self._get_network(context, id)"},{"line_number":427,"context_line":"            if n.get(\u0027is_default\u0027) or network[\u0027is_default\u0027]:"},{"line_number":428,"context_line":"                self._check_default_network_exists(context, n, network)"},{"line_number":429,"context_line":"            # validate \u0027shared\u0027 parameter"},{"line_number":430,"context_line":"            if \u0027shared\u0027 in n:"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f4b6375_b31fb459","line":427,"updated":"2017-10-25 08:34:59.000000000","message":"why it is possible that \"is_default\" can be key in \"network\" or in network[\u0027network\u0027]?","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"c1c68bffe6794f7be9a32336d5b9dcce380a28c2","unresolved":false,"context_lines":[{"line_number":424,"context_line":"        n \u003d network[\u0027network\u0027]"},{"line_number":425,"context_line":"        with db_api.context_manager.writer.using(context):"},{"line_number":426,"context_line":"            network \u003d self._get_network(context, id)"},{"line_number":427,"context_line":"            if n.get(\u0027is_default\u0027) or network[\u0027is_default\u0027]:"},{"line_number":428,"context_line":"                self._check_default_network_exists(context, n, network)"},{"line_number":429,"context_line":"            # validate \u0027shared\u0027 parameter"},{"line_number":430,"context_line":"            if \u0027shared\u0027 in n:"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f485f77_bd28e6e1","line":427,"in_reply_to":"3f4b6375_b31fb459","updated":"2017-11-15 00:08:59.000000000","message":"If I understand it correctly, network[\u0027network\u0027] is the diff that we are going to apply for update, and \"network\" is the existing record in DB. It is possible to have \"is_default\" in the old and new record.","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"471eac225fbff4f1869578b0f1b46c8435d38fad","unresolved":false,"context_lines":[{"line_number":295,"context_line":"            return"},{"line_number":296,"context_line":"        shared \u003d original.shared"},{"line_number":297,"context_line":"        if \u0027shared\u0027 in updated:"},{"line_number":298,"context_line":"            shared \u003d updated[\u0027shared\u0027]"},{"line_number":299,"context_line":"        self._check_default_network_exists(context, updated, original, shared)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def _validate_ipv6_attributes(self, subnet, cur_subnet):"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff82abbf_c43b1c9a","line":298,"updated":"2017-11-20 18:03:27.000000000","message":"You can do it in one line:\n\n    shared \u003d updated.get(\"shared\") or original.shared\n\nand it should be the same result IMHO","commit_id":"bca03229dc067c1ecabed272ac6ba019ca4640c4"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"6dce2c51928397d6dd615b0dbebc30ab192a1b6e","unresolved":false,"context_lines":[{"line_number":295,"context_line":"            return"},{"line_number":296,"context_line":"        shared \u003d original.shared"},{"line_number":297,"context_line":"        if \u0027shared\u0027 in updated:"},{"line_number":298,"context_line":"            shared \u003d updated[\u0027shared\u0027]"},{"line_number":299,"context_line":"        self._check_default_network_exists(context, updated, original, shared)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def _validate_ipv6_attributes(self, subnet, cur_subnet):"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff82abbf_f633bd60","line":298,"in_reply_to":"ff82abbf_c43b1c9a","updated":"2017-11-28 19:25:51.000000000","message":"Done","commit_id":"bca03229dc067c1ecabed272ac6ba019ca4640c4"}],"neutron/db/default_network_db.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            network_res[\u0027is_default\u0027] \u003d True"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _check_default_network_exists(self, context, net, shared):"},{"line_number":59,"context_line":"        \"\"\"Check if a default already exists.\"\"\""},{"line_number":60,"context_line":"        if shared:"},{"line_number":61,"context_line":"            target_tenant \u003d \u0027*\u0027"},{"line_number":62,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_812226b8","line":59,"range":{"start_line":59,"start_character":22,"end_line":59,"end_character":29},"updated":"2017-11-28 22:53:53.000000000","message":"default network","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            network_res[\u0027is_default\u0027] \u003d True"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _check_default_network_exists(self, context, net, shared):"},{"line_number":59,"context_line":"        \"\"\"Check if a default already exists.\"\"\""},{"line_number":60,"context_line":"        if shared:"},{"line_number":61,"context_line":"            target_tenant \u003d \u0027*\u0027"},{"line_number":62,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_2ab0f142","line":59,"range":{"start_line":59,"start_character":22,"end_line":59,"end_character":29},"in_reply_to":"ff82abbf_812226b8","updated":"2017-12-08 19:12:00.000000000","message":"This comment is removed.","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    def _check_default_network_exists(self, context, net, shared):"},{"line_number":59,"context_line":"        \"\"\"Check if a default already exists.\"\"\""},{"line_number":60,"context_line":"        if shared:"},{"line_number":61,"context_line":"            target_tenant \u003d \u0027*\u0027"},{"line_number":62,"context_line":"        else:"},{"line_number":63,"context_line":"            target_tenant \u003d net[\u0027project_id\u0027]"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_e11c5279","line":61,"range":{"start_line":61,"start_character":29,"end_line":61,"end_character":30},"updated":"2017-11-28 22:53:53.000000000","message":"IMHO it should be constant defined somewhere","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    def _check_default_network_exists(self, context, net, shared):"},{"line_number":59,"context_line":"        \"\"\"Check if a default already exists.\"\"\""},{"line_number":60,"context_line":"        if shared:"},{"line_number":61,"context_line":"            target_tenant \u003d \u0027*\u0027"},{"line_number":62,"context_line":"        else:"},{"line_number":63,"context_line":"            target_tenant \u003d net[\u0027project_id\u0027]"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_6aa279fe","line":61,"range":{"start_line":61,"start_character":29,"end_line":61,"end_character":30},"in_reply_to":"ff82abbf_e11c5279","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    def _validate_is_default_update(self, context, original, updated):"},{"line_number":72,"context_line":"        # The only case that needs to be validated is when \u0027is_default\u0027"},{"line_number":73,"context_line":"        # goes from False to True"},{"line_number":74,"context_line":"        if (updated[\u0027is_default\u0027] \u003d\u003d original[\u0027is_default\u0027] or"},{"line_number":75,"context_line":"            not updated[\u0027is_default\u0027]):"},{"line_number":76,"context_line":"            return"},{"line_number":77,"context_line":"        shared \u003d updated.get(\u0027shared\u0027) or original[\u0027shared\u0027]"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_0c340ddd","line":74,"updated":"2017-11-28 22:53:53.000000000","message":"are You sure that key \u0027is_default\u0027 will always exists in updated and original dict? Maybe You should use \"get()\" method instead?","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    def _validate_is_default_update(self, context, original, updated):"},{"line_number":72,"context_line":"        # The only case that needs to be validated is when \u0027is_default\u0027"},{"line_number":73,"context_line":"        # goes from False to True"},{"line_number":74,"context_line":"        if (updated[\u0027is_default\u0027] \u003d\u003d original[\u0027is_default\u0027] or"},{"line_number":75,"context_line":"            not updated[\u0027is_default\u0027]):"},{"line_number":76,"context_line":"            return"},{"line_number":77,"context_line":"        shared \u003d updated.get(\u0027shared\u0027) or original[\u0027shared\u0027]"}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_6af039fe","line":74,"in_reply_to":"ff82abbf_0c340ddd","updated":"2017-12-08 19:12:00.000000000","message":"This module was re-written.","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        if (updated[\u0027is_default\u0027] \u003d\u003d original[\u0027is_default\u0027] or"},{"line_number":75,"context_line":"            not updated[\u0027is_default\u0027]):"},{"line_number":76,"context_line":"            return"},{"line_number":77,"context_line":"        shared \u003d updated.get(\u0027shared\u0027) or original[\u0027shared\u0027]"},{"line_number":78,"context_line":"        self._check_default_network_exists(context, original, shared)"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_cc4f0569","line":77,"updated":"2017-11-28 22:53:53.000000000","message":"why You call get() on updated object but not on original?","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        if (updated[\u0027is_default\u0027] \u003d\u003d original[\u0027is_default\u0027] or"},{"line_number":75,"context_line":"            not updated[\u0027is_default\u0027]):"},{"line_number":76,"context_line":"            return"},{"line_number":77,"context_line":"        shared \u003d updated.get(\u0027shared\u0027) or original[\u0027shared\u0027]"},{"line_number":78,"context_line":"        self._check_default_network_exists(context, original, shared)"}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_2adeb16c","line":77,"in_reply_to":"ff82abbf_cc4f0569","updated":"2017-12-08 19:12:00.000000000","message":"Ditto","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"683af3c26f244c202df5fc8ee8086811561d638d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def _process_create_network_is_default(self, context, data, res):"},{"line_number":23,"context_line":"        if data.get(\u0027is_project_default\u0027):"},{"line_number":24,"context_line":"            self._create_default_net(context, res[\u0027id\u0027], res[\u0027project_id\u0027])"},{"line_number":25,"context_line":"        res[\u0027is_project_default\u0027] \u003d data[\u0027is_project_default\u0027]"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def _process_update_network_is_default(self, context, data, res):"},{"line_number":28,"context_line":"        if data[\u0027is_project_default\u0027]:"}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_f12cc39a","line":25,"updated":"2018-03-26 10:57:50.000000000","message":"what if \"data\" don\u0027t have \"is_project_default\" key? In L 23 You are unsure if it exists and You are getting it with get() method and here You are using [] operator which may fail if key will not exists.","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"1ad4a49e35cbe535ab376b6313f3802d9b83d676","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def _process_create_network_is_default(self, context, data, res):"},{"line_number":23,"context_line":"        if data.get(\u0027is_project_default\u0027):"},{"line_number":24,"context_line":"            self._create_default_net(context, res[\u0027id\u0027], res[\u0027project_id\u0027])"},{"line_number":25,"context_line":"        res[\u0027is_project_default\u0027] \u003d data[\u0027is_project_default\u0027]"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def _process_update_network_is_default(self, context, data, res):"},{"line_number":28,"context_line":"        if data[\u0027is_project_default\u0027]:"}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_28c13e81","line":25,"in_reply_to":"bf659307_f12cc39a","updated":"2018-03-27 19:24:53.000000000","message":"Actually, I am sure \"data\" will have the \"is_project_default\" key because it is guaranteed by caller https://review.openstack.org/#/c/511983/46/neutron/plugins/ml2/extensions/default_network.py@36","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"683af3c26f244c202df5fc8ee8086811561d638d","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        elif default_net.network_id !\u003d network_id:"},{"line_number":49,"context_line":"            raise n_exc.DefaultNetworkExists(net_id\u003ddefault_net.network_id)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _update_default_net(self, context, network_id, target_tenant):"},{"line_number":52,"context_line":"        obj \u003d network.DefaultNetwork.get_object(context,"},{"line_number":53,"context_line":"                                                network_id\u003dnetwork_id)"},{"line_number":54,"context_line":"        if obj:"}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_d14c1f78","line":51,"updated":"2018-03-26 10:57:50.000000000","message":"where this method is used?","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"1ad4a49e35cbe535ab376b6313f3802d9b83d676","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        elif default_net.network_id !\u003d network_id:"},{"line_number":49,"context_line":"            raise n_exc.DefaultNetworkExists(net_id\u003ddefault_net.network_id)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _update_default_net(self, context, network_id, target_tenant):"},{"line_number":52,"context_line":"        obj \u003d network.DefaultNetwork.get_object(context,"},{"line_number":53,"context_line":"                                                network_id\u003dnetwork_id)"},{"line_number":54,"context_line":"        if obj:"}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_c8bf62f9","line":51,"in_reply_to":"bf659307_d14c1f78","updated":"2018-03-27 19:24:53.000000000","message":"Done","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"}],"neutron/db/migration/alembic_migrations/versions/queens/expand/5ddb6c6dc62c_add_default_network_table.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d68e2419add998e13d58db6eddbf431335097149","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":32,"id":"5f93b717_c29cd6c1","line":1,"updated":"2018-01-31 13:52:42.000000000","message":"probably You will have to move it ro \"rocky\" directory :)","commit_id":"28a544324d8313a251bbe22b3582503e4528f9f5"}],"neutron/db/migration/alembic_migrations/versions/queens/expand/df6abe106eb3_add_default_network_table.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"networks \u003d sa.Table("},{"line_number":33,"context_line":"    \u0027networks\u0027, sa.MetaData(),"},{"line_number":34,"context_line":"    sa.Column(\u0027id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":35,"context_line":"    sa.Column(\u0027project_id\u0027, sa.String(length\u003d255), nullable\u003dFalse))"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_4c6c55cd","line":34,"range":{"start_line":34,"start_character":37,"end_line":34,"end_character":39},"updated":"2017-11-28 22:53:53.000000000","message":"there is constant defined in https://github.com/openstack/neutron-lib/blob/master/neutron_lib/db/constants.py#L20 for that","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"networks \u003d sa.Table("},{"line_number":33,"context_line":"    \u0027networks\u0027, sa.MetaData(),"},{"line_number":34,"context_line":"    sa.Column(\u0027id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":35,"context_line":"    sa.Column(\u0027project_id\u0027, sa.String(length\u003d255), nullable\u003dFalse))"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_aad40121","line":34,"range":{"start_line":34,"start_character":37,"end_line":34,"end_character":39},"in_reply_to":"ff82abbf_4c6c55cd","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":32,"context_line":"networks \u003d sa.Table("},{"line_number":33,"context_line":"    \u0027networks\u0027, sa.MetaData(),"},{"line_number":34,"context_line":"    sa.Column(\u0027id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":35,"context_line":"    sa.Column(\u0027project_id\u0027, sa.String(length\u003d255), nullable\u003dFalse))"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"defaultnetworks \u003d sa.Table("}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_6c67d9ea","line":35,"range":{"start_line":35,"start_character":45,"end_line":35,"end_character":48},"updated":"2017-11-28 22:53:53.000000000","message":"ditto","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":32,"context_line":"networks \u003d sa.Table("},{"line_number":33,"context_line":"    \u0027networks\u0027, sa.MetaData(),"},{"line_number":34,"context_line":"    sa.Column(\u0027id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":35,"context_line":"    sa.Column(\u0027project_id\u0027, sa.String(length\u003d255), nullable\u003dFalse))"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"defaultnetworks \u003d sa.Table("}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_6ada794b","line":35,"range":{"start_line":35,"start_character":45,"end_line":35,"end_character":48},"in_reply_to":"ff82abbf_6c67d9ea","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"defaultnetworks \u003d sa.Table("},{"line_number":39,"context_line":"    \u0027defaultnetworks\u0027, sa.MetaData(),"},{"line_number":40,"context_line":"    sa.Column(\u0027network_id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":41,"context_line":"    sa.Column(\u0027target_tenant\u0027, sa.String(length\u003d255), nullable\u003dFalse))"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_2c5d5114","line":40,"range":{"start_line":40,"start_character":45,"end_line":40,"end_character":47},"updated":"2017-11-28 22:53:53.000000000","message":"ditto","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"defaultnetworks \u003d sa.Table("},{"line_number":39,"context_line":"    \u0027defaultnetworks\u0027, sa.MetaData(),"},{"line_number":40,"context_line":"    sa.Column(\u0027network_id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":41,"context_line":"    sa.Column(\u0027target_tenant\u0027, sa.String(length\u003d255), nullable\u003dFalse))"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_8adfbd38","line":40,"range":{"start_line":40,"start_character":45,"end_line":40,"end_character":47},"in_reply_to":"ff82abbf_2c5d5114","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":38,"context_line":"defaultnetworks \u003d sa.Table("},{"line_number":39,"context_line":"    \u0027defaultnetworks\u0027, sa.MetaData(),"},{"line_number":40,"context_line":"    sa.Column(\u0027network_id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":41,"context_line":"    sa.Column(\u0027target_tenant\u0027, sa.String(length\u003d255), nullable\u003dFalse))"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"externalnetworks \u003d sa.Table("}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_8ca33d00","line":41,"range":{"start_line":41,"start_character":48,"end_line":41,"end_character":51},"updated":"2017-11-28 22:53:53.000000000","message":"ditto","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"defaultnetworks \u003d sa.Table("},{"line_number":39,"context_line":"    \u0027defaultnetworks\u0027, sa.MetaData(),"},{"line_number":40,"context_line":"    sa.Column(\u0027network_id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":41,"context_line":"    sa.Column(\u0027target_tenant\u0027, sa.String(length\u003d255), nullable\u003dFalse))"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"externalnetworks \u003d sa.Table("}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_eaed29f0","line":41,"range":{"start_line":41,"start_character":48,"end_line":41,"end_character":51},"in_reply_to":"ff82abbf_8ca33d00","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"externalnetworks \u003d sa.Table("},{"line_number":45,"context_line":"    \u0027externalnetworks\u0027, sa.MetaData(),"},{"line_number":46,"context_line":"    sa.Column(\u0027network_id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":47,"context_line":"    sa.Column(\u0027is_default\u0027, sa.Boolean(), nullable\u003dFalse))"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_4cb1b546","line":46,"range":{"start_line":46,"start_character":45,"end_line":46,"end_character":47},"updated":"2017-11-28 22:53:53.000000000","message":"ditto","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"externalnetworks \u003d sa.Table("},{"line_number":45,"context_line":"    \u0027externalnetworks\u0027, sa.MetaData(),"},{"line_number":46,"context_line":"    sa.Column(\u0027network_id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":47,"context_line":"    sa.Column(\u0027is_default\u0027, sa.Boolean(), nullable\u003dFalse))"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_6aa8398b","line":46,"range":{"start_line":46,"start_character":45,"end_line":46,"end_character":47},"in_reply_to":"ff82abbf_4cb1b546","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"networkrbacs \u003d sa.Table("},{"line_number":51,"context_line":"    \u0027networkrbacs\u0027, sa.MetaData(),"},{"line_number":52,"context_line":"    sa.Column(\u0027object_id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":53,"context_line":"    sa.Column(\u0027target_tenant\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":54,"context_line":"    sa.Column(\u0027action\u0027, sa.String(length\u003d255), nullable\u003dFalse))"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_6cacb9ec","line":52,"range":{"start_line":52,"start_character":44,"end_line":52,"end_character":46},"updated":"2017-11-28 22:53:53.000000000","message":"ditto","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"networkrbacs \u003d sa.Table("},{"line_number":51,"context_line":"    \u0027networkrbacs\u0027, sa.MetaData(),"},{"line_number":52,"context_line":"    sa.Column(\u0027object_id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":53,"context_line":"    sa.Column(\u0027target_tenant\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":54,"context_line":"    sa.Column(\u0027action\u0027, sa.String(length\u003d255), nullable\u003dFalse))"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_0aebaddb","line":52,"range":{"start_line":52,"start_character":44,"end_line":52,"end_character":46},"in_reply_to":"ff82abbf_6cacb9ec","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":50,"context_line":"networkrbacs \u003d sa.Table("},{"line_number":51,"context_line":"    \u0027networkrbacs\u0027, sa.MetaData(),"},{"line_number":52,"context_line":"    sa.Column(\u0027object_id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":53,"context_line":"    sa.Column(\u0027target_tenant\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":54,"context_line":"    sa.Column(\u0027action\u0027, sa.String(length\u003d255), nullable\u003dFalse))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_0cb72d3c","line":53,"range":{"start_line":53,"start_character":48,"end_line":53,"end_character":51},"updated":"2017-11-28 22:53:53.000000000","message":"ditto","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":50,"context_line":"networkrbacs \u003d sa.Table("},{"line_number":51,"context_line":"    \u0027networkrbacs\u0027, sa.MetaData(),"},{"line_number":52,"context_line":"    sa.Column(\u0027object_id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":53,"context_line":"    sa.Column(\u0027target_tenant\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":54,"context_line":"    sa.Column(\u0027action\u0027, sa.String(length\u003d255), nullable\u003dFalse))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_aabde1d8","line":53,"range":{"start_line":53,"start_character":48,"end_line":53,"end_character":51},"in_reply_to":"ff82abbf_0cb72d3c","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    \u0027networkrbacs\u0027, sa.MetaData(),"},{"line_number":52,"context_line":"    sa.Column(\u0027object_id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":53,"context_line":"    sa.Column(\u0027target_tenant\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":54,"context_line":"    sa.Column(\u0027action\u0027, sa.String(length\u003d255), nullable\u003dFalse))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"def populate_default_network():"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_2cb2314a","line":54,"range":{"start_line":54,"start_character":41,"end_line":54,"end_character":44},"updated":"2017-11-28 22:53:53.000000000","message":"ditto","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    \u0027networkrbacs\u0027, sa.MetaData(),"},{"line_number":52,"context_line":"    sa.Column(\u0027object_id\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":53,"context_line":"    sa.Column(\u0027target_tenant\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":54,"context_line":"    sa.Column(\u0027action\u0027, sa.String(length\u003d255), nullable\u003dFalse))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"def populate_default_network():"}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_cac2a559","line":54,"range":{"start_line":54,"start_character":41,"end_line":54,"end_character":44},"in_reply_to":"ff82abbf_2cb2314a","updated":"2017-12-08 19:12:00.000000000","message":"It seems there is no constants defined for \u0027action\u0027","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        for net in session.query(defaultnetworks):"},{"line_number":74,"context_line":"            for rbac in session.query(networkrbacs).filter("},{"line_number":75,"context_line":"                networkrbacs.c.object_id \u003d\u003d net[0]):"},{"line_number":76,"context_line":"                if rbac[1] \u003d\u003d \u0027*\u0027 and rbac[2] \u003d\u003d \u0027access_as_shared\u0027:"},{"line_number":77,"context_line":"                    session.execute("},{"line_number":78,"context_line":"                        defaultnetworks.update().values("},{"line_number":79,"context_line":"                            target_tenant\u003d\u0027*\u0027).where("}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_ac7f2164","line":76,"range":{"start_line":76,"start_character":30,"end_line":76,"end_character":33},"updated":"2017-11-28 22:53:53.000000000","message":"as I said before, It should be defined as constant somewhere","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        for net in session.query(defaultnetworks):"},{"line_number":74,"context_line":"            for rbac in session.query(networkrbacs).filter("},{"line_number":75,"context_line":"                networkrbacs.c.object_id \u003d\u003d net[0]):"},{"line_number":76,"context_line":"                if rbac[1] \u003d\u003d \u0027*\u0027 and rbac[2] \u003d\u003d \u0027access_as_shared\u0027:"},{"line_number":77,"context_line":"                    session.execute("},{"line_number":78,"context_line":"                        defaultnetworks.update().values("},{"line_number":79,"context_line":"                            target_tenant\u003d\u0027*\u0027).where("}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_eac68968","line":76,"range":{"start_line":76,"start_character":30,"end_line":76,"end_character":33},"in_reply_to":"ff82abbf_ac7f2164","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                if rbac[1] \u003d\u003d \u0027*\u0027 and rbac[2] \u003d\u003d \u0027access_as_shared\u0027:"},{"line_number":77,"context_line":"                    session.execute("},{"line_number":78,"context_line":"                        defaultnetworks.update().values("},{"line_number":79,"context_line":"                            target_tenant\u003d\u0027*\u0027).where("},{"line_number":80,"context_line":"                                defaultnetworks.c.network_id \u003d\u003d net[0]))"},{"line_number":81,"context_line":"    # this commit is necessary to allow further operations"},{"line_number":82,"context_line":"    session.commit()"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_6c959986","line":79,"range":{"start_line":79,"start_character":42,"end_line":79,"end_character":45},"updated":"2017-11-28 22:53:53.000000000","message":"ditto","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                if rbac[1] \u003d\u003d \u0027*\u0027 and rbac[2] \u003d\u003d \u0027access_as_shared\u0027:"},{"line_number":77,"context_line":"                    session.execute("},{"line_number":78,"context_line":"                        defaultnetworks.update().values("},{"line_number":79,"context_line":"                            target_tenant\u003d\u0027*\u0027).where("},{"line_number":80,"context_line":"                                defaultnetworks.c.network_id \u003d\u003d net[0]))"},{"line_number":81,"context_line":"    # this commit is necessary to allow further operations"},{"line_number":82,"context_line":"    session.commit()"}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_0ac40d5e","line":79,"range":{"start_line":79,"start_character":42,"end_line":79,"end_character":45},"in_reply_to":"ff82abbf_6c959986","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":85,"context_line":"def upgrade():"},{"line_number":86,"context_line":"    op.create_table("},{"line_number":87,"context_line":"        \u0027defaultnetworks\u0027,"},{"line_number":88,"context_line":"        sa.Column(\u0027network_id\u0027, sa.String(36),"},{"line_number":89,"context_line":"                  sa.ForeignKey(\u0027networks.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":90,"context_line":"                  primary_key\u003dTrue),"},{"line_number":91,"context_line":"        sa.Column(\u0027target_tenant\u0027, sa.String(length\u003d255),"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_acf401f2","line":88,"range":{"start_line":88,"start_character":42,"end_line":88,"end_character":44},"updated":"2017-11-28 22:53:53.000000000","message":"use constant from neutron-lib here","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":85,"context_line":"def upgrade():"},{"line_number":86,"context_line":"    op.create_table("},{"line_number":87,"context_line":"        \u0027defaultnetworks\u0027,"},{"line_number":88,"context_line":"        sa.Column(\u0027network_id\u0027, sa.String(36),"},{"line_number":89,"context_line":"                  sa.ForeignKey(\u0027networks.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":90,"context_line":"                  primary_key\u003dTrue),"},{"line_number":91,"context_line":"        sa.Column(\u0027target_tenant\u0027, sa.String(length\u003d255),"}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_aaa2c1ac","line":88,"range":{"start_line":88,"start_character":42,"end_line":88,"end_character":44},"in_reply_to":"ff82abbf_acf401f2","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        sa.Column(\u0027network_id\u0027, sa.String(36),"},{"line_number":89,"context_line":"                  sa.ForeignKey(\u0027networks.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":90,"context_line":"                  primary_key\u003dTrue),"},{"line_number":91,"context_line":"        sa.Column(\u0027target_tenant\u0027, sa.String(length\u003d255),"},{"line_number":92,"context_line":"                  nullable\u003dFalse, unique\u003dTrue))"},{"line_number":93,"context_line":"    populate_default_network()"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_ecee8920","line":91,"range":{"start_line":91,"start_character":52,"end_line":91,"end_character":55},"updated":"2017-11-28 22:53:53.000000000","message":"use constant from neutron-lib here","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        sa.Column(\u0027network_id\u0027, sa.String(36),"},{"line_number":89,"context_line":"                  sa.ForeignKey(\u0027networks.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":90,"context_line":"                  primary_key\u003dTrue),"},{"line_number":91,"context_line":"        sa.Column(\u0027target_tenant\u0027, sa.String(length\u003d255),"},{"line_number":92,"context_line":"                  nullable\u003dFalse, unique\u003dTrue))"},{"line_number":93,"context_line":"    populate_default_network()"}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_caa705bd","line":91,"range":{"start_line":91,"start_character":52,"end_line":91,"end_character":55},"in_reply_to":"ff82abbf_ecee8920","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"}],"neutron/db/migration/alembic_migrations/versions/queens/expand/e85dc56e44f2_add_is_default_to_network.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"c9accaad3587fc11a8ea837f4d856610d8ebe3fd","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def upgrade():"},{"line_number":33,"context_line":"    op.add_column(\u0027networks\u0027,"},{"line_number":34,"context_line":"                  sa.Column(\u0027is_default\u0027,"},{"line_number":35,"context_line":"                            sa.Boolean(),"},{"line_number":36,"context_line":"                            nullable\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f4e5783_9d539b6b","line":33,"updated":"2017-10-16 23:03:22.000000000","message":"we need data migration alongside the schema migration.","commit_id":"7f9ad9f9203a5340bd75cbf6ce0aba84116255bf"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e554677beb28237fb386921f7256e073b673fa79","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def upgrade():"},{"line_number":33,"context_line":"    op.add_column(\u0027networks\u0027,"},{"line_number":34,"context_line":"                  sa.Column(\u0027is_default\u0027,"},{"line_number":35,"context_line":"                            sa.Boolean(),"},{"line_number":36,"context_line":"                            nullable\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_be70ad09","line":33,"in_reply_to":"5f4e5783_9d539b6b","updated":"2017-10-24 19:00:06.000000000","message":"Done","commit_id":"7f9ad9f9203a5340bd75cbf6ce0aba84116255bf"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"471eac225fbff4f1869578b0f1b46c8435d38fad","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                  sa.Column(\u0027is_default\u0027,"},{"line_number":64,"context_line":"                            sa.Boolean(),"},{"line_number":65,"context_line":"                            nullable\u003dFalse,"},{"line_number":66,"context_line":"                            server_default\u003dsa.sql.false()))"},{"line_number":67,"context_line":"    populate_is_default()"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff82abbf_244a0827","line":66,"updated":"2017-11-20 18:03:27.000000000","message":"As I said in comment to one of previous patch sets: there can be race condition here. Imagine the case when neutron server is running on 2 or more nodes and user created 2 networks with is_defauult\u003dTrue in almost same time. Then it is possible that both will be saved in DB as default network because each request can be processed by different neutron-server process.\nThere should be constraint on db level directly to avoid such possibility.\nFor details please check how it is done e.g. for \"is_default\" flag for QoS policy.","commit_id":"bca03229dc067c1ecabed272ac6ba019ca4640c4"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"6dce2c51928397d6dd615b0dbebc30ab192a1b6e","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                  sa.Column(\u0027is_default\u0027,"},{"line_number":64,"context_line":"                            sa.Boolean(),"},{"line_number":65,"context_line":"                            nullable\u003dFalse,"},{"line_number":66,"context_line":"                            server_default\u003dsa.sql.false()))"},{"line_number":67,"context_line":"    populate_is_default()"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff82abbf_561aa9cb","line":66,"in_reply_to":"ff82abbf_244a0827","updated":"2017-11-28 19:25:51.000000000","message":"Done","commit_id":"bca03229dc067c1ecabed272ac6ba019ca4640c4"}],"neutron/db/migration/alembic_migrations/versions/rocky/expand/2d7c584002b2_add_default_network_table.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"683af3c26f244c202df5fc8ee8086811561d638d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        sa.Column(\u0027network_id\u0027, sa.String(db_const.UUID_FIELD_SIZE),"},{"line_number":37,"context_line":"                  sa.ForeignKey(\u0027networks.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":38,"context_line":"                  primary_key\u003dTrue),"},{"line_number":39,"context_line":"        sa.Column(\u0027target_tenant\u0027,"},{"line_number":40,"context_line":"                  sa.String(length\u003ddb_const.PROJECT_ID_FIELD_SIZE),"},{"line_number":41,"context_line":"                  nullable\u003dFalse, unique\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_9ed0f6cb","line":39,"range":{"start_line":39,"start_character":26,"end_line":39,"end_character":32},"updated":"2018-03-26 10:57:50.000000000","message":"shouldn\u0027t we use \"project\" instead of tenant?","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"1ad4a49e35cbe535ab376b6313f3802d9b83d676","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        sa.Column(\u0027network_id\u0027, sa.String(db_const.UUID_FIELD_SIZE),"},{"line_number":37,"context_line":"                  sa.ForeignKey(\u0027networks.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":38,"context_line":"                  primary_key\u003dTrue),"},{"line_number":39,"context_line":"        sa.Column(\u0027target_tenant\u0027,"},{"line_number":40,"context_line":"                  sa.String(length\u003ddb_const.PROJECT_ID_FIELD_SIZE),"},{"line_number":41,"context_line":"                  nullable\u003dFalse, unique\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_88372ab1","line":39,"range":{"start_line":39,"start_character":26,"end_line":39,"end_character":32},"in_reply_to":"bf659307_9ed0f6cb","updated":"2018-03-27 19:24:53.000000000","message":"Done","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"}],"neutron/db/models/default_net.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class DefaultNetwork(model_base.BASEV2):"},{"line_number":26,"context_line":"    network_id \u003d sa.Column(sa.String(36),"},{"line_number":27,"context_line":"                           sa.ForeignKey(\u0027networks.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":28,"context_line":"                           primary_key\u003dTrue)"},{"line_number":29,"context_line":"    # Add a relationship to the Network model in order to instruct"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_6cda7978","line":26,"range":{"start_line":26,"start_character":37,"end_line":26,"end_character":39},"updated":"2017-11-28 22:53:53.000000000","message":"please use constant from neutron-lib for that","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class DefaultNetwork(model_base.BASEV2):"},{"line_number":26,"context_line":"    network_id \u003d sa.Column(sa.String(36),"},{"line_number":27,"context_line":"                           sa.ForeignKey(\u0027networks.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":28,"context_line":"                           primary_key\u003dTrue)"},{"line_number":29,"context_line":"    # Add a relationship to the Network model in order to instruct"}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_eae3e932","line":26,"range":{"start_line":26,"start_character":37,"end_line":26,"end_character":39},"in_reply_to":"ff82abbf_6cda7978","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"683af3c26f244c202df5fc8ee8086811561d638d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from neutron.db import models_v2"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class DefaultNetwork(model_base.BASEV2):"},{"line_number":26,"context_line":"    network_id \u003d sa.Column(sa.String(db_const.UUID_FIELD_SIZE),"},{"line_number":27,"context_line":"                           sa.ForeignKey(\u0027networks.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":28,"context_line":"                           primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_7eae422f","line":25,"updated":"2018-03-26 10:57:50.000000000","message":"maybe You can just inherit from neutron_lib.db.models_base.HasProjectPrimaryIndex and then \"project_id\" column You will have \"for free\" :)","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"1ad4a49e35cbe535ab376b6313f3802d9b83d676","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from neutron.db import models_v2"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class DefaultNetwork(model_base.BASEV2):"},{"line_number":26,"context_line":"    network_id \u003d sa.Column(sa.String(db_const.UUID_FIELD_SIZE),"},{"line_number":27,"context_line":"                           sa.ForeignKey(\u0027networks.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":28,"context_line":"                           primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_084b1a2b","line":25,"in_reply_to":"bf659307_7eae422f","updated":"2018-03-27 19:24:53.000000000","message":"Done","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"}],"neutron/db/models_v2.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9e81b2dfe59f8d8bf4f8acb94141e0d6b3a4423f","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        \u0027Agent\u0027, lazy\u003d\u0027subquery\u0027, viewonly\u003dTrue,"},{"line_number":275,"context_line":"        secondary\u003dndab_model.NetworkDhcpAgentBinding.__table__)"},{"line_number":276,"context_line":"    is_default \u003d sa.Column(sa.Boolean, nullable\u003dFalse,"},{"line_number":277,"context_line":"                           server_default\u003dsql.false())"},{"line_number":278,"context_line":"    api_collections \u003d [net_def.COLLECTION_NAME]"},{"line_number":279,"context_line":"    collection_resource_map \u003d {net_def.COLLECTION_NAME: net_def.RESOURCE_NAME}"},{"line_number":280,"context_line":"    tag_support \u003d True"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f4b6375_733dbcc2","line":277,"updated":"2017-10-25 08:34:59.000000000","message":"IMO it can be racey. Please see Kevin Benton\u0027s comment on similar change for QoS policy: https://review.openstack.org/#/c/428304/47/neutron/services/qos/qos_plugin.py\nMaybe here You should also add new table and use constraint on db level?","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"308286dbfd48e60497c337d89c7d1e6a3370acfa","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        \u0027Agent\u0027, lazy\u003d\u0027subquery\u0027, viewonly\u003dTrue,"},{"line_number":275,"context_line":"        secondary\u003dndab_model.NetworkDhcpAgentBinding.__table__)"},{"line_number":276,"context_line":"    is_default \u003d sa.Column(sa.Boolean, nullable\u003dFalse,"},{"line_number":277,"context_line":"                           server_default\u003dsql.false())"},{"line_number":278,"context_line":"    api_collections \u003d [net_def.COLLECTION_NAME]"},{"line_number":279,"context_line":"    collection_resource_map \u003d {net_def.COLLECTION_NAME: net_def.RESOURCE_NAME}"},{"line_number":280,"context_line":"    tag_support \u003d True"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f485f77_0b1b18d0","line":277,"in_reply_to":"3f4b6375_733dbcc2","updated":"2017-11-15 20:13:32.000000000","message":"I am not sure if I should. There are other similar changes that didn\u0027t seem to adopt the approach you suggested (i.e. https://review.openstack.org/#/c/230983/). I will need other reviewers to comment on it.","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"}],"neutron/extensions/_default_networks_lib.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"683af3c26f244c202df5fc8ee8086811561d638d","unresolved":false,"context_lines":[{"line_number":37,"context_line":"IS_STANDARD_ATTR_EXTENSION \u003d False"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"# The name of the extension."},{"line_number":40,"context_line":"NAME \u003d \u0027Default networks\u0027"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"# The description of the extension."},{"line_number":43,"context_line":"DESCRIPTION \u003d \"Support specifying networks as default networks\""}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_7e73a2e8","line":40,"updated":"2018-03-26 10:57:50.000000000","message":"Maybe \"Default project networks\" or something like that?","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"1ad4a49e35cbe535ab376b6313f3802d9b83d676","unresolved":false,"context_lines":[{"line_number":37,"context_line":"IS_STANDARD_ATTR_EXTENSION \u003d False"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"# The name of the extension."},{"line_number":40,"context_line":"NAME \u003d \u0027Default networks\u0027"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"# The description of the extension."},{"line_number":43,"context_line":"DESCRIPTION \u003d \"Support specifying networks as default networks\""}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_28461e23","line":40,"in_reply_to":"bf659307_7e73a2e8","updated":"2018-03-27 19:24:53.000000000","message":"Done","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"683af3c26f244c202df5fc8ee8086811561d638d","unresolved":false,"context_lines":[{"line_number":40,"context_line":"NAME \u003d \u0027Default networks\u0027"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"# The description of the extension."},{"line_number":43,"context_line":"DESCRIPTION \u003d \"Support specifying networks as default networks\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"# A timestamp of when the extension was introduced."},{"line_number":46,"context_line":"UPDATED_TIMESTAMP \u003d \"2018-01-19T10:00:00-00:00\""}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_de4bce84","line":43,"updated":"2018-03-26 10:57:50.000000000","message":"as default network for project","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"1ad4a49e35cbe535ab376b6313f3802d9b83d676","unresolved":false,"context_lines":[{"line_number":40,"context_line":"NAME \u003d \u0027Default networks\u0027"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"# The description of the extension."},{"line_number":43,"context_line":"DESCRIPTION \u003d \"Support specifying networks as default networks\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"# A timestamp of when the extension was introduced."},{"line_number":46,"context_line":"UPDATED_TIMESTAMP \u003d \"2018-01-19T10:00:00-00:00\""}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_c85442cd","line":43,"in_reply_to":"bf659307_de4bce84","updated":"2018-03-27 19:24:53.000000000","message":"Done","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"}],"neutron/extensions/default_networks.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 Intel Corporation."},{"line_number":2,"context_line":"# All rights reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_2c4eb137","line":1,"updated":"2017-11-28 22:53:53.000000000","message":"Shouldn\u0027t You put here Your company instead of Intel?","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 Intel Corporation."},{"line_number":2,"context_line":"# All rights reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_0ae16d2a","line":1,"in_reply_to":"ff82abbf_2c4eb137","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"}],"neutron/extensions/default_networks_lib.py":[{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"42de1f15668185f823ffdb721128bb413c1bd587","unresolved":false,"context_lines":[{"line_number":50,"context_line":"COLLECTION_NAME \u003d network.COLLECTION_NAME"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"# The specific resources and/or attributes for the extension (optional)."},{"line_number":53,"context_line":"IS_DEFAULT \u003d \u0027is_default\u0027"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"# The resource attribute map for the extension."},{"line_number":56,"context_line":"RESOURCE_ATTRIBUTE_MAP \u003d {"}],"source_content_type":"text/x-python","patch_set":28,"id":"df87a7cf_8edec33b","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":10},"updated":"2017-12-11 20:21:09.000000000","message":"This is already defined in neutron_lib.api.definitions.constants\n\nCan\u0027t we just use it from there?","commit_id":"a9890cd899843304a6193b1d74c62d2750696420"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"70dc2f526421d8893aad2ac799d507c05f133829","unresolved":false,"context_lines":[{"line_number":50,"context_line":"COLLECTION_NAME \u003d network.COLLECTION_NAME"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"# The specific resources and/or attributes for the extension (optional)."},{"line_number":53,"context_line":"IS_DEFAULT \u003d \u0027is_default\u0027"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"# The resource attribute map for the extension."},{"line_number":56,"context_line":"RESOURCE_ATTRIBUTE_MAP \u003d {"}],"source_content_type":"text/x-python","patch_set":28,"id":"9f91af0f_4b5cb67d","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":10},"in_reply_to":"df87a7cf_8edec33b","updated":"2018-01-04 16:31:40.000000000","message":"Done","commit_id":"a9890cd899843304a6193b1d74c62d2750696420"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"42de1f15668185f823ffdb721128bb413c1bd587","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"# The resource attribute map for the extension."},{"line_number":56,"context_line":"RESOURCE_ATTRIBUTE_MAP \u003d {"},{"line_number":57,"context_line":"    COLLECTION_NAME: {"},{"line_number":58,"context_line":"        IS_DEFAULT: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":59,"context_line":"                     \u0027default\u0027: False,"},{"line_number":60,"context_line":"                     \u0027convert_to\u0027: converters.convert_to_boolean,"}],"source_content_type":"text/x-python","patch_set":28,"id":"df87a7cf_4e92fb58","line":57,"range":{"start_line":57,"start_character":4,"end_line":57,"end_character":19},"updated":"2017-12-11 20:21:09.000000000","message":"I\u0027m confused. The auto allocated topology extension already adds is_default to networks [1]. Isn\u0027t a problem that both extensions add the same attr to the same resource, or am I missing something?\n\n\n[1] https://github.com/openstack/neutron-lib/blob/master/neutron_lib/api/definitions/auto_allocated_topology.py","commit_id":"a9890cd899843304a6193b1d74c62d2750696420"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"1af3c63c1ddd764a71ab51fa36163adf7bd42d15","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"# The resource attribute map for the extension."},{"line_number":56,"context_line":"RESOURCE_ATTRIBUTE_MAP \u003d {"},{"line_number":57,"context_line":"    COLLECTION_NAME: {"},{"line_number":58,"context_line":"        IS_DEFAULT: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":59,"context_line":"                     \u0027default\u0027: False,"},{"line_number":60,"context_line":"                     \u0027convert_to\u0027: converters.convert_to_boolean,"}],"source_content_type":"text/x-python","patch_set":28,"id":"df87a7cf_d98fb727","line":57,"range":{"start_line":57,"start_character":4,"end_line":57,"end_character":19},"in_reply_to":"df87a7cf_4e92fb58","updated":"2017-12-11 20:47:30.000000000","message":"Perhaps it\u0027s not a problem if this extn depends on the auto allocated topology extn to ensure this one gets loaded after auto topo and thus it\u0027s attribute map is used?","commit_id":"a9890cd899843304a6193b1d74c62d2750696420"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"70dc2f526421d8893aad2ac799d507c05f133829","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"# The resource attribute map for the extension."},{"line_number":56,"context_line":"RESOURCE_ATTRIBUTE_MAP \u003d {"},{"line_number":57,"context_line":"    COLLECTION_NAME: {"},{"line_number":58,"context_line":"        IS_DEFAULT: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":59,"context_line":"                     \u0027default\u0027: False,"},{"line_number":60,"context_line":"                     \u0027convert_to\u0027: converters.convert_to_boolean,"}],"source_content_type":"text/x-python","patch_set":28,"id":"9f91af0f_6b5f3a72","line":57,"range":{"start_line":57,"start_character":4,"end_line":57,"end_character":19},"in_reply_to":"df87a7cf_d98fb727","updated":"2018-01-04 16:31:40.000000000","message":"Done","commit_id":"a9890cd899843304a6193b1d74c62d2750696420"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"5587f9a742c92db685e373c2494e49415e617de7","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"# The resource attribute map for the extension."},{"line_number":56,"context_line":"RESOURCE_ATTRIBUTE_MAP \u003d {"},{"line_number":57,"context_line":"    COLLECTION_NAME: {"},{"line_number":58,"context_line":"        IS_DEFAULT: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":59,"context_line":"                     \u0027default\u0027: False,"},{"line_number":60,"context_line":"                     \u0027convert_to\u0027: converters.convert_to_boolean,"}],"source_content_type":"text/x-python","patch_set":28,"id":"7f96bb07_f62b6f7f","line":57,"range":{"start_line":57,"start_character":4,"end_line":57,"end_character":19},"in_reply_to":"df87a7cf_d98fb727","updated":"2018-01-19 23:36:41.000000000","message":"I set auto_allocated_topology as an optional dependency. FWIW, I couldn\u0027t set it as a required dependency because the unit tests failed due to unsatisfied dependency.","commit_id":"a9890cd899843304a6193b1d74c62d2750696420"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d68e2419add998e13d58db6eddbf431335097149","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":32,"id":"5f93b717_028f1e75","line":1,"updated":"2018-01-31 13:52:42.000000000","message":"did You already proposed patch with this apidef for neutron-lib? If no, I think You should do it","commit_id":"28a544324d8313a251bbe22b3582503e4528f9f5"}],"neutron/objects/network.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"683af3c26f244c202df5fc8ee8086811561d638d","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    fields \u003d {"},{"line_number":200,"context_line":"        \u0027network_id\u0027: common_types.UUIDField(),"},{"line_number":201,"context_line":"        \u0027target_tenant\u0027: obj_fields.StringField(),"},{"line_number":202,"context_line":"    }"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_1e594659","line":201,"range":{"start_line":201,"start_character":9,"end_line":201,"end_character":22},"updated":"2018-03-26 10:57:50.000000000","message":"maybe just \"project_id\" would be better name (more consistent with other things in Neutron)","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"1ad4a49e35cbe535ab376b6313f3802d9b83d676","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    fields \u003d {"},{"line_number":200,"context_line":"        \u0027network_id\u0027: common_types.UUIDField(),"},{"line_number":201,"context_line":"        \u0027target_tenant\u0027: obj_fields.StringField(),"},{"line_number":202,"context_line":"    }"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_e84fc631","line":201,"range":{"start_line":201,"start_character":9,"end_line":201,"end_character":22},"in_reply_to":"bf659307_1e594659","updated":"2018-03-27 19:24:53.000000000","message":"Done","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"}],"neutron/plugins/ml2/extensions/default_network.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 NEC Corporation.  All rights reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_0c6c0d9a","line":1,"updated":"2017-11-28 22:53:53.000000000","message":"is it proper company for You?","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"}],"neutron/services/auto_allocate/db.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d5b87708c42b1a59260f63d8391040e0f8d2d487","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    kwargs[\u0027is_default\u0027] \u003d True"},{"line_number":50,"context_line":"    if tenant_id:"},{"line_number":51,"context_line":"        kwargs[\u0027tenant_id\u0027] \u003d tenant_id"},{"line_number":52,"context_line":"    if shared:"},{"line_number":53,"context_line":"        kwargs[\u0027shared\u0027] \u003d True"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    pager \u003d base_obj.Pager(limit\u003d1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f4b6375_2d4da7c3","line":52,"updated":"2017-10-25 07:36:39.000000000","message":"how does this work with the RBAC features?","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"8f8662b55f15fce622a4c243435747385f4a6c62","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    kwargs[\u0027is_default\u0027] \u003d True"},{"line_number":50,"context_line":"    if tenant_id:"},{"line_number":51,"context_line":"        kwargs[\u0027tenant_id\u0027] \u003d tenant_id"},{"line_number":52,"context_line":"    if shared:"},{"line_number":53,"context_line":"        kwargs[\u0027shared\u0027] \u003d True"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    pager \u003d base_obj.Pager(limit\u003d1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f485f77_25a8408b","line":52,"in_reply_to":"3f4b6375_2d4da7c3","updated":"2017-11-15 22:05:31.000000000","message":"Just have a quick research on the neutron RBAC feature but couldn\u0027t figure out if RBAC is applicable in here. What I intend to do is to search any network with both \u0027is_default\u0027 and \u0027shared\u0027 set to True. Please advice how RBAC is supposed to be leveraged in here.","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9e81b2dfe59f8d8bf4f8acb94141e0d6b3a4423f","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    is_default \u003d request.get(IS_DEFAULT)"},{"line_number":68,"context_line":"    if is_default is None:"},{"line_number":69,"context_line":"        return"},{"line_number":70,"context_line":"    if not network[\u0027router:external\u0027]:"},{"line_number":71,"context_line":"        return"},{"line_number":72,"context_line":"    if is_default:"},{"line_number":73,"context_line":"        # ensure there is only one default external network at any given time"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f4b6375_9324b8b0","line":70,"updated":"2017-10-25 08:34:59.000000000","message":"nit: isn\u0027t there any constant to use here instead of \u0027router:external\u0027?","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"c1c68bffe6794f7be9a32336d5b9dcce380a28c2","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    is_default \u003d request.get(IS_DEFAULT)"},{"line_number":68,"context_line":"    if is_default is None:"},{"line_number":69,"context_line":"        return"},{"line_number":70,"context_line":"    if not network[\u0027router:external\u0027]:"},{"line_number":71,"context_line":"        return"},{"line_number":72,"context_line":"    if is_default:"},{"line_number":73,"context_line":"        # ensure there is only one default external network at any given time"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f485f77_7d226e02","line":70,"in_reply_to":"3f4b6375_9324b8b0","updated":"2017-11-15 00:08:59.000000000","message":"Done","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"42de1f15668185f823ffdb721128bb413c1bd587","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from neutron.services.auto_allocate import exceptions"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":42,"context_line":"IS_DEFAULT \u003d \u0027is_default\u0027"},{"line_number":43,"context_line":"CHECK_REQUIREMENTS \u003d \u0027dry-run\u0027"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"df87a7cf_4ece7b5a","line":42,"updated":"2017-12-11 20:21:09.000000000","message":"better to just use neutron_lib.api.definitions.constants.IS_DEFAULT","commit_id":"a9890cd899843304a6193b1d74c62d2750696420"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"4d39d3f4b06b8c41e2fb55d14a709284e0330f7e","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from neutron.services.auto_allocate import exceptions"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":42,"context_line":"IS_DEFAULT \u003d \u0027is_default\u0027"},{"line_number":43,"context_line":"CHECK_REQUIREMENTS \u003d \u0027dry-run\u0027"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"9f91af0f_86bcf5dc","line":42,"in_reply_to":"9f91af0f_ebdfcad3","updated":"2018-01-04 16:53:39.000000000","message":"https://review.openstack.org/#/c/531199/","commit_id":"a9890cd899843304a6193b1d74c62d2750696420"},{"author":{"_account_id":25618,"name":"Paweł Suder","email":"pawel@suder.info","username":"SuderPawel"},"change_message_id":"cfa42d1aa0f254bd996d38d95e1ec6f6012eaaa3","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from neutron.services.auto_allocate import exceptions"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":42,"context_line":"IS_DEFAULT \u003d \u0027is_default\u0027"},{"line_number":43,"context_line":"CHECK_REQUIREMENTS \u003d \u0027dry-run\u0027"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"df87a7cf_3f155049","line":42,"in_reply_to":"df87a7cf_4ece7b5a","updated":"2017-12-12 15:12:17.000000000","message":"+1","commit_id":"a9890cd899843304a6193b1d74c62d2750696420"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"70dc2f526421d8893aad2ac799d507c05f133829","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from neutron.services.auto_allocate import exceptions"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":42,"context_line":"IS_DEFAULT \u003d \u0027is_default\u0027"},{"line_number":43,"context_line":"CHECK_REQUIREMENTS \u003d \u0027dry-run\u0027"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"9f91af0f_ebdfcad3","line":42,"in_reply_to":"df87a7cf_4ece7b5a","updated":"2018-01-04 16:31:40.000000000","message":"Agree. This seems out of scope of this change. I will fix this in a separated patch.","commit_id":"a9890cd899843304a6193b1d74c62d2750696420"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"5587f9a742c92db685e373c2494e49415e617de7","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from neutron.services.auto_allocate import exceptions"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":42,"context_line":"IS_DEFAULT \u003d \u0027is_default\u0027"},{"line_number":43,"context_line":"CHECK_REQUIREMENTS \u003d \u0027dry-run\u0027"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"7f96bb07_563a63cd","line":42,"in_reply_to":"df87a7cf_4ece7b5a","updated":"2018-01-19 23:36:41.000000000","message":"Done","commit_id":"a9890cd899843304a6193b1d74c62d2750696420"},{"author":{"_account_id":19853,"name":"Nguyen Hung Phuong","email":"phuongnh@vn.fujitsu.com","username":"phuongnh"},"change_message_id":"4301a096e269505f772bc6c19629af9ffe9a49aa","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    \"\"\"Ensure the is_default db field matches the create/update request.\"\"\""},{"line_number":50,"context_line":"    is_default \u003d request.get(api_const.IS_DEFAULT)"},{"line_number":51,"context_line":"    if is_default is None:"},{"line_number":52,"context_line":"        is_default \u003d kwargs.get(\u0027original_network\u0027, {}).get(api_const.IS_DEFAULT)"},{"line_number":53,"context_line":"    if is_default and network[extnet_def.EXTERNAL]:"},{"line_number":54,"context_line":"        # ensure there is only one default external network at any given time"},{"line_number":55,"context_line":"        pager \u003d base_obj.Pager(limit\u003d1)"}],"source_content_type":"text/x-python","patch_set":30,"id":"7f96bb07_2c1ad816","line":52,"updated":"2018-01-22 02:16:30.000000000","message":"please fix pep8 issue, line is longer than 80.","commit_id":"131187c97e45691e1ba936b8b2bc8cb002a881ab"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"6698b3ff9eb186dcd72b33672b5341d6c506cf1d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    \"\"\"Ensure the is_default db field matches the create/update request.\"\"\""},{"line_number":50,"context_line":"    is_default \u003d request.get(api_const.IS_DEFAULT)"},{"line_number":51,"context_line":"    if is_default is None:"},{"line_number":52,"context_line":"        is_default \u003d kwargs.get(\u0027original_network\u0027, {}).get(api_const.IS_DEFAULT)"},{"line_number":53,"context_line":"    if is_default and network[extnet_def.EXTERNAL]:"},{"line_number":54,"context_line":"        # ensure there is only one default external network at any given time"},{"line_number":55,"context_line":"        pager \u003d base_obj.Pager(limit\u003d1)"}],"source_content_type":"text/x-python","patch_set":30,"id":"7f96bb07_30dc5073","line":52,"in_reply_to":"7f96bb07_2c1ad816","updated":"2018-01-22 20:51:15.000000000","message":"Done","commit_id":"131187c97e45691e1ba936b8b2bc8cb002a881ab"}],"neutron/tests/contrib/gate_hook.sh":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f1b9e2342ab6b944c6bfe073f0cef9a8cf4659f3","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        load_rc_hook disable_dvr_tests"},{"line_number":109,"context_line":"    fi"},{"line_number":110,"context_line":"    load_conf_hook quotas"},{"line_number":111,"context_line":"    load_rc_hook default_network"},{"line_number":112,"context_line":"    load_rc_hook dns"},{"line_number":113,"context_line":"    load_rc_hook qos"},{"line_number":114,"context_line":"    load_rc_hook segments"}],"source_content_type":"text/x-sh","patch_set":48,"id":"bf659307_5e44b374","line":111,"updated":"2018-04-05 11:29:35.000000000","message":"Just FYI: Linuxbridge scenario job is now defined with zuul v3 syntax and it not uses those gate_hooks. You should also push a patch to neutron-tempest-plugin to add this extension to config: https://github.com/openstack/neutron-tempest-plugin/blob/master/.zuul.yaml","commit_id":"d0651c5e1320e9092467cb52b9b312fab9fc2429"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"48e8c0f559edaf92c5d6e4ce76a6c13f65a19650","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        load_rc_hook disable_dvr_tests"},{"line_number":109,"context_line":"    fi"},{"line_number":110,"context_line":"    load_conf_hook quotas"},{"line_number":111,"context_line":"    load_rc_hook default_network"},{"line_number":112,"context_line":"    load_rc_hook dns"},{"line_number":113,"context_line":"    load_rc_hook qos"},{"line_number":114,"context_line":"    load_rc_hook segments"}],"source_content_type":"text/x-sh","patch_set":48,"id":"bf659307_2face833","line":111,"in_reply_to":"bf659307_5e44b374","updated":"2018-04-09 17:32:05.000000000","message":"Here is the tempest test: https://review.openstack.org/#/c/542446/ . It looks the relevant test cases were not triggered at linuxbridge scenario job (the tests are only triggered at neutron-tempest-plugin-api). Do I still need to update the linuxbridge\u0027s job in this case? I can do that but just want to make sure.","commit_id":"d0651c5e1320e9092467cb52b9b312fab9fc2429"}],"neutron/tests/unit/api/v2/test_base.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9e81b2dfe59f8d8bf4f8acb94141e0d6b3a4423f","unresolved":false,"context_lines":[{"line_number":786,"context_line":"        net_id \u003d _uuid()"},{"line_number":787,"context_line":"        env \u003d {\u0027neutron.context\u0027: context.Context(\u0027\u0027, tenant_id)}"},{"line_number":788,"context_line":"        # tenant_id should be fetched from env"},{"line_number":789,"context_line":"        initial_input \u003d {\u0027network\u0027: {\u0027name\u0027: \u0027net1\u0027, \u0027is_default\u0027: False}}"},{"line_number":790,"context_line":"        full_input \u003d {\u0027network\u0027: {\u0027admin_state_up\u0027: True,"},{"line_number":791,"context_line":"                      \u0027shared\u0027: False, \u0027tenant_id\u0027: tenant_id,"},{"line_number":792,"context_line":"                      \u0027project_id\u0027: tenant_id}}"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f4b6375_3333c4f8","line":789,"updated":"2017-10-25 08:34:59.000000000","message":"Do You really add this new field everywhere? It shouldn\u0027t be necessary IMO","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"c1c68bffe6794f7be9a32336d5b9dcce380a28c2","unresolved":false,"context_lines":[{"line_number":786,"context_line":"        net_id \u003d _uuid()"},{"line_number":787,"context_line":"        env \u003d {\u0027neutron.context\u0027: context.Context(\u0027\u0027, tenant_id)}"},{"line_number":788,"context_line":"        # tenant_id should be fetched from env"},{"line_number":789,"context_line":"        initial_input \u003d {\u0027network\u0027: {\u0027name\u0027: \u0027net1\u0027, \u0027is_default\u0027: False}}"},{"line_number":790,"context_line":"        full_input \u003d {\u0027network\u0027: {\u0027admin_state_up\u0027: True,"},{"line_number":791,"context_line":"                      \u0027shared\u0027: False, \u0027tenant_id\u0027: tenant_id,"},{"line_number":792,"context_line":"                      \u0027project_id\u0027: tenant_id}}"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f485f77_3d7ab6f0","line":789,"in_reply_to":"3f4b6375_3333c4f8","updated":"2017-11-15 00:08:59.000000000","message":"Done","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"}],"neutron/tests/unit/db/test_db_base_plugin_v2.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"471eac225fbff4f1869578b0f1b46c8435d38fad","unresolved":false,"context_lines":[{"line_number":6221,"context_line":"        with db_api.context_manager.writer.using(ctx):"},{"line_number":6222,"context_line":"            network \u003d models_v2.Network(name\u003d\"net_net\", status\u003d\"OK\","},{"line_number":6223,"context_line":"                                        admin_state_up\u003dTrue,"},{"line_number":6224,"context_line":"                                        is_default\u003dFalse)"},{"line_number":6225,"context_line":"            ctx.session.add(network)"},{"line_number":6226,"context_line":"            with db_api.autonested_transaction(ctx.session):"},{"line_number":6227,"context_line":"                sg \u003d sg_models.SecurityGroup(name\u003d\u0027sg\u0027, description\u003d\u0027sg\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff82abbf_64401009","line":6224,"updated":"2017-11-20 18:03:27.000000000","message":"do You need to pass it to Network object constructor always?\nShouldn\u0027t it be set to False by default and not required here?","commit_id":"bca03229dc067c1ecabed272ac6ba019ca4640c4"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"6dce2c51928397d6dd615b0dbebc30ab192a1b6e","unresolved":false,"context_lines":[{"line_number":6221,"context_line":"        with db_api.context_manager.writer.using(ctx):"},{"line_number":6222,"context_line":"            network \u003d models_v2.Network(name\u003d\"net_net\", status\u003d\"OK\","},{"line_number":6223,"context_line":"                                        admin_state_up\u003dTrue,"},{"line_number":6224,"context_line":"                                        is_default\u003dFalse)"},{"line_number":6225,"context_line":"            ctx.session.add(network)"},{"line_number":6226,"context_line":"            with db_api.autonested_transaction(ctx.session):"},{"line_number":6227,"context_line":"                sg \u003d sg_models.SecurityGroup(name\u003d\u0027sg\u0027, description\u003d\u0027sg\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff82abbf_1610a1a7","line":6224,"in_reply_to":"ff82abbf_64401009","updated":"2017-11-28 19:25:51.000000000","message":"Done","commit_id":"bca03229dc067c1ecabed272ac6ba019ca4640c4"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"471eac225fbff4f1869578b0f1b46c8435d38fad","unresolved":false,"context_lines":[{"line_number":6236,"context_line":"            )"},{"line_number":6237,"context_line":"            net2 \u003d models_v2.Network(name\u003d\"net_net2\", status\u003d\"OK\","},{"line_number":6238,"context_line":"                                     admin_state_up\u003dTrue,"},{"line_number":6239,"context_line":"                                     is_default\u003dFalse)"},{"line_number":6240,"context_line":"            ctx.session.add(net2)"},{"line_number":6241,"context_line":"        pl \u003d db_base_plugin_common.DbBasePluginCommon()"},{"line_number":6242,"context_line":"        self.assertTrue(pl._make_network_dict(network, context\u003dctx)[\u0027shared\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff82abbf_8445141a","line":6239,"updated":"2017-11-20 18:03:27.000000000","message":"same here","commit_id":"bca03229dc067c1ecabed272ac6ba019ca4640c4"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"6dce2c51928397d6dd615b0dbebc30ab192a1b6e","unresolved":false,"context_lines":[{"line_number":6236,"context_line":"            )"},{"line_number":6237,"context_line":"            net2 \u003d models_v2.Network(name\u003d\"net_net2\", status\u003d\"OK\","},{"line_number":6238,"context_line":"                                     admin_state_up\u003dTrue,"},{"line_number":6239,"context_line":"                                     is_default\u003dFalse)"},{"line_number":6240,"context_line":"            ctx.session.add(net2)"},{"line_number":6241,"context_line":"        pl \u003d db_base_plugin_common.DbBasePluginCommon()"},{"line_number":6242,"context_line":"        self.assertTrue(pl._make_network_dict(network, context\u003dctx)[\u0027shared\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff82abbf_b62a15d8","line":6239,"in_reply_to":"ff82abbf_8445141a","updated":"2017-11-28 19:25:51.000000000","message":"Done","commit_id":"bca03229dc067c1ecabed272ac6ba019ca4640c4"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":305,"context_line":"                            \u0027admin_state_up\u0027: admin_state_up,"},{"line_number":306,"context_line":"                            \u0027tenant_id\u0027: tenant_id}}"},{"line_number":307,"context_line":"        for arg in ((\u0027admin_state_up\u0027, \u0027tenant_id\u0027, \u0027shared\u0027,"},{"line_number":308,"context_line":"                     \u0027vlan_transparent\u0027, \u0027is_default\u0027,"},{"line_number":309,"context_line":"                     \u0027availability_zone_hints\u0027) + (arg_list or ())):"},{"line_number":310,"context_line":"            # Arg must be present"},{"line_number":311,"context_line":"            if arg in kwargs:"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_8c97bd3a","line":308,"updated":"2017-11-28 22:53:53.000000000","message":"is it really necessary that field \"is_default\" must present?","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":305,"context_line":"                            \u0027admin_state_up\u0027: admin_state_up,"},{"line_number":306,"context_line":"                            \u0027tenant_id\u0027: tenant_id}}"},{"line_number":307,"context_line":"        for arg in ((\u0027admin_state_up\u0027, \u0027tenant_id\u0027, \u0027shared\u0027,"},{"line_number":308,"context_line":"                     \u0027vlan_transparent\u0027, \u0027is_default\u0027,"},{"line_number":309,"context_line":"                     \u0027availability_zone_hints\u0027) + (arg_list or ())):"},{"line_number":310,"context_line":"            # Arg must be present"},{"line_number":311,"context_line":"            if arg in kwargs:"}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_eabc4907","line":308,"in_reply_to":"ff82abbf_8c97bd3a","updated":"2017-12-08 19:12:00.000000000","message":"Yes. We used it in the newly added test cases.","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"}],"neutron/tests/unit/extensions/test_default_networks.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":38,"context_line":"            new_net \u003d super(DefaultNetworksExtensionTestPlugin,"},{"line_number":39,"context_line":"                            self).create_network(context, network)"},{"line_number":40,"context_line":"            # Update the vlan_transparent in the database"},{"line_number":41,"context_line":"            n \u003d network[\u0027network\u0027]"},{"line_number":42,"context_line":"            if \u0027is_default\u0027 not in n:"},{"line_number":43,"context_line":"                n[\u0027is_default\u0027] \u003d False"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_2cd471e8","line":40,"range":{"start_line":40,"start_character":14,"end_line":40,"end_character":57},"updated":"2017-11-28 22:53:53.000000000","message":"is this comment actual?","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":38,"context_line":"            new_net \u003d super(DefaultNetworksExtensionTestPlugin,"},{"line_number":39,"context_line":"                            self).create_network(context, network)"},{"line_number":40,"context_line":"            # Update the vlan_transparent in the database"},{"line_number":41,"context_line":"            n \u003d network[\u0027network\u0027]"},{"line_number":42,"context_line":"            if \u0027is_default\u0027 not in n:"},{"line_number":43,"context_line":"                n[\u0027is_default\u0027] \u003d False"}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_0abacd08","line":40,"range":{"start_line":40,"start_character":14,"end_line":40,"end_character":57},"in_reply_to":"ff82abbf_2cd471e8","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    \"\"\""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def setUp(self):"},{"line_number":68,"context_line":"        plugin \u003d (\u0027neutron.tests.unit.extensions.test_default_networks.\u0027 +"},{"line_number":69,"context_line":"                  \u0027DefaultNetworksExtensionTestPlugin\u0027)"},{"line_number":70,"context_line":"        super(DefaultNetworksExtensionTestCase,"},{"line_number":71,"context_line":"              self).setUp(plugin\u003dplugin)"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_2ced51b6","line":68,"range":{"start_line":68,"start_character":73,"end_line":68,"end_character":74},"updated":"2017-11-28 22:53:53.000000000","message":"this is not necessary","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    \"\"\""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def setUp(self):"},{"line_number":68,"context_line":"        plugin \u003d (\u0027neutron.tests.unit.extensions.test_default_networks.\u0027 +"},{"line_number":69,"context_line":"                  \u0027DefaultNetworksExtensionTestPlugin\u0027)"},{"line_number":70,"context_line":"        super(DefaultNetworksExtensionTestCase,"},{"line_number":71,"context_line":"              self).setUp(plugin\u003dplugin)"}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_ca3dc58f","line":68,"range":{"start_line":68,"start_character":73,"end_line":68,"end_character":74},"in_reply_to":"ff82abbf_2ced51b6","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        super(DefaultNetworksExtensionTestCase,"},{"line_number":71,"context_line":"              self).setUp(plugin\u003dplugin)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def _create_network(self, fmt, name, admin_state_up,"},{"line_number":74,"context_line":"                        arg_list\u003dNone, set_context\u003dFalse, tenant_id\u003dNone,"},{"line_number":75,"context_line":"                        **kwargs):"},{"line_number":76,"context_line":"        tenant_id \u003d tenant_id or self._tenant_id"},{"line_number":77,"context_line":"        data \u003d {\u0027network\u0027: {\u0027name\u0027: name,"},{"line_number":78,"context_line":"                            \u0027admin_state_up\u0027: admin_state_up,"},{"line_number":79,"context_line":"                            \u0027tenant_id\u0027: tenant_id}}"},{"line_number":80,"context_line":"        for arg in ((\u0027admin_state_up\u0027, \u0027tenant_id\u0027, \u0027shared\u0027,"},{"line_number":81,"context_line":"                     \u0027vlan_transparent\u0027, \u0027is_default\u0027,"},{"line_number":82,"context_line":"                     \u0027availability_zone_hints\u0027) + (arg_list or ())):"},{"line_number":83,"context_line":"            # Arg must be present"},{"line_number":84,"context_line":"            if arg in kwargs:"},{"line_number":85,"context_line":"                data[\u0027network\u0027][arg] \u003d kwargs[arg]"},{"line_number":86,"context_line":"        network_req \u003d self.new_create_request(\u0027networks\u0027, data, fmt)"},{"line_number":87,"context_line":"        if set_context and tenant_id:"},{"line_number":88,"context_line":"            # create a specific auth context for this request"},{"line_number":89,"context_line":"            network_req.environ[\u0027neutron.context\u0027] \u003d context.Context("},{"line_number":90,"context_line":"                \u0027\u0027, tenant_id)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        return network_req.get_response(self.api)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_create_default_network(self):"},{"line_number":95,"context_line":"        name \u003d \u0027default_net\u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_4c58d586","line":92,"range":{"start_line":73,"start_character":0,"end_line":92,"end_character":49},"updated":"2017-11-28 22:53:53.000000000","message":"what is the difference between this method and method from parent class?","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        super(DefaultNetworksExtensionTestCase,"},{"line_number":71,"context_line":"              self).setUp(plugin\u003dplugin)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def _create_network(self, fmt, name, admin_state_up,"},{"line_number":74,"context_line":"                        arg_list\u003dNone, set_context\u003dFalse, tenant_id\u003dNone,"},{"line_number":75,"context_line":"                        **kwargs):"},{"line_number":76,"context_line":"        tenant_id \u003d tenant_id or self._tenant_id"},{"line_number":77,"context_line":"        data \u003d {\u0027network\u0027: {\u0027name\u0027: name,"},{"line_number":78,"context_line":"                            \u0027admin_state_up\u0027: admin_state_up,"},{"line_number":79,"context_line":"                            \u0027tenant_id\u0027: tenant_id}}"},{"line_number":80,"context_line":"        for arg in ((\u0027admin_state_up\u0027, \u0027tenant_id\u0027, \u0027shared\u0027,"},{"line_number":81,"context_line":"                     \u0027vlan_transparent\u0027, \u0027is_default\u0027,"},{"line_number":82,"context_line":"                     \u0027availability_zone_hints\u0027) + (arg_list or ())):"},{"line_number":83,"context_line":"            # Arg must be present"},{"line_number":84,"context_line":"            if arg in kwargs:"},{"line_number":85,"context_line":"                data[\u0027network\u0027][arg] \u003d kwargs[arg]"},{"line_number":86,"context_line":"        network_req \u003d self.new_create_request(\u0027networks\u0027, data, fmt)"},{"line_number":87,"context_line":"        if set_context and tenant_id:"},{"line_number":88,"context_line":"            # create a specific auth context for this request"},{"line_number":89,"context_line":"            network_req.environ[\u0027neutron.context\u0027] \u003d context.Context("},{"line_number":90,"context_line":"                \u0027\u0027, tenant_id)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        return network_req.get_response(self.api)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_create_default_network(self):"},{"line_number":95,"context_line":"        name \u003d \u0027default_net\u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_8a433d13","line":92,"range":{"start_line":73,"start_character":0,"end_line":92,"end_character":49},"in_reply_to":"ff82abbf_4c58d586","updated":"2017-12-08 19:12:00.000000000","message":"No difference. I removed it.","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"683af3c26f244c202df5fc8ee8086811561d638d","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class DefaultNetworksExtensionTestPlugin(db_base_plugin_v2.NeutronDbPluginV2,"},{"line_number":24,"context_line":"                                         dn_db.DefaultNetworkMixin):"},{"line_number":25,"context_line":"    \"\"\"Test plugin to mixin the default subnet pools extension."},{"line_number":26,"context_line":"    \"\"\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    supported_extension_aliases \u003d [default_networks.ALIAS]"}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_f17a8386","line":25,"range":{"start_line":25,"start_character":40,"end_line":25,"end_character":62},"updated":"2018-03-26 10:57:50.000000000","message":"subnet pools?","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"1ad4a49e35cbe535ab376b6313f3802d9b83d676","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class DefaultNetworksExtensionTestPlugin(db_base_plugin_v2.NeutronDbPluginV2,"},{"line_number":24,"context_line":"                                         dn_db.DefaultNetworkMixin):"},{"line_number":25,"context_line":"    \"\"\"Test plugin to mixin the default subnet pools extension."},{"line_number":26,"context_line":"    \"\"\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    supported_extension_aliases \u003d [default_networks.ALIAS]"}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_a8630eb1","line":25,"range":{"start_line":25,"start_character":40,"end_line":25,"end_character":62},"in_reply_to":"bf659307_f17a8386","updated":"2018-03-27 19:24:53.000000000","message":"Done","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"683af3c26f244c202df5fc8ee8086811561d638d","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        with self.network(name\u003dname,"},{"line_number":77,"context_line":"                          is_project_default\u003dis_project_default) as net:"},{"line_number":78,"context_line":"            for k, v in keys:"},{"line_number":79,"context_line":"                self.assertEqual(net[\u0027network\u0027][k], v)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @ddt.data((True, True), (True, False), (False, True), (False, False))"},{"line_number":82,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_d183bf55","line":79,"updated":"2018-03-26 10:57:50.000000000","message":"You should use pattern:\n\n    self.assertEqual(expected, actual)\n\nand IMO here \"v\" is expected and net[\u0027network\u0027][k] is actual, right?","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"1ad4a49e35cbe535ab376b6313f3802d9b83d676","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        with self.network(name\u003dname,"},{"line_number":77,"context_line":"                          is_project_default\u003dis_project_default) as net:"},{"line_number":78,"context_line":"            for k, v in keys:"},{"line_number":79,"context_line":"                self.assertEqual(net[\u0027network\u0027][k], v)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @ddt.data((True, True), (True, False), (False, True), (False, False))"},{"line_number":82,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_485a72f3","line":79,"in_reply_to":"bf659307_d183bf55","updated":"2018-03-27 19:24:53.000000000","message":"Done","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"683af3c26f244c202df5fc8ee8086811561d638d","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                                          data,"},{"line_number":88,"context_line":"                                          network[\u0027network\u0027][\u0027id\u0027])"},{"line_number":89,"context_line":"            res \u003d self.deserialize(self.fmt, req.get_response(self.api))"},{"line_number":90,"context_line":"            self.assertEqual(res[\u0027network\u0027][\u0027is_project_default\u0027], updated)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def test_update_network_set_is_project_default_disallowed(self):"},{"line_number":93,"context_line":"        with self.network(is_project_default\u003dFalse) as network,\\"}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_b182cb4e","line":90,"updated":"2018-03-26 10:57:50.000000000","message":"ditto","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"1ad4a49e35cbe535ab376b6313f3802d9b83d676","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                                          data,"},{"line_number":88,"context_line":"                                          network[\u0027network\u0027][\u0027id\u0027])"},{"line_number":89,"context_line":"            res \u003d self.deserialize(self.fmt, req.get_response(self.api))"},{"line_number":90,"context_line":"            self.assertEqual(res[\u0027network\u0027][\u0027is_project_default\u0027], updated)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def test_update_network_set_is_project_default_disallowed(self):"},{"line_number":93,"context_line":"        with self.network(is_project_default\u003dFalse) as network,\\"}],"source_content_type":"text/x-python","patch_set":45,"id":"bf659307_685df6e7","line":90,"in_reply_to":"bf659307_b182cb4e","updated":"2018-03-27 19:24:53.000000000","message":"Done","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"}],"neutron/tests/unit/plugins/ml2/extensions/test_default_network.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 NEC Corporation.  All rights reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":22,"id":"ff82abbf_ccc94526","line":1,"updated":"2017-11-28 22:53:53.000000000","message":"is it good company?","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 NEC Corporation.  All rights reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":22,"id":"df87a7cf_aa6161ab","line":1,"in_reply_to":"ff82abbf_ccc94526","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d68e2419add998e13d58db6eddbf431335097149","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"            driver \u003d default_network.DefaultNetworkExtensionDriver()"},{"line_number":41,"context_line":"            driver.extend_network_dict(session, db_data, response_data)"},{"line_number":42,"context_line":"            self.assertTrue(response_data[\u0027is_default\u0027] is False)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_show_network_has_is_default(self):"},{"line_number":45,"context_line":"        with self.network(is_default\u003dTrue) as network:"}],"source_content_type":"text/x-python","patch_set":32,"id":"5f93b717_42752663","line":42,"range":{"start_line":42,"start_character":12,"end_line":42,"end_character":27},"updated":"2018-01-31 13:52:42.000000000","message":"please use assertFalse","commit_id":"28a544324d8313a251bbe22b3582503e4528f9f5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d68e2419add998e13d58db6eddbf431335097149","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                                        network[\u0027network\u0027][\u0027id\u0027],"},{"line_number":48,"context_line":"                                        self.fmt)"},{"line_number":49,"context_line":"            n \u003d self.deserialize(self.fmt, req.get_response(self.api))"},{"line_number":50,"context_line":"            self.assertTrue(n[\u0027network\u0027][\u0027is_default\u0027] is True)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_network_create_is_default(self):"},{"line_number":53,"context_line":"        admin_ctx \u003d context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":32,"id":"5f93b717_a25c2aed","line":50,"range":{"start_line":50,"start_character":55,"end_line":50,"end_character":62},"updated":"2018-01-31 13:52:42.000000000","message":"not necessary","commit_id":"28a544324d8313a251bbe22b3582503e4528f9f5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d68e2419add998e13d58db6eddbf431335097149","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                 \u0027status\u0027: \u0027ACTIVE\u0027}}"},{"line_number":61,"context_line":"        try:"},{"line_number":62,"context_line":"            network \u003d self.plugin.create_network(admin_ctx, args)"},{"line_number":63,"context_line":"            _value \u003d network[\u0027is_default\u0027]"},{"line_number":64,"context_line":"        finally:"},{"line_number":65,"context_line":"            if network:"},{"line_number":66,"context_line":"                self.plugin.delete_network(admin_ctx, network[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":32,"id":"5f93b717_a2118a06","line":63,"updated":"2018-01-31 13:52:42.000000000","message":"do You really need it? Can\u0027t You use network[\u0027is_default\u0027] directly in L67?","commit_id":"28a544324d8313a251bbe22b3582503e4528f9f5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d68e2419add998e13d58db6eddbf431335097149","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        finally:"},{"line_number":65,"context_line":"            if network:"},{"line_number":66,"context_line":"                self.plugin.delete_network(admin_ctx, network[\u0027id\u0027])"},{"line_number":67,"context_line":"        self.assertTrue(_value is True)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def test_network_update_is_default(self):"},{"line_number":70,"context_line":"        with self.network() as network:"}],"source_content_type":"text/x-python","patch_set":32,"id":"5f93b717_22681a85","line":67,"range":{"start_line":67,"start_character":31,"end_line":67,"end_character":38},"updated":"2018-01-31 13:52:42.000000000","message":"not needed","commit_id":"28a544324d8313a251bbe22b3582503e4528f9f5"}],"releasenotes/notes/add-is-default-to-network-6c400fca25a0da81.yaml":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"a292189bc07cc551719166461be4220a9b853786","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Support specifying a network as default or non-default. Previously,"},{"line_number":5,"context_line":"    users could specify an external network as default. In this release,"},{"line_number":6,"context_line":"    this ability is generalized for internal networks as well. In particular,"},{"line_number":7,"context_line":"    Users can create or update a network as default network, and check"},{"line_number":8,"context_line":"    if an existing network is a default network."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    When a user creates or updates a network, neutron will perform the"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"ff82abbf_850d0e39","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":5},"updated":"2017-11-20 20:29:50.000000000","message":"u","commit_id":"bca03229dc067c1ecabed272ac6ba019ca4640c4"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"6dce2c51928397d6dd615b0dbebc30ab192a1b6e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Support specifying a network as default or non-default. Previously,"},{"line_number":5,"context_line":"    users could specify an external network as default. In this release,"},{"line_number":6,"context_line":"    this ability is generalized for internal networks as well. In particular,"},{"line_number":7,"context_line":"    Users can create or update a network as default network, and check"},{"line_number":8,"context_line":"    if an existing network is a default network."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    When a user creates or updates a network, neutron will perform the"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"ff82abbf_76200df8","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":5},"in_reply_to":"ff82abbf_850d0e39","updated":"2017-11-28 19:25:51.000000000","message":"Done","commit_id":"bca03229dc067c1ecabed272ac6ba019ca4640c4"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"a292189bc07cc551719166461be4220a9b853786","unresolved":false,"context_lines":[{"line_number":16,"context_line":"upgrade:"},{"line_number":17,"context_line":"  - |"},{"line_number":18,"context_line":"    The network property \u0027is_default\u0027 is populated differently."},{"line_number":19,"context_line":"    Its value was either true or false for external networks, and is none"},{"line_number":20,"context_line":"    for internal networks. Right now, its value is either true or false"},{"line_number":21,"context_line":"    for all types of networks."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"ff82abbf_4a2155b4","line":19,"range":{"start_line":19,"start_character":4,"end_line":19,"end_character":7},"updated":"2017-11-20 20:29:50.000000000","message":"Previously, its","commit_id":"bca03229dc067c1ecabed272ac6ba019ca4640c4"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"a292189bc07cc551719166461be4220a9b853786","unresolved":false,"context_lines":[{"line_number":16,"context_line":"upgrade:"},{"line_number":17,"context_line":"  - |"},{"line_number":18,"context_line":"    The network property \u0027is_default\u0027 is populated differently."},{"line_number":19,"context_line":"    Its value was either true or false for external networks, and is none"},{"line_number":20,"context_line":"    for internal networks. Right now, its value is either true or false"},{"line_number":21,"context_line":"    for all types of networks."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"ff82abbf_aa190189","line":19,"range":{"start_line":19,"start_character":66,"end_line":19,"end_character":68},"updated":"2017-11-20 20:29:50.000000000","message":"was","commit_id":"bca03229dc067c1ecabed272ac6ba019ca4640c4"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"6dce2c51928397d6dd615b0dbebc30ab192a1b6e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"upgrade:"},{"line_number":17,"context_line":"  - |"},{"line_number":18,"context_line":"    The network property \u0027is_default\u0027 is populated differently."},{"line_number":19,"context_line":"    Its value was either true or false for external networks, and is none"},{"line_number":20,"context_line":"    for internal networks. Right now, its value is either true or false"},{"line_number":21,"context_line":"    for all types of networks."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"ff82abbf_961b51c8","line":19,"range":{"start_line":19,"start_character":4,"end_line":19,"end_character":7},"in_reply_to":"ff82abbf_4a2155b4","updated":"2017-11-28 19:25:51.000000000","message":"Done","commit_id":"bca03229dc067c1ecabed272ac6ba019ca4640c4"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"6dce2c51928397d6dd615b0dbebc30ab192a1b6e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"upgrade:"},{"line_number":17,"context_line":"  - |"},{"line_number":18,"context_line":"    The network property \u0027is_default\u0027 is populated differently."},{"line_number":19,"context_line":"    Its value was either true or false for external networks, and is none"},{"line_number":20,"context_line":"    for internal networks. Right now, its value is either true or false"},{"line_number":21,"context_line":"    for all types of networks."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"ff82abbf_367cc5ea","line":19,"range":{"start_line":19,"start_character":66,"end_line":19,"end_character":68},"in_reply_to":"ff82abbf_aa190189","updated":"2017-11-28 19:25:51.000000000","message":"Done","commit_id":"bca03229dc067c1ecabed272ac6ba019ca4640c4"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"a292189bc07cc551719166461be4220a9b853786","unresolved":false,"context_lines":[{"line_number":17,"context_line":"  - |"},{"line_number":18,"context_line":"    The network property \u0027is_default\u0027 is populated differently."},{"line_number":19,"context_line":"    Its value was either true or false for external networks, and is none"},{"line_number":20,"context_line":"    for internal networks. Right now, its value is either true or false"},{"line_number":21,"context_line":"    for all types of networks."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"ff82abbf_ca1ec56f","line":20,"range":{"start_line":20,"start_character":27,"end_line":20,"end_character":36},"updated":"2017-11-20 20:29:50.000000000","message":"After this change","commit_id":"bca03229dc067c1ecabed272ac6ba019ca4640c4"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"6dce2c51928397d6dd615b0dbebc30ab192a1b6e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"  - |"},{"line_number":18,"context_line":"    The network property \u0027is_default\u0027 is populated differently."},{"line_number":19,"context_line":"    Its value was either true or false for external networks, and is none"},{"line_number":20,"context_line":"    for internal networks. Right now, its value is either true or false"},{"line_number":21,"context_line":"    for all types of networks."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"ff82abbf_3665a546","line":20,"range":{"start_line":20,"start_character":27,"end_line":20,"end_character":36},"in_reply_to":"ff82abbf_ca1ec56f","updated":"2017-11-28 19:25:51.000000000","message":"Done","commit_id":"bca03229dc067c1ecabed272ac6ba019ca4640c4"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Support specifying a network as default or non-default. Previously,"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"ff82abbf_8cb6dd89","line":1,"updated":"2017-11-28 22:53:53.000000000","message":"maybe this feature deserves to short \"prelude\" section?","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Support specifying a network as default or non-default. Previously,"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"df87a7cf_2ad23101","line":1,"in_reply_to":"ff82abbf_8cb6dd89","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3772c8bff70844242d652b5ee5cd2ee236b47417","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    The network property \u0027is_default\u0027 is populated differently."},{"line_number":19,"context_line":"    Previously, its value was either true or false for external networks,"},{"line_number":20,"context_line":"    and was none for internal networks. After this change, its value is"},{"line_number":21,"context_line":"    either true or false for all types of networks."}],"source_content_type":"text/x-yaml","patch_set":22,"id":"ff82abbf_6c74b9cf","line":21,"updated":"2017-11-28 22:53:53.000000000","message":"Shouldn\u0027t You add here info about new tables in DB? and population of existing external networks to this table?","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e54b500a0a07f0254943cfcbe6ae9015b15f40d5","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    The network property \u0027is_default\u0027 is populated differently."},{"line_number":19,"context_line":"    Previously, its value was either true or false for external networks,"},{"line_number":20,"context_line":"    and was none for internal networks. After this change, its value is"},{"line_number":21,"context_line":"    either true or false for all types of networks."}],"source_content_type":"text/x-yaml","patch_set":22,"id":"df87a7cf_6a57d9cb","line":21,"in_reply_to":"ff82abbf_6c74b9cf","updated":"2017-12-08 19:12:00.000000000","message":"Done","commit_id":"d97bb4eaece1fca7bf4fa626597943064a1f9379"}],"releasenotes/notes/add-is-project-default-to-network-6c400fca25a0da81.yaml":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"683af3c26f244c202df5fc8ee8086811561d638d","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    In this release, users can create or update a network as the default"},{"line_number":7,"context_line":"    network, and check if an existing network is a default network."},{"line_number":8,"context_line":"    When a user creates or updates a network, neutron will ensure"},{"line_number":9,"context_line":"    at most one default network is allowed per tenant."},{"line_number":10,"context_line":"    The request will be rejected if it violates the rule above."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    Note that this feature is different from the external default network."}],"source_content_type":"text/x-yaml","patch_set":45,"id":"bf659307_91cb07a4","line":9,"range":{"start_line":9,"start_character":47,"end_line":9,"end_character":53},"updated":"2018-03-26 10:57:50.000000000","message":"project?","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"1ad4a49e35cbe535ab376b6313f3802d9b83d676","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    In this release, users can create or update a network as the default"},{"line_number":7,"context_line":"    network, and check if an existing network is a default network."},{"line_number":8,"context_line":"    When a user creates or updates a network, neutron will ensure"},{"line_number":9,"context_line":"    at most one default network is allowed per tenant."},{"line_number":10,"context_line":"    The request will be rejected if it violates the rule above."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    Note that this feature is different from the external default network."}],"source_content_type":"text/x-yaml","patch_set":45,"id":"bf659307_08747a67","line":9,"range":{"start_line":9,"start_character":47,"end_line":9,"end_character":53},"in_reply_to":"bf659307_91cb07a4","updated":"2018-03-27 19:24:53.000000000","message":"Done","commit_id":"b8085806913f0d965e11d99fa20ae048a72bf58c"}],"releasenotes/notes/bug-1690439-add-is-default-to-network-6c400fca25a0da81.yaml":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"4e90f421d8b960f08a97e09746ce358c80e9b8b7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Support specifying a network as default or non-default. In before,"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3f4b6375_52a181f7","line":1,"updated":"2017-10-26 01:29:25.000000000","message":"Remove \"bug-1690439-\" from file name. We don\u0027t need to know bug number from the file name.","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"c1c68bffe6794f7be9a32336d5b9dcce380a28c2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Support specifying a network as default or non-default. In before,"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"1f485f77_fd83feca","line":1,"in_reply_to":"3f4b6375_52a181f7","updated":"2017-11-15 00:08:59.000000000","message":"Done","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4f02fd5ff0b1e8f1eab2bfa2ff1b80dbcbeccee5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Support specifying a network as default or non-default. In before,"},{"line_number":5,"context_line":"    users can specify an external network as default. In this release,"},{"line_number":6,"context_line":"    this ability is generalized for internal networks as well. In particular,"},{"line_number":7,"context_line":"    Users can create or update a network as default network, and check"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3f4b6375_c4d8d31f","line":4,"range":{"start_line":4,"start_character":60,"end_line":4,"end_character":69},"updated":"2017-10-27 23:47:15.000000000","message":"Previously","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"c1c68bffe6794f7be9a32336d5b9dcce380a28c2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Support specifying a network as default or non-default. In before,"},{"line_number":5,"context_line":"    users can specify an external network as default. In this release,"},{"line_number":6,"context_line":"    this ability is generalized for internal networks as well. In particular,"},{"line_number":7,"context_line":"    Users can create or update a network as default network, and check"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"1f485f77_dd8602dc","line":4,"range":{"start_line":4,"start_character":60,"end_line":4,"end_character":69},"in_reply_to":"3f4b6375_c4d8d31f","updated":"2017-11-15 00:08:59.000000000","message":"Done","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4f02fd5ff0b1e8f1eab2bfa2ff1b80dbcbeccee5","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Support specifying a network as default or non-default. In before,"},{"line_number":5,"context_line":"    users can specify an external network as default. In this release,"},{"line_number":6,"context_line":"    this ability is generalized for internal networks as well. In particular,"},{"line_number":7,"context_line":"    Users can create or update a network as default network, and check"},{"line_number":8,"context_line":"    if an existing network is a default network."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3f4b6375_84041b80","line":5,"range":{"start_line":5,"start_character":10,"end_line":5,"end_character":13},"updated":"2017-10-27 23:47:15.000000000","message":"could","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"c1c68bffe6794f7be9a32336d5b9dcce380a28c2","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Support specifying a network as default or non-default. In before,"},{"line_number":5,"context_line":"    users can specify an external network as default. In this release,"},{"line_number":6,"context_line":"    this ability is generalized for internal networks as well. In particular,"},{"line_number":7,"context_line":"    Users can create or update a network as default network, and check"},{"line_number":8,"context_line":"    if an existing network is a default network."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"1f485f77_bd6d8633","line":5,"range":{"start_line":5,"start_character":10,"end_line":5,"end_character":13},"in_reply_to":"3f4b6375_84041b80","updated":"2017-11-15 00:08:59.000000000","message":"Done","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4f02fd5ff0b1e8f1eab2bfa2ff1b80dbcbeccee5","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    Users can create or update a network as default network, and check"},{"line_number":8,"context_line":"    if an existing network is a default network."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    When a user create or update a network, neutron will perform the"},{"line_number":11,"context_line":"    following validations"},{"line_number":12,"context_line":"    * At most one default external network is allowed globally."},{"line_number":13,"context_line":"    * At most one default shared network is allowed globally."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3f4b6375_e4f4ef89","line":10,"range":{"start_line":10,"start_character":16,"end_line":10,"end_character":32},"updated":"2017-10-27 23:47:15.000000000","message":"creates or updates","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"c1c68bffe6794f7be9a32336d5b9dcce380a28c2","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    Users can create or update a network as default network, and check"},{"line_number":8,"context_line":"    if an existing network is a default network."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    When a user create or update a network, neutron will perform the"},{"line_number":11,"context_line":"    following validations"},{"line_number":12,"context_line":"    * At most one default external network is allowed globally."},{"line_number":13,"context_line":"    * At most one default shared network is allowed globally."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"1f485f77_9d688a21","line":10,"range":{"start_line":10,"start_character":16,"end_line":10,"end_character":32},"in_reply_to":"3f4b6375_e4f4ef89","updated":"2017-11-15 00:08:59.000000000","message":"Done","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4f02fd5ff0b1e8f1eab2bfa2ff1b80dbcbeccee5","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    * At most one default external network is allowed globally."},{"line_number":13,"context_line":"    * At most one default shared network is allowed globally."},{"line_number":14,"context_line":"    * At most one default network is allowed per tenant."},{"line_number":15,"context_line":"    The request will be rejected if it violates any of above rules."},{"line_number":16,"context_line":"upgrade:"},{"line_number":17,"context_line":"  - |"},{"line_number":18,"context_line":"    The network property \u0027is_default\u0027 is populated differently."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3f4b6375_8429bbf3","line":15,"range":{"start_line":15,"start_character":55,"end_line":15,"end_character":60},"updated":"2017-10-27 23:47:15.000000000","message":"the above","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"c1c68bffe6794f7be9a32336d5b9dcce380a28c2","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    * At most one default external network is allowed globally."},{"line_number":13,"context_line":"    * At most one default shared network is allowed globally."},{"line_number":14,"context_line":"    * At most one default network is allowed per tenant."},{"line_number":15,"context_line":"    The request will be rejected if it violates any of above rules."},{"line_number":16,"context_line":"upgrade:"},{"line_number":17,"context_line":"  - |"},{"line_number":18,"context_line":"    The network property \u0027is_default\u0027 is populated differently."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"1f485f77_7d770e04","line":15,"range":{"start_line":15,"start_character":55,"end_line":15,"end_character":60},"in_reply_to":"3f4b6375_8429bbf3","updated":"2017-11-15 00:08:59.000000000","message":"Done","commit_id":"e4a573d0bdf900f54c4502a462c71fd0ace5bc33"}]}
