)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"da9765baee78dc249a069a82eb5281aec7b17146","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3f79a3b5_16ea74d7","line":14,"updated":"2018-08-30 21:35:43.000000000","message":"We should add (beneath Change-Id):\n\nDepends-On: https://review.openstack.org/#/c/583707\n\nhere.","commit_id":"d9d9f3a297f54bc9975258f4d661122a059c1295"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"ee8ef073f6be6302da54dd62c59f04a6b6ac3849","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3f79a3b5_397c401f","line":14,"in_reply_to":"3f79a3b5_16ea74d7","updated":"2018-08-31 03:46:47.000000000","message":"Done","commit_id":"d9d9f3a297f54bc9975258f4d661122a059c1295"}],"patrole_tempest_plugin/tests/api/network/test_subnetpools_rbac.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"e44f860b8f5772fd2f1ccb4a3b018366e79315cf","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            self._create_subnetpool()"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":67,"context_line":"                                 rule\u003d\"create_subnetpool:is_default\")"},{"line_number":68,"context_line":"    @decorators.idempotent_id(\u00271b5509fd-2c32-44a8-a786-1b6ca162dbd2\u0027)"},{"line_number":69,"context_line":"    def test_create_subnetpool_default(self):"},{"line_number":70,"context_line":"        \"\"\"Create subnetpool."}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_a10a0324","line":67,"range":{"start_line":67,"start_character":33,"end_line":67,"end_character":37},"updated":"2018-07-17 23:02:28.000000000","message":"rules\u003d[\"create_subnetpool\", \"create_subnetpool:is_default\"]","commit_id":"65fff256573d04966b04423494ff31ae499021e9"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"cea718970198e43a3d084be37f0e514bd0fdd2b2","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            self._create_subnetpool()"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":67,"context_line":"                                 rule\u003d\"create_subnetpool:is_default\")"},{"line_number":68,"context_line":"    @decorators.idempotent_id(\u00271b5509fd-2c32-44a8-a786-1b6ca162dbd2\u0027)"},{"line_number":69,"context_line":"    def test_create_subnetpool_default(self):"},{"line_number":70,"context_line":"        \"\"\"Create subnetpool."}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_86e7c6ab","line":67,"range":{"start_line":67,"start_character":33,"end_line":67,"end_character":37},"in_reply_to":"5f7c97a3_a10a0324","updated":"2018-07-18 16:39:23.000000000","message":"Done","commit_id":"65fff256573d04966b04423494ff31ae499021e9"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"e44f860b8f5772fd2f1ccb4a3b018366e79315cf","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                                 rule\u003d\"create_subnetpool:is_default\")"},{"line_number":68,"context_line":"    @decorators.idempotent_id(\u00271b5509fd-2c32-44a8-a786-1b6ca162dbd2\u0027)"},{"line_number":69,"context_line":"    def test_create_subnetpool_default(self):"},{"line_number":70,"context_line":"        \"\"\"Create subnetpool."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        RBAC test for the neutron create_subnetpool:is_default policy"},{"line_number":73,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_0112d761","line":70,"range":{"start_line":70,"start_character":18,"end_line":70,"end_character":28},"updated":"2018-07-17 23:02:28.000000000","message":"default subnetpool","commit_id":"65fff256573d04966b04423494ff31ae499021e9"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"cea718970198e43a3d084be37f0e514bd0fdd2b2","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                                 rule\u003d\"create_subnetpool:is_default\")"},{"line_number":68,"context_line":"    @decorators.idempotent_id(\u00271b5509fd-2c32-44a8-a786-1b6ca162dbd2\u0027)"},{"line_number":69,"context_line":"    def test_create_subnetpool_default(self):"},{"line_number":70,"context_line":"        \"\"\"Create subnetpool."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        RBAC test for the neutron create_subnetpool:is_default policy"},{"line_number":73,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_26003235","line":70,"range":{"start_line":70,"start_character":18,"end_line":70,"end_character":28},"in_reply_to":"5f7c97a3_0112d761","updated":"2018-07-18 16:39:23.000000000","message":"Done","commit_id":"65fff256573d04966b04423494ff31ae499021e9"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"e44f860b8f5772fd2f1ccb4a3b018366e79315cf","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        RBAC test for the neutron create_subnetpool:is_default policy"},{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        def_pools \u003d self.subnetpools_client.list_subnetpools(is_default\u003dTrue)"},{"line_number":75,"context_line":"        for default_pool in def_pools[\"subnetpools\"]:"},{"line_number":76,"context_line":"            self.subnetpools_client.update_subnetpool(default_pool[\"id\"],"},{"line_number":77,"context_line":"                                                      is_default\u003dFalse)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"            self.addCleanup(self.subnetpools_client.update_subnetpool,"},{"line_number":80,"context_line":"                            default_pool[\"id\"], is_default\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_69493164","line":77,"range":{"start_line":74,"start_character":8,"end_line":77,"end_character":71},"updated":"2018-07-17 23:02:28.000000000","message":"Should include a comment above this explaining why this is necessary.","commit_id":"65fff256573d04966b04423494ff31ae499021e9"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"cea718970198e43a3d084be37f0e514bd0fdd2b2","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        RBAC test for the neutron create_subnetpool:is_default policy"},{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        def_pools \u003d self.subnetpools_client.list_subnetpools(is_default\u003dTrue)"},{"line_number":75,"context_line":"        for default_pool in def_pools[\"subnetpools\"]:"},{"line_number":76,"context_line":"            self.subnetpools_client.update_subnetpool(default_pool[\"id\"],"},{"line_number":77,"context_line":"                                                      is_default\u003dFalse)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"            self.addCleanup(self.subnetpools_client.update_subnetpool,"},{"line_number":80,"context_line":"                            default_pool[\"id\"], is_default\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_46fd2e39","line":77,"range":{"start_line":74,"start_character":8,"end_line":77,"end_character":71},"in_reply_to":"5f7c97a3_69493164","updated":"2018-07-18 16:39:23.000000000","message":"Done","commit_id":"65fff256573d04966b04423494ff31ae499021e9"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"e44f860b8f5772fd2f1ccb4a3b018366e79315cf","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                                                      is_default\u003dFalse)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"            self.addCleanup(self.subnetpools_client.update_subnetpool,"},{"line_number":80,"context_line":"                            default_pool[\"id\"], is_default\u003dTrue)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":83,"context_line":"            self._create_subnetpool(is_default\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_491f9559","line":80,"range":{"start_line":80,"start_character":48,"end_line":80,"end_character":63},"updated":"2018-07-17 23:02:28.000000000","message":"This doesn\u0027t appear to be included in API docs for update subnetpool: https://developer.openstack.org/api-ref/network/v2/#update-subnet-pool","commit_id":"65fff256573d04966b04423494ff31ae499021e9"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"0f3b0835dc0b5c01b9b3d3309911c39c8362049d","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                                                      is_default\u003dFalse)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"            self.addCleanup(self.subnetpools_client.update_subnetpool,"},{"line_number":80,"context_line":"                            default_pool[\"id\"], is_default\u003dTrue)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":83,"context_line":"            self._create_subnetpool(is_default\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_1f10a24e","line":80,"range":{"start_line":80,"start_character":48,"end_line":80,"end_character":63},"in_reply_to":"5f7c97a3_376a741a","updated":"2018-07-20 14:47:48.000000000","message":"Done","commit_id":"65fff256573d04966b04423494ff31ae499021e9"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"496699ab387f72f2e78665d5bf7c43a0d7c8d66a","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                                                      is_default\u003dFalse)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"            self.addCleanup(self.subnetpools_client.update_subnetpool,"},{"line_number":80,"context_line":"                            default_pool[\"id\"], is_default\u003dTrue)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":83,"context_line":"            self._create_subnetpool(is_default\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_c3d36b5e","line":80,"range":{"start_line":80,"start_character":48,"end_line":80,"end_character":63},"in_reply_to":"5f7c97a3_40667157","updated":"2018-07-18 19:16:43.000000000","message":"Then we can only wait. Thank!","commit_id":"65fff256573d04966b04423494ff31ae499021e9"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4dc93ddc7cd3d8a90ceb09999ac873927370ba20","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                                                      is_default\u003dFalse)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"            self.addCleanup(self.subnetpools_client.update_subnetpool,"},{"line_number":80,"context_line":"                            default_pool[\"id\"], is_default\u003dTrue)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":83,"context_line":"            self._create_subnetpool(is_default\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_40667157","line":80,"range":{"start_line":80,"start_character":48,"end_line":80,"end_character":63},"in_reply_to":"5f7c97a3_461e8e74","updated":"2018-07-18 18:55:40.000000000","message":"Tempest and QA in general will hold off merging until a Neutron documentation update is made to api-ref to update it to include the parameter. This is so that we know what we are doing is officially supported by the Neutron community. This is because of [0].\n\n[0] https://docs.openstack.org/tempest/latest/REVIEWING.html#api-stability","commit_id":"65fff256573d04966b04423494ff31ae499021e9"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"cea718970198e43a3d084be37f0e514bd0fdd2b2","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                                                      is_default\u003dFalse)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"            self.addCleanup(self.subnetpools_client.update_subnetpool,"},{"line_number":80,"context_line":"                            default_pool[\"id\"], is_default\u003dTrue)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":83,"context_line":"            self._create_subnetpool(is_default\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_461e8e74","line":80,"range":{"start_line":80,"start_character":48,"end_line":80,"end_character":63},"in_reply_to":"5f7c97a3_491f9559","updated":"2018-07-18 16:39:23.000000000","message":"Indeed. But key itself is there and works as expected.\n\nhttps://github.com/openstack/neutron/blob/ceb86366d25a928d7a3773075a7333801ee3dd29/neutron/db/models_v2.py#L238\n\nI think my question is what our actions here? Should we follow code and policy.json, or only documented features?","commit_id":"65fff256573d04966b04423494ff31ae499021e9"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"85ff4d82abc8b3a5a57f783b010e4b4e0afb9b84","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                                                      is_default\u003dFalse)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"            self.addCleanup(self.subnetpools_client.update_subnetpool,"},{"line_number":80,"context_line":"                            default_pool[\"id\"], is_default\u003dTrue)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":83,"context_line":"            self._create_subnetpool(is_default\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_376a741a","line":80,"range":{"start_line":80,"start_character":48,"end_line":80,"end_character":63},"in_reply_to":"5f7c97a3_c3d36b5e","updated":"2018-07-20 04:23:04.000000000","message":"This implementation is needed to make this work. It apparently only enforces the policy for is_default\u003dTrue. It does nothing for is_default\u003dFalse. Manually validated this.","commit_id":"65fff256573d04966b04423494ff31ae499021e9"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"75bd0d150be35d9f15c3773b5e6d9421fa5a0004","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        # so we temporary mark them as is_default\u003dFalse, to let this test pass."},{"line_number":77,"context_line":"        def_pools \u003d self.subnetpools_client.list_subnetpools(is_default\u003dTrue)"},{"line_number":78,"context_line":"        for default_pool in def_pools[\"subnetpools\"]:"},{"line_number":79,"context_line":"            self.subnetpools_client.update_subnetpool(default_pool[\"id\"],"},{"line_number":80,"context_line":"                                                      is_default\u003dFalse)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"            self.addCleanup(self.subnetpools_client.update_subnetpool,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_25bfbffc","line":79,"range":{"start_line":79,"start_character":36,"end_line":79,"end_character":53},"updated":"2018-07-18 23:55:26.000000000","message":"There is an associated policy for this: https://github.com/openstack/neutron/blob/587bbe171ee6e2164d15ddc73cb1b21b91ac5f43/etc/policy.json#L31\n\nFor that should be able to just create a subnetpool, then set is_default\u003dFalse without having to do anything fancy.","commit_id":"b6661a3d09670ba7b866e2cac52a95fcee8164a9"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"36d6a2815bbbe387332be341e1a4e2b36156456c","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        # so we temporary mark them as is_default\u003dFalse, to let this test pass."},{"line_number":77,"context_line":"        def_pools \u003d self.subnetpools_client.list_subnetpools(is_default\u003dTrue)"},{"line_number":78,"context_line":"        for default_pool in def_pools[\"subnetpools\"]:"},{"line_number":79,"context_line":"            self.subnetpools_client.update_subnetpool(default_pool[\"id\"],"},{"line_number":80,"context_line":"                                                      is_default\u003dFalse)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"            self.addCleanup(self.subnetpools_client.update_subnetpool,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_24b9ee14","line":79,"range":{"start_line":79,"start_character":36,"end_line":79,"end_character":53},"in_reply_to":"5f7c97a3_25bfbffc","updated":"2018-07-19 16:15:41.000000000","message":"Hahaha :) Make sense.","commit_id":"b6661a3d09670ba7b866e2cac52a95fcee8164a9"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c0e204bf5409af5f8c3f6e5eb60457cfac50173e","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            self._create_subnetpool()"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":67,"context_line":"                                 rules\u003d[\"update_subnetpool\","},{"line_number":68,"context_line":"                                        \"update_subnetpool:is_default\","},{"line_number":69,"context_line":"                                        \"create_subnetpool\","},{"line_number":70,"context_line":"                                        \"create_subnetpool:is_default\"],"},{"line_number":71,"context_line":"                                 expected_error_codes\u003d[403, 403, 403])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_a27952fb","line":68,"range":{"start_line":67,"start_character":0,"end_line":68,"end_character":71},"updated":"2018-07-20 16:17:45.000000000","message":"Should remove the update ones, the create ones are the only ones that are enforced for create API action.\n\nUpdate ones belong in the update test only.","commit_id":"551b317afbbb3e0fa49689854c7bef168e042f95"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"6af04904b005f0fb515901202c3e7f18ac9f1f50","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            self._create_subnetpool()"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":67,"context_line":"                                 rules\u003d[\"update_subnetpool\","},{"line_number":68,"context_line":"                                        \"update_subnetpool:is_default\","},{"line_number":69,"context_line":"                                        \"create_subnetpool\","},{"line_number":70,"context_line":"                                        \"create_subnetpool:is_default\"],"},{"line_number":71,"context_line":"                                 expected_error_codes\u003d[403, 403, 403])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_0553706d","line":68,"range":{"start_line":67,"start_character":0,"end_line":68,"end_character":71},"in_reply_to":"5f7c97a3_a27952fb","updated":"2018-07-20 17:01:28.000000000","message":"Done","commit_id":"551b317afbbb3e0fa49689854c7bef168e042f95"}]}
