)]}'
{"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8c4d271f40331eb852d21fbdce5187908c1fe0d6","unresolved":false,"context_lines":[{"line_number":413,"context_line":"            # Add qos for port by qos table of logical flow instead of tc"},{"line_number":414,"context_line":"            qos_options \u003d self._qos_driver.get_qos_options(port)"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"            if qos_options:"},{"line_number":417,"context_line":"                for options in qos_options:"},{"line_number":418,"context_line":"                    qos_rule_column \u003d self._create_qos_rules("},{"line_number":419,"context_line":"                        options, port, lswitch_name)"},{"line_number":420,"context_line":"                    txn.add(self._nb_idl.qos_add(**qos_rule_column))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_e38145ff","line":417,"range":{"start_line":416,"start_character":12,"end_line":417,"end_character":43},"updated":"2020-02-19 10:38:13.000000000","message":"self._qos_driver.get_qos_options(port) will return a set (empty or not). You can directly check:\n\n  for options in qos_options:\n    qos_rule_column \u003d ...","commit_id":"e0f9ef6a5df5dc8116e3f1e4edabe579ca743e9c"},{"author":{"_account_id":29874,"name":"Taoyunxiang","email":"taoyunxiang_yewu@cmss.chinamobile.com","username":"Yunxiang"},"change_message_id":"bbbde050e1761badab09460cc5ab7797c2d17fff","unresolved":false,"context_lines":[{"line_number":413,"context_line":"            # Add qos for port by qos table of logical flow instead of tc"},{"line_number":414,"context_line":"            qos_options \u003d self._qos_driver.get_qos_options(port)"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"            if qos_options:"},{"line_number":417,"context_line":"                for options in qos_options:"},{"line_number":418,"context_line":"                    qos_rule_column \u003d self._create_qos_rules("},{"line_number":419,"context_line":"                        options, port, lswitch_name)"},{"line_number":420,"context_line":"                    txn.add(self._nb_idl.qos_add(**qos_rule_column))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_822166fe","line":417,"range":{"start_line":416,"start_character":12,"end_line":417,"end_character":43},"in_reply_to":"3fa7e38b_d01f1b09","updated":"2020-02-26 09:52:01.000000000","message":"Before this patch,self._qos_driver.get_qos_options(port) will return dict actually.","commit_id":"e0f9ef6a5df5dc8116e3f1e4edabe579ca743e9c"},{"author":{"_account_id":29874,"name":"Taoyunxiang","email":"taoyunxiang_yewu@cmss.chinamobile.com","username":"Yunxiang"},"change_message_id":"17a3d13a21b0ac92551aecb8254df67c168f24e5","unresolved":false,"context_lines":[{"line_number":413,"context_line":"            # Add qos for port by qos table of logical flow instead of tc"},{"line_number":414,"context_line":"            qos_options \u003d self._qos_driver.get_qos_options(port)"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"            if qos_options:"},{"line_number":417,"context_line":"                for options in qos_options:"},{"line_number":418,"context_line":"                    qos_rule_column \u003d self._create_qos_rules("},{"line_number":419,"context_line":"                        options, port, lswitch_name)"},{"line_number":420,"context_line":"                    txn.add(self._nb_idl.qos_add(**qos_rule_column))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_9f2bebe9","line":417,"range":{"start_line":416,"start_character":12,"end_line":417,"end_character":43},"in_reply_to":"3fa7e38b_e38145ff","updated":"2020-02-27 06:48:51.000000000","message":"Done","commit_id":"e0f9ef6a5df5dc8116e3f1e4edabe579ca743e9c"},{"author":{"_account_id":29874,"name":"Taoyunxiang","email":"taoyunxiang_yewu@cmss.chinamobile.com","username":"Yunxiang"},"change_message_id":"ac8960703b93eedafcbb2964dc83bf16cf383ee5","unresolved":false,"context_lines":[{"line_number":413,"context_line":"            # Add qos for port by qos table of logical flow instead of tc"},{"line_number":414,"context_line":"            qos_options \u003d self._qos_driver.get_qos_options(port)"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"            if qos_options:"},{"line_number":417,"context_line":"                for options in qos_options:"},{"line_number":418,"context_line":"                    qos_rule_column \u003d self._create_qos_rules("},{"line_number":419,"context_line":"                        options, port, lswitch_name)"},{"line_number":420,"context_line":"                    txn.add(self._nb_idl.qos_add(**qos_rule_column))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_d01f1b09","line":417,"range":{"start_line":416,"start_character":12,"end_line":417,"end_character":43},"in_reply_to":"3fa7e38b_e38145ff","updated":"2020-02-20 03:40:49.000000000","message":"Sory ,I am not clear the problem is. Can you make it be detailed?  Thanks :)","commit_id":"e0f9ef6a5df5dc8116e3f1e4edabe579ca743e9c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8c4d271f40331eb852d21fbdce5187908c1fe0d6","unresolved":false,"context_lines":[{"line_number":648,"context_line":"            # If we create port with qos_policy, we also need execute"},{"line_number":649,"context_line":"            # update_port method, which qos_policy is in port dict, so we"},{"line_number":650,"context_line":"            # also need get policy from port dict if qos_options is None"},{"line_number":651,"context_line":"            qos_options_new \u003d (qos_options if qos_options"},{"line_number":652,"context_line":"                               else self._qos_driver.get_qos_options(port))"},{"line_number":653,"context_line":"            # If port_object is None, we also need to get necessary params"},{"line_number":654,"context_line":"            # to delete the qos rule"},{"line_number":655,"context_line":"            qos_options_old \u003d (self._qos_driver.get_qos_options(port_object)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_434e1991","line":652,"range":{"start_line":651,"start_character":12,"end_line":652,"end_character":75},"updated":"2020-02-19 10:38:13.000000000","message":"Maybe this is not related to this patch but I still don\u0027t understand this. If no qos options are updated, that means we\u0027ll retrieve the existing ones, same as in \"qos_options_old\".\n\nIn L664 we\u0027ll delete the existing qos options and rewrite again the same rules. Is that OK??","commit_id":"e0f9ef6a5df5dc8116e3f1e4edabe579ca743e9c"},{"author":{"_account_id":29874,"name":"Taoyunxiang","email":"taoyunxiang_yewu@cmss.chinamobile.com","username":"Yunxiang"},"change_message_id":"ac8960703b93eedafcbb2964dc83bf16cf383ee5","unresolved":false,"context_lines":[{"line_number":648,"context_line":"            # If we create port with qos_policy, we also need execute"},{"line_number":649,"context_line":"            # update_port method, which qos_policy is in port dict, so we"},{"line_number":650,"context_line":"            # also need get policy from port dict if qos_options is None"},{"line_number":651,"context_line":"            qos_options_new \u003d (qos_options if qos_options"},{"line_number":652,"context_line":"                               else self._qos_driver.get_qos_options(port))"},{"line_number":653,"context_line":"            # If port_object is None, we also need to get necessary params"},{"line_number":654,"context_line":"            # to delete the qos rule"},{"line_number":655,"context_line":"            qos_options_old \u003d (self._qos_driver.get_qos_options(port_object)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_b0d13f5d","line":652,"range":{"start_line":651,"start_character":12,"end_line":652,"end_character":75},"in_reply_to":"3fa7e38b_434e1991","updated":"2020-02-20 03:40:49.000000000","message":"The info in \"port\" dic is the new port info which need to be updated.\nThe update process contanins delete old rules and add new rules.\n\n1. If no qos_options, that means we want to clear the QoS rule on this port. If we want to clear, we need to know the old rules.\n2.For the qos_options_old, as for L655. When we want to update port\u0027s qos policy, we have the port_object param,which contains old qos rules, so we can delete the old ones easyly.    \n\nIf we want to update network\u0027s QoS policy, we also update ports which belongs the network actually. But we don\u0027t have port_object info ever, so we need some rules to delete the old rules. I thik it is not a good idea,  but I don\u0027t know the better one. What do you think?\n\n\nIt isn\u0027t good way to get old QoS infomation from port_object. And  the QoS process is complicated,now. \n\nI think the orginal problem of this is that QoS policy has not a direct releated resource in core OVN. \n\nI think the best way is to make a connection from UUID of qos policy of neutron and QoS row of core OVN. The probelm is how to record the UUID in core OVN, I think we can add a \"name\" column in QoS table of core OVN to do it, so I summit [1]. Han Zhou suggest me to make use of [2] to make the UUIDs be the same between neutron and Core OVN,but this patch colud not support ovn-*ctl commands, so I summit [3].\n\nI think we have three ways to solve this.\n1. As zhanghao says,we could record new and old qos policy in port and network. This just need to change neutron code.\n\n2.Make the UUIDs be the same between neutron and Core OVN, this need to wait my patch[3] to merge, I think it needs a long time, and we need do much work on ovsdbapp.\n\n3.If we record UUID of qos policy of neutron in external_ids of QoS in core OVN is not a bad choice,though I think it will be costly when search the target,but we have done many similar features. It need to change ovsdbapp and neutron. I think it is not complicated, and is a suitable way to do.\n\nWhat do you think?\n\n\n[0]https://review.opendev.org/#/c/692084/ \n[1]http://patchwork.ozlabs.org/cover/1214897/\n[2]https://patchwork.ozlabs.org/patch/1220644/\n[3]http://patchwork.ozlabs.org/patch/1239790/","commit_id":"e0f9ef6a5df5dc8116e3f1e4edabe579ca743e9c"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"d8314c8f074353e5280ce9341f07f6ee89e6053b","unresolved":false,"context_lines":[{"line_number":648,"context_line":"            # If we create port with qos_policy, we also need execute"},{"line_number":649,"context_line":"            # update_port method, which qos_policy is in port dict, so we"},{"line_number":650,"context_line":"            # also need get policy from port dict if qos_options is None"},{"line_number":651,"context_line":"            qos_options_new \u003d (qos_options if qos_options"},{"line_number":652,"context_line":"                               else self._qos_driver.get_qos_options(port))"},{"line_number":653,"context_line":"            # If port_object is None, we also need to get necessary params"},{"line_number":654,"context_line":"            # to delete the qos rule"},{"line_number":655,"context_line":"            qos_options_old \u003d (self._qos_driver.get_qos_options(port_object)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_b4312ea5","line":652,"range":{"start_line":651,"start_character":12,"end_line":652,"end_character":75},"in_reply_to":"3fa7e38b_434e1991","updated":"2020-02-27 03:41:02.000000000","message":"This problem exists and I will fix it.","commit_id":"e0f9ef6a5df5dc8116e3f1e4edabe579ca743e9c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8c4d271f40331eb852d21fbdce5187908c1fe0d6","unresolved":false,"context_lines":[{"line_number":715,"context_line":"            qos_rule.update(match\u003dmatch)"},{"line_number":716,"context_line":"        # QoS of bandwidth_limit"},{"line_number":717,"context_line":"        if \u0027qos_max_rate\u0027 in qos_options:"},{"line_number":718,"context_line":"            burst \u003d qos_options.get(\u0027qos_burst\u0027)"},{"line_number":719,"context_line":"            qos_rule.update(rate\u003dqos_options[\u0027qos_max_rate\u0027],"},{"line_number":720,"context_line":"                            burst\u003dburst, dscp\u003dNone)"},{"line_number":721,"context_line":"        # QoS of dscp"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_c37a0975","line":718,"updated":"2020-02-19 10:38:13.000000000","message":"Please, rebase this patch to master.\n\n\"burst\" is mandatory but not always is set. Check if \"burst\" is in the qos_options and then update (or not) qos_options.","commit_id":"e0f9ef6a5df5dc8116e3f1e4edabe579ca743e9c"},{"author":{"_account_id":29874,"name":"Taoyunxiang","email":"taoyunxiang_yewu@cmss.chinamobile.com","username":"Yunxiang"},"change_message_id":"ac8960703b93eedafcbb2964dc83bf16cf383ee5","unresolved":false,"context_lines":[{"line_number":715,"context_line":"            qos_rule.update(match\u003dmatch)"},{"line_number":716,"context_line":"        # QoS of bandwidth_limit"},{"line_number":717,"context_line":"        if \u0027qos_max_rate\u0027 in qos_options:"},{"line_number":718,"context_line":"            burst \u003d qos_options.get(\u0027qos_burst\u0027)"},{"line_number":719,"context_line":"            qos_rule.update(rate\u003dqos_options[\u0027qos_max_rate\u0027],"},{"line_number":720,"context_line":"                            burst\u003dburst, dscp\u003dNone)"},{"line_number":721,"context_line":"        # QoS of dscp"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_d0063bcd","line":718,"in_reply_to":"3fa7e38b_c37a0975","updated":"2020-02-20 03:40:49.000000000","message":"Hi,I have rebased to master. I think the existing code in  L718 has implemented your idea. What do you think?  :)","commit_id":"e0f9ef6a5df5dc8116e3f1e4edabe579ca743e9c"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"d8314c8f074353e5280ce9341f07f6ee89e6053b","unresolved":false,"context_lines":[{"line_number":413,"context_line":"            # Add qos for port by qos table of logical flow instead of tc"},{"line_number":414,"context_line":"            qos_options \u003d self._qos_driver.get_qos_options(port)"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"            if qos_options:"},{"line_number":417,"context_line":"                for options in qos_options:"},{"line_number":418,"context_line":"                    qos_rule_column \u003d self._create_qos_rules("},{"line_number":419,"context_line":"                        options, port, lswitch_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_f4680688","line":416,"range":{"start_line":416,"start_character":12,"end_line":416,"end_character":27},"updated":"2020-02-27 03:41:02.000000000","message":"no need, as Rodolfo said.","commit_id":"65d4251f5e66928bf1c53d5686434ac6c186919a"},{"author":{"_account_id":29874,"name":"Taoyunxiang","email":"taoyunxiang_yewu@cmss.chinamobile.com","username":"Yunxiang"},"change_message_id":"17a3d13a21b0ac92551aecb8254df67c168f24e5","unresolved":false,"context_lines":[{"line_number":413,"context_line":"            # Add qos for port by qos table of logical flow instead of tc"},{"line_number":414,"context_line":"            qos_options \u003d self._qos_driver.get_qos_options(port)"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"            if qos_options:"},{"line_number":417,"context_line":"                for options in qos_options:"},{"line_number":418,"context_line":"                    qos_rule_column \u003d self._create_qos_rules("},{"line_number":419,"context_line":"                        options, port, lswitch_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_3ff51784","line":416,"range":{"start_line":416,"start_character":12,"end_line":416,"end_character":27},"in_reply_to":"1fa4df85_f4680688","updated":"2020-02-27 06:48:51.000000000","message":"Done","commit_id":"65d4251f5e66928bf1c53d5686434ac6c186919a"}],"neutron/services/qos/drivers/ovn/driver.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8c4d271f40331eb852d21fbdce5187908c1fe0d6","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    def _generate_port_options(self, context, policy_id):"},{"line_number":98,"context_line":"        if policy_id is None:"},{"line_number":99,"context_line":"            return {}"},{"line_number":100,"context_line":"        options \u003d []"},{"line_number":101,"context_line":"        # The policy might not have any rules"},{"line_number":102,"context_line":"        all_rules \u003d qos_rule.get_rules(qos_policy.QosPolicy,"},{"line_number":103,"context_line":"                                       context, policy_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_e85fe449","line":100,"updated":"2020-02-19 10:38:13.000000000","message":"Please, do not change the type of variable returned. All qos rules must be different, that means any element in this set will be unique.","commit_id":"e0f9ef6a5df5dc8116e3f1e4edabe579ca743e9c"},{"author":{"_account_id":29874,"name":"Taoyunxiang","email":"taoyunxiang_yewu@cmss.chinamobile.com","username":"Yunxiang"},"change_message_id":"bbbde050e1761badab09460cc5ab7797c2d17fff","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    def _generate_port_options(self, context, policy_id):"},{"line_number":98,"context_line":"        if policy_id is None:"},{"line_number":99,"context_line":"            return {}"},{"line_number":100,"context_line":"        options \u003d []"},{"line_number":101,"context_line":"        # The policy might not have any rules"},{"line_number":102,"context_line":"        all_rules \u003d qos_rule.get_rules(qos_policy.QosPolicy,"},{"line_number":103,"context_line":"                                       context, policy_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_a2fa623f","line":100,"in_reply_to":"3fa7e38b_1099337f","updated":"2020-02-26 09:52:01.000000000","message":"I don\u0027t know if we need to check the dulplicated rules.If so, we may check it after L102,what do you think? :) \n\nIf keep options being a dict, how to add multi qos rules which are dicted ? :)","commit_id":"e0f9ef6a5df5dc8116e3f1e4edabe579ca743e9c"},{"author":{"_account_id":29874,"name":"Taoyunxiang","email":"taoyunxiang_yewu@cmss.chinamobile.com","username":"Yunxiang"},"change_message_id":"ac8960703b93eedafcbb2964dc83bf16cf383ee5","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    def _generate_port_options(self, context, policy_id):"},{"line_number":98,"context_line":"        if policy_id is None:"},{"line_number":99,"context_line":"            return {}"},{"line_number":100,"context_line":"        options \u003d []"},{"line_number":101,"context_line":"        # The policy might not have any rules"},{"line_number":102,"context_line":"        all_rules \u003d qos_rule.get_rules(qos_policy.QosPolicy,"},{"line_number":103,"context_line":"                                       context, policy_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_1099337f","line":100,"in_reply_to":"3fa7e38b_e85fe449","updated":"2020-02-20 03:40:49.000000000","message":"Get it ,I will change it. Thanks:)","commit_id":"e0f9ef6a5df5dc8116e3f1e4edabe579ca743e9c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8c4d271f40331eb852d21fbdce5187908c1fe0d6","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                                       context, policy_id)"},{"line_number":104,"context_line":"        for rule in all_rules:"},{"line_number":105,"context_line":"            if isinstance(rule, qos_rule.QosBandwidthLimitRule):"},{"line_number":106,"context_line":"                options_bw \u003d {}"},{"line_number":107,"context_line":"                options_bw[\u0027qos_max_rate\u0027] \u003d rule.max_kbps"},{"line_number":108,"context_line":"                if rule.max_burst_kbps:"},{"line_number":109,"context_line":"                    options_bw[\u0027qos_burst\u0027] \u003d rule.max_burst_kbps"},{"line_number":110,"context_line":"                options_bw[\u0027direction\u0027] \u003d rule.direction"},{"line_number":111,"context_line":"                options.append(options_bw)"},{"line_number":112,"context_line":"            if isinstance(rule, qos_rule.QosDscpMarkingRule):"},{"line_number":113,"context_line":"                options_dscp \u003d {}"},{"line_number":114,"context_line":"                options_dscp[\u0027dscp_mark\u0027] \u003d rule.dscp_mark"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_6338f5cb","line":111,"range":{"start_line":106,"start_character":16,"end_line":111,"end_character":42},"updated":"2020-02-19 10:38:13.000000000","message":"Let\u0027s simplify this:\n\noption \u003d {\u0027qos_max_rate\u0027: rule.max_kbps,\n          \u0027direction\u0027: rule.direction}\nif rule.max_burst_kbps:\n    options[\u0027qos_burst\u0027] \u003d rule.max_burst_kbps\noptions.append(option)","commit_id":"e0f9ef6a5df5dc8116e3f1e4edabe579ca743e9c"},{"author":{"_account_id":29874,"name":"Taoyunxiang","email":"taoyunxiang_yewu@cmss.chinamobile.com","username":"Yunxiang"},"change_message_id":"bbbde050e1761badab09460cc5ab7797c2d17fff","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                                       context, policy_id)"},{"line_number":104,"context_line":"        for rule in all_rules:"},{"line_number":105,"context_line":"            if isinstance(rule, qos_rule.QosBandwidthLimitRule):"},{"line_number":106,"context_line":"                options_bw \u003d {}"},{"line_number":107,"context_line":"                options_bw[\u0027qos_max_rate\u0027] \u003d rule.max_kbps"},{"line_number":108,"context_line":"                if rule.max_burst_kbps:"},{"line_number":109,"context_line":"                    options_bw[\u0027qos_burst\u0027] \u003d rule.max_burst_kbps"},{"line_number":110,"context_line":"                options_bw[\u0027direction\u0027] \u003d rule.direction"},{"line_number":111,"context_line":"                options.append(options_bw)"},{"line_number":112,"context_line":"            if isinstance(rule, qos_rule.QosDscpMarkingRule):"},{"line_number":113,"context_line":"                options_dscp \u003d {}"},{"line_number":114,"context_line":"                options_dscp[\u0027dscp_mark\u0027] \u003d rule.dscp_mark"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_629a2a15","line":111,"range":{"start_line":106,"start_character":16,"end_line":111,"end_character":42},"in_reply_to":"3fa7e38b_6338f5cb","updated":"2020-02-26 09:52:01.000000000","message":"Done","commit_id":"e0f9ef6a5df5dc8116e3f1e4edabe579ca743e9c"},{"author":{"_account_id":29874,"name":"Taoyunxiang","email":"taoyunxiang_yewu@cmss.chinamobile.com","username":"Yunxiang"},"change_message_id":"ac8960703b93eedafcbb2964dc83bf16cf383ee5","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                                       context, policy_id)"},{"line_number":104,"context_line":"        for rule in all_rules:"},{"line_number":105,"context_line":"            if isinstance(rule, qos_rule.QosBandwidthLimitRule):"},{"line_number":106,"context_line":"                options_bw \u003d {}"},{"line_number":107,"context_line":"                options_bw[\u0027qos_max_rate\u0027] \u003d rule.max_kbps"},{"line_number":108,"context_line":"                if rule.max_burst_kbps:"},{"line_number":109,"context_line":"                    options_bw[\u0027qos_burst\u0027] \u003d rule.max_burst_kbps"},{"line_number":110,"context_line":"                options_bw[\u0027direction\u0027] \u003d rule.direction"},{"line_number":111,"context_line":"                options.append(options_bw)"},{"line_number":112,"context_line":"            if isinstance(rule, qos_rule.QosDscpMarkingRule):"},{"line_number":113,"context_line":"                options_dscp \u003d {}"},{"line_number":114,"context_line":"                options_dscp[\u0027dscp_mark\u0027] \u003d rule.dscp_mark"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_309eaf68","line":111,"range":{"start_line":106,"start_character":16,"end_line":111,"end_character":42},"in_reply_to":"3fa7e38b_6338f5cb","updated":"2020-02-20 03:40:49.000000000","message":"Get it ,thanks.:)","commit_id":"e0f9ef6a5df5dc8116e3f1e4edabe579ca743e9c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8c4d271f40331eb852d21fbdce5187908c1fe0d6","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                options_bw[\u0027direction\u0027] \u003d rule.direction"},{"line_number":111,"context_line":"                options.append(options_bw)"},{"line_number":112,"context_line":"            if isinstance(rule, qos_rule.QosDscpMarkingRule):"},{"line_number":113,"context_line":"                options_dscp \u003d {}"},{"line_number":114,"context_line":"                options_dscp[\u0027dscp_mark\u0027] \u003d rule.dscp_mark"},{"line_number":115,"context_line":"                options_dscp[\u0027direction\u0027] \u003d constants.EGRESS_DIRECTION"},{"line_number":116,"context_line":"                options.append(options_dscp)"},{"line_number":117,"context_line":"        return options"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_e848448a","line":115,"range":{"start_line":113,"start_character":16,"end_line":115,"end_character":70},"updated":"2020-02-19 10:38:13.000000000","message":"Let make this in one command:\n\noption \u003d {\u0027dscp_mark\u0027: rule.dscp_mark,\n          \u0027direction\u0027: constants.EGRESS_DIRECTION}\noptions.append(option)","commit_id":"e0f9ef6a5df5dc8116e3f1e4edabe579ca743e9c"},{"author":{"_account_id":29874,"name":"Taoyunxiang","email":"taoyunxiang_yewu@cmss.chinamobile.com","username":"Yunxiang"},"change_message_id":"bbbde050e1761badab09460cc5ab7797c2d17fff","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                options_bw[\u0027direction\u0027] \u003d rule.direction"},{"line_number":111,"context_line":"                options.append(options_bw)"},{"line_number":112,"context_line":"            if isinstance(rule, qos_rule.QosDscpMarkingRule):"},{"line_number":113,"context_line":"                options_dscp \u003d {}"},{"line_number":114,"context_line":"                options_dscp[\u0027dscp_mark\u0027] \u003d rule.dscp_mark"},{"line_number":115,"context_line":"                options_dscp[\u0027direction\u0027] \u003d constants.EGRESS_DIRECTION"},{"line_number":116,"context_line":"                options.append(options_dscp)"},{"line_number":117,"context_line":"        return options"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_22a43257","line":115,"range":{"start_line":113,"start_character":16,"end_line":115,"end_character":70},"in_reply_to":"3fa7e38b_d0a2bbac","updated":"2020-02-26 09:52:01.000000000","message":"Done","commit_id":"e0f9ef6a5df5dc8116e3f1e4edabe579ca743e9c"},{"author":{"_account_id":29874,"name":"Taoyunxiang","email":"taoyunxiang_yewu@cmss.chinamobile.com","username":"Yunxiang"},"change_message_id":"ac8960703b93eedafcbb2964dc83bf16cf383ee5","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                options_bw[\u0027direction\u0027] \u003d rule.direction"},{"line_number":111,"context_line":"                options.append(options_bw)"},{"line_number":112,"context_line":"            if isinstance(rule, qos_rule.QosDscpMarkingRule):"},{"line_number":113,"context_line":"                options_dscp \u003d {}"},{"line_number":114,"context_line":"                options_dscp[\u0027dscp_mark\u0027] \u003d rule.dscp_mark"},{"line_number":115,"context_line":"                options_dscp[\u0027direction\u0027] \u003d constants.EGRESS_DIRECTION"},{"line_number":116,"context_line":"                options.append(options_dscp)"},{"line_number":117,"context_line":"        return options"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_d0a2bbac","line":115,"range":{"start_line":113,"start_character":16,"end_line":115,"end_character":70},"in_reply_to":"3fa7e38b_e848448a","updated":"2020-02-20 03:40:49.000000000","message":"Get it ,thanks.:)","commit_id":"e0f9ef6a5df5dc8116e3f1e4edabe579ca743e9c"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"d8314c8f074353e5280ce9341f07f6ee89e6053b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        return self._plugin_property"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _generate_port_options(self, context, policy_id):"},{"line_number":98,"context_line":"        if policy_id is None:"},{"line_number":99,"context_line":"            return {}"},{"line_number":100,"context_line":"        options \u003d []"},{"line_number":101,"context_line":"        # The policy might not have any rules"},{"line_number":102,"context_line":"        all_rules \u003d qos_rule.get_rules(qos_policy.QosPolicy,"},{"line_number":103,"context_line":"                                       context, policy_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_7412d60b","line":100,"range":{"start_line":98,"start_character":8,"end_line":100,"end_character":20},"updated":"2020-02-27 03:41:02.000000000","message":"This should also return a List\noptions \u003d []\nif policy_id is None:\n    return options","commit_id":"65d4251f5e66928bf1c53d5686434ac6c186919a"},{"author":{"_account_id":29874,"name":"Taoyunxiang","email":"taoyunxiang_yewu@cmss.chinamobile.com","username":"Yunxiang"},"change_message_id":"17a3d13a21b0ac92551aecb8254df67c168f24e5","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        return self._plugin_property"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _generate_port_options(self, context, policy_id):"},{"line_number":98,"context_line":"        if policy_id is None:"},{"line_number":99,"context_line":"            return {}"},{"line_number":100,"context_line":"        options \u003d []"},{"line_number":101,"context_line":"        # The policy might not have any rules"},{"line_number":102,"context_line":"        all_rules \u003d qos_rule.get_rules(qos_policy.QosPolicy,"},{"line_number":103,"context_line":"                                       context, policy_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_dff3a39d","line":100,"range":{"start_line":98,"start_character":8,"end_line":100,"end_character":20},"in_reply_to":"1fa4df85_7412d60b","updated":"2020-02-27 06:48:51.000000000","message":"Done","commit_id":"65d4251f5e66928bf1c53d5686434ac6c186919a"}]}
