)]}'
{"dragonflow/controller/portqos_app.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"6a4880ec03507700e62e0c0b163d71e304b380c8","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.vswitch_api.delete_port_qos_and_queue(lport.get_id())"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @df_base_app.register_event(qos.QosPolicy, \u0027created\u0027)"},{"line_number":86,"context_line":"    @df_base_app.register_event(qos.QosPolicy, \u0027updated\u0027)"},{"line_number":87,"context_line":"    def update_qos_policy(self, policy, orig_policy\u003dNone):"},{"line_number":88,"context_line":"        LOG.debug(\u0027update_qos_policy: Enter\u0027)"},{"line_number":89,"context_line":"        local_ports \u003d self.db_store.get_local_ports(policy.topic)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba2be162_f7e4eee0","line":86,"range":{"start_line":86,"start_character":48,"end_line":86,"end_character":55},"updated":"2017-03-03 08:13:05.000000000","message":"This could be constant. Or else some typo could lead to problem which is hard to identify.","commit_id":"2ffd956b8dcc13a8ef667fc5b7ec0a114d46178f"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"7255f7bac02388b6168a79c484a85656c87d694c","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.vswitch_api.delete_port_qos_and_queue(lport.get_id())"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @df_base_app.register_event(qos.QosPolicy, \u0027created\u0027)"},{"line_number":86,"context_line":"    @df_base_app.register_event(qos.QosPolicy, \u0027updated\u0027)"},{"line_number":87,"context_line":"    def update_qos_policy(self, policy, orig_policy\u003dNone):"},{"line_number":88,"context_line":"        LOG.debug(\u0027update_qos_policy: Enter\u0027)"},{"line_number":89,"context_line":"        local_ports \u003d self.db_store.get_local_ports(policy.topic)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba2be162_8f43646b","line":86,"range":{"start_line":86,"start_character":48,"end_line":86,"end_character":55},"in_reply_to":"ba2be162_a705b246","updated":"2017-03-05 06:56:29.000000000","message":"Now there are constants for this anyway, so I\u0027ll update.","commit_id":"2ffd956b8dcc13a8ef667fc5b7ec0a114d46178f"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"89e35e1e58d2a7c0480fdb5bfb2eb70ff20ae7c8","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.vswitch_api.delete_port_qos_and_queue(lport.get_id())"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @df_base_app.register_event(qos.QosPolicy, \u0027created\u0027)"},{"line_number":86,"context_line":"    @df_base_app.register_event(qos.QosPolicy, \u0027updated\u0027)"},{"line_number":87,"context_line":"    def update_qos_policy(self, policy, orig_policy\u003dNone):"},{"line_number":88,"context_line":"        LOG.debug(\u0027update_qos_policy: Enter\u0027)"},{"line_number":89,"context_line":"        local_ports \u003d self.db_store.get_local_ports(policy.topic)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba2be162_a705b246","line":86,"range":{"start_line":86,"start_character":48,"end_line":86,"end_character":55},"in_reply_to":"ba2be162_f7e4eee0","updated":"2017-03-04 18:45:11.000000000","message":"Actually registering to a non-existent event raises an error at import time, so it will be visible right away.","commit_id":"2ffd956b8dcc13a8ef667fc5b7ec0a114d46178f"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"6a4880ec03507700e62e0c0b163d71e304b380c8","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @df_base_app.register_event(qos.QosPolicy, \u0027created\u0027)"},{"line_number":86,"context_line":"    @df_base_app.register_event(qos.QosPolicy, \u0027updated\u0027)"},{"line_number":87,"context_line":"    def update_qos_policy(self, policy, orig_policy\u003dNone):"},{"line_number":88,"context_line":"        LOG.debug(\u0027update_qos_policy: Enter\u0027)"},{"line_number":89,"context_line":"        local_ports \u003d self.db_store.get_local_ports(policy.topic)"},{"line_number":90,"context_line":"        for port in local_ports:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba2be162_d73d2a90","line":87,"range":{"start_line":87,"start_character":40,"end_line":87,"end_character":51},"updated":"2017-03-03 08:13:05.000000000","message":"I think this method should not subscribe to \"created\" event. Because when orig_policy is None, it is a new qos, and there will no lport associated with it. Calling this method makes no sense.","commit_id":"2ffd956b8dcc13a8ef667fc5b7ec0a114d46178f"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"7255f7bac02388b6168a79c484a85656c87d694c","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @df_base_app.register_event(qos.QosPolicy, \u0027created\u0027)"},{"line_number":86,"context_line":"    @df_base_app.register_event(qos.QosPolicy, \u0027updated\u0027)"},{"line_number":87,"context_line":"    def update_qos_policy(self, policy, orig_policy\u003dNone):"},{"line_number":88,"context_line":"        LOG.debug(\u0027update_qos_policy: Enter\u0027)"},{"line_number":89,"context_line":"        local_ports \u003d self.db_store.get_local_ports(policy.topic)"},{"line_number":90,"context_line":"        for port in local_ports:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba2be162_af466878","line":87,"range":{"start_line":87,"start_character":40,"end_line":87,"end_character":51},"in_reply_to":"ba2be162_d73d2a90","updated":"2017-03-05 06:56:29.000000000","message":"Agreed. fixed.","commit_id":"2ffd956b8dcc13a8ef667fc5b7ec0a114d46178f"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"2aa18a05bd2c7ac9f66e83c7539de5c29ceb8243","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @df_base_app.register_event(qos.QosPolicy, model_constants.EVENT_DELETED)"},{"line_number":95,"context_line":"    def delete_qos_policy(self, policy):"},{"line_number":96,"context_line":"        LOG.debug(\u0027delete_qos_policy: Enter\u0027)"},{"line_number":97,"context_line":"        local_ports \u003d self.db_store.get_local_ports(policy.topic)"},{"line_number":98,"context_line":"        for port in local_ports:"},{"line_number":99,"context_line":"            if port.get_qos_policy_id() \u003d\u003d policy.id:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a30ddce_8579b0ca","line":96,"range":{"start_line":96,"start_character":0,"end_line":96,"end_character":45},"updated":"2017-03-10 10:02:02.000000000","message":"I add a patch to log the event handling, maybe we can remove the log for event handling in each app, during the migration of db models.\n\nhttps://review.openstack.org/#/c/444185/","commit_id":"c6142b58422fcb644692f120e22d5f2435f8ae9c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5a55918aad79996e469221c4a743c0edb4fc8fd8","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @df_base_app.register_event(qos.QosPolicy, model_constants.EVENT_DELETED)"},{"line_number":95,"context_line":"    def delete_qos_policy(self, policy):"},{"line_number":96,"context_line":"        LOG.debug(\u0027delete_qos_policy: Enter\u0027)"},{"line_number":97,"context_line":"        local_ports \u003d self.db_store.get_local_ports(policy.topic)"},{"line_number":98,"context_line":"        for port in local_ports:"},{"line_number":99,"context_line":"            if port.get_qos_policy_id() \u003d\u003d policy.id:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a1ced50_94c9527b","line":96,"range":{"start_line":96,"start_character":0,"end_line":96,"end_character":45},"in_reply_to":"9a30ddce_8579b0ca","updated":"2017-03-19 06:47:22.000000000","message":"That patch was merged. Will do.","commit_id":"c6142b58422fcb644692f120e22d5f2435f8ae9c"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"7409d3ddfa8b064014c151287dcd70d67bd8398c","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.vswitch_api.delete_port_qos_and_queue(lport.get_id())"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    @df_base_app.register_event(qos.QosPolicy, model_constants.EVENT_UPDATED)"},{"line_number":87,"context_line":"    def update_qos_policy(self, policy, orig_policy\u003dNone):"},{"line_number":88,"context_line":"        local_ports \u003d self.db_store.get_local_ports(policy.topic)"},{"line_number":89,"context_line":"        for port in local_ports:"},{"line_number":90,"context_line":"            if port.get_qos_policy_id() \u003d\u003d policy.id:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a1ced50_9a59795d","line":87,"range":{"start_line":87,"start_character":51,"end_line":87,"end_character":57},"updated":"2017-03-19 12:14:33.000000000","message":"nit: Not really needed.","commit_id":"4966e7aff2f1c4c69ffdff841a064c8977f3ef7a"}],"dragonflow/db/models/qos.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"12172e4959cdafb6dc667671c27b9c486ec6e9b9","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def get_max_burst_kbps(self):"},{"line_number":57,"context_line":"        for rule in self.rules:"},{"line_number":58,"context_line":"            if rule.type \u003d\u003d \u0027bandwidth_limit\u0027:"},{"line_number":59,"context_line":"                return rule.max_burst_kbps"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def get_max_kbps(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_4b73a7e7","line":58,"range":{"start_line":58,"start_character":29,"end_line":58,"end_character":44},"updated":"2017-03-02 01:41:51.000000000","message":"Why not use the constant, since it is defined in this file?","commit_id":"aff6f6ce92c0e3e84915ae26d350d6a12f6ec8eb"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"19e56caa0314696979a74af96477a3cc901140ad","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    max_burst_kbps \u003d fields.IntField()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def validate(self):"},{"line_number":34,"context_line":"        \"\"\"dscp_mark is required if type is dscp_marking. max_kbps and"},{"line_number":35,"context_line":"        max_burst_kbps are required if type is bandwidth_limit"},{"line_number":36,"context_line":"        \"\"\""},{"line_number":37,"context_line":"        if self.type \u003d\u003d RULE_TYPE_DSCP_MARKING:"},{"line_number":38,"context_line":"            if self.dscp_mark is None:"},{"line_number":39,"context_line":"                errors.ValidationError(\"dscp_mark is required if \""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba2be162_722c5399","line":36,"range":{"start_line":34,"start_character":8,"end_line":36,"end_character":11},"updated":"2017-03-05 07:10:48.000000000","message":"Docstring is not according to the expected format","commit_id":"22376852ed7c9cfe8aed45920ec180c73cdf0964"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"6fe545af3337abc3bfd0695aaf5c9af2a5b997c3","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    max_burst_kbps \u003d fields.IntField()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def validate(self):"},{"line_number":34,"context_line":"        \"\"\"dscp_mark is required if type is dscp_marking. max_kbps and"},{"line_number":35,"context_line":"        max_burst_kbps are required if type is bandwidth_limit"},{"line_number":36,"context_line":"        \"\"\""},{"line_number":37,"context_line":"        if self.type \u003d\u003d RULE_TYPE_DSCP_MARKING:"},{"line_number":38,"context_line":"            if self.dscp_mark is None:"},{"line_number":39,"context_line":"                errors.ValidationError(\"dscp_mark is required if \""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba2be162_32ec9bf2","line":36,"range":{"start_line":34,"start_character":8,"end_line":36,"end_character":11},"in_reply_to":"ba2be162_722c5399","updated":"2017-03-05 08:25:25.000000000","message":"Will fix next spin","commit_id":"22376852ed7c9cfe8aed45920ec180c73cdf0964"}]}
