)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f29195ae5e6da951b9801fc4627c6e0f8be803f4","unresolved":false,"context_lines":[{"line_number":10,"context_line":"in mangle table to mark packets outgoing from port with"},{"line_number":11,"context_line":"DSCP mark value configured by user in QoS policy."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact: DSCP Marking rule supports is extended to"},{"line_number":14,"context_line":"           Linuxbridge L2 agent also"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Closes-Bug: #1644369"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"5a74a57a_4012a80a","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":9},"updated":"2016-11-30 17:22:26.000000000","message":"You didn\u0027t modify the documentation","commit_id":"c1dd99b15179c64b34ac3a85e51ae5b6a2e14d34"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"1f75140343c20c97a79ba6449b2343e3589600ca","unresolved":false,"context_lines":[{"line_number":10,"context_line":"in mangle table to mark packets outgoing from port with"},{"line_number":11,"context_line":"DSCP mark value configured by user in QoS policy."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact: DSCP Marking rule supports is extended to"},{"line_number":14,"context_line":"           Linuxbridge L2 agent also"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Closes-Bug: #1644369"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"5a74a57a_b572d3e1","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":9},"in_reply_to":"5a74a57a_4012a80a","updated":"2016-11-30 22:32:12.000000000","message":"I added it here to be aware that when it will be merged we should update docs and add info that LB agent supports dscp marking also. I did it this way in couple previous patches, did something change now?","commit_id":"c1dd99b15179c64b34ac3a85e51ae5b6a2e14d34"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"30c6a6148e294c1bad33a8138ce2ccc618a6fe0f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sławek Kapłoński \u003cslawek@kaplonski.pl\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-12-08 21:53:12 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"DSCP Marking packets support in Linuxbridge agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Linuxbridge agent uses iptables rule in POSTROUTING chain"},{"line_number":10,"context_line":"in mangle table to mark packets outgoing from port with"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a6eadb0_d4da1178","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":20},"updated":"2016-12-13 11:07:31.000000000","message":"s/DSCP Marking packets/DSCP packet marking","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c4756df5d7eb1ecfcb0c6b22c061e2eaa67ae37a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sławek Kapłoński \u003cslawek@kaplonski.pl\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-12-08 21:53:12 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"DSCP Marking packets support in Linuxbridge agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Linuxbridge agent uses iptables rule in POSTROUTING chain"},{"line_number":10,"context_line":"in mangle table to mark packets outgoing from port with"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a6eadb0_0f1b9473","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":20},"in_reply_to":"1a6eadb0_d4da1178","updated":"2016-12-13 11:17:06.000000000","message":"Done","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"30c6a6148e294c1bad33a8138ce2ccc618a6fe0f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"DSCP Marking packets support in Linuxbridge agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Linuxbridge agent uses iptables rule in POSTROUTING chain"},{"line_number":10,"context_line":"in mangle table to mark packets outgoing from port with"},{"line_number":11,"context_line":"DSCP mark value configured by user in QoS policy."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a6eadb0_1453a9e2","line":9,"range":{"start_line":9,"start_character":23,"end_line":9,"end_character":39},"updated":"2016-12-13 11:07:31.000000000","message":"s/iptables rule in/iptable rules in the","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c4756df5d7eb1ecfcb0c6b22c061e2eaa67ae37a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"DSCP Marking packets support in Linuxbridge agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Linuxbridge agent uses iptables rule in POSTROUTING chain"},{"line_number":10,"context_line":"in mangle table to mark packets outgoing from port with"},{"line_number":11,"context_line":"DSCP mark value configured by user in QoS policy."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a6eadb0_cf3efcb7","line":9,"range":{"start_line":9,"start_character":23,"end_line":9,"end_character":39},"in_reply_to":"1a6eadb0_1453a9e2","updated":"2016-12-13 11:17:06.000000000","message":"Done","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"30c6a6148e294c1bad33a8138ce2ccc618a6fe0f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"DSCP Marking packets support in Linuxbridge agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Linuxbridge agent uses iptables rule in POSTROUTING chain"},{"line_number":10,"context_line":"in mangle table to mark packets outgoing from port with"},{"line_number":11,"context_line":"DSCP mark value configured by user in QoS policy."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact: DSCP Marking rule supports is extended to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a6eadb0_546361b1","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":2},"updated":"2016-12-13 11:07:31.000000000","message":"s/in/in the","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"30c6a6148e294c1bad33a8138ce2ccc618a6fe0f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"DSCP Marking packets support in Linuxbridge agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Linuxbridge agent uses iptables rule in POSTROUTING chain"},{"line_number":10,"context_line":"in mangle table to mark packets outgoing from port with"},{"line_number":11,"context_line":"DSCP mark value configured by user in QoS policy."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact: DSCP Marking rule supports is extended to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a6eadb0_740f7de1","line":10,"range":{"start_line":10,"start_character":23,"end_line":10,"end_character":55},"updated":"2016-12-13 11:07:31.000000000","message":"s/packets outgoing from port with/outgoing packets with the","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c4756df5d7eb1ecfcb0c6b22c061e2eaa67ae37a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"DSCP Marking packets support in Linuxbridge agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Linuxbridge agent uses iptables rule in POSTROUTING chain"},{"line_number":10,"context_line":"in mangle table to mark packets outgoing from port with"},{"line_number":11,"context_line":"DSCP mark value configured by user in QoS policy."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact: DSCP Marking rule supports is extended to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a6eadb0_af41c03b","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":2},"in_reply_to":"1a6eadb0_546361b1","updated":"2016-12-13 11:17:06.000000000","message":"Done","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c4756df5d7eb1ecfcb0c6b22c061e2eaa67ae37a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"DSCP Marking packets support in Linuxbridge agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Linuxbridge agent uses iptables rule in POSTROUTING chain"},{"line_number":10,"context_line":"in mangle table to mark packets outgoing from port with"},{"line_number":11,"context_line":"DSCP mark value configured by user in QoS policy."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact: DSCP Marking rule supports is extended to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a6eadb0_ef4bb857","line":10,"range":{"start_line":10,"start_character":23,"end_line":10,"end_character":55},"in_reply_to":"1a6eadb0_740f7de1","updated":"2016-12-13 11:17:06.000000000","message":"Done","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"30c6a6148e294c1bad33a8138ce2ccc618a6fe0f","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Linuxbridge agent uses iptables rule in POSTROUTING chain"},{"line_number":10,"context_line":"in mangle table to mark packets outgoing from port with"},{"line_number":11,"context_line":"DSCP mark value configured by user in QoS policy."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact: DSCP Marking rule supports is extended to"},{"line_number":14,"context_line":"           Linuxbridge L2 agent also"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a6eadb0_941419f6","line":11,"range":{"start_line":11,"start_character":27,"end_line":11,"end_character":29},"updated":"2016-12-13 11:07:31.000000000","message":"s/by/by the","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c4756df5d7eb1ecfcb0c6b22c061e2eaa67ae37a","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Linuxbridge agent uses iptables rule in POSTROUTING chain"},{"line_number":10,"context_line":"in mangle table to mark packets outgoing from port with"},{"line_number":11,"context_line":"DSCP mark value configured by user in QoS policy."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact: DSCP Marking rule supports is extended to"},{"line_number":14,"context_line":"           Linuxbridge L2 agent also"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a6eadb0_6f6ec8ca","line":11,"range":{"start_line":11,"start_character":27,"end_line":11,"end_character":29},"in_reply_to":"1a6eadb0_941419f6","updated":"2016-12-13 11:17:06.000000000","message":"Done","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"30c6a6148e294c1bad33a8138ce2ccc618a6fe0f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"in mangle table to mark packets outgoing from port with"},{"line_number":11,"context_line":"DSCP mark value configured by user in QoS policy."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact: DSCP Marking rule supports is extended to"},{"line_number":14,"context_line":"           Linuxbridge L2 agent also"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Closes-Bug: #1644369"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a6eadb0_74ddbd41","line":13,"range":{"start_line":13,"start_character":29,"end_line":13,"end_character":37},"updated":"2016-12-13 11:07:31.000000000","message":"s/supports/support","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"30c6a6148e294c1bad33a8138ce2ccc618a6fe0f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"in mangle table to mark packets outgoing from port with"},{"line_number":11,"context_line":"DSCP mark value configured by user in QoS policy."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact: DSCP Marking rule supports is extended to"},{"line_number":14,"context_line":"           Linuxbridge L2 agent also"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Closes-Bug: #1644369"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a6eadb0_94e25902","line":13,"range":{"start_line":13,"start_character":50,"end_line":13,"end_character":52},"updated":"2016-12-13 11:07:31.000000000","message":"s/to/to the","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c4756df5d7eb1ecfcb0c6b22c061e2eaa67ae37a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"in mangle table to mark packets outgoing from port with"},{"line_number":11,"context_line":"DSCP mark value configured by user in QoS policy."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact: DSCP Marking rule supports is extended to"},{"line_number":14,"context_line":"           Linuxbridge L2 agent also"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Closes-Bug: #1644369"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a6eadb0_ef62d8d7","line":13,"range":{"start_line":13,"start_character":29,"end_line":13,"end_character":37},"in_reply_to":"1a6eadb0_74ddbd41","updated":"2016-12-13 11:17:06.000000000","message":"Done","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c4756df5d7eb1ecfcb0c6b22c061e2eaa67ae37a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"in mangle table to mark packets outgoing from port with"},{"line_number":11,"context_line":"DSCP mark value configured by user in QoS policy."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact: DSCP Marking rule supports is extended to"},{"line_number":14,"context_line":"           Linuxbridge L2 agent also"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Closes-Bug: #1644369"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a6eadb0_cf651ce2","line":13,"range":{"start_line":13,"start_character":50,"end_line":13,"end_character":52},"in_reply_to":"1a6eadb0_94e25902","updated":"2016-12-13 11:17:06.000000000","message":"Done","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"30c6a6148e294c1bad33a8138ce2ccc618a6fe0f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"DSCP mark value configured by user in QoS policy."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact: DSCP Marking rule supports is extended to"},{"line_number":14,"context_line":"           Linuxbridge L2 agent also"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Closes-Bug: #1644369"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a6eadb0_342c254a","line":14,"range":{"start_line":14,"start_character":31,"end_line":14,"end_character":36},"updated":"2016-12-13 11:07:31.000000000","message":"remove","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c4756df5d7eb1ecfcb0c6b22c061e2eaa67ae37a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"DSCP mark value configured by user in QoS policy."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact: DSCP Marking rule supports is extended to"},{"line_number":14,"context_line":"           Linuxbridge L2 agent also"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Closes-Bug: #1644369"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a6eadb0_2f9bf0ca","line":14,"range":{"start_line":14,"start_character":31,"end_line":14,"end_character":36},"in_reply_to":"1a6eadb0_342c254a","updated":"2016-12-13 11:17:06.000000000","message":"Done","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"}],"neutron/plugins/ml2/drivers/linuxbridge/agent/extension_drivers/qos_driver.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7e51b3329cc63b334683f690d8155c7625156799","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def _postrouting_rule(self, direction, device):"},{"line_number":51,"context_line":"        return (\u0027-m physdev --%s %s --physdev-is-bridged \u0027"},{"line_number":52,"context_line":"                \u0027-j $%s\u0027) % (self.IPTABLES_DIRECTION[direction],"},{"line_number":53,"context_line":"                             device,"},{"line_number":54,"context_line":"                             self._postrouting_chain_name(direction, device))"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_c3277010","line":52,"range":{"start_line":52,"start_character":20,"end_line":52,"end_character":21},"updated":"2016-11-25 09:19:58.000000000","message":"Is this \u0027$\u0027 character correct?","commit_id":"7b57d52f76c8d2de17fb92a56d8dd6523734296b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"da0cc33bc15a8a7cd3d352ccae9803f42359b3c5","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def _postrouting_rule(self, direction, device):"},{"line_number":51,"context_line":"        return (\u0027-m physdev --%s %s --physdev-is-bridged \u0027"},{"line_number":52,"context_line":"                \u0027-j $%s\u0027) % (self.IPTABLES_DIRECTION[direction],"},{"line_number":53,"context_line":"                             device,"},{"line_number":54,"context_line":"                             self._postrouting_chain_name(direction, device))"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_91393d44","line":52,"range":{"start_line":52,"start_character":20,"end_line":52,"end_character":21},"in_reply_to":"5a74a57a_7bac80a0","updated":"2016-11-25 12:11:47.000000000","message":"I know, but the wrapping depends on the IpTablesManager.wrap_name value. \n\nThis value is set in the instantiation os the variable, like in neutron/services/metering/drivers/iptables/iptables_driver.py@L75\n\nYou should setup this value.","commit_id":"7b57d52f76c8d2de17fb92a56d8dd6523734296b"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e2dbd39e928eb9e96baf3467aeb21d2cefc8bdd7","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def _postrouting_rule(self, direction, device):"},{"line_number":51,"context_line":"        return (\u0027-m physdev --%s %s --physdev-is-bridged \u0027"},{"line_number":52,"context_line":"                \u0027-j $%s\u0027) % (self.IPTABLES_DIRECTION[direction],"},{"line_number":53,"context_line":"                             device,"},{"line_number":54,"context_line":"                             self._postrouting_chain_name(direction, device))"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_b9b9a97b","line":52,"range":{"start_line":52,"start_character":20,"end_line":52,"end_character":21},"in_reply_to":"5a74a57a_91393d44","updated":"2016-11-26 21:43:37.000000000","message":"it is by default set as binary name so it is \"neutron-linuxbri\" in case of linuxbridge agent. I don\u0027t need to change it IMHO because in fact it is chain made by linuxbridge agent","commit_id":"7b57d52f76c8d2de17fb92a56d8dd6523734296b"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c9d550dbd1495f2f54982df3a7951b8d6156ec32","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def _postrouting_rule(self, direction, device):"},{"line_number":51,"context_line":"        return (\u0027-m physdev --%s %s --physdev-is-bridged \u0027"},{"line_number":52,"context_line":"                \u0027-j $%s\u0027) % (self.IPTABLES_DIRECTION[direction],"},{"line_number":53,"context_line":"                             device,"},{"line_number":54,"context_line":"                             self._postrouting_chain_name(direction, device))"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_7bac80a0","line":52,"range":{"start_line":52,"start_character":20,"end_line":52,"end_character":21},"in_reply_to":"5a74a57a_c3277010","updated":"2016-11-25 11:16:03.000000000","message":"I took it from https://github.com/openstack/neutron/blob/master/neutron/agent/linux/iptables_manager.py#L212\nbecause I need there chain name like \"linuxbr-Qos-xxxxxx\" and AFAIU correctly this \"$\" gives it here","commit_id":"7b57d52f76c8d2de17fb92a56d8dd6523734296b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f29195ae5e6da951b9801fc4627c6e0f8be803f4","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        tc_wrapper.delete_filters_bw_limit()"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @log_helpers.log_method_call"},{"line_number":79,"context_line":"    def create_dscp_marking(self, port, rule):"},{"line_number":80,"context_line":"        with self.iptables_manager.defer_apply():"},{"line_number":81,"context_line":"            self._set_outgoing_qos_chain_for_port(port)"},{"line_number":82,"context_line":"            self._set_dscp_mark_rule(port, rule.dscp_mark)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_c0edd8b8","line":79,"range":{"start_line":79,"start_character":8,"end_line":79,"end_character":27},"updated":"2016-11-30 17:22:26.000000000","message":"What happends if the chain for this port is not empty? Shouldn\u0027t you need to initialize the chain for this port? Or delete this chain every time you create a dscp mark?","commit_id":"c1dd99b15179c64b34ac3a85e51ae5b6a2e14d34"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b0618769a9180e1b198fd33992d833878d89dec7","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        tc_wrapper.delete_filters_bw_limit()"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @log_helpers.log_method_call"},{"line_number":79,"context_line":"    def create_dscp_marking(self, port, rule):"},{"line_number":80,"context_line":"        with self.iptables_manager.defer_apply():"},{"line_number":81,"context_line":"            self._set_outgoing_qos_chain_for_port(port)"},{"line_number":82,"context_line":"            self._set_dscp_mark_rule(port, rule.dscp_mark)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_327ca0b4","line":79,"range":{"start_line":79,"start_character":8,"end_line":79,"end_character":27},"in_reply_to":"3a71b18c_aa2174a1","updated":"2016-12-06 09:10:38.000000000","message":"Yes, it\u0027s ok. Now the problem is https://review.openstack.org/#/c/401458/7/neutron/plugins/ml2/drivers/linuxbridge/agent/extension_drivers/qos_driver.py. I\u0027ll answer there","commit_id":"c1dd99b15179c64b34ac3a85e51ae5b6a2e14d34"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"549f1d62bb0a50afe41585febe7d6c542d257985","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        tc_wrapper.delete_filters_bw_limit()"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @log_helpers.log_method_call"},{"line_number":79,"context_line":"    def create_dscp_marking(self, port, rule):"},{"line_number":80,"context_line":"        with self.iptables_manager.defer_apply():"},{"line_number":81,"context_line":"            self._set_outgoing_qos_chain_for_port(port)"},{"line_number":82,"context_line":"            self._set_dscp_mark_rule(port, rule.dscp_mark)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_aa2174a1","line":79,"range":{"start_line":79,"start_character":8,"end_line":79,"end_character":27},"in_reply_to":"5a74a57a_90a3259e","updated":"2016-12-02 21:38:51.000000000","message":"ok, I checked it and it is \"initialized\" every time so if rule is created and chain even exists before rule will be added to it.\nIs it fine for You?","commit_id":"c1dd99b15179c64b34ac3a85e51ae5b6a2e14d34"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"75273843b14bcdd86e4a611df30e216bfe96e2a0","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        tc_wrapper.delete_filters_bw_limit()"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @log_helpers.log_method_call"},{"line_number":79,"context_line":"    def create_dscp_marking(self, port, rule):"},{"line_number":80,"context_line":"        with self.iptables_manager.defer_apply():"},{"line_number":81,"context_line":"            self._set_outgoing_qos_chain_for_port(port)"},{"line_number":82,"context_line":"            self._set_dscp_mark_rule(port, rule.dscp_mark)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_90a3259e","line":79,"range":{"start_line":79,"start_character":8,"end_line":79,"end_character":27},"in_reply_to":"5a74a57a_c0edd8b8","updated":"2016-12-01 16:57:56.000000000","message":"TODO: check if chain already exist and if yes, reuse it instead of clear it everytime\nor maybe better would be to use chain only for dscp marking instead of QoS overall","commit_id":"c1dd99b15179c64b34ac3a85e51ae5b6a2e14d34"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"12a762912b26cc199fce9410b7dbc9b161745fab","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    def delete_dscp_marking(self, port):"},{"line_number":93,"context_line":"        with self.iptables_manager.defer_apply():"},{"line_number":94,"context_line":"            self._delete_dscp_mark_rule(port)"},{"line_number":95,"context_line":"            self._delete_outgoing_qos_chain_for_port(port)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _set_outgoing_qos_chain_for_port(self, port):"},{"line_number":98,"context_line":"        chain_name \u003d self._dscp_chain_name("}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_bdf7fcf3","line":95,"updated":"2016-12-02 21:38:37.000000000","message":"I have one doubt here. For now I\u0027m creating chain called DSCP-i/o\u003cport_id\u003e and it is used only for DSCP marks. If DSCP rule is deleted this chain is also deleted from iptables.\n\nBut I\u0027m not sure if it is good solution because if in feature someone will add another QoS feature to iptables here he will have to create own chain also.\nOther possibility is to create now chain called \"QoS-i/o\u003cport_id\u003e for all QoS related rules for port. But then I will have to check somehow if any rules exists in this chain (how?) and remove chain only if it is empty.\nSo question to reviewers: which solution is better in Your opinion, 1st like is now or 2 with removing chain only if it is empty?","commit_id":"1133cd6b415f268904d31797d3a0c3e313914a40"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c15d90013630382090e25a4531e83dfeb8a5431e","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    def delete_dscp_marking(self, port):"},{"line_number":93,"context_line":"        with self.iptables_manager.defer_apply():"},{"line_number":94,"context_line":"            self._delete_dscp_mark_rule(port)"},{"line_number":95,"context_line":"            self._delete_outgoing_qos_chain_for_port(port)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _set_outgoing_qos_chain_for_port(self, port):"},{"line_number":98,"context_line":"        chain_name \u003d self._dscp_chain_name("}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_b66f5d91","line":95,"in_reply_to":"3a71b18c_74dbd61b","updated":"2016-12-13 10:29:16.000000000","message":"I agree","commit_id":"1133cd6b415f268904d31797d3a0c3e313914a40"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"84f614648e1b3b8aee99759eeff82598814dc7bf","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    def delete_dscp_marking(self, port):"},{"line_number":93,"context_line":"        with self.iptables_manager.defer_apply():"},{"line_number":94,"context_line":"            self._delete_dscp_mark_rule(port)"},{"line_number":95,"context_line":"            self._delete_outgoing_qos_chain_for_port(port)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _set_outgoing_qos_chain_for_port(self, port):"},{"line_number":98,"context_line":"        chain_name \u003d self._dscp_chain_name("}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_f53852d5","line":95,"in_reply_to":"3a71b18c_bdf7fcf3","updated":"2016-12-06 09:13:26.000000000","message":"You can print the rule in a chain executing:\n    $ sudo iptables -L \u003cchain_name\u003e\n\nIs that enough?\n\nI think 2nd approach could be easier (one chain per port).","commit_id":"1133cd6b415f268904d31797d3a0c3e313914a40"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c8acc73b66c0c65237739a044da2ae16b1f06a4c","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    def delete_dscp_marking(self, port):"},{"line_number":93,"context_line":"        with self.iptables_manager.defer_apply():"},{"line_number":94,"context_line":"            self._delete_dscp_mark_rule(port)"},{"line_number":95,"context_line":"            self._delete_outgoing_qos_chain_for_port(port)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _set_outgoing_qos_chain_for_port(self, port):"},{"line_number":98,"context_line":"        chain_name \u003d self._dscp_chain_name("}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_74dbd61b","line":95,"in_reply_to":"3a71b18c_f53852d5","updated":"2016-12-08 21:54:48.000000000","message":"Yep, but I didn\u0027t know how to do it with iptables_manager in neutron. I found how to do it so it\u0027s changed. Now chain should be deleted only if there is no any rule in it.\nI hope it\u0027s better now","commit_id":"1133cd6b415f268904d31797d3a0c3e313914a40"}],"neutron/tests/common/agents/l2_extensions.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f29195ae5e6da951b9801fc4627c6e0f8be803f4","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def extract_dscp_value_from_iptables_rules(rules):"},{"line_number":43,"context_line":"    pattern \u003d (r\"^-A neutron-.*-QoS-.* -j DSCP \""},{"line_number":44,"context_line":"               \"--set-dscp (?P\u003cdscp_value\u003e0x[A-Fa-f0-9]+)$\")"},{"line_number":45,"context_line":"    for rule in rules:"},{"line_number":46,"context_line":"        m \u003d re.match(pattern, rule)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_5dd1b3fa","line":43,"range":{"start_line":43,"start_character":18,"end_line":43,"end_character":37},"updated":"2016-11-30 17:22:26.000000000","message":"According to https://review.openstack.org/#/c/401458/3/neutron/plugins/ml2/drivers/linuxbridge/agent/extension_drivers/qos_driver.py@45, the chain name is QoS-[io]\u003cdevice_name\u003e","commit_id":"c1dd99b15179c64b34ac3a85e51ae5b6a2e14d34"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"1f75140343c20c97a79ba6449b2343e3589600ca","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def extract_dscp_value_from_iptables_rules(rules):"},{"line_number":43,"context_line":"    pattern \u003d (r\"^-A neutron-.*-QoS-.* -j DSCP \""},{"line_number":44,"context_line":"               \"--set-dscp (?P\u003cdscp_value\u003e0x[A-Fa-f0-9]+)$\")"},{"line_number":45,"context_line":"    for rule in rules:"},{"line_number":46,"context_line":"        m \u003d re.match(pattern, rule)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_90cec581","line":43,"range":{"start_line":43,"start_character":18,"end_line":43,"end_character":37},"in_reply_to":"5a74a57a_5dd1b3fa","updated":"2016-11-30 22:32:12.000000000","message":"no, there is \"$\" there so it means that there will be added wrap_value there. This wrap value is for linuxbridge agent \"neutron-linuxbri\" and it this test we should find it.\nMaybe I can be more strict here and add \"linuxbri\" instead of \".*\" there.","commit_id":"c1dd99b15179c64b34ac3a85e51ae5b6a2e14d34"}],"neutron/tests/unit/plugins/ml2/drivers/linuxbridge/agent/extension_drivers/test_qos_driver.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4badcc611f076983b690c6841fe1e02cc8b202b1","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            iptables_manager.get_chain.assert_has_calls(["},{"line_number":172,"context_line":"                mock.call(\"mangle\", dscp_chain_name, ip_version\u003d4),"},{"line_number":173,"context_line":"                mock.call(\"mangle\", dscp_chain_name, ip_version\u003d6)"},{"line_number":174,"context_line":"            ])"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def test_delete_dscp_marking_chain_not_empty(self):"},{"line_number":177,"context_line":"        dscp_chain_name \u003d self._dscp_mark_chain_name(self.port[\u0027device\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_b674bdcf","line":174,"updated":"2016-12-13 10:34:10.000000000","message":"Why don\u0027t you check if \"remove_chain\" and \"remove_rule\" are called?","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"74cf5e03dba61c571f3d623dc844680e8c324018","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            iptables_manager.get_chain.assert_has_calls(["},{"line_number":172,"context_line":"                mock.call(\"mangle\", dscp_chain_name, ip_version\u003d4),"},{"line_number":173,"context_line":"                mock.call(\"mangle\", dscp_chain_name, ip_version\u003d6)"},{"line_number":174,"context_line":"            ])"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def test_delete_dscp_marking_chain_not_empty(self):"},{"line_number":177,"context_line":"        dscp_chain_name \u003d self._dscp_mark_chain_name(self.port[\u0027device\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_f4b9cd2f","line":174,"in_reply_to":"1a6eadb0_b674bdcf","updated":"2016-12-13 11:02:10.000000000","message":"It is done in assert in line 170 and 171, expected calls are defined in L153\nDo You want other checks also?","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7461536870ab4e1a854b3955fc189a55747bcb36","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            iptables_manager.get_chain.assert_has_calls(["},{"line_number":172,"context_line":"                mock.call(\"mangle\", dscp_chain_name, ip_version\u003d4),"},{"line_number":173,"context_line":"                mock.call(\"mangle\", dscp_chain_name, ip_version\u003d6)"},{"line_number":174,"context_line":"            ])"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def test_delete_dscp_marking_chain_not_empty(self):"},{"line_number":177,"context_line":"        dscp_chain_name \u003d self._dscp_mark_chain_name(self.port[\u0027device\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_afdd4072","line":174,"in_reply_to":"1a6eadb0_f4b9cd2f","updated":"2016-12-13 11:19:58.000000000","message":"No, I missed that check. Thanks.","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4badcc611f076983b690c6841fe1e02cc8b202b1","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            iptables_manager.get_chain.assert_has_calls(["},{"line_number":193,"context_line":"                mock.call(\"mangle\", dscp_chain_name, ip_version\u003d4),"},{"line_number":194,"context_line":"                mock.call(\"mangle\", dscp_chain_name, ip_version\u003d6)"},{"line_number":195,"context_line":"            ])"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_965ee143","line":195,"updated":"2016-12-13 10:34:10.000000000","message":"You should check that \"remove_rule\" and \"remove_chain\" are not called","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"74cf5e03dba61c571f3d623dc844680e8c324018","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            iptables_manager.get_chain.assert_has_calls(["},{"line_number":193,"context_line":"                mock.call(\"mangle\", dscp_chain_name, ip_version\u003d4),"},{"line_number":194,"context_line":"                mock.call(\"mangle\", dscp_chain_name, ip_version\u003d6)"},{"line_number":195,"context_line":"            ])"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_14ef29e9","line":195,"in_reply_to":"1a6eadb0_965ee143","updated":"2016-12-13 11:02:10.000000000","message":"Done","commit_id":"855f13ba769d7fa7d6df810cd0504fdc92d860ce"}]}
