)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3913f2027ce6176de79211c87f7962812064890a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Open vSwitch implementation. It depends on the python-neutronclient"},{"line_number":11,"context_line":"patches, therefore it could not be merged in the main patch."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Co-Authored-By: Nate Johnston \u003cnate_johnston@cable.comcast.com\u003e"},{"line_number":14,"context_line":"Change-Id: I0ab6a1a0d1430c5791fea1d5b54106c6cc93b937"},{"line_number":15,"context_line":"Closes-Bug: #1468353"},{"line_number":16,"context_line":"Depends-On: I25ad60c1b9a66e568276a772b8c496987d9f8299"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"bab6814e_f029c338","line":13,"updated":"2016-05-19 12:27:07.000000000","message":"Sorry for maybe stupid question but are You co-author of Your patch? or there are two different Nate Johnstons?","commit_id":"9616969566ae233d34fd40e1482d8ca89ae9932d"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"f3789f6e2d0cce94953ab6319f07830a3aa31190","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Open vSwitch implementation. It depends on the python-neutronclient"},{"line_number":11,"context_line":"patches, therefore it could not be merged in the main patch."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Co-Authored-By: Nate Johnston \u003cnate_johnston@cable.comcast.com\u003e"},{"line_number":14,"context_line":"Change-Id: I0ab6a1a0d1430c5791fea1d5b54106c6cc93b937"},{"line_number":15,"context_line":"Closes-Bug: #1468353"},{"line_number":16,"context_line":"Depends-On: I25ad60c1b9a66e568276a772b8c496987d9f8299"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"bab6814e_eb155849","line":13,"in_reply_to":"bab6814e_4bb0e443","updated":"2016-05-19 12:47:09.000000000","message":"I confirmed that you are correct.  That will teahc me to make a change before I have had coffee in the morning.  Reverting.","commit_id":"9616969566ae233d34fd40e1482d8ca89ae9932d"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"94e50e72dc96f1359dc2f792edf8f180d99d9db1","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Open vSwitch implementation. It depends on the python-neutronclient"},{"line_number":11,"context_line":"patches, therefore it could not be merged in the main patch."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Co-Authored-By: Nate Johnston \u003cnate_johnston@cable.comcast.com\u003e"},{"line_number":14,"context_line":"Change-Id: I0ab6a1a0d1430c5791fea1d5b54106c6cc93b937"},{"line_number":15,"context_line":"Closes-Bug: #1468353"},{"line_number":16,"context_line":"Depends-On: I25ad60c1b9a66e568276a772b8c496987d9f8299"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"bab6814e_4bb0e443","line":13,"in_reply_to":"bab6814e_f029c338","updated":"2016-05-19 12:41:57.000000000","message":"Wait, which matters, the Author field or the Owner field?  I think it\u0027s the Owner field, which says \"Miguel Angel Ajo\"","commit_id":"9616969566ae233d34fd40e1482d8ca89ae9932d"}],"neutron/tests/fullstack/test_qos.py":[{"author":{"_account_id":14033,"name":"James Reeves","email":"james.reeves5546@gmail.com","username":"trombongod"},"change_message_id":"8edf7e64f00548f3143c1148684e842690900d01","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        _wait_for_bw_rule_removed(vm)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"# TODO(njohnston): Bifurcate this into a DSCP class as well"},{"line_number":200,"context_line":"# as a bandwidth-limiting class."},{"line_number":201,"context_line":"class TestDscpQoSWithOvsAgent(base.BaseFullStackTestCase):"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_10047615","line":200,"range":{"start_line":199,"start_character":0,"end_line":200,"end_character":32},"updated":"2016-03-07 18:34:58.000000000","message":"You can probably remove this TODO, as this class (and the one above) does this.","commit_id":"3245ffed5ffa165d9bab8f4ee98e22f6daac5da3"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"b9fef698a35d448542e00a774fa3958c948a1291","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        _wait_for_bw_rule_removed(vm)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"# TODO(njohnston): Bifurcate this into a DSCP class as well"},{"line_number":200,"context_line":"# as a bandwidth-limiting class."},{"line_number":201,"context_line":"class TestDscpQoSWithOvsAgent(base.BaseFullStackTestCase):"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_cd72707c","line":200,"range":{"start_line":199,"start_character":0,"end_line":200,"end_character":32},"in_reply_to":"5aef4532_10047615","updated":"2016-03-07 19:40:22.000000000","message":"Done","commit_id":"3245ffed5ffa165d9bab8f4ee98e22f6daac5da3"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"eedbd12afdb339598871402cb7aed94e9490896e","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"class TestBwLimitQoSWithOvsAgent(base.BaseFullStackTestCase):"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def setUp(self):"},{"line_number":96,"context_line":"        host_desc \u003d [environment.HostDescription("},{"line_number":97,"context_line":"            l3_agent\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_3ee21cd6","line":94,"updated":"2016-03-07 20:48:19.000000000","message":"Why Yoy added new class here and left \"almost\" empty class TestQoSWithL2Agent above. Shouldn\u0027t it be in one class maybe with those scenarios which were before Your patch?","commit_id":"c869afb4c9ea4a35a814cb1aa006031bf923379b"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"eedbd12afdb339598871402cb7aed94e9490896e","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def setUp(self):"},{"line_number":96,"context_line":"        host_desc \u003d [environment.HostDescription("},{"line_number":97,"context_line":"            l3_agent\u003dFalse,"},{"line_number":98,"context_line":"            l2_agent_type\u003dconstants.AGENT_TYPE_OVS)]"},{"line_number":99,"context_line":"        env_desc \u003d environment.EnvironmentDescription(qos\u003dTrue)"},{"line_number":100,"context_line":"        env \u003d environment.Environment(env_desc, host_desc)"},{"line_number":101,"context_line":"        super(TestBwLimitQoSWithOvsAgent, self).setUp(env)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_ded178fd","line":98,"updated":"2016-03-07 20:48:19.000000000","message":"So there will be no tests for Linuxbridge agent now?","commit_id":"c869afb4c9ea4a35a814cb1aa006031bf923379b"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"54ca0263244e98e0775b58bdbc3f7282a38ed179","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def setUp(self):"},{"line_number":96,"context_line":"        host_desc \u003d [environment.HostDescription("},{"line_number":97,"context_line":"            l3_agent\u003dFalse,"},{"line_number":98,"context_line":"            l2_agent_type\u003dconstants.AGENT_TYPE_OVS)]"},{"line_number":99,"context_line":"        env_desc \u003d environment.EnvironmentDescription(qos\u003dTrue)"},{"line_number":100,"context_line":"        env \u003d environment.Environment(env_desc, host_desc)"},{"line_number":101,"context_line":"        super(TestBwLimitQoSWithOvsAgent, self).setUp(env)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_0945436f","line":98,"in_reply_to":"5aef4532_ded178fd","updated":"2016-03-08 14:23:14.000000000","message":"this needs to be refactored, slawek is right.\n\nlinuxbridge fullstack needs to pass, and then OVS fullstack (with DSCP) needs to pass.","commit_id":"c869afb4c9ea4a35a814cb1aa006031bf923379b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"642a5a732bed5ed6b48b9a9afd2407d3eb1ecf51","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import functools"},{"line_number":16,"context_line":"from oslo_utils import uuidutils"},{"line_number":17,"context_line":"import testscenarios"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5a18252c_2ec5d73b","line":15,"updated":"2016-04-12 15:10:17.000000000","message":"nit: functools are stdlib.","commit_id":"1d6ce20d0a4a3cf4388c77e58c456aa947ff7225"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"7d6a2c83d53518a3f19c36c2288692a35cc13d71","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import functools"},{"line_number":16,"context_line":"from oslo_utils import uuidutils"},{"line_number":17,"context_line":"import testscenarios"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5a18252c_87d169d0","line":15,"in_reply_to":"5a18252c_2ec5d73b","updated":"2016-04-12 17:20:16.000000000","message":"Done","commit_id":"1d6ce20d0a4a3cf4388c77e58c456aa947ff7225"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"642a5a732bed5ed6b48b9a9afd2407d3eb1ecf51","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    _wait_for_dscp_marking_rule_applied(vm, None)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"class TestQoSWithL2Agent(base.BaseFullStackTestCase):"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    scenarios \u003d ["},{"line_number":88,"context_line":"        (\"ovs\", {\u0027l2_agent_type\u0027: constants.AGENT_TYPE_OVS}),"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a18252c_ee3f5f23","line":85,"updated":"2016-04-12 15:10:17.000000000","message":"Now what\u0027s the class for? Don\u0027t you effectively disable testing for bwlimit rule for LB here?","commit_id":"1d6ce20d0a4a3cf4388c77e58c456aa947ff7225"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"7d6a2c83d53518a3f19c36c2288692a35cc13d71","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    _wait_for_dscp_marking_rule_applied(vm, None)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"class TestQoSWithL2Agent(base.BaseFullStackTestCase):"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    scenarios \u003d ["},{"line_number":88,"context_line":"        (\"ovs\", {\u0027l2_agent_type\u0027: constants.AGENT_TYPE_OVS}),"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a18252c_a7ff4533","line":85,"in_reply_to":"5a18252c_ee3f5f23","updated":"2016-04-12 17:20:16.000000000","message":"Looks like that was a mismanaged leftover fragment.  Removed.","commit_id":"1d6ce20d0a4a3cf4388c77e58c456aa947ff7225"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"642a5a732bed5ed6b48b9a9afd2407d3eb1ecf51","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    ]"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"class TestBwLimitQoSWithOvsAgent(base.BaseFullStackTestCase):"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def setUp(self):"},{"line_number":96,"context_line":"        host_desc \u003d [environment.HostDescription("}],"source_content_type":"text/x-python","patch_set":9,"id":"5a18252c_ae0c4795","line":93,"updated":"2016-04-12 15:10:17.000000000","message":"the class should be agent type agnostic.","commit_id":"1d6ce20d0a4a3cf4388c77e58c456aa947ff7225"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"7d6a2c83d53518a3f19c36c2288692a35cc13d71","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    ]"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"class TestBwLimitQoSWithOvsAgent(base.BaseFullStackTestCase):"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def setUp(self):"},{"line_number":96,"context_line":"        host_desc \u003d [environment.HostDescription("}],"source_content_type":"text/x-python","patch_set":9,"id":"5a18252c_474ab184","line":93,"in_reply_to":"5a18252c_ae0c4795","updated":"2016-04-12 17:20:16.000000000","message":"Done","commit_id":"1d6ce20d0a4a3cf4388c77e58c456aa947ff7225"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"642a5a732bed5ed6b48b9a9afd2407d3eb1ecf51","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            qos_policy[\u0027rules\u0027].append(rule)"},{"line_number":127,"context_line":"        return functools.partial(_add_bw_limit_rule, limit, burst)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def _dscp_rule_adder(self, dscp_mark):"},{"line_number":130,"context_line":"        def _add_dscp_rule(dscp_mark, qos_policy):"},{"line_number":131,"context_line":"            qos_policy_id \u003d qos_policy[\u0027id\u0027]"},{"line_number":132,"context_line":"            rule \u003d self.safe_client.create_dscp_marking_rule("}],"source_content_type":"text/x-python","patch_set":9,"id":"5a18252c_0efa9b42","line":129,"updated":"2016-04-12 15:10:17.000000000","message":"What does dscp stuff do in bwlimit class?","commit_id":"1d6ce20d0a4a3cf4388c77e58c456aa947ff7225"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"7d6a2c83d53518a3f19c36c2288692a35cc13d71","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            qos_policy[\u0027rules\u0027].append(rule)"},{"line_number":127,"context_line":"        return functools.partial(_add_bw_limit_rule, limit, burst)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def _dscp_rule_adder(self, dscp_mark):"},{"line_number":130,"context_line":"        def _add_dscp_rule(dscp_mark, qos_policy):"},{"line_number":131,"context_line":"            qos_policy_id \u003d qos_policy[\u0027id\u0027]"},{"line_number":132,"context_line":"            rule \u003d self.safe_client.create_dscp_marking_rule("}],"source_content_type":"text/x-python","patch_set":9,"id":"5a18252c_e72c9dad","line":129,"in_reply_to":"5a18252c_0efa9b42","updated":"2016-04-12 17:20:16.000000000","message":"Remnant from before we realized this required 2 classes to implement.  Removed.","commit_id":"1d6ce20d0a4a3cf4388c77e58c456aa947ff7225"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"642a5a732bed5ed6b48b9a9afd2407d3eb1ecf51","unresolved":false,"context_lines":[{"line_number":273,"context_line":"            self.tenant_id, vm.port, new_dscp_mark)"},{"line_number":274,"context_line":"        _wait_for_dscp_marking_rule_applied(vm, new_dscp_mark)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        #TODO(njohnston): same thing for DSCP"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        # Update qos policy rule id"},{"line_number":279,"context_line":"        self.client.update_bandwidth_limit_rule("}],"source_content_type":"text/x-python","patch_set":9,"id":"5a18252c_4e6813f6","line":276,"updated":"2016-04-12 15:10:17.000000000","message":"What\u0027s that TODO for?","commit_id":"1d6ce20d0a4a3cf4388c77e58c456aa947ff7225"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"7d6a2c83d53518a3f19c36c2288692a35cc13d71","unresolved":false,"context_lines":[{"line_number":273,"context_line":"            self.tenant_id, vm.port, new_dscp_mark)"},{"line_number":274,"context_line":"        _wait_for_dscp_marking_rule_applied(vm, new_dscp_mark)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        #TODO(njohnston): same thing for DSCP"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        # Update qos policy rule id"},{"line_number":279,"context_line":"        self.client.update_bandwidth_limit_rule("}],"source_content_type":"text/x-python","patch_set":9,"id":"5a18252c_e703fd0d","line":276,"in_reply_to":"5a18252c_4e6813f6","updated":"2016-04-12 17:20:16.000000000","message":"Removed, no longer relevant.","commit_id":"1d6ce20d0a4a3cf4388c77e58c456aa947ff7225"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"642a5a732bed5ed6b48b9a9afd2407d3eb1ecf51","unresolved":false,"context_lines":[{"line_number":286,"context_line":"            vm.neutron_port[\u0027id\u0027],"},{"line_number":287,"context_line":"            body\u003d{\u0027port\u0027: {\u0027qos_policy_id\u0027: None}})"},{"line_number":288,"context_line":"        _wait_for_bw_rule_removed(vm)"},{"line_number":289,"context_line":"        #TODO(njohnston): same thing for DSCP"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"class TestQoSWithL2Population(base.BaseFullStackTestCase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a18252c_ce7423d1","line":289,"updated":"2016-04-12 15:10:17.000000000","message":"? Why do we mix dscp and bwlimit calls in one test?","commit_id":"1d6ce20d0a4a3cf4388c77e58c456aa947ff7225"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"7d6a2c83d53518a3f19c36c2288692a35cc13d71","unresolved":false,"context_lines":[{"line_number":286,"context_line":"            vm.neutron_port[\u0027id\u0027],"},{"line_number":287,"context_line":"            body\u003d{\u0027port\u0027: {\u0027qos_policy_id\u0027: None}})"},{"line_number":288,"context_line":"        _wait_for_bw_rule_removed(vm)"},{"line_number":289,"context_line":"        #TODO(njohnston): same thing for DSCP"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"class TestQoSWithL2Population(base.BaseFullStackTestCase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a18252c_a74d8474","line":289,"in_reply_to":"5a18252c_ce7423d1","updated":"2016-04-12 17:20:16.000000000","message":"Fixed, changed to _wait_for_dscp_marking_rule_removed(vm)","commit_id":"1d6ce20d0a4a3cf4388c77e58c456aa947ff7225"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c3989083fc13bf6c1b5abae5fbf6d72d7a2d4ba9","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    def setUp(self):"},{"line_number":93,"context_line":"        host_desc \u003d [environment.HostDescription("},{"line_number":94,"context_line":"            l3_agent\u003dFalse,"},{"line_number":95,"context_line":"            l2_agent_type\u003dconstants.AGENT_TYPE_OVS)]"},{"line_number":96,"context_line":"        env_desc \u003d environment.EnvironmentDescription(qos\u003dTrue)"},{"line_number":97,"context_line":"        env \u003d environment.Environment(env_desc, host_desc)"},{"line_number":98,"context_line":"        super(TestBwLimitQoS, self).setUp(env)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a18252c_a718e485","line":95,"range":{"start_line":95,"start_character":26,"end_line":95,"end_character":50},"updated":"2016-04-12 17:28:35.000000000","message":"It should use self.l2_agent_type to cover for LB.","commit_id":"25af0faae145957816e239d5e276f8135ac2ad7f"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"f0092dea526282ca7ee68a61f7076ce401eaef72","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    def setUp(self):"},{"line_number":93,"context_line":"        host_desc \u003d [environment.HostDescription("},{"line_number":94,"context_line":"            l3_agent\u003dFalse,"},{"line_number":95,"context_line":"            l2_agent_type\u003dconstants.AGENT_TYPE_OVS)]"},{"line_number":96,"context_line":"        env_desc \u003d environment.EnvironmentDescription(qos\u003dTrue)"},{"line_number":97,"context_line":"        env \u003d environment.Environment(env_desc, host_desc)"},{"line_number":98,"context_line":"        super(TestBwLimitQoS, self).setUp(env)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a18252c_2a977991","line":95,"range":{"start_line":95,"start_character":26,"end_line":95,"end_character":50},"in_reply_to":"5a18252c_a718e485","updated":"2016-04-12 18:06:49.000000000","message":"Done","commit_id":"25af0faae145957816e239d5e276f8135ac2ad7f"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"f0092dea526282ca7ee68a61f7076ce401eaef72","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            rule[\u0027type\u0027] \u003d qos_consts.RULE_TYPE_DSCP_MARK"},{"line_number":221,"context_line":"            rule[\u0027qos_policy_id\u0027] \u003d qos_policy_id"},{"line_number":222,"context_line":"            qos_policy[\u0027rules\u0027].append(rule)"},{"line_number":223,"context_line":"        return functools.partial(_add_dscp_rule, dscp_mark)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def _prepare_vm_with_qos_policy(self, rule_add_functions):"},{"line_number":226,"context_line":"        qos_policy \u003d self._create_qos_policy()"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a18252c_6d77cb3a","line":223,"updated":"2016-04-12 18:06:49.000000000","message":"functools.partial does require an \u0027import functools\u0027, otherwise you get:\n\n./neutron/tests/fullstack/test_qos.py:85:1: E303 too many blank lines (3)\nclass TestBwLimitQoS(base.BaseFullStackTestCase):\n^\n./neutron/tests/fullstack/test_qos.py:276:13: E113 unexpected indentation\n            _wait_for_dscp_marking_rule_removed(vm)\n            ^\n./neutron/tests/fullstack/test_qos.py:276:13: E901 IndentationError: unexpected indent\n            _wait_for_dscp_marking_rule_removed(vm)\n            ^","commit_id":"25af0faae145957816e239d5e276f8135ac2ad7f"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"620eb19112c91aaabadaacf5f50c2a6521ad5c64","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    _wait_for_bw_rule_applied(vm, None, None)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def _wait_for_dscp_marking_rule_applied(vm, dscp_mark):"},{"line_number":77,"context_line":"    l2_extensions.wait_until_dscp_marking_rule_applied("},{"line_number":78,"context_line":"            vm.bridge, vm.port.name, dscp_mark)"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_9d423e3d","line":76,"range":{"start_line":76,"start_character":4,"end_line":76,"end_character":39},"updated":"2016-04-18 12:22:33.000000000","message":"The introduction of these 2 functions now makes the code look like it has 2 classes (fine) and a bunch functions that are completely unrelated to these classes (bad) even though they are very much related.\n\nCan we move all of this \"private\" functions to inside their respective classes instead?\n\nNote that if these classes will be joined together since there is some required shared code between them, I\u0027d still ask that these should be made staticmethods in said classes.","commit_id":"500a54a6080ab0850518f6f4f9edefeb22a693c0"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"2d1d75151c57846dda06a59217b0117639090f2c","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    _wait_for_bw_rule_applied(vm, None, None)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def _wait_for_dscp_marking_rule_applied(vm, dscp_mark):"},{"line_number":77,"context_line":"    l2_extensions.wait_until_dscp_marking_rule_applied("},{"line_number":78,"context_line":"            vm.bridge, vm.port.name, dscp_mark)"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_da922f4b","line":76,"range":{"start_line":76,"start_character":4,"end_line":76,"end_character":39},"in_reply_to":"1a122d0e_94f1fd6d","updated":"2016-04-21 19:35:32.000000000","message":"Done.  Apologize that I missed these comments first time around!","commit_id":"500a54a6080ab0850518f6f4f9edefeb22a693c0"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"aa42dcde1bfb7f80b23736b246c2eba96777dcfc","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    _wait_for_bw_rule_applied(vm, None, None)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def _wait_for_dscp_marking_rule_applied(vm, dscp_mark):"},{"line_number":77,"context_line":"    l2_extensions.wait_until_dscp_marking_rule_applied("},{"line_number":78,"context_line":"            vm.bridge, vm.port.name, dscp_mark)"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_94f1fd6d","line":76,"range":{"start_line":76,"start_character":4,"end_line":76,"end_character":39},"in_reply_to":"1a122d0e_9d423e3d","updated":"2016-04-20 13:51:31.000000000","message":"This is still left unaddressed.","commit_id":"500a54a6080ab0850518f6f4f9edefeb22a693c0"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"620eb19112c91aaabadaacf5f50c2a6521ad5c64","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            qos_policy[\u0027rules\u0027].append(rule)"},{"line_number":124,"context_line":"        return functools.partial(_add_bw_limit_rule, limit, burst)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def _prepare_vm_with_qos_policy(self, rule_add_functions):"},{"line_number":127,"context_line":"        qos_policy \u003d self._create_qos_policy()"},{"line_number":128,"context_line":"        qos_policy_id \u003d qos_policy[\u0027id\u0027]"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_38d4d81e","line":126,"range":{"start_line":126,"start_character":8,"end_line":126,"end_character":35},"updated":"2016-04-18 12:22:33.000000000","message":"Users of this function always provide only one function - so I\u0027m not clear as to why this function receives a list of rules.","commit_id":"500a54a6080ab0850518f6f4f9edefeb22a693c0"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"aa42dcde1bfb7f80b23736b246c2eba96777dcfc","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            qos_policy[\u0027rules\u0027].append(rule)"},{"line_number":124,"context_line":"        return functools.partial(_add_bw_limit_rule, limit, burst)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def _prepare_vm_with_qos_policy(self, rule_add_functions):"},{"line_number":127,"context_line":"        qos_policy \u003d self._create_qos_policy()"},{"line_number":128,"context_line":"        qos_policy_id \u003d qos_policy[\u0027id\u0027]"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_d4e7f5a9","line":126,"range":{"start_line":126,"start_character":8,"end_line":126,"end_character":35},"in_reply_to":"1a122d0e_38d4d81e","updated":"2016-04-20 13:51:31.000000000","message":"This is also left unaddressed...","commit_id":"500a54a6080ab0850518f6f4f9edefeb22a693c0"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"3522a24495278a17c246fd743b2ea8823feb4fb9","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            qos_policy[\u0027rules\u0027].append(rule)"},{"line_number":124,"context_line":"        return functools.partial(_add_bw_limit_rule, limit, burst)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def _prepare_vm_with_qos_policy(self, rule_add_functions):"},{"line_number":127,"context_line":"        qos_policy \u003d self._create_qos_policy()"},{"line_number":128,"context_line":"        qos_policy_id \u003d qos_policy[\u0027id\u0027]"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_6440a108","line":126,"range":{"start_line":126,"start_character":8,"end_line":126,"end_character":35},"in_reply_to":"1a122d0e_d4e7f5a9","updated":"2016-04-21 19:50:23.000000000","message":"While currently only one function is specified, a qos policy can have multiple functions, so I believe this is future-proofing the support method so it can comply with one or many, since the underlying code supports one or many.","commit_id":"500a54a6080ab0850518f6f4f9edefeb22a693c0"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"620eb19112c91aaabadaacf5f50c2a6521ad5c64","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        # Create port with qos policy attached"},{"line_number":153,"context_line":"        vm, qos_policy \u003d self._prepare_vm_with_qos_policy("},{"line_number":154,"context_line":"            [self._bw_limit_rule_adder(BANDWIDTH_LIMIT, BANDWIDTH_BURST)])"},{"line_number":155,"context_line":"        bw_rule \u003d qos_policy[\u0027rules\u0027]"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        _wait_for_bw_rule_applied(vm, BANDWIDTH_LIMIT, BANDWIDTH_BURST)"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_d8ede4f0","line":154,"range":{"start_line":154,"start_character":18,"end_line":154,"end_character":38},"updated":"2016-04-18 12:22:33.000000000","message":"Internally, this uses functools.partial - why not make this code call partial() directly? It will be much more explicit this way.","commit_id":"500a54a6080ab0850518f6f4f9edefeb22a693c0"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"2d1d75151c57846dda06a59217b0117639090f2c","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        # Create port with qos policy attached"},{"line_number":153,"context_line":"        vm, qos_policy \u003d self._prepare_vm_with_qos_policy("},{"line_number":154,"context_line":"            [self._bw_limit_rule_adder(BANDWIDTH_LIMIT, BANDWIDTH_BURST)])"},{"line_number":155,"context_line":"        bw_rule \u003d qos_policy[\u0027rules\u0027]"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        _wait_for_bw_rule_applied(vm, BANDWIDTH_LIMIT, BANDWIDTH_BURST)"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_b91e2061","line":154,"range":{"start_line":154,"start_character":18,"end_line":154,"end_character":38},"in_reply_to":"1a122d0e_d8ede4f0","updated":"2016-04-21 19:35:32.000000000","message":"Sure thing.","commit_id":"500a54a6080ab0850518f6f4f9edefeb22a693c0"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"620eb19112c91aaabadaacf5f50c2a6521ad5c64","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        self.client.delete_bandwidth_limit_rule(bw_rule[\u0027id\u0027], qos_policy_id)"},{"line_number":161,"context_line":"        _wait_for_bw_rule_removed(vm)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        self.client.delete_dscp_marking_rule(dscp_rule[\u0027id\u0027], qos_policy_id)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        # Create new rule"},{"line_number":166,"context_line":"        new_rule \u003d self.safe_client.create_bandwidth_limit_rule("}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_ba7d80b3","line":163,"range":{"start_line":163,"start_character":45,"end_line":163,"end_character":54},"updated":"2016-04-18 12:22:33.000000000","message":"dscp_rule is undefined.","commit_id":"500a54a6080ab0850518f6f4f9edefeb22a693c0"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"2d1d75151c57846dda06a59217b0117639090f2c","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        self.client.delete_bandwidth_limit_rule(bw_rule[\u0027id\u0027], qos_policy_id)"},{"line_number":161,"context_line":"        _wait_for_bw_rule_removed(vm)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        self.client.delete_dscp_marking_rule(dscp_rule[\u0027id\u0027], qos_policy_id)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        # Create new rule"},{"line_number":166,"context_line":"        new_rule \u003d self.safe_client.create_bandwidth_limit_rule("}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_793be8d1","line":163,"range":{"start_line":163,"start_character":45,"end_line":163,"end_character":54},"in_reply_to":"1a122d0e_ba7d80b3","updated":"2016-04-21 19:35:32.000000000","message":"Fixed so that it is defined.","commit_id":"500a54a6080ab0850518f6f4f9edefeb22a693c0"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"620eb19112c91aaabadaacf5f50c2a6521ad5c64","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            qos_policy[\u0027rules\u0027].append(rule)"},{"line_number":222,"context_line":"        return functools.partial(_add_dscp_rule, dscp_mark)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def _prepare_vm_with_qos_policy(self, rule_add_functions):"},{"line_number":225,"context_line":"        qos_policy \u003d self._create_qos_policy()"},{"line_number":226,"context_line":"        qos_policy_id \u003d qos_policy[\u0027id\u0027]"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_f84c2072","line":224,"range":{"start_line":224,"start_character":8,"end_line":224,"end_character":35},"updated":"2016-04-18 12:22:33.000000000","message":"This seems like a complete duplication of what\u0027s defined in TestBwLimitQoS :\u003c","commit_id":"500a54a6080ab0850518f6f4f9edefeb22a693c0"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"2d1d75151c57846dda06a59217b0117639090f2c","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            qos_policy[\u0027rules\u0027].append(rule)"},{"line_number":222,"context_line":"        return functools.partial(_add_dscp_rule, dscp_mark)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def _prepare_vm_with_qos_policy(self, rule_add_functions):"},{"line_number":225,"context_line":"        qos_policy \u003d self._create_qos_policy()"},{"line_number":226,"context_line":"        qos_policy_id \u003d qos_policy[\u0027id\u0027]"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_195bd42f","line":224,"range":{"start_line":224,"start_character":8,"end_line":224,"end_character":35},"in_reply_to":"1a122d0e_f84c2072","updated":"2016-04-21 19:35:32.000000000","message":"Collapsed this into a common ancestor class.","commit_id":"500a54a6080ab0850518f6f4f9edefeb22a693c0"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"620eb19112c91aaabadaacf5f50c2a6521ad5c64","unresolved":false,"context_lines":[{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        return vm, qos_policy"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def test_qos_policy_rule_lifecycle(self):"},{"line_number":247,"context_line":"        new_dscp_mark \u003d DSCP_MARK + 8"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"        # Create port with qos policy attached"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_dd1e7662","line":246,"range":{"start_line":246,"start_character":8,"end_line":246,"end_character":39},"updated":"2016-04-18 12:22:33.000000000","message":"I\u0027m against using the same test name in 2 different classes, especially when there\u0027s no direct inheritance between them - it took me the better part of 5 minutes to understand where the old test went, where in fact it didn\u0027t go anywhere :(","commit_id":"500a54a6080ab0850518f6f4f9edefeb22a693c0"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"2d1d75151c57846dda06a59217b0117639090f2c","unresolved":false,"context_lines":[{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        return vm, qos_policy"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def test_qos_policy_rule_lifecycle(self):"},{"line_number":247,"context_line":"        new_dscp_mark \u003d DSCP_MARK + 8"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"        # Create port with qos policy attached"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_7942c83f","line":246,"range":{"start_line":246,"start_character":8,"end_line":246,"end_character":39},"in_reply_to":"1a122d0e_dd1e7662","updated":"2016-04-21 19:35:32.000000000","message":"Fixed.","commit_id":"500a54a6080ab0850518f6f4f9edefeb22a693c0"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"b3c50cf87ab4f8c26360467f3a81a3b292f9c834","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    _wait_for_dscp_marking_rule_applied(vm, None)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"class BaseTestQoSRule(base.BaseFullStackTestCase):"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def setUp(self):"},{"line_number":88,"context_line":"        host_desc \u003d [environment.HostDescription("}],"source_content_type":"text/x-python","patch_set":16,"id":"1a122d0e_576c879b","line":85,"range":{"start_line":85,"start_character":6,"end_line":85,"end_character":21},"updated":"2016-04-20 14:01:50.000000000","message":"Please rename to BaseQoSRuleTestCase","commit_id":"ad0bd861babe08025f1caf3738e55ff85e100816"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"dbd992fa6a6b34554b6d1707d6b8758682120836","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    _wait_for_dscp_marking_rule_applied(vm, None)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"class BaseTestQoSRule(base.BaseFullStackTestCase):"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def setUp(self):"},{"line_number":88,"context_line":"        host_desc \u003d [environment.HostDescription("}],"source_content_type":"text/x-python","patch_set":16,"id":"1a122d0e_5a1c5f13","line":85,"range":{"start_line":85,"start_character":6,"end_line":85,"end_character":21},"in_reply_to":"1a122d0e_576c879b","updated":"2016-04-21 19:45:53.000000000","message":"Done","commit_id":"ad0bd861babe08025f1caf3738e55ff85e100816"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"811d02488cb766bb9ac2b71f9dfddfd62ae893d0","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        self._wait_for_bw_rule_removed(vm)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"class TestDscpQoSWithOvsAgent(BaseQoSRuleTestCase):"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    scenarios \u003d ["},{"line_number":174,"context_line":"        (\"ovs\", {\u0027l2_agent_type\u0027: constants.AGENT_TYPE_OVS}),"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a122d0e_1a8f5424","line":171,"updated":"2016-04-22 18:54:21.000000000","message":"If You have scenario name: \"ovs\", maybe class should be named for example \"TestDscpQoSWithL2Agent\" or something like that?","commit_id":"766dac309c20ad9fe5e099ddd0cf0997f8f441c0"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"17a1b51725f9aba57e9e8374b8450109f712c233","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        self._wait_for_bw_rule_removed(vm)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"class TestDscpQoSWithOvsAgent(BaseQoSRuleTestCase):"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    scenarios \u003d ["},{"line_number":174,"context_line":"        (\"ovs\", {\u0027l2_agent_type\u0027: constants.AGENT_TYPE_OVS}),"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a122d0e_d8e2042f","line":171,"in_reply_to":"1a122d0e_1a8f5424","updated":"2016-04-22 20:13:54.000000000","message":"Well, this is to make it very explicit that DSCP is not available for Linux Bridge, in contradistinction to bandwidth limiting.","commit_id":"766dac309c20ad9fe5e099ddd0cf0997f8f441c0"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8f6fcd042bec9a6d5f10dc7106c8e604dacefdfe","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        self._wait_for_bw_rule_removed(vm)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"class TestDscpQoSWithOvsAgent(BaseQoSRuleTestCase):"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    scenarios \u003d ["},{"line_number":174,"context_line":"        (\"ovs\", {\u0027l2_agent_type\u0027: constants.AGENT_TYPE_OVS}),"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a122d0e_eebe1afe","line":171,"in_reply_to":"1a122d0e_d8e2042f","updated":"2016-04-22 20:30:48.000000000","message":"ok, so why do You need scenarios then? Maybe it\u0027s not necessary?","commit_id":"766dac309c20ad9fe5e099ddd0cf0997f8f441c0"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"811d02488cb766bb9ac2b71f9dfddfd62ae893d0","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        self._wait_for_dscp_marking_rule_applied(vm, new_dscp_mark)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        # Update qos policy rule id"},{"line_number":213,"context_line":"        self.client.update_bandwidth_limit_rule("},{"line_number":214,"context_line":"            new_rule[\u0027id\u0027], qos_policy_id,"},{"line_number":215,"context_line":"            body\u003d{\u0027dscp_marking_rule\u0027: {\u0027dscp_mark\u0027: DSCP_MARK}})"},{"line_number":216,"context_line":"        self._wait_for_dscp_marking_rule_applied(vm, DSCP_MARK)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a122d0e_baed80b9","line":213,"updated":"2016-04-22 18:54:21.000000000","message":"I think it should be update_dscp_marking_rule here, no?","commit_id":"766dac309c20ad9fe5e099ddd0cf0997f8f441c0"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"17a1b51725f9aba57e9e8374b8450109f712c233","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        self._wait_for_dscp_marking_rule_applied(vm, new_dscp_mark)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        # Update qos policy rule id"},{"line_number":213,"context_line":"        self.client.update_bandwidth_limit_rule("},{"line_number":214,"context_line":"            new_rule[\u0027id\u0027], qos_policy_id,"},{"line_number":215,"context_line":"            body\u003d{\u0027dscp_marking_rule\u0027: {\u0027dscp_mark\u0027: DSCP_MARK}})"},{"line_number":216,"context_line":"        self._wait_for_dscp_marking_rule_applied(vm, DSCP_MARK)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a122d0e_f8bee0fd","line":213,"in_reply_to":"1a122d0e_baed80b9","updated":"2016-04-22 20:13:54.000000000","message":"Indeed!  Fixed in PS20.","commit_id":"766dac309c20ad9fe5e099ddd0cf0997f8f441c0"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4185410a19a1c261e729897105c5babb71710f8c","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        self._wait_for_bw_rule_removed(vm)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"class TestDscpQoSWithOvsAgent(BaseQoSRuleTestCase):"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    scenarios \u003d ["},{"line_number":174,"context_line":"        (\"ovs\", {\u0027l2_agent_type\u0027: constants.AGENT_TYPE_OVS}),"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a122d0e_7309532c","line":171,"updated":"2016-04-22 19:57:56.000000000","message":"This class name should no contain \"Ovs\" because it is one of scenarios","commit_id":"7736c11bffd4b6e67161abf22e78d2be0d39cd41"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"6b20df99e3bffd77744554b4f2c09d92d8613230","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        self._wait_for_bw_rule_removed(vm)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"class TestDscpQoSWithOvsAgent(BaseQoSRuleTestCase):"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    scenarios \u003d ["},{"line_number":174,"context_line":"        (\"ovs\", {\u0027l2_agent_type\u0027: constants.AGENT_TYPE_OVS}),"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a122d0e_0e9ef6b7","line":171,"in_reply_to":"1a122d0e_7309532c","updated":"2016-04-22 20:27:25.000000000","message":"I renamed it \"TestDscpMarkingQoS\" to match the other class, \"TestBwLimitQoS\".","commit_id":"7736c11bffd4b6e67161abf22e78d2be0d39cd41"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4185410a19a1c261e729897105c5babb71710f8c","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        dscp_rule \u003d qos_policy[\u0027rules\u0027][0]"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        self._wait_for_dscp_marking_rule_applied(vm, DSCP_MARK)"},{"line_number":202,"context_line":"        qos_policy_id \u003d qos_policy[\u0027id\u0027][0]"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        self.client.delete_dscp_marking_rule(dscp_rule[\u0027id\u0027], vm.port)"},{"line_number":205,"context_line":"        self._wait_for_dscp_marking_rule_removed(vm)"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a122d0e_f31d6367","line":202,"updated":"2016-04-22 19:57:56.000000000","message":"it should be probably:\n\nqos_policy_id \u003d qos_policy[\u0027id\u0027]\n\nif it is neccessary to make such assignment","commit_id":"7736c11bffd4b6e67161abf22e78d2be0d39cd41"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"6b20df99e3bffd77744554b4f2c09d92d8613230","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        dscp_rule \u003d qos_policy[\u0027rules\u0027][0]"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        self._wait_for_dscp_marking_rule_applied(vm, DSCP_MARK)"},{"line_number":202,"context_line":"        qos_policy_id \u003d qos_policy[\u0027id\u0027][0]"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        self.client.delete_dscp_marking_rule(dscp_rule[\u0027id\u0027], vm.port)"},{"line_number":205,"context_line":"        self._wait_for_dscp_marking_rule_removed(vm)"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a122d0e_2e74929a","line":202,"in_reply_to":"1a122d0e_f31d6367","updated":"2016-04-22 20:27:25.000000000","message":"Done!  I\u0027m keeping it because it is referenced in two statements below.","commit_id":"7736c11bffd4b6e67161abf22e78d2be0d39cd41"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4185410a19a1c261e729897105c5babb71710f8c","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        self._wait_for_dscp_marking_rule_applied(vm, DSCP_MARK)"},{"line_number":202,"context_line":"        qos_policy_id \u003d qos_policy[\u0027id\u0027][0]"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        self.client.delete_dscp_marking_rule(dscp_rule[\u0027id\u0027], vm.port)"},{"line_number":205,"context_line":"        self._wait_for_dscp_marking_rule_removed(vm)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        # Create new rule"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a122d0e_532377a7","line":204,"updated":"2016-04-22 19:57:56.000000000","message":"probably should be:\n\nself.client.delete_dscp_marking_rule(dscp_rule[\u0027id\u0027], qos_policy_id)","commit_id":"7736c11bffd4b6e67161abf22e78d2be0d39cd41"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"6b20df99e3bffd77744554b4f2c09d92d8613230","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        self._wait_for_dscp_marking_rule_applied(vm, DSCP_MARK)"},{"line_number":202,"context_line":"        qos_policy_id \u003d qos_policy[\u0027id\u0027][0]"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        self.client.delete_dscp_marking_rule(dscp_rule[\u0027id\u0027], vm.port)"},{"line_number":205,"context_line":"        self._wait_for_dscp_marking_rule_removed(vm)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        # Create new rule"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a122d0e_0e7716a0","line":204,"in_reply_to":"1a122d0e_532377a7","updated":"2016-04-22 20:27:25.000000000","message":"Done","commit_id":"7736c11bffd4b6e67161abf22e78d2be0d39cd41"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4185410a19a1c261e729897105c5babb71710f8c","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        # Create new rule"},{"line_number":208,"context_line":"        new_rule \u003d self.safe_client.create_dscp_marking("},{"line_number":209,"context_line":"            self.tenant_id, vm.port, new_dscp_mark)"},{"line_number":210,"context_line":"        self._wait_for_dscp_marking_rule_applied(vm, new_dscp_mark)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        # Update qos policy rule id"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a122d0e_73579302","line":209,"updated":"2016-04-22 19:57:56.000000000","message":"probably should be:\n\nnew_rule \u003d self.safe_client.create_dscp_marking_rule(\n    self.tenant_id, qos_policy_id, new_dscp_mark)","commit_id":"7736c11bffd4b6e67161abf22e78d2be0d39cd41"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"6b20df99e3bffd77744554b4f2c09d92d8613230","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        # Create new rule"},{"line_number":208,"context_line":"        new_rule \u003d self.safe_client.create_dscp_marking("},{"line_number":209,"context_line":"            self.tenant_id, vm.port, new_dscp_mark)"},{"line_number":210,"context_line":"        self._wait_for_dscp_marking_rule_applied(vm, new_dscp_mark)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        # Update qos policy rule id"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a122d0e_6e6e8aca","line":209,"in_reply_to":"1a122d0e_73579302","updated":"2016-04-22 20:27:25.000000000","message":"Done","commit_id":"7736c11bffd4b6e67161abf22e78d2be0d39cd41"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"9ec68e7dde6b2edd33a4e6d90b995620d44c2b94","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import functools"},{"line_number":16,"context_line":"from neutron_lib import constants"},{"line_number":17,"context_line":"from oslo_utils import uuidutils"},{"line_number":18,"context_line":"import testscenarios"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a122d0e_60b5d2ce","line":15,"updated":"2016-05-04 15:49:40.000000000","message":"missing new line","commit_id":"617c2bb5f26645ae972cb7d6884b7044ee0c7ada"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"a6d6e185b2c0f1b6cc1d21bae74e62e6ec5b60f8","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import functools"},{"line_number":16,"context_line":"from neutron_lib import constants"},{"line_number":17,"context_line":"from oslo_utils import uuidutils"},{"line_number":18,"context_line":"import testscenarios"}],"source_content_type":"text/x-python","patch_set":22,"id":"dab17558_f4a67fbf","line":15,"in_reply_to":"1a122d0e_60b5d2ce","updated":"2016-05-16 21:22:53.000000000","message":"Done","commit_id":"617c2bb5f26645ae972cb7d6884b7044ee0c7ada"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"d51fb9d1259cd4d50d1c8fc94e630b833ab673af","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"class TestDscpMarkingQoS(BaseQoSRuleTestCase):"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    scenarios \u003d ["},{"line_number":179,"context_line":"        (\"ovs\", {\u0027l2_agent_type\u0027: constants.AGENT_TYPE_OVS}),"},{"line_number":180,"context_line":"    ]"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"bab6814e_4217bb44","line":178,"updated":"2016-05-27 02:04:27.000000000","message":"Since you have to respin anyway, might as well remove this usage of scenarios.","commit_id":"e1d298b82e3d78b18e96d1da235648621cb9f207"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"d1c1f8b0ebfc42f7bd0956fad4c90e014416c661","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"class TestDscpMarkingQoS(BaseQoSRuleTestCase):"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    scenarios \u003d ["},{"line_number":179,"context_line":"        (\"ovs\", {\u0027l2_agent_type\u0027: constants.AGENT_TYPE_OVS}),"},{"line_number":180,"context_line":"    ]"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"7aa08908_1be60444","line":178,"in_reply_to":"7aa08908_294bc488","updated":"2016-06-07 17:03:06.000000000","message":"OK, so I couldn\u0027t set l2_agent_type in the TestDscpMarkingQos class - I got an error that \"\".  So I added l2_agent_type as an argument to BaseQoSRuleTestCase.setUp, which allowed me to set it... but I still needed scenarios it seems for the bandwidth limit tests, because those need to be run through once for Linux Bridge and once for OVS.","commit_id":"e1d298b82e3d78b18e96d1da235648621cb9f207"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"043884b389bda6296f0cb6707141f0ea1307dbc5","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"class TestDscpMarkingQoS(BaseQoSRuleTestCase):"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    scenarios \u003d ["},{"line_number":179,"context_line":"        (\"ovs\", {\u0027l2_agent_type\u0027: constants.AGENT_TYPE_OVS}),"},{"line_number":180,"context_line":"    ]"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"7aa08908_294bc488","line":178,"in_reply_to":"7aa08908_2e758a97","updated":"2016-06-07 14:43:15.000000000","message":"no, in that case the scenario is correct.\n\nBut that\u0027s why I say scenarios are good for me, that\u0027s more uniform :-)","commit_id":"e1d298b82e3d78b18e96d1da235648621cb9f207"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"492483582f16e3fdc6cd0eeaadd2ff0558f37e1b","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"class TestDscpMarkingQoS(BaseQoSRuleTestCase):"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    scenarios \u003d ["},{"line_number":179,"context_line":"        (\"ovs\", {\u0027l2_agent_type\u0027: constants.AGENT_TYPE_OVS}),"},{"line_number":180,"context_line":"    ]"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"7aa08908_2e758a97","line":178,"in_reply_to":"7aa08908_bb50a95f","updated":"2016-06-07 14:19:11.000000000","message":"What should I declare l2_agent_type to be for the bandwidth limiting tests, which need to run on both Linux Bridge and OVS?","commit_id":"e1d298b82e3d78b18e96d1da235648621cb9f207"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"e863d9b1927122a84182e13a4497228df6340698","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"class TestDscpMarkingQoS(BaseQoSRuleTestCase):"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    scenarios \u003d ["},{"line_number":179,"context_line":"        (\"ovs\", {\u0027l2_agent_type\u0027: constants.AGENT_TYPE_OVS}),"},{"line_number":180,"context_line":"    ]"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"9abb7d3a_aa7435fd","line":178,"in_reply_to":"9abb7d3a_0f6f6593","updated":"2016-05-27 13:05:20.000000000","message":"l2_agent_type \u003d constants.AGENT_TYPE_OVS","commit_id":"e1d298b82e3d78b18e96d1da235648621cb9f207"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"b59180274201152c6ff90bd28cd2caf3ec702955","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"class TestDscpMarkingQoS(BaseQoSRuleTestCase):"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    scenarios \u003d ["},{"line_number":179,"context_line":"        (\"ovs\", {\u0027l2_agent_type\u0027: constants.AGENT_TYPE_OVS}),"},{"line_number":180,"context_line":"    ]"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"7aa08908_bb50a95f","line":178,"in_reply_to":"9abb7d3a_aa7435fd","updated":"2016-06-07 11:58:37.000000000","message":"amuller means that you can declare here just:\n\nl2_agent_type \u003d constants.AGENT_TYPE_OVS\n\nbtw, I think the scenarios are also ok to be more uniform with the tests above, but amuller is our testing supreme leader now :D :-) so I would listen more his opinion :)","commit_id":"e1d298b82e3d78b18e96d1da235648621cb9f207"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"66527e29631ab42cb056e449774015ca68f8b886","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"class TestDscpMarkingQoS(BaseQoSRuleTestCase):"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    scenarios \u003d ["},{"line_number":179,"context_line":"        (\"ovs\", {\u0027l2_agent_type\u0027: constants.AGENT_TYPE_OVS}),"},{"line_number":180,"context_line":"    ]"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"9abb7d3a_0f6f6593","line":178,"in_reply_to":"bab6814e_4217bb44","updated":"2016-05-27 03:26:41.000000000","message":"So if using scenarios is not the best way to make sure the DSCP tests run for OVS but not LinuxBridge (as opposed to lines 97-100), what is the best way?","commit_id":"e1d298b82e3d78b18e96d1da235648621cb9f207"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a610baf4cf0fb5c218ecedff5e747564eeb8a054","unresolved":false,"context_lines":[{"line_number":47,"context_line":"class BaseQoSRuleTestCase(base.BaseFullStackTestCase):"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def setUp(self, l2_agent_type\u003dNone):"},{"line_number":50,"context_line":"\tif l2_agent_type \u003d\u003d None:"},{"line_number":51,"context_line":"\t    l2_agent_type \u003d self.l2_agent_type"},{"line_number":52,"context_line":"        host_desc \u003d [environment.HostDescription("},{"line_number":53,"context_line":"            l3_agent\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_96461479","line":50,"range":{"start_line":50,"start_character":18,"end_line":50,"end_character":20},"updated":"2016-06-08 11:58:30.000000000","message":"is","commit_id":"9b64256446dd217bbe6d79fa595edd1d34ccb94c"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"19334c8290eaadc65b00e395cb7e0a589dccdc10","unresolved":false,"context_lines":[{"line_number":47,"context_line":"class BaseQoSRuleTestCase(base.BaseFullStackTestCase):"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def setUp(self, l2_agent_type\u003dNone):"},{"line_number":50,"context_line":"\tif l2_agent_type \u003d\u003d None:"},{"line_number":51,"context_line":"\t    l2_agent_type \u003d self.l2_agent_type"},{"line_number":52,"context_line":"        host_desc \u003d [environment.HostDescription("},{"line_number":53,"context_line":"            l3_agent\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_25e2802f","line":50,"range":{"start_line":50,"start_character":18,"end_line":50,"end_character":20},"in_reply_to":"7aa08908_96461479","updated":"2016-06-08 12:51:10.000000000","message":"Done","commit_id":"9b64256446dd217bbe6d79fa595edd1d34ccb94c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a610baf4cf0fb5c218ecedff5e747564eeb8a054","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"class TestDscpMarkingQoS(BaseQoSRuleTestCase):"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def setUp(self):"},{"line_number":181,"context_line":"        super(TestDscpMarkingQoS, self).setUp(constants.AGENT_TYPE_OVS)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def _wait_for_dscp_marking_rule_applied(self, vm, dscp_mark):"},{"line_number":184,"context_line":"        l2_extensions.wait_until_dscp_marking_rule_applied("}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_192ff788","line":181,"range":{"start_line":180,"start_character":4,"end_line":181,"end_character":71},"updated":"2016-06-08 11:58:30.000000000","message":"I think instead of that, you should just add l2_agent_type class attribute here. Then the base setUp() will be able to extract it from self.","commit_id":"9b64256446dd217bbe6d79fa595edd1d34ccb94c"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"cab77254d5b33728450aed8136cf2726b629b1f7","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"class TestDscpMarkingQoS(BaseQoSRuleTestCase):"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def setUp(self):"},{"line_number":181,"context_line":"        super(TestDscpMarkingQoS, self).setUp(constants.AGENT_TYPE_OVS)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def _wait_for_dscp_marking_rule_applied(self, vm, dscp_mark):"},{"line_number":184,"context_line":"        l2_extensions.wait_until_dscp_marking_rule_applied("}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_6a9bb718","line":181,"range":{"start_line":180,"start_character":4,"end_line":181,"end_character":71},"in_reply_to":"7aa08908_192ff788","updated":"2016-06-08 12:45:55.000000000","message":"That was the first formulation I tried.  I did that in the setUp, changing the text like so:\n\n    def setUp(self):\n        l2_agent_type \u003d constants.AGENT_TYPE_OVS\n        super(TestDscpMarkingQoS, self).setUp()\n\nThe problem is that when I run the test I get the following error:\n\n        AttributeError: \u0027TestDscpMarkingQoS\u0027 object has no attribute \u0027l2_agent_type\u0027\n\nAm I doing it incorrectly?","commit_id":"9b64256446dd217bbe6d79fa595edd1d34ccb94c"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"19334c8290eaadc65b00e395cb7e0a589dccdc10","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"class TestDscpMarkingQoS(BaseQoSRuleTestCase):"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def setUp(self):"},{"line_number":181,"context_line":"        super(TestDscpMarkingQoS, self).setUp(constants.AGENT_TYPE_OVS)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def _wait_for_dscp_marking_rule_applied(self, vm, dscp_mark):"},{"line_number":184,"context_line":"        l2_extensions.wait_until_dscp_marking_rule_applied("}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_4576ac3e","line":181,"range":{"start_line":180,"start_character":4,"end_line":181,"end_character":71},"in_reply_to":"7aa08908_6a9bb718","updated":"2016-06-08 12:51:10.000000000","message":"Gah, never mind, as usual right after I comment I figured it out.","commit_id":"9b64256446dd217bbe6d79fa595edd1d34ccb94c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1bb04845ca5303772cfc22d9be054e54a44d90ed","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"class TestDscpMarkingQoS(BaseQoSRuleTestCase):"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def setUp(self):"},{"line_number":181,"context_line":"        super(TestDscpMarkingQoS, self).setUp(constants.AGENT_TYPE_OVS)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def _wait_for_dscp_marking_rule_applied(self, vm, dscp_mark):"},{"line_number":184,"context_line":"        l2_extensions.wait_until_dscp_marking_rule_applied("}],"source_content_type":"text/x-python","patch_set":28,"id":"7aa08908_05a784aa","line":181,"range":{"start_line":180,"start_character":4,"end_line":181,"end_character":71},"in_reply_to":"7aa08908_6a9bb718","updated":"2016-06-08 12:51:18.000000000","message":"You do.\n\nJust add \"l2_agent_type \u003d constants.AGENT_TYPE_OVS\" to the 1st level of the class definition, line 179 (no functions).\n\nIf you would go with setUp(), you would need to set self.l2_agent_type, not just local variable l2_agent_type. But that\u0027s unnecessary complexity in the first place.\n\nFirst hit in google on class attributes: https://www.toptal.com/python/python-class-attributes-an-overly-thorough-guide Enjoy!","commit_id":"9b64256446dd217bbe6d79fa595edd1d34ccb94c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"841b24652a936a41c56e47e3067d55ba5704d0c2","unresolved":false,"context_lines":[{"line_number":176,"context_line":"class TestDscpMarkingQoS(BaseQoSRuleTestCase):"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def setUp(self):"},{"line_number":179,"context_line":"\tself.l2_agent_type \u003d constants.AGENT_TYPE_OVS"},{"line_number":180,"context_line":"        super(TestDscpMarkingQoS, self).setUp()"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _wait_for_dscp_marking_rule_applied(self, vm, dscp_mark):"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aa08908_e87636a2","line":179,"range":{"start_line":179,"start_character":0,"end_line":179,"end_character":1},"updated":"2016-06-15 16:16:50.000000000","message":"This should have failed in pep8 :(","commit_id":"73546f8503f0d26c90aae9f7c2aa108d710870c8"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"fca314252c58c2c14781c2f01cac9eb1f56382b7","unresolved":false,"context_lines":[{"line_number":176,"context_line":"class TestDscpMarkingQoS(BaseQoSRuleTestCase):"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def setUp(self):"},{"line_number":179,"context_line":"\tself.l2_agent_type \u003d constants.AGENT_TYPE_OVS"},{"line_number":180,"context_line":"        super(TestDscpMarkingQoS, self).setUp()"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _wait_for_dscp_marking_rule_applied(self, vm, dscp_mark):"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aa08908_e0a2a6ac","line":179,"range":{"start_line":179,"start_character":0,"end_line":179,"end_character":1},"in_reply_to":"7aa08908_08ce22b7","updated":"2016-06-16 10:40:05.000000000","message":"TAB !\u003d 8 spaces and TABs are evil","commit_id":"73546f8503f0d26c90aae9f7c2aa108d710870c8"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"a4219af3aa3c59d80a16299a5977c6242869c2b7","unresolved":false,"context_lines":[{"line_number":176,"context_line":"class TestDscpMarkingQoS(BaseQoSRuleTestCase):"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def setUp(self):"},{"line_number":179,"context_line":"\tself.l2_agent_type \u003d constants.AGENT_TYPE_OVS"},{"line_number":180,"context_line":"        super(TestDscpMarkingQoS, self).setUp()"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _wait_for_dscp_marking_rule_applied(self, vm, dscp_mark):"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aa08908_e0c8e623","line":179,"range":{"start_line":179,"start_character":0,"end_line":179,"end_character":1},"in_reply_to":"7aa08908_e0a2a6ac","updated":"2016-06-16 10:43:56.000000000","message":"https://review.openstack.org/#/c/330449/1","commit_id":"73546f8503f0d26c90aae9f7c2aa108d710870c8"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"5cd07e02ed9b431281c9b22df5e3ba539ec4af87","unresolved":false,"context_lines":[{"line_number":176,"context_line":"class TestDscpMarkingQoS(BaseQoSRuleTestCase):"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def setUp(self):"},{"line_number":179,"context_line":"\tself.l2_agent_type \u003d constants.AGENT_TYPE_OVS"},{"line_number":180,"context_line":"        super(TestDscpMarkingQoS, self).setUp()"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _wait_for_dscp_marking_rule_applied(self, vm, dscp_mark):"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aa08908_08ce22b7","line":179,"range":{"start_line":179,"start_character":0,"end_line":179,"end_character":1},"in_reply_to":"7aa08908_e87636a2","updated":"2016-06-15 16:19:48.000000000","message":"\u0027cause?..","commit_id":"73546f8503f0d26c90aae9f7c2aa108d710870c8"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"6e8900e66e134a6e46269b3ef7d86de0082ef3ad","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"class TestDscpMarkingQoS(BaseQoSRuleTestCase):"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def setUp(self):"},{"line_number":179,"context_line":"\tself.l2_agent_type \u003d constants.AGENT_TYPE_OVS"},{"line_number":180,"context_line":"        super(TestDscpMarkingQoS, self).setUp()"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _wait_for_dscp_marking_rule_applied(self, vm, dscp_mark):"},{"line_number":183,"context_line":"        l2_extensions.wait_until_dscp_marking_rule_applied("}],"source_content_type":"text/x-python","patch_set":29,"id":"7aa08908_052ae4da","line":180,"range":{"start_line":178,"start_character":4,"end_line":180,"end_character":47},"updated":"2016-06-08 12:52:53.000000000","message":"could be replaced with just \u0027l2_agent_type \u003d ... but meh.","commit_id":"73546f8503f0d26c90aae9f7c2aa108d710870c8"}]}
