)]}'
{"patrole_tempest_plugin/tests/api/network/test_ports_rbac.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4f38ef5a038d3bfaef43a4fec420cb457f6976df","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    @utils.requires_ext(extension\u003d\u0027binding\u0027, service\u003d\u0027network\u0027)"},{"line_number":120,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":121,"context_line":"                                 rule\u003d\"create_port:mac_learning_enabled\","},{"line_number":122,"context_line":"                                 expected_error_code\u003d403)"},{"line_number":123,"context_line":"    @decorators.idempotent_id(\u002798fa38ab-c2ed-46a0-99f0-59f18cbd257b\u0027)"},{"line_number":124,"context_line":"    def test_create_port_mac_learning_enabled(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_493eb58a","line":121,"range":{"start_line":121,"start_character":33,"end_line":121,"end_character":37},"updated":"2018-07-17 23:10:42.000000000","message":"Should use rules","commit_id":"711c0c159f38ecf5affac5a30a4456d51672e614"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"9fa7b02349312495d7c61d7b8c2335719b88f5d1","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    @utils.requires_ext(extension\u003d\u0027binding\u0027, service\u003d\u0027network\u0027)"},{"line_number":120,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":121,"context_line":"                                 rule\u003d\"create_port:mac_learning_enabled\","},{"line_number":122,"context_line":"                                 expected_error_code\u003d403)"},{"line_number":123,"context_line":"    @decorators.idempotent_id(\u002798fa38ab-c2ed-46a0-99f0-59f18cbd257b\u0027)"},{"line_number":124,"context_line":"    def test_create_port_mac_learning_enabled(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_86b34609","line":121,"range":{"start_line":121,"start_character":33,"end_line":121,"end_character":37},"in_reply_to":"5f7c97a3_493eb58a","updated":"2018-07-18 16:11:25.000000000","message":"Done","commit_id":"711c0c159f38ecf5affac5a30a4456d51672e614"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4f38ef5a038d3bfaef43a4fec420cb457f6976df","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        unrecognized \u003d \"Unrecognized attribute(s) \u0027mac_learning_enabled\u0027\""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        post_body \u003d {\u0027network\u0027: self.network,"},{"line_number":129,"context_line":"                     \u0027mac_learning_enabled\u0027: True}"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":132,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_c9b40520","line":129,"range":{"start_line":129,"start_character":22,"end_line":129,"end_character":42},"updated":"2018-07-17 23:10:42.000000000","message":"This isn\u0027t included as a valid param for create_port docs: https://developer.openstack.org/api-ref/network/v2/#create-port","commit_id":"711c0c159f38ecf5affac5a30a4456d51672e614"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"9fa7b02349312495d7c61d7b8c2335719b88f5d1","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        unrecognized \u003d \"Unrecognized attribute(s) \u0027mac_learning_enabled\u0027\""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        post_body \u003d {\u0027network\u0027: self.network,"},{"line_number":129,"context_line":"                     \u0027mac_learning_enabled\u0027: True}"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":132,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_e696ba4a","line":129,"range":{"start_line":129,"start_character":22,"end_line":129,"end_character":42},"in_reply_to":"5f7c97a3_c9b40520","updated":"2018-07-18 16:11:25.000000000","message":"Indeed. We have it as a policy:\n\nhttps://github.com/openstack/neutron/blob/master/etc/policy.json#L81\n\nBut actual usage happens here:\n\nhttps://github.com/openstack/vmware-nsx/blob/f7a437433450d396d6731a0fb931f141079ce90a/api-ref/rest.md#mac-learning","commit_id":"711c0c159f38ecf5affac5a30a4456d51672e614"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4f38ef5a038d3bfaef43a4fec420cb457f6976df","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    @utils.requires_ext(extension\u003d\u0027binding\u0027, service\u003d\u0027network\u0027)"},{"line_number":140,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":141,"context_line":"                                 rule\u003d\"update_port:mac_learning_enabled\","},{"line_number":142,"context_line":"                                 expected_error_code\u003d403)"},{"line_number":143,"context_line":"    @decorators.idempotent_id(\u002798fa38ab-c2ed-46a0-99f0-59f18cbd257c\u0027)"},{"line_number":144,"context_line":"    def test_update_port_mac_learning_enabled(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_e946a122","line":141,"range":{"start_line":141,"start_character":33,"end_line":141,"end_character":37},"updated":"2018-07-17 23:10:42.000000000","message":"Should use rules","commit_id":"711c0c159f38ecf5affac5a30a4456d51672e614"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"9fa7b02349312495d7c61d7b8c2335719b88f5d1","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    @utils.requires_ext(extension\u003d\u0027binding\u0027, service\u003d\u0027network\u0027)"},{"line_number":140,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":141,"context_line":"                                 rule\u003d\"update_port:mac_learning_enabled\","},{"line_number":142,"context_line":"                                 expected_error_code\u003d403)"},{"line_number":143,"context_line":"    @decorators.idempotent_id(\u002798fa38ab-c2ed-46a0-99f0-59f18cbd257c\u0027)"},{"line_number":144,"context_line":"    def test_update_port_mac_learning_enabled(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_c68b7e1b","line":141,"range":{"start_line":141,"start_character":33,"end_line":141,"end_character":37},"in_reply_to":"5f7c97a3_e946a122","updated":"2018-07-18 16:11:25.000000000","message":"Done","commit_id":"711c0c159f38ecf5affac5a30a4456d51672e614"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4f38ef5a038d3bfaef43a4fec420cb457f6976df","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        unrecognized \u003d \"Unrecognized attribute(s) \u0027mac_learning_enabled\u0027\""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        post_body \u003d {\u0027network\u0027: self.network,"},{"line_number":149,"context_line":"                     \u0027mac_learning_enabled\u0027: False}"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        try:"},{"line_number":152,"context_line":"            port \u003d self.create_port(**post_body)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_693371c5","line":149,"range":{"start_line":149,"start_character":22,"end_line":149,"end_character":42},"updated":"2018-07-17 23:10:42.000000000","message":"Ditto for update_port: https://developer.openstack.org/api-ref/network/v2/#update-port","commit_id":"711c0c159f38ecf5affac5a30a4456d51672e614"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c2d752963bf560ab866fcdda6c97a0379670e4aa","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        unrecognized \u003d \"Unrecognized attribute(s) \u0027mac_learning_enabled\u0027\""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        post_body \u003d {\u0027network\u0027: self.network,"},{"line_number":149,"context_line":"                     \u0027mac_learning_enabled\u0027: False}"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        try:"},{"line_number":152,"context_line":"            port \u003d self.create_port(**post_body)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_a0c3c505","line":149,"range":{"start_line":149,"start_character":22,"end_line":149,"end_character":42},"in_reply_to":"5f7c97a3_267a7224","updated":"2018-07-18 18:59:51.000000000","message":"See response here: https://review.openstack.org/#/c/583367/\n\nWe need to submit an api-ref update to Neutron with the missing API request parameters and get it merged.","commit_id":"711c0c159f38ecf5affac5a30a4456d51672e614"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"9fa7b02349312495d7c61d7b8c2335719b88f5d1","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        unrecognized \u003d \"Unrecognized attribute(s) \u0027mac_learning_enabled\u0027\""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        post_body \u003d {\u0027network\u0027: self.network,"},{"line_number":149,"context_line":"                     \u0027mac_learning_enabled\u0027: False}"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        try:"},{"line_number":152,"context_line":"            port \u003d self.create_port(**post_body)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_267a7224","line":149,"range":{"start_line":149,"start_character":22,"end_line":149,"end_character":42},"in_reply_to":"5f7c97a3_693371c5","updated":"2018-07-18 16:11:25.000000000","message":"Indeed. We have it as a policy:\n\nhttps://github.com/openstack/neutron/blob/master/etc/policy.json#L81\n\nBut actual usage happens here:\n\nhttps://github.com/openstack/vmware-nsx/blob/f7a437433450d396d6731a0fb931f141079ce90a/api-ref/rest.md#mac-learning","commit_id":"711c0c159f38ecf5affac5a30a4456d51672e614"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"1756a4c10d7aaf68e99bb26383b3b9caf74b6c9a","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        unrecognized \u003d \"Unrecognized attribute(s) \u0027mac_learning_enabled\u0027\""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        post_body \u003d {\u0027network\u0027: self.network,"},{"line_number":149,"context_line":"                     \u0027mac_learning_enabled\u0027: False}"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        try:"},{"line_number":152,"context_line":"            port \u003d self.create_port(**post_body)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_036c0331","line":149,"range":{"start_line":149,"start_character":22,"end_line":149,"end_character":42},"in_reply_to":"5f7c97a3_a0c3c505","updated":"2018-07-18 19:37:20.000000000","message":"I somehow afraid they may not accept it. This feature works only with the very special plugin installed (that will bring actual alembic migration for the field). And in non-vmware setup it will just throw an exception.\n\nOn the other hand - it cost nothing to try.","commit_id":"711c0c159f38ecf5affac5a30a4456d51672e614"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4f38ef5a038d3bfaef43a4fec420cb457f6976df","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        \u0027\"create_port:fixed_ips:ip_address\" must be available in the cloud.\u0027)"},{"line_number":164,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":165,"context_line":"                                 rules\u003d[\"create_port\","},{"line_number":166,"context_line":"                                        \"create_port:fixed_ips\","},{"line_number":167,"context_line":"                                        \"create_port:fixed_ips:ip_address\"],"},{"line_number":168,"context_line":"                                 expected_error_codes\u003d[403, 403, 403])"},{"line_number":169,"context_line":"    @decorators.idempotent_id(\u00272551e10d-006a-413c-925a-8c6f834c09ac\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_497b1579","line":166,"range":{"start_line":166,"start_character":41,"end_line":166,"end_character":62},"updated":"2018-07-17 23:10:42.000000000","message":"This isn\u0027t currently found in Neutron\u0027s policy file so is throwing an error. I need to go fix up the failing unit tests in https://review.openstack.org/#/c/577471/ but haven\u0027t had the time. Will try to get to it soon.","commit_id":"711c0c159f38ecf5affac5a30a4456d51672e614"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c2d752963bf560ab866fcdda6c97a0379670e4aa","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        \u0027\"create_port:fixed_ips:ip_address\" must be available in the cloud.\u0027)"},{"line_number":164,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":165,"context_line":"                                 rules\u003d[\"create_port\","},{"line_number":166,"context_line":"                                        \"create_port:fixed_ips\","},{"line_number":167,"context_line":"                                        \"create_port:fixed_ips:ip_address\"],"},{"line_number":168,"context_line":"                                 expected_error_codes\u003d[403, 403, 403])"},{"line_number":169,"context_line":"    @decorators.idempotent_id(\u00272551e10d-006a-413c-925a-8c6f834c09ac\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_6054cd56","line":166,"range":{"start_line":166,"start_character":41,"end_line":166,"end_character":62},"in_reply_to":"5f7c97a3_46ca0e46","updated":"2018-07-18 18:59:51.000000000","message":"The patch set above has 1 +2 (I updated last night), we will see whether it will be merged soon.","commit_id":"711c0c159f38ecf5affac5a30a4456d51672e614"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"9fa7b02349312495d7c61d7b8c2335719b88f5d1","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        \u0027\"create_port:fixed_ips:ip_address\" must be available in the cloud.\u0027)"},{"line_number":164,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":165,"context_line":"                                 rules\u003d[\"create_port\","},{"line_number":166,"context_line":"                                        \"create_port:fixed_ips\","},{"line_number":167,"context_line":"                                        \"create_port:fixed_ips:ip_address\"],"},{"line_number":168,"context_line":"                                 expected_error_codes\u003d[403, 403, 403])"},{"line_number":169,"context_line":"    @decorators.idempotent_id(\u00272551e10d-006a-413c-925a-8c6f834c09ac\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_46ca0e46","line":166,"range":{"start_line":166,"start_character":41,"end_line":166,"end_character":62},"in_reply_to":"5f7c97a3_497b1579","updated":"2018-07-18 16:11:25.000000000","message":"Should I drop this line? Or if we not in rush - lets wait.","commit_id":"711c0c159f38ecf5affac5a30a4456d51672e614"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4f38ef5a038d3bfaef43a4fec420cb457f6976df","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            self.ports_client.show_port(self.port[\u0027id\u0027])"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":221,"context_line":"                                 rule\u003d\"get_port:queue_id\","},{"line_number":222,"context_line":"                                 expected_error_code\u003d404)"},{"line_number":223,"context_line":"    @decorators.idempotent_id(\u0027a9d41cb8-78a2-4b97-985c-44e4064416f5\u0027)"},{"line_number":224,"context_line":"    def test_show_port_queue_id(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_c9864560","line":221,"range":{"start_line":221,"start_character":33,"end_line":221,"end_character":37},"updated":"2018-07-17 23:10:42.000000000","message":"We should be using rules wherever possible, as rule is deprecated.","commit_id":"711c0c159f38ecf5affac5a30a4456d51672e614"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"9fa7b02349312495d7c61d7b8c2335719b88f5d1","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            self.ports_client.show_port(self.port[\u0027id\u0027])"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":221,"context_line":"                                 rule\u003d\"get_port:queue_id\","},{"line_number":222,"context_line":"                                 expected_error_code\u003d404)"},{"line_number":223,"context_line":"    @decorators.idempotent_id(\u0027a9d41cb8-78a2-4b97-985c-44e4064416f5\u0027)"},{"line_number":224,"context_line":"    def test_show_port_queue_id(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_a6020271","line":221,"range":{"start_line":221,"start_character":33,"end_line":221,"end_character":37},"in_reply_to":"5f7c97a3_c9864560","updated":"2018-07-18 16:11:25.000000000","message":"Done","commit_id":"711c0c159f38ecf5affac5a30a4456d51672e614"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"51a73717a9018999fcf7133a7729af19a0a31bb2","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":117,"context_line":"            self.create_port(**post_body)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    @utils.requires_ext(extension\u003d\u0027binding\u0027, service\u003d\u0027network\u0027)"},{"line_number":120,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":121,"context_line":"                                 rules\u003d[\"create_port:mac_learning_enabled\"],"},{"line_number":122,"context_line":"                                 expected_error_codes\u003d[403])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_e469b1f6","line":119,"range":{"start_line":119,"start_character":35,"end_line":119,"end_character":42},"updated":"2018-07-19 20:08:59.000000000","message":"Is binding the actual extension that corresponds to mac_learning_enabled?\n\nhttps://review.openstack.org/#/c/583718/2/api-ref/source/v2/ports.inc seems to suggest otherwise, but I might be mistaken.","commit_id":"51c44f4e0849506a27cdf827a50f12b2d44afd49"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"72ae9f1385033a5d7ffc51f04fac400e2d1bb518","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":117,"context_line":"            self.create_port(**post_body)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    @utils.requires_ext(extension\u003d\u0027binding\u0027, service\u003d\u0027network\u0027)"},{"line_number":120,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":121,"context_line":"                                 rules\u003d[\"create_port:mac_learning_enabled\"],"},{"line_number":122,"context_line":"                                 expected_error_codes\u003d[403])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_e758d389","line":119,"range":{"start_line":119,"start_character":35,"end_line":119,"end_character":42},"in_reply_to":"5f7c97a3_e469b1f6","updated":"2018-07-19 20:38:09.000000000","message":"Done","commit_id":"51c44f4e0849506a27cdf827a50f12b2d44afd49"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"51a73717a9018999fcf7133a7729af19a0a31bb2","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                                 expected_error_codes\u003d[403])"},{"line_number":123,"context_line":"    @decorators.idempotent_id(\u002798fa38ab-c2ed-46a0-99f0-59f18cbd257b\u0027)"},{"line_number":124,"context_line":"    def test_create_port_mac_learning_enabled(self):"},{"line_number":125,"context_line":"        # Feature available on VMWareNSX installations."},{"line_number":126,"context_line":"        unrecognized \u003d \"Unrecognized attribute(s) \u0027mac_learning_enabled\u0027\""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        post_body \u003d {\u0027network\u0027: self.network,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_04c5cd09","line":125,"range":{"start_line":125,"start_character":18,"end_line":125,"end_character":27},"updated":"2018-07-19 20:08:59.000000000","message":"unavailable","commit_id":"51c44f4e0849506a27cdf827a50f12b2d44afd49"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"72ae9f1385033a5d7ffc51f04fac400e2d1bb518","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                                 expected_error_codes\u003d[403])"},{"line_number":123,"context_line":"    @decorators.idempotent_id(\u002798fa38ab-c2ed-46a0-99f0-59f18cbd257b\u0027)"},{"line_number":124,"context_line":"    def test_create_port_mac_learning_enabled(self):"},{"line_number":125,"context_line":"        # Feature available on VMWareNSX installations."},{"line_number":126,"context_line":"        unrecognized \u003d \"Unrecognized attribute(s) \u0027mac_learning_enabled\u0027\""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        post_body \u003d {\u0027network\u0027: self.network,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_07ee2f8a","line":125,"range":{"start_line":125,"start_character":18,"end_line":125,"end_character":27},"in_reply_to":"5f7c97a3_04c5cd09","updated":"2018-07-19 20:38:09.000000000","message":"I think it\u0027s available only on NSX:\n\nhttps://github.com/openstack/vmware-nsx/blob/f7a437433450d396d6731a0fb931f141079ce90a/api-ref/rest.md#mac-learning\n\nF.E. Contrail supports it as well, but their neutron-plugin does not implement it as for now.","commit_id":"51c44f4e0849506a27cdf827a50f12b2d44afd49"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"51a73717a9018999fcf7133a7729af19a0a31bb2","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    @decorators.idempotent_id(\u002798fa38ab-c2ed-46a0-99f0-59f18cbd257b\u0027)"},{"line_number":124,"context_line":"    def test_create_port_mac_learning_enabled(self):"},{"line_number":125,"context_line":"        # Feature available on VMWareNSX installations."},{"line_number":126,"context_line":"        unrecognized \u003d \"Unrecognized attribute(s) \u0027mac_learning_enabled\u0027\""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        post_body \u003d {\u0027network\u0027: self.network,"},{"line_number":129,"context_line":"                     \u0027mac_learning_enabled\u0027: True}"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_04614d11","line":126,"updated":"2018-07-19 20:08:59.000000000","message":"Also, unavailability on VMWareNSX installations is true right now, but not be in future, so I think a more generic message would be better: \"on some installations\"","commit_id":"51c44f4e0849506a27cdf827a50f12b2d44afd49"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"72ae9f1385033a5d7ffc51f04fac400e2d1bb518","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    @decorators.idempotent_id(\u002798fa38ab-c2ed-46a0-99f0-59f18cbd257b\u0027)"},{"line_number":124,"context_line":"    def test_create_port_mac_learning_enabled(self):"},{"line_number":125,"context_line":"        # Feature available on VMWareNSX installations."},{"line_number":126,"context_line":"        unrecognized \u003d \"Unrecognized attribute(s) \u0027mac_learning_enabled\u0027\""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        post_body \u003d {\u0027network\u0027: self.network,"},{"line_number":129,"context_line":"                     \u0027mac_learning_enabled\u0027: True}"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_c7e3579f","line":126,"in_reply_to":"5f7c97a3_04614d11","updated":"2018-07-19 20:38:09.000000000","message":"Same","commit_id":"51c44f4e0849506a27cdf827a50f12b2d44afd49"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"51a73717a9018999fcf7133a7729af19a0a31bb2","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                self.create_port(**post_body)"},{"line_number":134,"context_line":"            except lib_exc.BadRequest as e:"},{"line_number":135,"context_line":"                if unrecognized in e.resp_body[\"message\"]:"},{"line_number":136,"context_line":"                    msg \u003d \"Feature available on VMWare-NSX installations\""},{"line_number":137,"context_line":"                    raise self.skipException(msg)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    @utils.requires_ext(extension\u003d\u0027binding\u0027, service\u003d\u0027network\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_24c8091f","line":136,"range":{"start_line":136,"start_character":35,"end_line":136,"end_character":44},"updated":"2018-07-19 20:08:59.000000000","message":"unavailable","commit_id":"51c44f4e0849506a27cdf827a50f12b2d44afd49"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"72ae9f1385033a5d7ffc51f04fac400e2d1bb518","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                self.create_port(**post_body)"},{"line_number":134,"context_line":"            except lib_exc.BadRequest as e:"},{"line_number":135,"context_line":"                if unrecognized in e.resp_body[\"message\"]:"},{"line_number":136,"context_line":"                    msg \u003d \"Feature available on VMWare-NSX installations\""},{"line_number":137,"context_line":"                    raise self.skipException(msg)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    @utils.requires_ext(extension\u003d\u0027binding\u0027, service\u003d\u0027network\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_a7fc1b3f","line":136,"range":{"start_line":136,"start_character":35,"end_line":136,"end_character":44},"in_reply_to":"5f7c97a3_24c8091f","updated":"2018-07-19 20:38:09.000000000","message":"Same","commit_id":"51c44f4e0849506a27cdf827a50f12b2d44afd49"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"51a73717a9018999fcf7133a7729af19a0a31bb2","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                                 expected_error_codes\u003d[403])"},{"line_number":143,"context_line":"    @decorators.idempotent_id(\u002798fa38ab-c2ed-46a0-99f0-59f18cbd257c\u0027)"},{"line_number":144,"context_line":"    def test_update_port_mac_learning_enabled(self):"},{"line_number":145,"context_line":"        # Feature available on VMWareNSX installations."},{"line_number":146,"context_line":"        unrecognized \u003d \"Unrecognized attribute(s) \u0027mac_learning_enabled\u0027\""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        post_body \u003d {\u0027network\u0027: self.network,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_c4ca7517","line":145,"range":{"start_line":145,"start_character":18,"end_line":145,"end_character":27},"updated":"2018-07-19 20:08:59.000000000","message":"unavailable","commit_id":"51c44f4e0849506a27cdf827a50f12b2d44afd49"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"72ae9f1385033a5d7ffc51f04fac400e2d1bb518","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                                 expected_error_codes\u003d[403])"},{"line_number":143,"context_line":"    @decorators.idempotent_id(\u002798fa38ab-c2ed-46a0-99f0-59f18cbd257c\u0027)"},{"line_number":144,"context_line":"    def test_update_port_mac_learning_enabled(self):"},{"line_number":145,"context_line":"        # Feature available on VMWareNSX installations."},{"line_number":146,"context_line":"        unrecognized \u003d \"Unrecognized attribute(s) \u0027mac_learning_enabled\u0027\""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        post_body \u003d {\u0027network\u0027: self.network,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_47f7475b","line":145,"range":{"start_line":145,"start_character":18,"end_line":145,"end_character":27},"in_reply_to":"5f7c97a3_c4ca7517","updated":"2018-07-19 20:38:09.000000000","message":"Same","commit_id":"51c44f4e0849506a27cdf827a50f12b2d44afd49"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"51a73717a9018999fcf7133a7729af19a0a31bb2","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            port \u003d self.create_port(**post_body)"},{"line_number":153,"context_line":"        except lib_exc.BadRequest as e:"},{"line_number":154,"context_line":"            if unrecognized in e.resp_body[\"message\"]:"},{"line_number":155,"context_line":"                msg \u003d \"Feature available on VMWare-NSX installations\""},{"line_number":156,"context_line":"                raise self.skipException(msg)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        with self.rbac_utils.override_role(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_e4cd312f","line":155,"range":{"start_line":155,"start_character":31,"end_line":155,"end_character":40},"updated":"2018-07-19 20:08:59.000000000","message":"unavailable","commit_id":"51c44f4e0849506a27cdf827a50f12b2d44afd49"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"72ae9f1385033a5d7ffc51f04fac400e2d1bb518","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            port \u003d self.create_port(**post_body)"},{"line_number":153,"context_line":"        except lib_exc.BadRequest as e:"},{"line_number":154,"context_line":"            if unrecognized in e.resp_body[\"message\"]:"},{"line_number":155,"context_line":"                msg \u003d \"Feature available on VMWare-NSX installations\""},{"line_number":156,"context_line":"                raise self.skipException(msg)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        with self.rbac_utils.override_role(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_67f2836b","line":155,"range":{"start_line":155,"start_character":31,"end_line":155,"end_character":40},"in_reply_to":"5f7c97a3_e4cd312f","updated":"2018-07-19 20:38:09.000000000","message":"Same","commit_id":"51c44f4e0849506a27cdf827a50f12b2d44afd49"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"0cbacd5894d12ec5153e679715ab06f7a26970cd","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    @utils.requires_ext(extension\u003d\u0027mac_learning_enabled\u0027, service\u003d\u0027network\u0027)"},{"line_number":120,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":121,"context_line":"                                 rules\u003d[\"create_port:mac_learning_enabled\"],"},{"line_number":122,"context_line":"                                 expected_error_codes\u003d[403])"},{"line_number":123,"context_line":"    @decorators.idempotent_id(\u002798fa38ab-c2ed-46a0-99f0-59f18cbd257b\u0027)"},{"line_number":124,"context_line":"    def test_create_port_mac_learning_enabled(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_34a03291","line":121,"range":{"start_line":121,"start_character":41,"end_line":121,"end_character":52},"updated":"2018-07-20 03:02:55.000000000","message":"I\u0027d imagine this also calls:\n\n    create_port\n\nJust like the other create tests.","commit_id":"4638225f799ffb7e5a319ea62ced796235c1493d"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"fedac0f33fbb47762cb0d9bc7666f7dd172df42b","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    @utils.requires_ext(extension\u003d\u0027mac_learning_enabled\u0027, service\u003d\u0027network\u0027)"},{"line_number":120,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":121,"context_line":"                                 rules\u003d[\"create_port:mac_learning_enabled\"],"},{"line_number":122,"context_line":"                                 expected_error_codes\u003d[403])"},{"line_number":123,"context_line":"    @decorators.idempotent_id(\u002798fa38ab-c2ed-46a0-99f0-59f18cbd257b\u0027)"},{"line_number":124,"context_line":"    def test_create_port_mac_learning_enabled(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_24d8f3ed","line":121,"range":{"start_line":121,"start_character":41,"end_line":121,"end_character":52},"in_reply_to":"5f7c97a3_34a03291","updated":"2018-07-20 14:43:16.000000000","message":"Done","commit_id":"4638225f799ffb7e5a319ea62ced796235c1493d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"0cbacd5894d12ec5153e679715ab06f7a26970cd","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    @utils.requires_ext(extension\u003d\u0027mac_learning_enabled\u0027, service\u003d\u0027network\u0027)"},{"line_number":140,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":141,"context_line":"                                 rules\u003d[\"update_port:mac_learning_enabled\"],"},{"line_number":142,"context_line":"                                 expected_error_codes\u003d[403])"},{"line_number":143,"context_line":"    @decorators.idempotent_id(\u002798fa38ab-c2ed-46a0-99f0-59f18cbd257c\u0027)"},{"line_number":144,"context_line":"    def test_update_port_mac_learning_enabled(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_74922a4c","line":141,"range":{"start_line":141,"start_character":41,"end_line":141,"end_character":52},"updated":"2018-07-20 03:02:55.000000000","message":"I\u0027d imagine this also calls:\n\n   get_port\n   update_port\n\nJust like the other update tests","commit_id":"4638225f799ffb7e5a319ea62ced796235c1493d"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"fedac0f33fbb47762cb0d9bc7666f7dd172df42b","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    @utils.requires_ext(extension\u003d\u0027mac_learning_enabled\u0027, service\u003d\u0027network\u0027)"},{"line_number":140,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":141,"context_line":"                                 rules\u003d[\"update_port:mac_learning_enabled\"],"},{"line_number":142,"context_line":"                                 expected_error_codes\u003d[403])"},{"line_number":143,"context_line":"    @decorators.idempotent_id(\u002798fa38ab-c2ed-46a0-99f0-59f18cbd257c\u0027)"},{"line_number":144,"context_line":"    def test_update_port_mac_learning_enabled(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_64982b19","line":141,"range":{"start_line":141,"start_character":41,"end_line":141,"end_character":52},"in_reply_to":"5f7c97a3_74922a4c","updated":"2018-07-20 14:43:16.000000000","message":"create_port + update_port added","commit_id":"4638225f799ffb7e5a319ea62ced796235c1493d"}]}
