)]}'
{"specs/newton/qos-improved-validation-mechanism-rules.rst":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a24814d401be9cf6172e92408d915efa3721aa8f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://bugs.launchpad.net/neutron/+bug/1586056"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"While the QoS service models an abstraction of rules that can be applied"},{"line_number":14,"context_line":"to port packets by different plugis, it\u0027s currently not able to correctly"},{"line_number":15,"context_line":"handle the variety of different port types existing in a deployment,"},{"line_number":16,"context_line":"or specific limitations of certain plugins or technologies."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9abb7d3a_1e24155e","line":14,"updated":"2016-05-31 17:14:16.000000000","message":"nit: plugis/plugins","commit_id":"f0306f1234ee95eb8983455cc6fca3693a5f256a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a24814d401be9cf6172e92408d915efa3721aa8f","unresolved":false,"context_lines":[{"line_number":20,"context_line":"functions, ovs is there for handling normal VM loads."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"One of the first differences we will find in SR-IOV is that, it\u0027s not able"},{"line_number":23,"context_line":"to limit bandwidth in both directions, but only egress."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"If we wanted to introduce a bandwidth limit attribute (direction:"},{"line_number":26,"context_line":"ingress/egress), the sriov mechanism driver still declares himself as able"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9abb7d3a_dea28dad","line":23,"updated":"2016-05-31 17:14:16.000000000","message":"also dscp mark is supported only by ovs driver (at least for now)","commit_id":"f0306f1234ee95eb8983455cc6fca3693a5f256a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a24814d401be9cf6172e92408d915efa3721aa8f","unresolved":false,"context_lines":[{"line_number":25,"context_line":"If we wanted to introduce a bandwidth limit attribute (direction:"},{"line_number":26,"context_line":"ingress/egress), the sriov mechanism driver still declares himself as able"},{"line_number":27,"context_line":"to apply bandwidth limit rules. But in this case, ingress ones would not"},{"line_number":28,"context_line":"be correctly handled."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9abb7d3a_be8ea92b","line":28,"updated":"2016-05-31 17:14:16.000000000","message":"it is also similar for burst value but this one is silently ignored by sr-iov agent AFAIR","commit_id":"f0306f1234ee95eb8983455cc6fca3693a5f256a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a24814d401be9cf6172e92408d915efa3721aa8f","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Problem Description"},{"line_number":34,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9abb7d3a_9e748536","line":33,"updated":"2016-05-31 17:14:16.000000000","message":"shouldn\u0027t it be above description?","commit_id":"f0306f1234ee95eb8983455cc6fca3693a5f256a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a24814d401be9cf6172e92408d915efa3721aa8f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"We propose extend the reporting of the available"},{"line_number":42,"context_line":"rules per \u0027port type\u0027, and defining the possible parameters a port type"},{"line_number":43,"context_line":"will be able to take."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"And we also propose the validation changes to policies, rules, ports (qos-policy)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9abb7d3a_be31895c","line":42,"updated":"2016-05-31 17:14:16.000000000","message":"IMHO best would be by \"binding type\" (mech driver) because it is most \"strict\" for user. In corner case user can have linuxbridge and ovs agents in cluster and then if we report available rules per vnic_type then user will see that both agents (vnic normal) will support dscp marking rule.","commit_id":"f0306f1234ee95eb8983455cc6fca3693a5f256a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a3bdf52f57367f4a1bf41e7ed47b5abd5422c9b5","unresolved":false,"context_lines":[{"line_number":23,"context_line":"functions, ovs is there for handling normal VM loads."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"One of the first differences we will find in SR-IOV is that, it\u0027s not able"},{"line_number":26,"context_line":"to limit bandwidth in both directions, but egress works on OVS only."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"DSCP marks is another example, which is currently implemented in OVS alone."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aa08908_26c4ea3e","line":26,"updated":"2016-06-09 19:40:21.000000000","message":"probably should be \"ingress works on OVS only\"","commit_id":"bf9c621f9b24ff8df689e5098a10606cd48884f1"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"7c189fc6a2b752d48b059686161f7ee0865d4e4d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"functions, ovs is there for handling normal VM loads."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"One of the first differences we will find in SR-IOV is that, it\u0027s not able"},{"line_number":26,"context_line":"to limit bandwidth in both directions, but egress works on OVS only."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"DSCP marks is another example, which is currently implemented in OVS alone."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aa08908_7125f5ac","line":26,"in_reply_to":"7aa08908_26c4ea3e","updated":"2016-06-10 08:13:11.000000000","message":"woops :)","commit_id":"bf9c621f9b24ff8df689e5098a10606cd48884f1"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"a093cb8d2ba3623ccfff81f4cc0e8a71fcb46681","unresolved":false,"context_lines":[{"line_number":23,"context_line":"functions, ovs is there for handling normal VM loads."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"One of the first differences we will find in SR-IOV is that, it\u0027s not able"},{"line_number":26,"context_line":"to limit bandwidth in both directions, but egress works on OVS only."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"DSCP marks is another example, which is currently implemented in OVS alone."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aa08908_355dc415","line":26,"in_reply_to":"7aa08908_7125f5ac","updated":"2016-06-13 12:17:22.000000000","message":"Done","commit_id":"bf9c621f9b24ff8df689e5098a10606cd48884f1"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a3bdf52f57367f4a1bf41e7ed47b5abd5422c9b5","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                       \"dscp_mark\": []}"},{"line_number":66,"context_line":"    }"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The QoS service to plugin interface will add a new function::"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"  def validate_policy_for_port(self, context, policy, port)"},{"line_number":71,"context_line":"    ..."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aa08908_a6345a4a","line":68,"updated":"2016-06-09 19:40:21.000000000","message":"There is validate_policy_for_network also needed probably.","commit_id":"bf9c621f9b24ff8df689e5098a10606cd48884f1"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"a093cb8d2ba3623ccfff81f4cc0e8a71fcb46681","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                       \"dscp_mark\": []}"},{"line_number":66,"context_line":"    }"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The QoS service to plugin interface will add a new function::"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"  def validate_policy_for_port(self, context, policy, port)"},{"line_number":71,"context_line":"    ..."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aa08908_556050cf","line":68,"in_reply_to":"7aa08908_1148f15a","updated":"2016-06-13 12:17:22.000000000","message":"Done","commit_id":"bf9c621f9b24ff8df689e5098a10606cd48884f1"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"7c189fc6a2b752d48b059686161f7ee0865d4e4d","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                       \"dscp_mark\": []}"},{"line_number":66,"context_line":"    }"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The QoS service to plugin interface will add a new function::"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"  def validate_policy_for_port(self, context, policy, port)"},{"line_number":71,"context_line":"    ..."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aa08908_1148f15a","line":68,"in_reply_to":"7aa08908_a6345a4a","updated":"2016-06-10 08:13:11.000000000","message":"Right, will fix","commit_id":"bf9c621f9b24ff8df689e5098a10606cd48884f1"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a3bdf52f57367f4a1bf41e7ed47b5abd5422c9b5","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"In ML2, we propose to use the in process callbacks to validate the"},{"line_number":78,"context_line":"BEFORE_CREATE/BEFORE_UPDATE of NETWORK and PORT objects. While the"},{"line_number":79,"context_line":"modification of policies \u0026 rules themselves would be handled by the"},{"line_number":80,"context_line":"QoS plugin alone consuming the validate_policy_for_port function"},{"line_number":81,"context_line":"that will be provided by the implementation."},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aa08908_264eaac1","line":79,"updated":"2016-06-09 19:40:21.000000000","message":"modification  of rules only because policy as itself has got only description and \"shared\" attribute and there is nothing to validate there.","commit_id":"bf9c621f9b24ff8df689e5098a10606cd48884f1"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"7c189fc6a2b752d48b059686161f7ee0865d4e4d","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"In ML2, we propose to use the in process callbacks to validate the"},{"line_number":78,"context_line":"BEFORE_CREATE/BEFORE_UPDATE of NETWORK and PORT objects. While the"},{"line_number":79,"context_line":"modification of policies \u0026 rules themselves would be handled by the"},{"line_number":80,"context_line":"QoS plugin alone consuming the validate_policy_for_port function"},{"line_number":81,"context_line":"that will be provided by the implementation."},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aa08908_717335b5","line":79,"in_reply_to":"7aa08908_264eaac1","updated":"2016-06-10 08:13:11.000000000","message":"Right, will fix too.","commit_id":"bf9c621f9b24ff8df689e5098a10606cd48884f1"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"545b2abaaaa71e346dede7f3622f80cb7bc37bca","unresolved":false,"context_lines":[{"line_number":23,"context_line":"functions, ovs is there for handling normal VM loads."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"One of the first differences we will find in SR-IOV is that, it\u0027s not able"},{"line_number":26,"context_line":"to limit bandwidth in both directions, but ingress works on OVS only."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"DSCP marks is another example, which is currently implemented in OVS alone."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7aa08908_c80ad7d1","line":26,"updated":"2016-06-13 15:23:48.000000000","message":"to be strict it would work for Linuxbridge and OVS :)","commit_id":"df7cf6ed673a05d567917a2cff48084818f083ec"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"f4a1c1a8702cc6fef051c0a456aad38a17e144bf","unresolved":false,"context_lines":[{"line_number":23,"context_line":"functions, ovs is there for handling normal VM loads."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"One of the first differences we will find in SR-IOV is that, it\u0027s not able"},{"line_number":26,"context_line":"to limit bandwidth in both directions, but ingress works on OVS only."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"DSCP marks is another example, which is currently implemented in OVS alone."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7aa08908_f9c2d532","line":26,"in_reply_to":"7aa08908_c80ad7d1","updated":"2016-06-14 13:56:56.000000000","message":"Done :-)","commit_id":"df7cf6ed673a05d567917a2cff48084818f083ec"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"545b2abaaaa71e346dede7f3622f80cb7bc37bca","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                       \"direction\": [\"egress\"]},"},{"line_number":65,"context_line":"           qos_consts.RULE_TYPE_DSCP_MARK: {"},{"line_number":66,"context_line":"                       \"dscp_mark\": []}"},{"line_number":67,"context_line":"    }"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"The QoS service to plugin interface will add new functions::"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7aa08908_c8bf77ce","line":67,"updated":"2016-06-13 15:23:48.000000000","message":"I would add information that empty list for parameter means that all values are accepted for such parameter.","commit_id":"df7cf6ed673a05d567917a2cff48084818f083ec"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"f4a1c1a8702cc6fef051c0a456aad38a17e144bf","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                       \"direction\": [\"egress\"]},"},{"line_number":65,"context_line":"           qos_consts.RULE_TYPE_DSCP_MARK: {"},{"line_number":66,"context_line":"                       \"dscp_mark\": []}"},{"line_number":67,"context_line":"    }"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"The QoS service to plugin interface will add new functions::"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7aa08908_59e849b3","line":67,"in_reply_to":"7aa08908_c8bf77ce","updated":"2016-06-14 13:56:56.000000000","message":"Sounds good.","commit_id":"df7cf6ed673a05d567917a2cff48084818f083ec"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"f3f0cac65eaf474eddcadb096dd37e3b8a4b09c0","unresolved":false,"context_lines":[{"line_number":29,"context_line":"DSCP marks is another example, which is currently implemented in OVS alone."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"If we wanted to introduce a bandwidth limit attribute (direction:"},{"line_number":32,"context_line":"ingress/egress), the sriov mechanism driver still declares himself as able"},{"line_number":33,"context_line":"to apply bandwidth limit rules. But in this case, ingress ones would not"},{"line_number":34,"context_line":"be correctly handled."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_0630c700","line":32,"range":{"start_line":32,"start_character":59,"end_line":32,"end_character":66},"updated":"2016-06-22 10:08:22.000000000","message":"s/himself/itself","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d8bab57ba0374977820aeb9f57862b174cd8f700","unresolved":false,"context_lines":[{"line_number":29,"context_line":"DSCP marks is another example, which is currently implemented in OVS alone."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"If we wanted to introduce a bandwidth limit attribute (direction:"},{"line_number":32,"context_line":"ingress/egress), the sriov mechanism driver still declares himself as able"},{"line_number":33,"context_line":"to apply bandwidth limit rules. But in this case, ingress ones would not"},{"line_number":34,"context_line":"be correctly handled."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_25a4d6a4","line":32,"range":{"start_line":32,"start_character":59,"end_line":32,"end_character":66},"in_reply_to":"3aaa91ec_0630c700","updated":"2016-06-22 10:51:50.000000000","message":"Done","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"f3f0cac65eaf474eddcadb096dd37e3b8a4b09c0","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"If we wanted to introduce a bandwidth limit attribute (direction:"},{"line_number":32,"context_line":"ingress/egress), the sriov mechanism driver still declares himself as able"},{"line_number":33,"context_line":"to apply bandwidth limit rules. But in this case, ingress ones would not"},{"line_number":34,"context_line":"be correctly handled."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_412639bb","line":33,"range":{"start_line":33,"start_character":50,"end_line":33,"end_character":68},"updated":"2016-06-22 10:08:22.000000000","message":"I\u0027d say be explicit \"ingress bandwidth limit rules would\"","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d8bab57ba0374977820aeb9f57862b174cd8f700","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"If we wanted to introduce a bandwidth limit attribute (direction:"},{"line_number":32,"context_line":"ingress/egress), the sriov mechanism driver still declares himself as able"},{"line_number":33,"context_line":"to apply bandwidth limit rules. But in this case, ingress ones would not"},{"line_number":34,"context_line":"be correctly handled."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_e5e76ee2","line":33,"range":{"start_line":33,"start_character":50,"end_line":33,"end_character":68},"in_reply_to":"3aaa91ec_412639bb","updated":"2016-06-22 10:51:50.000000000","message":"Done","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"f3f0cac65eaf474eddcadb096dd37e3b8a4b09c0","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Proposed Change"},{"line_number":38,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"We propose extend the reporting of the available rules per \u0027binding type\u0027, and"},{"line_number":41,"context_line":"defining the possible parameters a port type will be able to take."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"And we also propose the validation changes to policies, rules, ports (qos-policy)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_a1371de2","line":40,"range":{"start_line":40,"start_character":3,"end_line":40,"end_character":17},"updated":"2016-06-22 10:08:22.000000000","message":"s/propose extend/propose to extend","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d8bab57ba0374977820aeb9f57862b174cd8f700","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Proposed Change"},{"line_number":38,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"We propose extend the reporting of the available rules per \u0027binding type\u0027, and"},{"line_number":41,"context_line":"defining the possible parameters a port type will be able to take."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"And we also propose the validation changes to policies, rules, ports (qos-policy)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_45d92221","line":40,"range":{"start_line":40,"start_character":3,"end_line":40,"end_character":17},"in_reply_to":"3aaa91ec_a1371de2","updated":"2016-06-22 10:51:50.000000000","message":"It is removed already","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"f3f0cac65eaf474eddcadb096dd37e3b8a4b09c0","unresolved":false,"context_lines":[{"line_number":38,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"We propose extend the reporting of the available rules per \u0027binding type\u0027, and"},{"line_number":41,"context_line":"defining the possible parameters a port type will be able to take."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"And we also propose the validation changes to policies, rules, ports (qos-policy)"},{"line_number":44,"context_line":"and networks (qos-policy) at the API level. So as soon as any conflicting"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_a1655de2","line":41,"range":{"start_line":41,"start_character":0,"end_line":41,"end_character":8},"updated":"2016-06-22 10:08:22.000000000","message":"Might be misreading the sentence but I think this should be define.","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d8bab57ba0374977820aeb9f57862b174cd8f700","unresolved":false,"context_lines":[{"line_number":38,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"We propose extend the reporting of the available rules per \u0027binding type\u0027, and"},{"line_number":41,"context_line":"defining the possible parameters a port type will be able to take."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"And we also propose the validation changes to policies, rules, ports (qos-policy)"},{"line_number":44,"context_line":"and networks (qos-policy) at the API level. So as soon as any conflicting"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_854f8a91","line":41,"range":{"start_line":41,"start_character":0,"end_line":41,"end_character":8},"in_reply_to":"3aaa91ec_a1655de2","updated":"2016-06-22 10:51:50.000000000","message":"It is removed already","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"f3f0cac65eaf474eddcadb096dd37e3b8a4b09c0","unresolved":false,"context_lines":[{"line_number":40,"context_line":"We propose extend the reporting of the available rules per \u0027binding type\u0027, and"},{"line_number":41,"context_line":"defining the possible parameters a port type will be able to take."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"And we also propose the validation changes to policies, rules, ports (qos-policy)"},{"line_number":44,"context_line":"and networks (qos-policy) at the API level. So as soon as any conflicting"},{"line_number":45,"context_line":"change is detected, such conflict is immediatly reported to the API caller, and"},{"line_number":46,"context_line":"the operation is stopped with a 409 HTTP Conflict error::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_a1cefd57","line":43,"range":{"start_line":43,"start_character":19,"end_line":43,"end_character":24},"updated":"2016-06-22 10:08:22.000000000","message":"not sure should this be here. Are you referring to changes mentioned in the previous paragraph or validation changes you haven\u0027t mentioned yet?","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"f3f0cac65eaf474eddcadb096dd37e3b8a4b09c0","unresolved":false,"context_lines":[{"line_number":40,"context_line":"We propose extend the reporting of the available rules per \u0027binding type\u0027, and"},{"line_number":41,"context_line":"defining the possible parameters a port type will be able to take."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"And we also propose the validation changes to policies, rules, ports (qos-policy)"},{"line_number":44,"context_line":"and networks (qos-policy) at the API level. So as soon as any conflicting"},{"line_number":45,"context_line":"change is detected, such conflict is immediatly reported to the API caller, and"},{"line_number":46,"context_line":"the operation is stopped with a 409 HTTP Conflict error::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_817ca173","line":43,"range":{"start_line":43,"start_character":0,"end_line":43,"end_character":11},"updated":"2016-06-22 10:08:22.000000000","message":"s/And we also/We also","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d8bab57ba0374977820aeb9f57862b174cd8f700","unresolved":false,"context_lines":[{"line_number":40,"context_line":"We propose extend the reporting of the available rules per \u0027binding type\u0027, and"},{"line_number":41,"context_line":"defining the possible parameters a port type will be able to take."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"And we also propose the validation changes to policies, rules, ports (qos-policy)"},{"line_number":44,"context_line":"and networks (qos-policy) at the API level. So as soon as any conflicting"},{"line_number":45,"context_line":"change is detected, such conflict is immediatly reported to the API caller, and"},{"line_number":46,"context_line":"the operation is stopped with a 409 HTTP Conflict error::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_6559be5a","line":43,"range":{"start_line":43,"start_character":0,"end_line":43,"end_character":11},"in_reply_to":"3aaa91ec_817ca173","updated":"2016-06-22 10:51:50.000000000","message":"Changed already","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d8bab57ba0374977820aeb9f57862b174cd8f700","unresolved":false,"context_lines":[{"line_number":40,"context_line":"We propose extend the reporting of the available rules per \u0027binding type\u0027, and"},{"line_number":41,"context_line":"defining the possible parameters a port type will be able to take."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"And we also propose the validation changes to policies, rules, ports (qos-policy)"},{"line_number":44,"context_line":"and networks (qos-policy) at the API level. So as soon as any conflicting"},{"line_number":45,"context_line":"change is detected, such conflict is immediatly reported to the API caller, and"},{"line_number":46,"context_line":"the operation is stopped with a 409 HTTP Conflict error::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_e535ae46","line":43,"range":{"start_line":43,"start_character":19,"end_line":43,"end_character":24},"in_reply_to":"3aaa91ec_a1cefd57","updated":"2016-06-22 10:51:50.000000000","message":"Haven\u0027t mention yet. I removed this \"the\"","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"f3f0cac65eaf474eddcadb096dd37e3b8a4b09c0","unresolved":false,"context_lines":[{"line_number":41,"context_line":"defining the possible parameters a port type will be able to take."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"And we also propose the validation changes to policies, rules, ports (qos-policy)"},{"line_number":44,"context_line":"and networks (qos-policy) at the API level. So as soon as any conflicting"},{"line_number":45,"context_line":"change is detected, such conflict is immediatly reported to the API caller, and"},{"line_number":46,"context_line":"the operation is stopped with a 409 HTTP Conflict error::"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"  $ neutron qos-bandwidth-limit-rule-update \u003cpol-id\u003e \u003crule-id\u003e --direction ingress"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_e14645be","line":45,"range":{"start_line":44,"start_character":44,"end_line":45,"end_character":8},"updated":"2016-06-22 10:08:22.000000000","message":"s/So as soon as any conflicting\nchange is.../As a result when a conflicting change is...","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d8bab57ba0374977820aeb9f57862b174cd8f700","unresolved":false,"context_lines":[{"line_number":41,"context_line":"defining the possible parameters a port type will be able to take."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"And we also propose the validation changes to policies, rules, ports (qos-policy)"},{"line_number":44,"context_line":"and networks (qos-policy) at the API level. So as soon as any conflicting"},{"line_number":45,"context_line":"change is detected, such conflict is immediatly reported to the API caller, and"},{"line_number":46,"context_line":"the operation is stopped with a 409 HTTP Conflict error::"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"  $ neutron qos-bandwidth-limit-rule-update \u003cpol-id\u003e \u003crule-id\u003e --direction ingress"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_2527b613","line":45,"range":{"start_line":44,"start_character":44,"end_line":45,"end_character":8},"in_reply_to":"3aaa91ec_e14645be","updated":"2016-06-22 10:51:50.000000000","message":"Done","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"f3f0cac65eaf474eddcadb096dd37e3b8a4b09c0","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"In the context of ML2, the mechanism drivers will define not only the rule types"},{"line_number":54,"context_line":"they support, but the parameter values, going from::"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    supported_qos_rule_types \u003d [qos_consts.RULE_TYPE_BANDWIDTH_LIMIT,"},{"line_number":57,"context_line":"                                    qos_consts.RULE_TYPE_DSCP_MARK]"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_217e8de4","line":54,"range":{"start_line":54,"start_character":14,"end_line":54,"end_character":21},"updated":"2016-06-22 10:08:22.000000000","message":"s/but the/but also the","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d8bab57ba0374977820aeb9f57862b174cd8f700","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"In the context of ML2, the mechanism drivers will define not only the rule types"},{"line_number":54,"context_line":"they support, but the parameter values, going from::"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    supported_qos_rule_types \u003d [qos_consts.RULE_TYPE_BANDWIDTH_LIMIT,"},{"line_number":57,"context_line":"                                    qos_consts.RULE_TYPE_DSCP_MARK]"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_c58872ea","line":54,"range":{"start_line":54,"start_character":14,"end_line":54,"end_character":21},"in_reply_to":"3aaa91ec_217e8de4","updated":"2016-06-22 10:51:50.000000000","message":"Done","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"f3f0cac65eaf474eddcadb096dd37e3b8a4b09c0","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    }"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Where empty lists [] mean any parameter value. We coudld provide a constant \"ANY\"."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"The QoS service to plugin interface will add new functions::"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_c154e955","line":71,"range":{"start_line":71,"start_character":50,"end_line":71,"end_character":56},"updated":"2016-06-22 10:08:22.000000000","message":"s/coudld/could","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d8bab57ba0374977820aeb9f57862b174cd8f700","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    }"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Where empty lists [] mean any parameter value. We coudld provide a constant \"ANY\"."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"The QoS service to plugin interface will add new functions::"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_e55ace82","line":71,"range":{"start_line":71,"start_character":50,"end_line":71,"end_character":56},"in_reply_to":"3aaa91ec_c154e955","updated":"2016-06-22 10:51:50.000000000","message":"Done","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"f3f0cac65eaf474eddcadb096dd37e3b8a4b09c0","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Where empty lists [] mean any parameter value. We coudld provide a constant \"ANY\"."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"The QoS service to plugin interface will add new functions::"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"  def validate_policy_for_port(self, context, policy, port):"},{"line_number":76,"context_line":"    ..."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_41bc796c","line":73,"range":{"start_line":73,"start_character":0,"end_line":73,"end_character":58},"updated":"2016-06-22 10:08:22.000000000","message":"New functions will be added to the QoS service to plugin interface","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d8bab57ba0374977820aeb9f57862b174cd8f700","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Where empty lists [] mean any parameter value. We coudld provide a constant \"ANY\"."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"The QoS service to plugin interface will add new functions::"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"  def validate_policy_for_port(self, context, policy, port):"},{"line_number":76,"context_line":"    ..."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_859aea12","line":73,"range":{"start_line":73,"start_character":0,"end_line":73,"end_character":58},"in_reply_to":"3aaa91ec_41bc796c","updated":"2016-06-22 10:51:50.000000000","message":"Done","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"f3f0cac65eaf474eddcadb096dd37e3b8a4b09c0","unresolved":false,"context_lines":[{"line_number":82,"context_line":"that will fetch the network ports and interate over validate_policy_for_port,"},{"line_number":83,"context_line":"but can be overriden by the implementation."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Which will be responsible of verifying the policy/port pairs, and"},{"line_number":86,"context_line":"throwing a detailed exception in case if a conflicting case."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"In ML2, we propose to use the in process callbacks to validate the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_414ab984","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":5},"updated":"2016-06-22 10:08:22.000000000","message":"s/Which/This","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"f3f0cac65eaf474eddcadb096dd37e3b8a4b09c0","unresolved":false,"context_lines":[{"line_number":82,"context_line":"that will fetch the network ports and interate over validate_policy_for_port,"},{"line_number":83,"context_line":"but can be overriden by the implementation."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Which will be responsible of verifying the policy/port pairs, and"},{"line_number":86,"context_line":"throwing a detailed exception in case if a conflicting case."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"In ML2, we propose to use the in process callbacks to validate the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_c15ea944","line":85,"range":{"start_line":85,"start_character":26,"end_line":85,"end_character":28},"updated":"2016-06-22 10:08:22.000000000","message":"s/of/for","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d8bab57ba0374977820aeb9f57862b174cd8f700","unresolved":false,"context_lines":[{"line_number":82,"context_line":"that will fetch the network ports and interate over validate_policy_for_port,"},{"line_number":83,"context_line":"but can be overriden by the implementation."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Which will be responsible of verifying the policy/port pairs, and"},{"line_number":86,"context_line":"throwing a detailed exception in case if a conflicting case."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"In ML2, we propose to use the in process callbacks to validate the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_05871ab6","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":5},"in_reply_to":"3aaa91ec_414ab984","updated":"2016-06-22 10:51:50.000000000","message":"Done","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d8bab57ba0374977820aeb9f57862b174cd8f700","unresolved":false,"context_lines":[{"line_number":82,"context_line":"that will fetch the network ports and interate over validate_policy_for_port,"},{"line_number":83,"context_line":"but can be overriden by the implementation."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Which will be responsible of verifying the policy/port pairs, and"},{"line_number":86,"context_line":"throwing a detailed exception in case if a conflicting case."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"In ML2, we propose to use the in process callbacks to validate the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_459122f0","line":85,"range":{"start_line":85,"start_character":26,"end_line":85,"end_character":28},"in_reply_to":"3aaa91ec_c15ea944","updated":"2016-06-22 10:51:50.000000000","message":"Done","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"f3f0cac65eaf474eddcadb096dd37e3b8a4b09c0","unresolved":false,"context_lines":[{"line_number":83,"context_line":"but can be overriden by the implementation."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Which will be responsible of verifying the policy/port pairs, and"},{"line_number":86,"context_line":"throwing a detailed exception in case if a conflicting case."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"In ML2, we propose to use the in process callbacks to validate the"},{"line_number":89,"context_line":"BEFORE_CREATE/BEFORE_UPDATE of NETWORK and PORT objects. While the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_0130b100","line":86,"range":{"start_line":86,"start_character":30,"end_line":86,"end_character":40},"updated":"2016-06-22 10:08:22.000000000","message":"s/in case if/in cases of","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d8bab57ba0374977820aeb9f57862b174cd8f700","unresolved":false,"context_lines":[{"line_number":83,"context_line":"but can be overriden by the implementation."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Which will be responsible of verifying the policy/port pairs, and"},{"line_number":86,"context_line":"throwing a detailed exception in case if a conflicting case."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"In ML2, we propose to use the in process callbacks to validate the"},{"line_number":89,"context_line":"BEFORE_CREATE/BEFORE_UPDATE of NETWORK and PORT objects. While the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3aaa91ec_85682af7","line":86,"range":{"start_line":86,"start_character":30,"end_line":86,"end_character":40},"in_reply_to":"3aaa91ec_0130b100","updated":"2016-06-22 10:51:50.000000000","message":"Done","commit_id":"54395ac8d5c579b40b8025c5b0704a636a388aba"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"e19acc456e009338e580babcedb891fdee2b3a32","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"DSCP marks is another example, which is currently implemented in OVS alone."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"If we wanted to introduce a bandwidth limit attribute (direction:"},{"line_number":32,"context_line":"ingress/egress), the sriov mechanism driver still declares itself as able to"},{"line_number":33,"context_line":"apply bandwidth limit rules. But in this case, ingress bandwidth limit rules"},{"line_number":34,"context_line":"would not be correctly handled."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_1a4d9a72","line":31,"updated":"2016-06-28 15:03:22.000000000","message":"Is adding the direction parameter a part of the spec? Because if it is, it seems out of place. I would expect that API change to belong to a separate spec, while this spec will cover the general approach towards how we handle backend specific differences for qos rules.","commit_id":"19914dda8c19aaa39ea93f982bee06b06e2bc1ec"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"bcf00c8ece0345661d3a140d2804dc4584cafbf6","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"DSCP marks is another example, which is currently implemented in OVS alone."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"If we wanted to introduce a bandwidth limit attribute (direction:"},{"line_number":32,"context_line":"ingress/egress), the sriov mechanism driver still declares itself as able to"},{"line_number":33,"context_line":"apply bandwidth limit rules. But in this case, ingress bandwidth limit rules"},{"line_number":34,"context_line":"would not be correctly handled."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_9791359d","line":31,"in_reply_to":"3aaa91ec_1a4d9a72","updated":"2016-06-29 10:26:43.000000000","message":"No it\u0027s not part of the spec, just an explanation on the type of problems we could be fixing with this.","commit_id":"19914dda8c19aaa39ea93f982bee06b06e2bc1ec"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"e19acc456e009338e580babcedb891fdee2b3a32","unresolved":false,"context_lines":[{"line_number":42,"context_line":"is detected, such conflict is immediatly reported to the API caller, and the"},{"line_number":43,"context_line":"operation is stopped with a 409 HTTP Conflict error::"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  $ neutron qos-bandwidth-limit-rule-update \u003cpol-id\u003e \u003crule-id\u003e --direction ingress"},{"line_number":46,"context_line":"  Error: you have a port (\u003cport id\u003e) of type (vnic_type: ..) attached to that rule,"},{"line_number":47,"context_line":"         which is unable to accept direction\u003dingress."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_da9312f9","line":45,"updated":"2016-06-28 15:03:22.000000000","message":"Since adding --direction does not seem to be the actual goal of the spec, can we come up with another example where it would be needed right now? I envision that we should already raise exceptions on attempts to create a rule for a port that is handled by an ml2 driver that does not support it. Parameter based validation could be a next step implemented when we actually add the new direction attribute.","commit_id":"19914dda8c19aaa39ea93f982bee06b06e2bc1ec"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"292a22f20bae799144c1e9a40d417c1bcbf77fa9","unresolved":false,"context_lines":[{"line_number":42,"context_line":"is detected, such conflict is immediatly reported to the API caller, and the"},{"line_number":43,"context_line":"operation is stopped with a 409 HTTP Conflict error::"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  $ neutron qos-bandwidth-limit-rule-update \u003cpol-id\u003e \u003crule-id\u003e --direction ingress"},{"line_number":46,"context_line":"  Error: you have a port (\u003cport id\u003e) of type (vnic_type: ..) attached to that rule,"},{"line_number":47,"context_line":"         which is unable to accept direction\u003dingress."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_71d3ead5","line":45,"in_reply_to":"3aaa91ec_7add9041","updated":"2016-06-29 14:11:12.000000000","message":"No, that\u0027s not the case at all, or if it is, it should be corrected on the other specs. The other specs introduce their parameters, this is only validation (validation of rules + validation of parameters).\n\nI will make the examples here agnostic to the other specs.","commit_id":"19914dda8c19aaa39ea93f982bee06b06e2bc1ec"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1bfc2372c2ea063b53580176db0220af770cf016","unresolved":false,"context_lines":[{"line_number":42,"context_line":"is detected, such conflict is immediatly reported to the API caller, and the"},{"line_number":43,"context_line":"operation is stopped with a 409 HTTP Conflict error::"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  $ neutron qos-bandwidth-limit-rule-update \u003cpol-id\u003e \u003crule-id\u003e --direction ingress"},{"line_number":46,"context_line":"  Error: you have a port (\u003cport id\u003e) of type (vnic_type: ..) attached to that rule,"},{"line_number":47,"context_line":"         which is unable to accept direction\u003dingress."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_7add9041","line":45,"in_reply_to":"3aaa91ec_d7fe1dad","updated":"2016-06-29 10:45:29.000000000","message":"The reason why I ask is, the qos minimal bw limit spec assumes that the parameter is to be added by this spec, which is not the goal.","commit_id":"19914dda8c19aaa39ea93f982bee06b06e2bc1ec"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"bcf00c8ece0345661d3a140d2804dc4584cafbf6","unresolved":false,"context_lines":[{"line_number":42,"context_line":"is detected, such conflict is immediatly reported to the API caller, and the"},{"line_number":43,"context_line":"operation is stopped with a 409 HTTP Conflict error::"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  $ neutron qos-bandwidth-limit-rule-update \u003cpol-id\u003e \u003crule-id\u003e --direction ingress"},{"line_number":46,"context_line":"  Error: you have a port (\u003cport id\u003e) of type (vnic_type: ..) attached to that rule,"},{"line_number":47,"context_line":"         which is unable to accept direction\u003dingress."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_d7fe1dad","line":45,"in_reply_to":"3aaa91ec_da9312f9","updated":"2016-06-29 10:26:43.000000000","message":"This is a chicken \u0026 egg problem.\n\nWe can come with another example, but IMHO it\u0027s important to keep the parameter validation on the spec so we can tackle this for once and forever. I don\u0027t want to keep blocking other work or make an incomplete solution now that we have a clear image.","commit_id":"19914dda8c19aaa39ea93f982bee06b06e2bc1ec"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"e19acc456e009338e580babcedb891fdee2b3a32","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    ..."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"For the second function, the base driver provides a default implementation"},{"line_number":79,"context_line":"that will fetch the network ports and interate over validate_policy_for_port,"},{"line_number":80,"context_line":"but can be overriden by the implementation."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"This will be responsible for verifying the policy/port pairs, and"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_1a60fa34","line":79,"range":{"start_line":79,"start_character":38,"end_line":79,"end_character":46},"updated":"2016-06-28 15:03:22.000000000","message":"iterate","commit_id":"19914dda8c19aaa39ea93f982bee06b06e2bc1ec"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"bcf00c8ece0345661d3a140d2804dc4584cafbf6","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    ..."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"For the second function, the base driver provides a default implementation"},{"line_number":79,"context_line":"that will fetch the network ports and interate over validate_policy_for_port,"},{"line_number":80,"context_line":"but can be overriden by the implementation."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"This will be responsible for verifying the policy/port pairs, and"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_57298d36","line":79,"range":{"start_line":79,"start_character":38,"end_line":79,"end_character":46},"in_reply_to":"3aaa91ec_1a60fa34","updated":"2016-06-29 10:26:43.000000000","message":"ack. Will fix.","commit_id":"19914dda8c19aaa39ea93f982bee06b06e2bc1ec"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"128be3ef09dd1cce4ccbdd2c19a100772b99a656","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    ..."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"For the second function, the base driver provides a default implementation"},{"line_number":79,"context_line":"that will fetch the network ports and interate over validate_policy_for_port,"},{"line_number":80,"context_line":"but can be overriden by the implementation."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"This will be responsible for verifying the policy/port pairs, and"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_c918d220","line":79,"range":{"start_line":79,"start_character":38,"end_line":79,"end_character":46},"in_reply_to":"3aaa91ec_57298d36","updated":"2016-07-01 08:17:43.000000000","message":"Done","commit_id":"19914dda8c19aaa39ea93f982bee06b06e2bc1ec"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"2f7352d03ab60417cca8175163dcc295bfc664fd","unresolved":false,"context_lines":[{"line_number":23,"context_line":"functions, ovs is there for handling normal VM loads."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"One of the first differences we will find in SR-IOV is that, it\u0027s not able"},{"line_number":26,"context_line":"to limit bandwidth in both directions, but ingress works on OVS and Linuxbridge"},{"line_number":27,"context_line":"only."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Policy compatibility"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_24cb7ba5","line":26,"range":{"start_line":26,"start_character":43,"end_line":26,"end_character":56},"updated":"2016-07-01 08:48:57.000000000","message":"s/ingress works/the bandwidth can be limited in both directions/\n\nMight be worth being explicit here, but this is a nit, so feel free to disregard.","commit_id":"2a48ccb93fe0fec0a2ef7e371779578f2b231cec"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"73fd7348963fd9daf92e787b668d718b6c6841b8","unresolved":false,"context_lines":[{"line_number":23,"context_line":"functions, ovs is there for handling normal VM loads."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"One of the first differences we will find in SR-IOV is that, it\u0027s not able"},{"line_number":26,"context_line":"to limit bandwidth in both directions, but ingress works on OVS and Linuxbridge"},{"line_number":27,"context_line":"only."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Policy compatibility"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1aa78d24_e46d8e05","line":26,"range":{"start_line":26,"start_character":43,"end_line":26,"end_character":56},"in_reply_to":"3aaa91ec_24cb7ba5","updated":"2016-07-05 09:08:20.000000000","message":"I rephrased something similar/shorter. Let\u0027s see if it\u0027s correct :)\n\nThanks.","commit_id":"2a48ccb93fe0fec0a2ef7e371779578f2b231cec"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"2f7352d03ab60417cca8175163dcc295bfc664fd","unresolved":false,"context_lines":[{"line_number":29,"context_line":"Policy compatibility"},{"line_number":30,"context_line":"--------------------"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"DSCP marking rules for example, are currently implemented in OVS alone, that"},{"line_number":33,"context_line":"means that a QoS policy applied to a linuxbridge or sr-iov bound port won\u0027t be"},{"line_number":34,"context_line":"fully realized."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_440de7e6","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":35},"updated":"2016-07-01 08:48:57.000000000","message":"s/DSCP marking rules for example, are/For example, the DSCP marking rule is/","commit_id":"2a48ccb93fe0fec0a2ef7e371779578f2b231cec"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"2f7352d03ab60417cca8175163dcc295bfc664fd","unresolved":false,"context_lines":[{"line_number":29,"context_line":"Policy compatibility"},{"line_number":30,"context_line":"--------------------"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"DSCP marking rules for example, are currently implemented in OVS alone, that"},{"line_number":33,"context_line":"means that a QoS policy applied to a linuxbridge or sr-iov bound port won\u0027t be"},{"line_number":34,"context_line":"fully realized."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_e43053a0","line":32,"range":{"start_line":32,"start_character":72,"end_line":32,"end_character":76},"updated":"2016-07-01 08:48:57.000000000","message":"s/that/this/","commit_id":"2a48ccb93fe0fec0a2ef7e371779578f2b231cec"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"73fd7348963fd9daf92e787b668d718b6c6841b8","unresolved":false,"context_lines":[{"line_number":29,"context_line":"Policy compatibility"},{"line_number":30,"context_line":"--------------------"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"DSCP marking rules for example, are currently implemented in OVS alone, that"},{"line_number":33,"context_line":"means that a QoS policy applied to a linuxbridge or sr-iov bound port won\u0027t be"},{"line_number":34,"context_line":"fully realized."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1aa78d24_04737ae8","line":32,"range":{"start_line":32,"start_character":72,"end_line":32,"end_character":76},"in_reply_to":"3aaa91ec_e43053a0","updated":"2016-07-05 09:08:20.000000000","message":"Done","commit_id":"2a48ccb93fe0fec0a2ef7e371779578f2b231cec"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"2f7352d03ab60417cca8175163dcc295bfc664fd","unresolved":false,"context_lines":[{"line_number":37,"context_line":"------------------"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"If we look at rule validation, we are planning on expanding existing rules"},{"line_number":40,"context_line":"with new parameters [3], but in such case some mechanisms declaring themselves as"},{"line_number":41,"context_line":"supporters of such rule may not support the specific parameter (direction, traffic"},{"line_number":42,"context_line":"classification, etc..). In the case of non-ml2 plugins, some types of ports may not"},{"line_number":43,"context_line":"support specific parameters also (based on the nature of the port)."}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_446b27f1","line":40,"range":{"start_line":40,"start_character":37,"end_line":40,"end_character":41},"updated":"2016-07-01 08:48:57.000000000","message":"s/case/cases","commit_id":"2a48ccb93fe0fec0a2ef7e371779578f2b231cec"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"73fd7348963fd9daf92e787b668d718b6c6841b8","unresolved":false,"context_lines":[{"line_number":37,"context_line":"------------------"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"If we look at rule validation, we are planning on expanding existing rules"},{"line_number":40,"context_line":"with new parameters [3], but in such case some mechanisms declaring themselves as"},{"line_number":41,"context_line":"supporters of such rule may not support the specific parameter (direction, traffic"},{"line_number":42,"context_line":"classification, etc..). In the case of non-ml2 plugins, some types of ports may not"},{"line_number":43,"context_line":"support specific parameters also (based on the nature of the port)."}],"source_content_type":"text/x-rst","patch_set":7,"id":"1aa78d24_c447b275","line":40,"range":{"start_line":40,"start_character":37,"end_line":40,"end_character":41},"in_reply_to":"3aaa91ec_446b27f1","updated":"2016-07-05 09:08:20.000000000","message":"Done","commit_id":"2a48ccb93fe0fec0a2ef7e371779578f2b231cec"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"2f7352d03ab60417cca8175163dcc295bfc664fd","unresolved":false,"context_lines":[{"line_number":40,"context_line":"with new parameters [3], but in such case some mechanisms declaring themselves as"},{"line_number":41,"context_line":"supporters of such rule may not support the specific parameter (direction, traffic"},{"line_number":42,"context_line":"classification, etc..). In the case of non-ml2 plugins, some types of ports may not"},{"line_number":43,"context_line":"support specific parameters also (based on the nature of the port)."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Proposed Change"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_c456f728","line":43,"range":{"start_line":43,"start_character":28,"end_line":43,"end_character":32},"updated":"2016-07-01 08:48:57.000000000","message":"s/also/as well","commit_id":"2a48ccb93fe0fec0a2ef7e371779578f2b231cec"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"73fd7348963fd9daf92e787b668d718b6c6841b8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"with new parameters [3], but in such case some mechanisms declaring themselves as"},{"line_number":41,"context_line":"supporters of such rule may not support the specific parameter (direction, traffic"},{"line_number":42,"context_line":"classification, etc..). In the case of non-ml2 plugins, some types of ports may not"},{"line_number":43,"context_line":"support specific parameters also (based on the nature of the port)."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Proposed Change"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1aa78d24_c43e92d9","line":43,"range":{"start_line":43,"start_character":28,"end_line":43,"end_character":32},"in_reply_to":"3aaa91ec_c456f728","updated":"2016-07-05 09:08:20.000000000","message":"Done","commit_id":"2a48ccb93fe0fec0a2ef7e371779578f2b231cec"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"79529655d7d749b4172465f4365ca8f1ddee8c1b","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"We propose validation changes to policies, rules parameters, ports (qos-policy) and"},{"line_number":50,"context_line":"networks (qos-policy) at the API level. As a result when a conflicting change"},{"line_number":51,"context_line":"is detected, such conflict is immediatly reported to the API caller, and the"},{"line_number":52,"context_line":"operation is stopped with a 409 HTTP Conflict error::"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"  $ neutron qos-\u003ctype\u003e-rule-update \u003cpol-id\u003e \u003crule-id\u003e -\u003cparameter\u003e \u003cvalue\u003e"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_44e5e7d9","line":51,"range":{"start_line":51,"start_character":30,"end_line":51,"end_character":40},"updated":"2016-07-01 08:40:54.000000000","message":"immediately","commit_id":"2a48ccb93fe0fec0a2ef7e371779578f2b231cec"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"73fd7348963fd9daf92e787b668d718b6c6841b8","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"We propose validation changes to policies, rules parameters, ports (qos-policy) and"},{"line_number":50,"context_line":"networks (qos-policy) at the API level. As a result when a conflicting change"},{"line_number":51,"context_line":"is detected, such conflict is immediatly reported to the API caller, and the"},{"line_number":52,"context_line":"operation is stopped with a 409 HTTP Conflict error::"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"  $ neutron qos-\u003ctype\u003e-rule-update \u003cpol-id\u003e \u003crule-id\u003e -\u003cparameter\u003e \u003cvalue\u003e"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1aa78d24_0421bab4","line":51,"range":{"start_line":51,"start_character":30,"end_line":51,"end_character":40},"in_reply_to":"3aaa91ec_44e5e7d9","updated":"2016-07-05 09:08:20.000000000","message":"Done","commit_id":"2a48ccb93fe0fec0a2ef7e371779578f2b231cec"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"79529655d7d749b4172465f4365ca8f1ddee8c1b","unresolved":false,"context_lines":[{"line_number":59,"context_line":"In the context of ML2, the mechanism drivers will define not only the rule types"},{"line_number":60,"context_line":"they support, but also the parameter values, going from::"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    supported_qos_rule_types \u003d [qos_consts.RULE_TYPE_BANDWIDTH_LIMIT,"},{"line_number":63,"context_line":"                                    qos_consts.RULE_TYPE_DSCP_MARK]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"to::"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_a4d48be8","line":62,"updated":"2016-07-01 08:40:54.000000000","message":"I assume the old form will still work.","commit_id":"2a48ccb93fe0fec0a2ef7e371779578f2b231cec"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"73fd7348963fd9daf92e787b668d718b6c6841b8","unresolved":false,"context_lines":[{"line_number":59,"context_line":"In the context of ML2, the mechanism drivers will define not only the rule types"},{"line_number":60,"context_line":"they support, but also the parameter values, going from::"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    supported_qos_rule_types \u003d [qos_consts.RULE_TYPE_BANDWIDTH_LIMIT,"},{"line_number":63,"context_line":"                                    qos_consts.RULE_TYPE_DSCP_MARK]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"to::"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1aa78d24_ef09e72d","line":62,"in_reply_to":"3aaa91ec_a4d48be8","updated":"2016-07-05 09:08:20.000000000","message":"I\u0027d prefer if we force existing  mechanism drivers into updating this field if they want to support QoS. But let\u0027s provide a deprecation notice for one cycle.","commit_id":"2a48ccb93fe0fec0a2ef7e371779578f2b231cec"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d24d3d2ba174cc763a0d75ebbd71e8be32a487e4","unresolved":false,"context_lines":[{"line_number":67,"context_line":"           qos_consts.RULE_TYPE_BANDWIDTH_LIMIT: {"},{"line_number":68,"context_line":"                       \"max_kbps\": [],"},{"line_number":69,"context_line":"                       \"max_burst_kbps\": [],"},{"line_number":70,"context_line":"                       \"parameter\": [\"value1\", \"value2\"]},"},{"line_number":71,"context_line":"           qos_consts.RULE_TYPE_DSCP_MARK: {"},{"line_number":72,"context_line":"                       \"dscp_mark\": []}"},{"line_number":73,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa78d24_9a48df2e","line":70,"updated":"2016-07-13 06:19:44.000000000","message":"In case of a parameter like L.70, this kind of list is really straight-forward and makes sense. What about \u0027max_kbps\u0027 or \u0027max_burst_kbps\u0027? These parameter take some range (if they want to define values for validations).\n\nSo, i think an interpretation of a value depends on parameters. Right?\n\nIMHO the current proposal makes sense. It is nice to have some note on how these values are interpreted.","commit_id":"c096b1f31b925f26c67e07cfe4dd265953c3c287"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"7acead73216f547174286a5255fdfd3b857c54ad","unresolved":false,"context_lines":[{"line_number":67,"context_line":"           qos_consts.RULE_TYPE_BANDWIDTH_LIMIT: {"},{"line_number":68,"context_line":"                       \"max_kbps\": [],"},{"line_number":69,"context_line":"                       \"max_burst_kbps\": [],"},{"line_number":70,"context_line":"                       \"parameter\": [\"value1\", \"value2\"]},"},{"line_number":71,"context_line":"           qos_consts.RULE_TYPE_DSCP_MARK: {"},{"line_number":72,"context_line":"                       \"dscp_mark\": []}"},{"line_number":73,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa78d24_2362e3d9","line":70,"in_reply_to":"1aa78d24_0d8008f7","updated":"2016-07-15 09:59:53.000000000","message":"@amotoki, your concerns make sense:\n\nAnother option could be to have either a list, or a function, if the dict item is a function, then we use the function to validate the parameter (although eventual reporting would be harder, if we provide meaningful names to functions we could use those for the reporting, if we ever follow up with that).\n\nI will add that option to the document, thank you.","commit_id":"c096b1f31b925f26c67e07cfe4dd265953c3c287"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"a498646f982f74f377a9b3842c17e2a1e9eae753","unresolved":false,"context_lines":[{"line_number":67,"context_line":"           qos_consts.RULE_TYPE_BANDWIDTH_LIMIT: {"},{"line_number":68,"context_line":"                       \"max_kbps\": [],"},{"line_number":69,"context_line":"                       \"max_burst_kbps\": [],"},{"line_number":70,"context_line":"                       \"parameter\": [\"value1\", \"value2\"]},"},{"line_number":71,"context_line":"           qos_consts.RULE_TYPE_DSCP_MARK: {"},{"line_number":72,"context_line":"                       \"dscp_mark\": []}"},{"line_number":73,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa78d24_d008fe2a","line":70,"in_reply_to":"1aa78d24_2362e3d9","updated":"2016-07-15 11:45:07.000000000","message":"Done","commit_id":"c096b1f31b925f26c67e07cfe4dd265953c3c287"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"0916ff31651389f298e18989c1526786f13e915a","unresolved":false,"context_lines":[{"line_number":67,"context_line":"           qos_consts.RULE_TYPE_BANDWIDTH_LIMIT: {"},{"line_number":68,"context_line":"                       \"max_kbps\": [],"},{"line_number":69,"context_line":"                       \"max_burst_kbps\": [],"},{"line_number":70,"context_line":"                       \"parameter\": [\"value1\", \"value2\"]},"},{"line_number":71,"context_line":"           qos_consts.RULE_TYPE_DSCP_MARK: {"},{"line_number":72,"context_line":"                       \"dscp_mark\": []}"},{"line_number":73,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa78d24_0d8008f7","line":70,"in_reply_to":"1aa78d24_9a48df2e","updated":"2016-07-13 21:00:49.000000000","message":"For parameters like max_burst_kbps when possible values are numbers from some range You can set here empty list which will mean that all values are fine.","commit_id":"c096b1f31b925f26c67e07cfe4dd265953c3c287"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d24d3d2ba174cc763a0d75ebbd71e8be32a487e4","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    }"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Where empty lists [] mean any parameter value. We could provide a constant \"ANY\"."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"A different mechanism driver not supporting the new \"parameter\" would have a declaration as"},{"line_number":79,"context_line":"follows, where \"parameter\" is not declared in the dictionary::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa78d24_5a5957fc","line":76,"updated":"2016-07-13 06:19:44.000000000","message":"An empty list is sometimes confusing.\nI am not sure which is better \u0027*\u0027, [\u0027*\u0027] or an empty list.","commit_id":"c096b1f31b925f26c67e07cfe4dd265953c3c287"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8ec7df570059f0c2aaa1beb7c933900958cf317c","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    }"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Where empty lists [] mean any parameter value. We could provide a constant \"ANY\"."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"A different mechanism driver not supporting the new \"parameter\" would have a declaration as"},{"line_number":79,"context_line":"follows, where \"parameter\" is not declared in the dictionary::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa78d24_67287686","line":76,"in_reply_to":"1aa78d24_03f24706","updated":"2016-07-15 10:16:09.000000000","message":"I agree.","commit_id":"c096b1f31b925f26c67e07cfe4dd265953c3c287"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"7acead73216f547174286a5255fdfd3b857c54ad","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    }"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Where empty lists [] mean any parameter value. We could provide a constant \"ANY\"."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"A different mechanism driver not supporting the new \"parameter\" would have a declaration as"},{"line_number":79,"context_line":"follows, where \"parameter\" is not declared in the dictionary::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa78d24_03f24706","line":76,"in_reply_to":"1aa78d24_0de5a8db","updated":"2016-07-15 09:59:53.000000000","message":"Let\u0027s add a constant for that.\n\nso we could do\n\n\"dscp_mark\": ANY_VALUE which won\u0027t be neither a list or a function.","commit_id":"c096b1f31b925f26c67e07cfe4dd265953c3c287"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"0916ff31651389f298e18989c1526786f13e915a","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    }"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Where empty lists [] mean any parameter value. We could provide a constant \"ANY\"."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"A different mechanism driver not supporting the new \"parameter\" would have a declaration as"},{"line_number":79,"context_line":"follows, where \"parameter\" is not declared in the dictionary::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa78d24_0de5a8db","line":76,"in_reply_to":"1aa78d24_5a5957fc","updated":"2016-07-13 21:00:49.000000000","message":"I agree that empty list can be confusing to mark that all values are fine.\nIMHO \u0027*\u0027 or constant ANY_VALUE would be good in such case.\nI\u0027m not sure if [\u0027*\u0027] wouldn\u0027t be also confusing because someone can set for example [\u0027*\u0027, \u0027other-value\u0027] for some parameter and what\u0027s then?\nWhat do You think about just \u0027*\u0027?","commit_id":"c096b1f31b925f26c67e07cfe4dd265953c3c287"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"a498646f982f74f377a9b3842c17e2a1e9eae753","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    }"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Where empty lists [] mean any parameter value. We could provide a constant \"ANY\"."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"A different mechanism driver not supporting the new \"parameter\" would have a declaration as"},{"line_number":79,"context_line":"follows, where \"parameter\" is not declared in the dictionary::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa78d24_b00bb223","line":76,"in_reply_to":"1aa78d24_67287686","updated":"2016-07-15 11:45:07.000000000","message":"Done","commit_id":"c096b1f31b925f26c67e07cfe4dd265953c3c287"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"78782a428ec24dd81fb58cfa834d2e0e1a7ba2c4","unresolved":false,"context_lines":[{"line_number":67,"context_line":"           qos_consts.RULE_TYPE_BANDWIDTH_LIMIT: {"},{"line_number":68,"context_line":"                       \"max_kbps\": qos_consts.ANY_VALUE,"},{"line_number":69,"context_line":"                       \"max_burst_kbps\": qos_consts.ANY_VALUE,"},{"line_number":70,"context_line":"                       \"parameter\": qos.ListValidator([\"value1\", \"value2\"]),"},{"line_number":71,"context_line":"                       \"parameter2\": qos.FunctionValidator(_specific_validator,"},{"line_number":72,"context_line":"                                                           \"Description of the validator\")}"},{"line_number":73,"context_line":"           qos_consts.RULE_TYPE_DSCP_MARK: {"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fad55976_fc305c03","line":70,"updated":"2016-07-17 08:45:35.000000000","message":"Can You give an example (migh be in comment) how such validator should looks like? IMHO it is littlebit too much because in fact we can check in validate method if actual value is in list of values (see L189 in https://review.openstack.org/#/c/319694/23/neutron/services/qos/notification_drivers/ml2_qos_driver.py","commit_id":"fc317d40481cb8ea366c7b48747f5337a076a464"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"aa096fd47f6bc1f7b56c3e39f0f464d0e66610bd","unresolved":false,"context_lines":[{"line_number":67,"context_line":"           qos_consts.RULE_TYPE_BANDWIDTH_LIMIT: {"},{"line_number":68,"context_line":"                       \"max_kbps\": qos_consts.ANY_VALUE,"},{"line_number":69,"context_line":"                       \"max_burst_kbps\": qos_consts.ANY_VALUE,"},{"line_number":70,"context_line":"                       \"parameter\": qos.ListValidator([\"value1\", \"value2\"]),"},{"line_number":71,"context_line":"                       \"parameter2\": qos.FunctionValidator(_specific_validator,"},{"line_number":72,"context_line":"                                                           \"Description of the validator\")}"},{"line_number":73,"context_line":"           qos_consts.RULE_TYPE_DSCP_MARK: {"}],"source_content_type":"text/x-rst","patch_set":9,"id":"dada55a8_9a46ebbd","line":70,"in_reply_to":"dada55a8_9aef0bb0","updated":"2016-07-18 09:05:49.000000000","message":"I\u0027m just remembering you\u0027re in PTO time, so from your comments I\u0027m going to assume that you agree (from your initial comments) and update the spec.","commit_id":"fc317d40481cb8ea366c7b48747f5337a076a464"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"834b8dbe0ca7c1fac5ff054144a8967ddd56fdc7","unresolved":false,"context_lines":[{"line_number":67,"context_line":"           qos_consts.RULE_TYPE_BANDWIDTH_LIMIT: {"},{"line_number":68,"context_line":"                       \"max_kbps\": qos_consts.ANY_VALUE,"},{"line_number":69,"context_line":"                       \"max_burst_kbps\": qos_consts.ANY_VALUE,"},{"line_number":70,"context_line":"                       \"parameter\": qos.ListValidator([\"value1\", \"value2\"]),"},{"line_number":71,"context_line":"                       \"parameter2\": qos.FunctionValidator(_specific_validator,"},{"line_number":72,"context_line":"                                                           \"Description of the validator\")}"},{"line_number":73,"context_line":"           qos_consts.RULE_TYPE_DSCP_MARK: {"}],"source_content_type":"text/x-rst","patch_set":9,"id":"dada55a8_9aef0bb0","line":70,"in_reply_to":"fad55976_fc305c03","updated":"2016-07-18 09:04:59.000000000","message":"Well, it would work as the FunctionValidator, both inheriting from a same class.\n\nBut said that, as I guess you\u0027re thinking, the value of using another object in that kind of validation is very weak. Since, it\u0027s just another branch to check \n\nif parameters \u003d\u003d qos_const.ANY_VALUE ... go\nif type(parameters) \u003d\u003d list: return value in parameters\nif issubclass(parameters, qos.Validator) : parameters.validate(value)\n\nI\u0027m ok with using a simple list in that case.\n\n\nWhat do you think?","commit_id":"fc317d40481cb8ea366c7b48747f5337a076a464"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"aa17f1140edce0189244152704c3348b05373750","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                       \"max_kbps\": qos_consts.ANY_VALUE,"},{"line_number":69,"context_line":"                       \"max_burst_kbps\": qos_consts.ANY_VALUE,"},{"line_number":70,"context_line":"                       \"parameter\": [\"value1\", \"value2\"],"},{"line_number":71,"context_line":"                       \"parameter2\": qos.Parameter2Validator() }"},{"line_number":72,"context_line":"           qos_consts.RULE_TYPE_DSCP_MARK: {"},{"line_number":73,"context_line":"                       \"dscp_mark\": qos_consts.ANY_VALUE}"},{"line_number":74,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dada55a8_1cb86074","line":71,"updated":"2016-07-21 18:47:34.000000000","message":"I think you don\u0027t want to call the function, do you?","commit_id":"71d4c24bb1014d48bb1d3f2498f6e6fefa1ee803"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"37a3b1184d358ee7f954927c82b8fb128648a65b","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                       \"max_kbps\": qos_consts.ANY_VALUE,"},{"line_number":69,"context_line":"                       \"max_burst_kbps\": qos_consts.ANY_VALUE,"},{"line_number":70,"context_line":"                       \"parameter\": [\"value1\", \"value2\"],"},{"line_number":71,"context_line":"                       \"parameter2\": qos.Parameter2Validator() }"},{"line_number":72,"context_line":"           qos_consts.RULE_TYPE_DSCP_MARK: {"},{"line_number":73,"context_line":"                       \"dscp_mark\": qos_consts.ANY_VALUE}"},{"line_number":74,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dada55a8_ad433712","line":71,"in_reply_to":"dada55a8_1cb86074","updated":"2016-07-26 11:23:06.000000000","message":"It\u0027s an instance of a class, but we could also provide the class, and that\u0027s it. probably cleaner and with a stateless guarantee","commit_id":"71d4c24bb1014d48bb1d3f2498f6e6fefa1ee803"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"aa17f1140edce0189244152704c3348b05373750","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"For validations which can\u0027t be handled by simple list, another validator class will be provided"},{"line_number":78,"context_line":"to be subclassed which will require a validation and a description of how the validation is"},{"line_number":79,"context_line":"acomplished (To make sure we have a verbose description in place if we wanted to report"},{"line_number":80,"context_line":"capabilities in the future, or to provide more meaningful errors to users of the API)."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"A different mechanism driver not supporting the new \"parameter\" would have a declaration as"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dada55a8_fc658c1d","line":79,"updated":"2016-07-21 18:47:34.000000000","message":"accomplished","commit_id":"71d4c24bb1014d48bb1d3f2498f6e6fefa1ee803"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"37a3b1184d358ee7f954927c82b8fb128648a65b","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"For validations which can\u0027t be handled by simple list, another validator class will be provided"},{"line_number":78,"context_line":"to be subclassed which will require a validation and a description of how the validation is"},{"line_number":79,"context_line":"acomplished (To make sure we have a verbose description in place if we wanted to report"},{"line_number":80,"context_line":"capabilities in the future, or to provide more meaningful errors to users of the API)."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"A different mechanism driver not supporting the new \"parameter\" would have a declaration as"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dada55a8_cd55cbc2","line":79,"in_reply_to":"dada55a8_fc658c1d","updated":"2016-07-26 11:23:06.000000000","message":"Done","commit_id":"71d4c24bb1014d48bb1d3f2498f6e6fefa1ee803"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"aa17f1140edce0189244152704c3348b05373750","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        def validate(self, value):"},{"line_number":100,"context_line":"            pass"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        def str(self):"},{"line_number":103,"context_line":"            return self.description"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dada55a8_3f1f165c","line":102,"updated":"2016-07-21 18:47:34.000000000","message":"Should it be __str__? Where is it used? Why isn\u0027t direct access to description not enough?","commit_id":"71d4c24bb1014d48bb1d3f2498f6e6fefa1ee803"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"37a3b1184d358ee7f954927c82b8fb128648a65b","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        def validate(self, value):"},{"line_number":100,"context_line":"            pass"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        def str(self):"},{"line_number":103,"context_line":"            return self.description"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dada55a8_ed708f74","line":102,"in_reply_to":"dada55a8_3f1f165c","updated":"2016-07-26 11:23:06.000000000","message":"You\u0027re right, description should be more than enough.","commit_id":"71d4c24bb1014d48bb1d3f2498f6e6fefa1ee803"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"aa17f1140edce0189244152704c3348b05373750","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        description \u003d \"Validates that parameter2 is higher than two\""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        def validate(self, value):"},{"line_number":111,"context_line":"            if value\u003e2:"},{"line_number":112,"context_line":"                return"},{"line_number":113,"context_line":"            raise Exception..(...)"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dada55a8_df799a94","line":111,"updated":"2016-07-21 18:47:34.000000000","message":"not pep8 compliant :P","commit_id":"71d4c24bb1014d48bb1d3f2498f6e6fefa1ee803"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"37a3b1184d358ee7f954927c82b8fb128648a65b","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        description \u003d \"Validates that parameter2 is higher than two\""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        def validate(self, value):"},{"line_number":111,"context_line":"            if value\u003e2:"},{"line_number":112,"context_line":"                return"},{"line_number":113,"context_line":"            raise Exception..(...)"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dada55a8_0dfb63c2","line":111,"in_reply_to":"dada55a8_df799a94","updated":"2016-07-26 11:23:06.000000000","message":":) Done","commit_id":"71d4c24bb1014d48bb1d3f2498f6e6fefa1ee803"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"2000feea6b0b92f6bea9fdc6ac911b93d29c5b80","unresolved":false,"context_lines":[{"line_number":48,"context_line":"We propose validation changes to policies, rules parameters, ports (qos-policy) and"},{"line_number":49,"context_line":"networks (qos-policy) at the API level. As a result when a conflicting change"},{"line_number":50,"context_line":"is detected, such conflict is immediately reported to the API caller, and the"},{"line_number":51,"context_line":"operation is stopped with a 409 HTTP Conflict error::"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"  $ neutron qos-\u003ctype\u003e-rule-update \u003cpol-id\u003e \u003crule-id\u003e -\u003cparameter\u003e \u003cvalue\u003e"},{"line_number":54,"context_line":"  Error: you have a port (\u003cport id\u003e) of type (..) attached to that rule,"}],"source_content_type":"text/x-rst","patch_set":12,"id":"bacf61ea_7c948fe1","line":51,"updated":"2016-07-28 21:09:37.000000000","message":"so are you saying that the only API visible change is in an increased number of conflict exceptions with an explaination of the validation error?","commit_id":"d573df321ee73e40d114332a3098948eb1b5669f"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"dcac8ba15543574ee68960fa7d73e58121a257fb","unresolved":false,"context_lines":[{"line_number":48,"context_line":"We propose validation changes to policies, rules parameters, ports (qos-policy) and"},{"line_number":49,"context_line":"networks (qos-policy) at the API level. As a result when a conflicting change"},{"line_number":50,"context_line":"is detected, such conflict is immediately reported to the API caller, and the"},{"line_number":51,"context_line":"operation is stopped with a 409 HTTP Conflict error::"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"  $ neutron qos-\u003ctype\u003e-rule-update \u003cpol-id\u003e \u003crule-id\u003e -\u003cparameter\u003e \u003cvalue\u003e"},{"line_number":54,"context_line":"  Error: you have a port (\u003cport id\u003e) of type (..) attached to that rule,"}],"source_content_type":"text/x-rst","patch_set":12,"id":"bacf61ea_3864cae2","line":51,"in_reply_to":"bacf61ea_7c948fe1","updated":"2016-07-29 09:54:36.000000000","message":"basically yes.","commit_id":"d573df321ee73e40d114332a3098948eb1b5669f"}]}
