)]}'
{"patrole_tempest_plugin/config.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"db350642e36aa567b29690a37dc22cf2819b55df","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    cfg.BoolOpt(\u0027rbac_flag\u0027,"},{"line_number":27,"context_line":"                default\u003dFalse,"},{"line_number":28,"context_line":"                help\u003d\"Enables RBAC tests.\"),"},{"line_number":29,"context_line":"    cfg.StrOpt(\u0027physical_network\u0027,"},{"line_number":30,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":31,"context_line":"               help\u003d\"Physical network to be used. This can be found in neutron\""},{"line_number":32,"context_line":"                    \" plugin conf file of OpenStack deployment.\")"},{"line_number":33,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa31d9ce_012efcf9","line":32,"range":{"start_line":29,"start_character":0,"end_line":32,"end_character":65},"updated":"2017-02-17 16:32:20.000000000","message":"This is something that belongs in Tempest, not Patrole. It\u0027s simply out of scope.","commit_id":"3f32deb758be2bc36b5ea4fe3e8965145031a719"}],"patrole_tempest_plugin/tests/api/network/test_networks_rbac.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"f425749d0794e5ebb6570d3635f93107f90ad265","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                        segments\u003dNone):"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # update a network that has been created during class setup"},{"line_number":108,"context_line":"        if net_id:"},{"line_number":109,"context_line":"            net_id \u003d net_id"},{"line_number":110,"context_line":"        else:"},{"line_number":111,"context_line":"            net_id \u003d self.admin_network[\u0027id\u0027]"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        post_body \u003d {}"},{"line_number":114,"context_line":"        updated_network \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_f29e4ab7","line":111,"range":{"start_line":108,"start_character":8,"end_line":111,"end_character":45},"updated":"2017-02-16 16:28:46.000000000","message":"This can be better written as:\n\nif not net_id:\n    net_id \u003d self.admin_network[\u0027id\u0027]","commit_id":"e503d82687df594c7e9f0df4d26d4c4a059f3725"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"8851e86d72287f166a24a5b56e433bdad04985ab","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                        segments\u003dNone):"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # update a network that has been created during class setup"},{"line_number":108,"context_line":"        if net_id:"},{"line_number":109,"context_line":"            net_id \u003d net_id"},{"line_number":110,"context_line":"        else:"},{"line_number":111,"context_line":"            net_id \u003d self.admin_network[\u0027id\u0027]"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        post_body \u003d {}"},{"line_number":114,"context_line":"        updated_network \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_1f868665","line":111,"range":{"start_line":108,"start_character":8,"end_line":111,"end_character":45},"in_reply_to":"fa31d9ce_f29e4ab7","updated":"2017-02-16 16:52:58.000000000","message":"I will fix it. Thanks !!","commit_id":"e503d82687df594c7e9f0df4d26d4c4a059f3725"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"8851e86d72287f166a24a5b56e433bdad04985ab","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        service\u003d\"neutron\","},{"line_number":187,"context_line":"        rule\u003d\"create_network:provider:physical_network\")"},{"line_number":188,"context_line":"    @decorators.idempotent_id(\u0027f458033b-2d52-4fd1-86db-e31e111d6fac\u0027)"},{"line_number":189,"context_line":"    def test_create_network_provider_physical_network(self):"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        \"\"\"Create Provider Physical Network Test"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_ffce12b6","line":189,"range":{"start_line":189,"start_character":8,"end_line":189,"end_character":54},"updated":"2017-02-16 16:52:58.000000000","message":"IMO, There can be few option for this test case -\n1.Let this test case pass it is being done here.\n2. Implement with your suggestion, which is not very much quality efficient.\n3. Drop this particular test.\n\nPlease suggest what you would prefer ?","commit_id":"e503d82687df594c7e9f0df4d26d4c4a059f3725"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"f425749d0794e5ebb6570d3635f93107f90ad265","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        RBAC test for the neutron create_network:provider:physical_network"},{"line_number":194,"context_line":"        \"\"\""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        # NOTE(raiesmh08): Patrole can be used for RBAC testing of any"},{"line_number":197,"context_line":"        # openstack deployment."},{"line_number":198,"context_line":"        # Deployments can vary in terms of physical interface defined."},{"line_number":199,"context_line":"        # Deployments can have existing physical interface with different"},{"line_number":200,"context_line":"        # name. So here we can\u0027t pass a hardcoded value as"},{"line_number":201,"context_line":"        # \"provider_physical_network\"."},{"line_number":202,"context_line":"        # Following is sample piece (commented) of which can be used for"},{"line_number":203,"context_line":"        # testing. But in this case here we have used a hardcoded value"},{"line_number":204,"context_line":"        # \"ph-eth0\"."},{"line_number":205,"context_line":"        # So one need to remove this hardcoded value according to their"},{"line_number":206,"context_line":"        # deployment"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        # rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":209,"context_line":"        # self._create_network(provider_network_type\u003d\u0027flat\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_52dc7674","line":206,"range":{"start_line":196,"start_character":8,"end_line":206,"end_character":20},"updated":"2017-02-16 16:28:46.000000000","message":"You can link to the neutron API documentation https://developer.openstack.org/api-ref/networking/v2/?expanded\u003dcreate-network-detail: \"The physical network where this network should be implemented. The Networking API v2.0 does not provide a way to list available physical networks. For example, the Open vSwitch plug-in configuration file defines a symbolic name that maps to specific bridges on each compute host\".","commit_id":"e503d82687df594c7e9f0df4d26d4c4a059f3725"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"8ecc9448b87826749dca86357212e864fc40a472","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        RBAC test for the neutron create_network:provider:physical_network"},{"line_number":194,"context_line":"        \"\"\""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        # NOTE(raiesmh08): Patrole can be used for RBAC testing of any"},{"line_number":197,"context_line":"        # openstack deployment."},{"line_number":198,"context_line":"        # Deployments can vary in terms of physical interface defined."},{"line_number":199,"context_line":"        # Deployments can have existing physical interface with different"},{"line_number":200,"context_line":"        # name. So here we can\u0027t pass a hardcoded value as"},{"line_number":201,"context_line":"        # \"provider_physical_network\"."},{"line_number":202,"context_line":"        # Following is sample piece (commented) of which can be used for"},{"line_number":203,"context_line":"        # testing. But in this case here we have used a hardcoded value"},{"line_number":204,"context_line":"        # \"ph-eth0\"."},{"line_number":205,"context_line":"        # So one need to remove this hardcoded value according to their"},{"line_number":206,"context_line":"        # deployment"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        # rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":209,"context_line":"        # self._create_network(provider_network_type\u003d\u0027flat\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_75716177","line":206,"range":{"start_line":196,"start_character":8,"end_line":206,"end_character":20},"in_reply_to":"fa31d9ce_52dc7674","updated":"2017-02-16 17:31:18.000000000","message":"Will add this.","commit_id":"e503d82687df594c7e9f0df4d26d4c4a059f3725"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"f425749d0794e5ebb6570d3635f93107f90ad265","unresolved":false,"context_lines":[{"line_number":205,"context_line":"        # So one need to remove this hardcoded value according to their"},{"line_number":206,"context_line":"        # deployment"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        # rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":209,"context_line":"        # self._create_network(provider_network_type\u003d\u0027flat\u0027,"},{"line_number":210,"context_line":"        #                      provider_physical_network\u003d\u0027ph-eth0\u0027)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        # For the time we are skipping this."},{"line_number":213,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_72c09a7d","line":210,"range":{"start_line":208,"start_character":0,"end_line":210,"end_character":67},"updated":"2017-02-16 16:28:46.000000000","message":"I would remove this and just have \"pass\" inside this function. You can always go back through this code review to figure out what the original code was to re-include it.","commit_id":"e503d82687df594c7e9f0df4d26d4c4a059f3725"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"8ecc9448b87826749dca86357212e864fc40a472","unresolved":false,"context_lines":[{"line_number":205,"context_line":"        # So one need to remove this hardcoded value according to their"},{"line_number":206,"context_line":"        # deployment"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        # rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":209,"context_line":"        # self._create_network(provider_network_type\u003d\u0027flat\u0027,"},{"line_number":210,"context_line":"        #                      provider_physical_network\u003d\u0027ph-eth0\u0027)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        # For the time we are skipping this."},{"line_number":213,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_d5ba0d0a","line":210,"range":{"start_line":208,"start_character":0,"end_line":210,"end_character":67},"in_reply_to":"fa31d9ce_72c09a7d","updated":"2017-02-16 17:31:18.000000000","message":"I think this sample code should be included. I have seen such example couple of times in nova.","commit_id":"e503d82687df594c7e9f0df4d26d4c4a059f3725"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"f425749d0794e5ebb6570d3635f93107f90ad265","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        # self._create_network(provider_network_type\u003d\u0027flat\u0027,"},{"line_number":210,"context_line":"        #                      provider_physical_network\u003d\u0027ph-eth0\u0027)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        # For the time we are skipping this."},{"line_number":213,"context_line":"        pass"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    @rbac_rule_validation.action("}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_d235c6a8","line":212,"range":{"start_line":212,"start_character":18,"end_line":212,"end_character":22},"updated":"2017-02-16 16:28:46.000000000","message":"time being","commit_id":"e503d82687df594c7e9f0df4d26d4c4a059f3725"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"8ecc9448b87826749dca86357212e864fc40a472","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        # self._create_network(provider_network_type\u003d\u0027flat\u0027,"},{"line_number":210,"context_line":"        #                      provider_physical_network\u003d\u0027ph-eth0\u0027)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        # For the time we are skipping this."},{"line_number":213,"context_line":"        pass"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    @rbac_rule_validation.action("}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_f53551a8","line":212,"range":{"start_line":212,"start_character":18,"end_line":212,"end_character":22},"in_reply_to":"fa31d9ce_d235c6a8","updated":"2017-02-16 17:31:18.000000000","message":"Will fix it.","commit_id":"e503d82687df594c7e9f0df4d26d4c4a059f3725"},{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"a989a686241ad7a3515f787808b4f7839ade2d12","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        RBAC test for the neutron create_network:provider:physical_network"},{"line_number":192,"context_line":"        \"\"\""},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # NOTE(raiesmh08): Patrole can be used for RBAC testing of any"},{"line_number":195,"context_line":"        # openstack deployment."},{"line_number":196,"context_line":"        # Deployments can vary in terms of physical interface defined."},{"line_number":197,"context_line":"        # Deployments can have existing physical interface with different"},{"line_number":198,"context_line":"        # name. So here we can\u0027t pass a hardcoded value as"},{"line_number":199,"context_line":"        # \"provider_physical_network\"."},{"line_number":200,"context_line":"        # Also the physical network where this network should be implemented."},{"line_number":201,"context_line":"        # The Networking API v2.0 does not provide a way to list available"},{"line_number":202,"context_line":"        # physical networks. For example, the Open vSwitch plug-in"},{"line_number":203,"context_line":"        # configuration file defines a symbolic name that maps to specific"},{"line_number":204,"context_line":"        # bridges on each compute host. For more detail see neutron API doc."},{"line_number":205,"context_line":"        #"},{"line_number":206,"context_line":"        # Following is sample piece (commented) of code which can be used for"},{"line_number":207,"context_line":"        # testing. But in this case here we have used a hardcoded value"},{"line_number":208,"context_line":"        # \"ph-eth0\"."},{"line_number":209,"context_line":"        # So one need to remove this hardcoded value according to their"},{"line_number":210,"context_line":"        # deployment"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        # rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":213,"context_line":"        # self._create_network(provider_network_type\u003d\u0027flat\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_7891319a","line":210,"range":{"start_line":194,"start_character":8,"end_line":210,"end_character":20},"updated":"2017-02-17 15:10:36.000000000","message":"I don\u0027t like this approach of just commenting out this test and just passing it.  If there is so much variation in the physical network, we should have it as a CONF value.  We should also remember that these are RBAC tests, not functionality tests.  It is acceptable to hit an API with data that can return exceptions as long as we are able to properly verify that the role was given or denied access to the endpoint.  This is what the RbacActionFailed exception is for.","commit_id":"8eb66e259fe9d7f2c515cbf70039602a84b7fbf9"},{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"a989a686241ad7a3515f787808b4f7839ade2d12","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        #                      provider_physical_network\u003d\u0027ph-eth0\u0027)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        # For the time being we are skipping this."},{"line_number":217,"context_line":"        pass"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    @rbac_rule_validation.action("},{"line_number":220,"context_line":"        service\u003d\"neutron\","}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_b8e2c92d","line":217,"range":{"start_line":217,"start_character":8,"end_line":217,"end_character":12},"updated":"2017-02-17 15:10:36.000000000","message":"Don\u0027t pass the test, raise a SkipException so it will show up as a skipped test, not a passing test.  We don\u0027t want deployers to think this test is being run when in reality it is just passing always.","commit_id":"8eb66e259fe9d7f2c515cbf70039602a84b7fbf9"}]}
