)]}'
{"neutron/services/qos/qos_plugin.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e6431e40782c38b40a9649693fda31c548633555","unresolved":false,"context_lines":[{"line_number":230,"context_line":"    def reject_min_bw_rule_updates(self, context, policy):"},{"line_number":231,"context_line":"        ports \u003d self._get_ports_with_policy(context, policy)"},{"line_number":232,"context_line":"        for port in ports:"},{"line_number":233,"context_line":"            for rule in policy.rules:"},{"line_number":234,"context_line":"                if rule.rule_type !\u003d qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH:"},{"line_number":235,"context_line":"                    continue"},{"line_number":236,"context_line":"                if any([binding.vif_type !\u003d portbindings.VIF_TYPE_UNBOUND"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_634058a6","line":233,"updated":"2019-02-15 09:02:27.000000000","message":"I don\u0027t think You need to iterate over rules in policy.\nIn L440 You are checking type of updated rule so You can be sure that policy applied to each of those ports have such type of rule and You don\u0027t need to know which rule it is in fact.","commit_id":"10bbe85a9eb8019d8e6e9d37d8a129829db1c5b3"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"970ddb2aad7b9d1b7ddc02768520bf9593b1fd20","unresolved":false,"context_lines":[{"line_number":230,"context_line":"    def reject_min_bw_rule_updates(self, context, policy):"},{"line_number":231,"context_line":"        ports \u003d self._get_ports_with_policy(context, policy)"},{"line_number":232,"context_line":"        for port in ports:"},{"line_number":233,"context_line":"            for rule in policy.rules:"},{"line_number":234,"context_line":"                if rule.rule_type !\u003d qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH:"},{"line_number":235,"context_line":"                    continue"},{"line_number":236,"context_line":"                if any([binding.vif_type !\u003d portbindings.VIF_TYPE_UNBOUND"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_b2e3e704","line":233,"in_reply_to":"9fdfeff1_634058a6","updated":"2019-02-15 13:15:39.000000000","message":"Done","commit_id":"10bbe85a9eb8019d8e6e9d37d8a129829db1c5b3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a5ec761496b153ac469eb63f2210ac625c3fe938","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            for rule in policy.rules:"},{"line_number":234,"context_line":"                if rule.rule_type !\u003d qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH:"},{"line_number":235,"context_line":"                    continue"},{"line_number":236,"context_line":"                if any([binding.vif_type !\u003d portbindings.VIF_TYPE_UNBOUND"},{"line_number":237,"context_line":"                        for binding in port.bindings]):"},{"line_number":238,"context_line":"                    raise NotImplementedError(_("},{"line_number":239,"context_line":"                        \u0027Cannot update QoS rules backed by resources \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_46bd34b5","line":236,"updated":"2019-02-14 14:45:52.000000000","message":"I would simply check port.device_id to see if the port is in use, but I\u0027m not a neutron developer so this way might be better.","commit_id":"10bbe85a9eb8019d8e6e9d37d8a129829db1c5b3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a59c58e6638c917524284d2b41a450a4472330c","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            for rule in policy.rules:"},{"line_number":234,"context_line":"                if rule.rule_type !\u003d qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH:"},{"line_number":235,"context_line":"                    continue"},{"line_number":236,"context_line":"                if any([binding.vif_type !\u003d portbindings.VIF_TYPE_UNBOUND"},{"line_number":237,"context_line":"                        for binding in port.bindings]):"},{"line_number":238,"context_line":"                    raise NotImplementedError(_("},{"line_number":239,"context_line":"                        \u0027Cannot update QoS rules backed by resources \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_a847f81c","line":236,"in_reply_to":"9fdfeff1_03e2acd5","updated":"2019-02-15 13:00:27.000000000","message":"I think nova express the usage of the port by setting the device_id on the port. I think neutron can assume that if the device_id is not set then the port is not used by the device_owner.\n\nPlacement allocation happens first, then nova sets the device_id. During delete it goes the other way, nova unsets the device id then deallocates in placement.","commit_id":"10bbe85a9eb8019d8e6e9d37d8a129829db1c5b3"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"970ddb2aad7b9d1b7ddc02768520bf9593b1fd20","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            for rule in policy.rules:"},{"line_number":234,"context_line":"                if rule.rule_type !\u003d qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH:"},{"line_number":235,"context_line":"                    continue"},{"line_number":236,"context_line":"                if any([binding.vif_type !\u003d portbindings.VIF_TYPE_UNBOUND"},{"line_number":237,"context_line":"                        for binding in port.bindings]):"},{"line_number":238,"context_line":"                    raise NotImplementedError(_("},{"line_number":239,"context_line":"                        \u0027Cannot update QoS rules backed by resources \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_c8a83c8d","line":236,"in_reply_to":"9fdfeff1_03e2acd5","updated":"2019-02-15 13:15:39.000000000","message":"binding_failure does not necessarily mean the allocation in Placement will be freed. Gibi is starting to convince me that nova\u0027s unsetting of device_owner/device_id is a better sign of that nova will soon free the allocation.","commit_id":"10bbe85a9eb8019d8e6e9d37d8a129829db1c5b3"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"2c036aa2705b9b79699a305d59f3024bd9816835","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            for rule in policy.rules:"},{"line_number":234,"context_line":"                if rule.rule_type !\u003d qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH:"},{"line_number":235,"context_line":"                    continue"},{"line_number":236,"context_line":"                if any([binding.vif_type !\u003d portbindings.VIF_TYPE_UNBOUND"},{"line_number":237,"context_line":"                        for binding in port.bindings]):"},{"line_number":238,"context_line":"                    raise NotImplementedError(_("},{"line_number":239,"context_line":"                        \u0027Cannot update QoS rules backed by resources \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_f1c980ab","line":236,"in_reply_to":"9fdfeff1_46bd34b5","updated":"2019-02-14 15:09:43.000000000","message":"I\u0027m unsure in many things here too:\n\n* Should I only check the status\u003d\u003dACTIVE binding or all of them?\n* How should I treat binding_failed ports? Now I\u0027m treating them the same as bound, assuming they may get bound in a retry.","commit_id":"10bbe85a9eb8019d8e6e9d37d8a129829db1c5b3"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"0a4406089e538fa95f38603de871ca948599243d","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            for rule in policy.rules:"},{"line_number":234,"context_line":"                if rule.rule_type !\u003d qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH:"},{"line_number":235,"context_line":"                    continue"},{"line_number":236,"context_line":"                if any([binding.vif_type !\u003d portbindings.VIF_TYPE_UNBOUND"},{"line_number":237,"context_line":"                        for binding in port.bindings]):"},{"line_number":238,"context_line":"                    raise NotImplementedError(_("},{"line_number":239,"context_line":"                        \u0027Cannot update QoS rules backed by resources \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_6827d0c8","line":236,"in_reply_to":"9fdfeff1_c8a83c8d","updated":"2019-02-15 13:31:01.000000000","message":"Or even better: What if we checked port.binding_profile.allocation?","commit_id":"10bbe85a9eb8019d8e6e9d37d8a129829db1c5b3"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e6431e40782c38b40a9649693fda31c548633555","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            for rule in policy.rules:"},{"line_number":234,"context_line":"                if rule.rule_type !\u003d qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH:"},{"line_number":235,"context_line":"                    continue"},{"line_number":236,"context_line":"                if any([binding.vif_type !\u003d portbindings.VIF_TYPE_UNBOUND"},{"line_number":237,"context_line":"                        for binding in port.bindings]):"},{"line_number":238,"context_line":"                    raise NotImplementedError(_("},{"line_number":239,"context_line":"                        \u0027Cannot update QoS rules backed by resources \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_03e2acd5","line":236,"in_reply_to":"9fdfeff1_f1c980ab","updated":"2019-02-15 09:02:27.000000000","message":"binding failed ports may be tricky here.\nFirst I though to treat them in same way as unbound ports but in fact I don\u0027t know how it is in placement. If port is binding_failed is it already \"using\" bandwidth in placement or it\u0027s not \"using\" it until it will be bound properly?","commit_id":"10bbe85a9eb8019d8e6e9d37d8a129829db1c5b3"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d6b0585fdfb49d43a78a5809665307620f523d58","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            # will not have \u0027binding:profile.allocation\u0027, but this policy"},{"line_number":240,"context_line":"            # update must be rejected."},{"line_number":241,"context_line":"            if (port.device_owner is not None and"},{"line_number":242,"context_line":"                    port.device_owner.startswith(\u0027compute:\u0027)):"},{"line_number":243,"context_line":"                raise NotImplementedError(_("},{"line_number":244,"context_line":"                    \u0027Cannot update QoS policies/rules backed by resources \u0027"},{"line_number":245,"context_line":"                    \u0027tracked in Placement\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_4747d778","line":242,"range":{"start_line":242,"start_character":49,"end_line":242,"end_character":59},"updated":"2019-02-22 10:44:52.000000000","message":"nit: there is constant for that in https://github.com/openstack/neutron-lib/blob/master/neutron_lib/constants.py#L43\nBut that can be changed in follow-up :)","commit_id":"facc4e94cae64b6c79cd4538e452e838436eac0f"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"c54289a75b6503c6b16c9a291d7b7f32c54fd570","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            # will not have \u0027binding:profile.allocation\u0027, but this policy"},{"line_number":240,"context_line":"            # update must be rejected."},{"line_number":241,"context_line":"            if (port.device_owner is not None and"},{"line_number":242,"context_line":"                    port.device_owner.startswith(\u0027compute:\u0027)):"},{"line_number":243,"context_line":"                raise NotImplementedError(_("},{"line_number":244,"context_line":"                    \u0027Cannot update QoS policies/rules backed by resources \u0027"},{"line_number":245,"context_line":"                    \u0027tracked in Placement\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_598b13bf","line":242,"range":{"start_line":242,"start_character":49,"end_line":242,"end_character":59},"in_reply_to":"9fdfeff1_4747d778","updated":"2019-02-25 15:04:55.000000000","message":"Please see here:\nhttps://review.openstack.org/639120","commit_id":"facc4e94cae64b6c79cd4538e452e838436eac0f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"438092dfc5513435e3cadbaa08c405a399caeac3","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            # will not have \u0027binding:profile.allocation\u0027, but this policy"},{"line_number":240,"context_line":"            # update must be rejected."},{"line_number":241,"context_line":"            if (port.device_owner is not None and"},{"line_number":242,"context_line":"                    port.device_owner.startswith(\u0027compute:\u0027)):"},{"line_number":243,"context_line":"                raise NotImplementedError(_("},{"line_number":244,"context_line":"                    \u0027Cannot update QoS policies/rules backed by resources \u0027"},{"line_number":245,"context_line":"                    \u0027tracked in Placement\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_b4a23c99","line":242,"range":{"start_line":242,"start_character":49,"end_line":242,"end_character":59},"in_reply_to":"9fdfeff1_598b13bf","updated":"2019-02-25 22:23:07.000000000","message":"thx :)","commit_id":"facc4e94cae64b6c79cd4538e452e838436eac0f"}]}
