)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b725b6477ba7c7091843f95f0f549c0596506b97","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add QoS minimum bandwidth rule for instance egress traffic"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch introduce the front end implementation for QoS"},{"line_number":10,"context_line":"minimum bandwidth rule."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"APIImpact: New type of parameter for QoS rule in neutron API"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3ac371cc_27d7a2c0","line":9,"range":{"start_line":9,"start_character":11,"end_line":9,"end_character":20},"updated":"2016-08-16 09:25:10.000000000","message":"introduces","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"27230007c2deab0c2b6badd84ff905d1a7d118c4","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add QoS minimum bandwidth rule for instance egress traffic"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch introduce the front end implementation for QoS"},{"line_number":10,"context_line":"minimum bandwidth rule."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"APIImpact: New type of parameter for QoS rule in neutron API"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3ac371cc_8aabf21c","line":9,"range":{"start_line":9,"start_character":11,"end_line":9,"end_character":20},"in_reply_to":"3ac371cc_27d7a2c0","updated":"2016-08-16 14:33:56.000000000","message":"Done","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"}],"doc/source/devref/quality_of_service.rst":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b725b6477ba7c7091843f95f0f549c0596506b97","unresolved":false,"context_lines":[{"line_number":138,"context_line":"* QosPolicy: directly maps to the conceptual policy resource."},{"line_number":139,"context_line":"* QosNetworkPolicyBinding, QosPortPolicyBinding: defines attachment between a"},{"line_number":140,"context_line":"  Neutron resource and a QoS policy."},{"line_number":141,"context_line":"* QosBandwidthLimitRule: defines the only rule type available at the moment."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"All database models are defined under:"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3ac371cc_478a9ec0","side":"PARENT","line":141,"updated":"2016-08-16 09:25:10.000000000","message":"Actually, this was plain wrong even when we landed DSCP support earlier the cycle. Can you please update the devref to refer to Dscp one too?","commit_id":"4478987fbddd9997f06753fa5e3f555c57588b74"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"27230007c2deab0c2b6badd84ff905d1a7d118c4","unresolved":false,"context_lines":[{"line_number":138,"context_line":"* QosPolicy: directly maps to the conceptual policy resource."},{"line_number":139,"context_line":"* QosNetworkPolicyBinding, QosPortPolicyBinding: defines attachment between a"},{"line_number":140,"context_line":"  Neutron resource and a QoS policy."},{"line_number":141,"context_line":"* QosBandwidthLimitRule: defines the only rule type available at the moment."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"All database models are defined under:"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3ac371cc_3074ecfb","side":"PARENT","line":141,"in_reply_to":"3ac371cc_478a9ec0","updated":"2016-08-16 14:33:56.000000000","message":"Sure: https://review.openstack.org/#/c/355909/\n\nTo avoid \"not related\" reviews I open a new (small) bug","commit_id":"4478987fbddd9997f06753fa5e3f555c57588b74"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b725b6477ba7c7091843f95f0f549c0596506b97","unresolved":false,"context_lines":[{"line_number":184,"context_line":"  of valid DSCP rule types is: 0, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32,"},{"line_number":185,"context_line":"  34, 36, 38, 40, 46, 48, and 56."},{"line_number":186,"context_line":"* QosMinimumBandwidthRule: defines the minimum assured bandwidth rule type,"},{"line_number":187,"context_line":"  characterized by a min kbps parameter. This rule has also a direction"},{"line_number":188,"context_line":"  parameter to set the traffic direction, from the instance point of view. The"},{"line_number":189,"context_line":"  unique direction now implemented is egress."},{"line_number":190,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3ac371cc_c7632e19","line":187,"range":{"start_line":187,"start_character":21,"end_line":187,"end_character":29},"updated":"2016-08-16 09:25:10.000000000","message":"If that\u0027s a name of a parameter, it\u0027s probably a single word, without a space?","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"27230007c2deab0c2b6badd84ff905d1a7d118c4","unresolved":false,"context_lines":[{"line_number":184,"context_line":"  of valid DSCP rule types is: 0, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32,"},{"line_number":185,"context_line":"  34, 36, 38, 40, 46, 48, and 56."},{"line_number":186,"context_line":"* QosMinimumBandwidthRule: defines the minimum assured bandwidth rule type,"},{"line_number":187,"context_line":"  characterized by a min kbps parameter. This rule has also a direction"},{"line_number":188,"context_line":"  parameter to set the traffic direction, from the instance point of view. The"},{"line_number":189,"context_line":"  unique direction now implemented is egress."},{"line_number":190,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3ac371cc_f0509460","line":187,"range":{"start_line":187,"start_character":21,"end_line":187,"end_character":29},"in_reply_to":"3ac371cc_c7632e19","updated":"2016-08-16 14:33:56.000000000","message":"Done","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b725b6477ba7c7091843f95f0f549c0596506b97","unresolved":false,"context_lines":[{"line_number":186,"context_line":"* QosMinimumBandwidthRule: defines the minimum assured bandwidth rule type,"},{"line_number":187,"context_line":"  characterized by a min kbps parameter. This rule has also a direction"},{"line_number":188,"context_line":"  parameter to set the traffic direction, from the instance point of view. The"},{"line_number":189,"context_line":"  unique direction now implemented is egress."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"Those are defined in:"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3ac371cc_277322e9","line":189,"range":{"start_line":189,"start_character":2,"end_line":189,"end_character":8},"updated":"2016-08-16 09:25:10.000000000","message":"only?","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"27230007c2deab0c2b6badd84ff905d1a7d118c4","unresolved":false,"context_lines":[{"line_number":186,"context_line":"* QosMinimumBandwidthRule: defines the minimum assured bandwidth rule type,"},{"line_number":187,"context_line":"  characterized by a min kbps parameter. This rule has also a direction"},{"line_number":188,"context_line":"  parameter to set the traffic direction, from the instance point of view. The"},{"line_number":189,"context_line":"  unique direction now implemented is egress."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"Those are defined in:"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3ac371cc_b9a3a74e","line":189,"range":{"start_line":189,"start_character":2,"end_line":189,"end_character":8},"in_reply_to":"3ac371cc_277322e9","updated":"2016-08-16 14:33:56.000000000","message":"Yes, that\u0027s better.","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"}],"etc/policy.json":[{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"d2ea7054ad2f0be19840ecd09ec8f52bd405eaa2","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    \"delete_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":207,"context_line":"    \"update_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":208,"context_line":"    \"get_rule_type\": \"rule:regular_user\","},{"line_number":209,"context_line":"    \"get_policy_egress_bandwidth_minimum_rule\": \"rule:regular_user\","},{"line_number":210,"context_line":"    \"create_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":211,"context_line":"    \"delete_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":212,"context_line":"    \"update_policy_minimum_bandwidth_rule\": \"rule:admin_only\","}],"source_content_type":"application/json","patch_set":3,"id":"dada55a8_b301e83a","line":209,"range":{"start_line":209,"start_character":16,"end_line":209,"end_character":22},"updated":"2016-07-20 08:51:10.000000000","message":"Should this be present only here or should it be present in create, delete and update also?","commit_id":"b856fcefe5d828080e50d2f7c0b0b7d68eddccdb"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"a842965d01b2caefb096c279b3353fb4a6e56157","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    \"delete_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":207,"context_line":"    \"update_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":208,"context_line":"    \"get_rule_type\": \"rule:regular_user\","},{"line_number":209,"context_line":"    \"get_policy_egress_bandwidth_minimum_rule\": \"rule:regular_user\","},{"line_number":210,"context_line":"    \"create_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":211,"context_line":"    \"delete_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":212,"context_line":"    \"update_policy_minimum_bandwidth_rule\": \"rule:admin_only\","}],"source_content_type":"application/json","patch_set":14,"id":"bacf61ea_46f075fd","line":209,"range":{"start_line":209,"start_character":5,"end_line":209,"end_character":45},"updated":"2016-08-05 12:38:05.000000000","message":"should this be \nget_policy_bandwidth_minimum_rule","commit_id":"48441f8a7db40ae8a2e6e3415598200c0caed616"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5fa458efe2b4b8ce67e120050475177aeffe93fc","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    \"delete_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":207,"context_line":"    \"update_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":208,"context_line":"    \"get_rule_type\": \"rule:regular_user\","},{"line_number":209,"context_line":"    \"get_policy_egress_bandwidth_minimum_rule\": \"rule:regular_user\","},{"line_number":210,"context_line":"    \"create_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":211,"context_line":"    \"delete_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":212,"context_line":"    \"update_policy_minimum_bandwidth_rule\": \"rule:admin_only\","}],"source_content_type":"application/json","patch_set":14,"id":"bacf61ea_014b0788","line":209,"range":{"start_line":209,"start_character":5,"end_line":209,"end_character":45},"in_reply_to":"bacf61ea_46f075fd","updated":"2016-08-05 14:27:51.000000000","message":"Thanks!","commit_id":"48441f8a7db40ae8a2e6e3415598200c0caed616"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"739441a124252484445604afceb1686fef8c4501","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    \"delete_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":207,"context_line":"    \"update_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":208,"context_line":"    \"get_rule_type\": \"rule:regular_user\","},{"line_number":209,"context_line":"    \"get_policy_bandwidth_minimum_rule\": \"rule:regular_user\","},{"line_number":210,"context_line":"    \"create_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":211,"context_line":"    \"delete_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":212,"context_line":"    \"update_policy_minimum_bandwidth_rule\": \"rule:admin_only\","}],"source_content_type":"application/json","patch_set":18,"id":"9ad45d7e_a5f5e2ed","line":209,"updated":"2016-08-11 11:25:49.000000000","message":"get_policy_minimum_bandwidth_rule instead ?","commit_id":"0df471f86b35a5d8e018018454ee6139e89cb99b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"557086cc2725b4b74ef4d71cdb14c775b1a91fcd","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    \"delete_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":207,"context_line":"    \"update_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":208,"context_line":"    \"get_rule_type\": \"rule:regular_user\","},{"line_number":209,"context_line":"    \"get_policy_bandwidth_minimum_rule\": \"rule:regular_user\","},{"line_number":210,"context_line":"    \"create_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":211,"context_line":"    \"delete_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":212,"context_line":"    \"update_policy_minimum_bandwidth_rule\": \"rule:admin_only\","}],"source_content_type":"application/json","patch_set":18,"id":"9ad45d7e_9e662428","line":209,"in_reply_to":"9ad45d7e_a5f5e2ed","updated":"2016-08-11 13:48:58.000000000","message":"Yes, thanks!","commit_id":"0df471f86b35a5d8e018018454ee6139e89cb99b"}],"neutron/3f7169f70711_add_qos_minimum_bandwidth_rules.py":[{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"16342873248866b8f2d930d9a21f4b01b3cff41c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_2880c7f6","line":1,"updated":"2016-07-31 03:46:52.000000000","message":"this file seem to be added by mistake. you remove it in the follow-up patch","commit_id":"202c26a18289666cc8265aef70d6d8a3507ffad8"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ceea9327426e79924b74fb17a5befc878507aba7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_911430e9","line":1,"in_reply_to":"bacf61ea_2880c7f6","updated":"2016-08-02 07:16:05.000000000","message":"You are right.\n\nThanks!","commit_id":"202c26a18289666cc8265aef70d6d8a3507ffad8"}],"neutron/db/migration/alembic_migrations/versions/newton/expand/0f5bef0f87d4_add_qos_minimum_bandwidth_rules.py":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"739441a124252484445604afceb1686fef8c4501","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                  sa.ForeignKey(\u0027qos_policies.id\u0027, ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":41,"context_line":"                  nullable\u003dFalse, index\u003dTrue),"},{"line_number":42,"context_line":"        sa.Column(\u0027min_kbps\u0027, sa.Integer()),"},{"line_number":43,"context_line":"        sa.Column(\u0027direction\u0027, sa.Enum(constants.EGRESS_DIRECTION,"},{"line_number":44,"context_line":"                                       name\u003d\u0027directions\u0027),"},{"line_number":45,"context_line":"                  nullable\u003dFalse),"},{"line_number":46,"context_line":"        sa.UniqueConstraint(\u0027qos_policy_id\u0027, \u0027direction\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_68957f31","line":43,"updated":"2016-08-11 11:25:49.000000000","message":"Just an opinion, but I\u0027d like to hear others:\nI\u0027d say database should be good to accept also ingress/egress at this level, so we avoid messing with the database later (isn\u0027t contract necessary to modify a field?, may be not if you\u0027re expanding the accepted options in enum)\n\nBut anyway, the API and objects layer already prevents this.","commit_id":"0df471f86b35a5d8e018018454ee6139e89cb99b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"23da36d9766723b7fec6ed098dd5b135da1b02bd","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                  sa.ForeignKey(\u0027qos_policies.id\u0027, ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":41,"context_line":"                  nullable\u003dFalse, index\u003dTrue),"},{"line_number":42,"context_line":"        sa.Column(\u0027min_kbps\u0027, sa.Integer()),"},{"line_number":43,"context_line":"        sa.Column(\u0027direction\u0027, sa.Enum(constants.EGRESS_DIRECTION,"},{"line_number":44,"context_line":"                                       name\u003d\u0027directions\u0027),"},{"line_number":45,"context_line":"                  nullable\u003dFalse),"},{"line_number":46,"context_line":"        sa.UniqueConstraint(\u0027qos_policy_id\u0027, \u0027direction\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_94e0cace","line":43,"in_reply_to":"9ad45d7e_68957f31","updated":"2016-08-11 12:17:49.000000000","message":"Better to leave it with two values for the future extension.","commit_id":"0df471f86b35a5d8e018018454ee6139e89cb99b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"557086cc2725b4b74ef4d71cdb14c775b1a91fcd","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                  sa.ForeignKey(\u0027qos_policies.id\u0027, ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":41,"context_line":"                  nullable\u003dFalse, index\u003dTrue),"},{"line_number":42,"context_line":"        sa.Column(\u0027min_kbps\u0027, sa.Integer()),"},{"line_number":43,"context_line":"        sa.Column(\u0027direction\u0027, sa.Enum(constants.EGRESS_DIRECTION,"},{"line_number":44,"context_line":"                                       name\u003d\u0027directions\u0027),"},{"line_number":45,"context_line":"                  nullable\u003dFalse),"},{"line_number":46,"context_line":"        sa.UniqueConstraint(\u0027qos_policy_id\u0027, \u0027direction\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_5e066c20","line":43,"in_reply_to":"9ad45d7e_94e0cace","updated":"2016-08-11 13:48:58.000000000","message":"Perfect, so both values will be there: ingress and egress.","commit_id":"0df471f86b35a5d8e018018454ee6139e89cb99b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b725b6477ba7c7091843f95f0f549c0596506b97","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":20,"id":"3ac371cc_e7474a75","line":1,"updated":"2016-08-16 09:25:10.000000000","message":"working for the foundation?","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"27230007c2deab0c2b6badd84ff905d1a7d118c4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":20,"id":"3ac371cc_d93ca3e4","line":1,"in_reply_to":"3ac371cc_e7474a75","updated":"2016-08-16 14:33:56.000000000","message":"Ups, my bad.","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"}],"neutron/db/qos/api.py":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"739441a124252484445604afceb1686fef8c4501","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    return [entry.port_id for entry in query]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"def get_max_queue_num(context):"},{"line_number":82,"context_line":"    query \u003d (db.model_query(context, models.QosMinimumBandwidthRule)"},{"line_number":83,"context_line":"             .order_by(desc(\u0027queue_num\u0027)).first())"},{"line_number":84,"context_line":"    if query:"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_139a34b9","line":81,"updated":"2016-08-11 11:25:49.000000000","message":"queue_num ? \n\nYou don\u0027t define that field, I guess this a left over from OVS implementation details :-)\n\nIn any case queue number is an implementation detail which should be resolved locally by each agent, not the database.","commit_id":"0df471f86b35a5d8e018018454ee6139e89cb99b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"557086cc2725b4b74ef4d71cdb14c775b1a91fcd","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    return [entry.port_id for entry in query]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"def get_max_queue_num(context):"},{"line_number":82,"context_line":"    query \u003d (db.model_query(context, models.QosMinimumBandwidthRule)"},{"line_number":83,"context_line":"             .order_by(desc(\u0027queue_num\u0027)).first())"},{"line_number":84,"context_line":"    if query:"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_6162b5d9","line":81,"in_reply_to":"9ad45d7e_139a34b9","updated":"2016-08-11 13:48:58.000000000","message":"That\u0027s right, it\u0027s a left over... And of course, if needed, that won\u0027t be added to this table.","commit_id":"0df471f86b35a5d8e018018454ee6139e89cb99b"}],"neutron/db/qos/models.py":[{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"a842965d01b2caefb096c279b3353fb4a6e56157","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                              nullable\u003dFalse,"},{"line_number":99,"context_line":"                              index\u003dTrue)"},{"line_number":100,"context_line":"    min_kbps \u003d sa.Column(sa.Integer)"},{"line_number":101,"context_line":"    direction \u003d sa.Column(sa.Enum(constants.EGRESS_DIRECTION,"},{"line_number":102,"context_line":"                                  name\u003d\u0027directions\u0027),"},{"line_number":103,"context_line":"                          nullable\u003dFalse)"},{"line_number":104,"context_line":"    __table_args__ \u003d ("},{"line_number":105,"context_line":"        sa.UniqueConstraint("},{"line_number":106,"context_line":"            qos_policy_id, direction,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_06903d42","line":103,"range":{"start_line":101,"start_character":0,"end_line":103,"end_character":41},"updated":"2016-08-05 12:38:05.000000000","message":"so I see that the only QosMinimumBandwidthRule has direction attribute. is the another patch that add it to the QosBandwidthLimitRule as well.","commit_id":"48441f8a7db40ae8a2e6e3415598200c0caed616"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5fa458efe2b4b8ce67e120050475177aeffe93fc","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                              nullable\u003dFalse,"},{"line_number":99,"context_line":"                              index\u003dTrue)"},{"line_number":100,"context_line":"    min_kbps \u003d sa.Column(sa.Integer)"},{"line_number":101,"context_line":"    direction \u003d sa.Column(sa.Enum(constants.EGRESS_DIRECTION,"},{"line_number":102,"context_line":"                                  name\u003d\u0027directions\u0027),"},{"line_number":103,"context_line":"                          nullable\u003dFalse)"},{"line_number":104,"context_line":"    __table_args__ \u003d ("},{"line_number":105,"context_line":"        sa.UniqueConstraint("},{"line_number":106,"context_line":"            qos_policy_id, direction,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_92a743a6","line":103,"range":{"start_line":101,"start_character":0,"end_line":103,"end_character":41},"in_reply_to":"bacf61ea_06903d42","updated":"2016-08-05 14:27:51.000000000","message":"This new feature for QosBandwidthLimitRule is being addressed by: https://bugs.launchpad.net/neutron/+bug/1560961","commit_id":"48441f8a7db40ae8a2e6e3415598200c0caed616"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"739441a124252484445604afceb1686fef8c4501","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                              nullable\u003dFalse,"},{"line_number":99,"context_line":"                              index\u003dTrue)"},{"line_number":100,"context_line":"    min_kbps \u003d sa.Column(sa.Integer)"},{"line_number":101,"context_line":"    direction \u003d sa.Column(sa.Enum(constants.EGRESS_DIRECTION,"},{"line_number":102,"context_line":"                                  name\u003d\u0027directions\u0027),"},{"line_number":103,"context_line":"                          nullable\u003dFalse)"},{"line_number":104,"context_line":"    __table_args__ \u003d ("}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_e8c84f57","line":101,"updated":"2016-08-11 11:25:49.000000000","message":"same note here about DB, but let others chime in. It\u0027s just a thought, not a request.","commit_id":"0df471f86b35a5d8e018018454ee6139e89cb99b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"557086cc2725b4b74ef4d71cdb14c775b1a91fcd","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                              nullable\u003dFalse,"},{"line_number":99,"context_line":"                              index\u003dTrue)"},{"line_number":100,"context_line":"    min_kbps \u003d sa.Column(sa.Integer)"},{"line_number":101,"context_line":"    direction \u003d sa.Column(sa.Enum(constants.EGRESS_DIRECTION,"},{"line_number":102,"context_line":"                                  name\u003d\u0027directions\u0027),"},{"line_number":103,"context_line":"                          nullable\u003dFalse)"},{"line_number":104,"context_line":"    __table_args__ \u003d ("}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_e17b4579","line":101,"in_reply_to":"9ad45d7e_e8c84f57","updated":"2016-08-11 13:48:58.000000000","message":"Done","commit_id":"0df471f86b35a5d8e018018454ee6139e89cb99b"}],"neutron/extensions/qos.py":[{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"a842965d01b2caefb096c279b3353fb4a6e56157","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    # The rule object type to use for each incoming rule-related request."},{"line_number":208,"context_line":"    rule_objects \u003d {\u0027bandwidth_limit\u0027: rule_object.QosBandwidthLimitRule,"},{"line_number":209,"context_line":"        \u0027dscp_marking\u0027: rule_object.QosDscpMarkingRule,"},{"line_number":210,"context_line":"        \u0027minimum_bandwidth\u0027: rule_object.QosMinimumBandwidthRule}"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    # Patterns used to call method proxies for all policy-rule-specific"},{"line_number":213,"context_line":"    # method calls (see __getattr__ docstring, below)."}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_86d26dfe","line":210,"range":{"start_line":209,"start_character":0,"end_line":210,"end_character":65},"updated":"2016-08-05 12:38:05.000000000","message":"nit: I think it better to keep the indention as \n    rule_objects \u003d {\u0027bandwidth_limit\u0027: rule_object.QosBandwidthLimitRule,\n                    \u0027dscp_marking\u0027: rule_object.QosDscpMarkingRule,\n                    \u0027minimum_bandwidth\u0027: rule_object.QosMinimumBandwidthRule}","commit_id":"48441f8a7db40ae8a2e6e3415598200c0caed616"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5fa458efe2b4b8ce67e120050475177aeffe93fc","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    # The rule object type to use for each incoming rule-related request."},{"line_number":208,"context_line":"    rule_objects \u003d {\u0027bandwidth_limit\u0027: rule_object.QosBandwidthLimitRule,"},{"line_number":209,"context_line":"        \u0027dscp_marking\u0027: rule_object.QosDscpMarkingRule,"},{"line_number":210,"context_line":"        \u0027minimum_bandwidth\u0027: rule_object.QosMinimumBandwidthRule}"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    # Patterns used to call method proxies for all policy-rule-specific"},{"line_number":213,"context_line":"    # method calls (see __getattr__ docstring, below)."}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_b2eec7ea","line":210,"range":{"start_line":209,"start_character":0,"end_line":210,"end_character":65},"in_reply_to":"bacf61ea_86d26dfe","updated":"2016-08-05 14:27:51.000000000","message":"Done","commit_id":"48441f8a7db40ae8a2e6e3415598200c0caed616"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"739441a124252484445604afceb1686fef8c4501","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                                  \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":107,"context_line":"                                  \u0027is_visible\u0027: True, \u0027default\u0027: \u0027egress\u0027,"},{"line_number":108,"context_line":"                                  \u0027validate\u0027: {\u0027type:values\u0027:"},{"line_number":109,"context_line":"                                        common_constants.EGRESS_DIRECTION}}})"},{"line_number":110,"context_line":"    }"},{"line_number":111,"context_line":"}"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_6831ff59","line":109,"updated":"2016-08-11 11:25:49.000000000","message":"doesn\u0027t this need to be a list? \n[common_constants.EGRESS_DIRECTION]","commit_id":"0df471f86b35a5d8e018018454ee6139e89cb99b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"557086cc2725b4b74ef4d71cdb14c775b1a91fcd","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                                  \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":107,"context_line":"                                  \u0027is_visible\u0027: True, \u0027default\u0027: \u0027egress\u0027,"},{"line_number":108,"context_line":"                                  \u0027validate\u0027: {\u0027type:values\u0027:"},{"line_number":109,"context_line":"                                        common_constants.EGRESS_DIRECTION}}})"},{"line_number":110,"context_line":"    }"},{"line_number":111,"context_line":"}"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_3c4f4038","line":109,"in_reply_to":"9ad45d7e_6831ff59","updated":"2016-08-11 13:48:58.000000000","message":"Yes, this parameter must be a list or a tuple","commit_id":"0df471f86b35a5d8e018018454ee6139e89cb99b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"6aa8e078dedfc8199df7fdaa468b52ea7a6067f3","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                           **{\u0027min_kbps\u0027: {"},{"line_number":104,"context_line":"                                  \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":105,"context_line":"                                  \u0027is_visible\u0027: True, \u0027default\u0027: None,"},{"line_number":106,"context_line":"                                  \u0027validate\u0027: {\u0027type:non_negative\u0027: None}},"},{"line_number":107,"context_line":"                              \u0027direction\u0027: {"},{"line_number":108,"context_line":"                                  \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":109,"context_line":"                                  \u0027is_visible\u0027: True, \u0027default\u0027: \u0027egress\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"1ac06dbe_e06f36fa","line":106,"updated":"2016-08-25 12:13:54.000000000","message":"I believe the type validator should be fixed in line with https://bugs.launchpad.net/neutron/+bug/1600708","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cd8cb871dd90f8951b7a287622532ada9da24196","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                           **{\u0027min_kbps\u0027: {"},{"line_number":104,"context_line":"                                  \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":105,"context_line":"                                  \u0027is_visible\u0027: True, \u0027default\u0027: None,"},{"line_number":106,"context_line":"                                  \u0027validate\u0027: {\u0027type:non_negative\u0027: None}},"},{"line_number":107,"context_line":"                              \u0027direction\u0027: {"},{"line_number":108,"context_line":"                                  \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":109,"context_line":"                                  \u0027is_visible\u0027: True, \u0027default\u0027: \u0027egress\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa7ab95a_d06233d8","line":106,"in_reply_to":"1ac06dbe_e06f36fa","updated":"2016-08-26 09:24:00.000000000","message":"Yes, I agree.","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"b8b34179b26c06a9dcfde63859ee748c341752a5","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                                  \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":110,"context_line":"                                  \u0027is_visible\u0027: True, \u0027default\u0027: \u0027egress\u0027,"},{"line_number":111,"context_line":"                                  \u0027validate\u0027: {\u0027type:values\u0027:"},{"line_number":112,"context_line":"                                        [common_constants.EGRESS_DIRECTION]}}})"},{"line_number":113,"context_line":"    }"},{"line_number":114,"context_line":"}"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"fa7ab95a_96a8238f","line":112,"range":{"start_line":112,"start_character":40,"end_line":112,"end_character":75},"updated":"2016-08-29 16:52:27.000000000","message":"Here is where I put in the check.","commit_id":"80e0ca4cacd329ce3a18432f2cb5969881663996"}],"neutron/objects/common_types.py":[{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"a842965d01b2caefb096c279b3353fb4a6e56157","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    AUTO_TYPE \u003d DscpMark()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"class FlowDirectionEnumField(obj_fields.AutoTypedField):"},{"line_number":117,"context_line":"    AUTO_TYPE \u003d obj_fields.Enum(valid_values\u003dconstants.VALID_DIRECTIONS)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"class FlowDirectionEgressEnumField(obj_fields.AutoTypedField):"},{"line_number":121,"context_line":"    AUTO_TYPE \u003d obj_fields.Enum(valid_values\u003d(constants.EGRESS_DIRECTION,))"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"class EtherTypeEnumField(obj_fields.AutoTypedField):"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_a671710e","line":121,"range":{"start_line":116,"start_character":0,"end_line":121,"end_character":75},"updated":"2016-08-05 12:38:05.000000000","message":"seems weird that we have FlowDirectionEnumField for EGRESS_DIRECTION and INGRESS_DIRECTION and we have FlowDirectionEgressEnumField just for EGRESS_DIRECTION.\nif FlowDirectionEgressEnumField can be just EGRESS_DIRECTION we do we need it as a field type?","commit_id":"48441f8a7db40ae8a2e6e3415598200c0caed616"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5fa458efe2b4b8ce67e120050475177aeffe93fc","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    AUTO_TYPE \u003d DscpMark()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"class FlowDirectionEnumField(obj_fields.AutoTypedField):"},{"line_number":117,"context_line":"    AUTO_TYPE \u003d obj_fields.Enum(valid_values\u003dconstants.VALID_DIRECTIONS)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"class FlowDirectionEgressEnumField(obj_fields.AutoTypedField):"},{"line_number":121,"context_line":"    AUTO_TYPE \u003d obj_fields.Enum(valid_values\u003d(constants.EGRESS_DIRECTION,))"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"class EtherTypeEnumField(obj_fields.AutoTypedField):"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_f7c7910f","line":121,"range":{"start_line":116,"start_character":0,"end_line":121,"end_character":75},"in_reply_to":"bacf61ea_a671710e","updated":"2016-08-05 14:27:51.000000000","message":"I don\u0027t want to touch FlowDirectionEnumField class because it\u0027s going to be used by other QoS rules.\n\nIn this case we want to limit this new rule only to egress direction. But I\u0027ll use FlowDirectionEnumField as you recomend.","commit_id":"48441f8a7db40ae8a2e6e3415598200c0caed616"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b94e669dce36e6953f870ce03278abe5133aff54","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    AUTO_TYPE \u003d DscpMark()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"class FlowDirectionEnumField(obj_fields.AutoTypedField):"},{"line_number":117,"context_line":"    AUTO_TYPE \u003d obj_fields.Enum(valid_values\u003dconstants.VALID_DIRECTIONS)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"class FlowDirectionEgressEnumField(obj_fields.AutoTypedField):"},{"line_number":121,"context_line":"    AUTO_TYPE \u003d obj_fields.Enum(valid_values\u003d(constants.EGRESS_DIRECTION,))"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"class EtherTypeEnumField(obj_fields.AutoTypedField):"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_690aa5d3","line":121,"range":{"start_line":116,"start_character":0,"end_line":121,"end_character":75},"in_reply_to":"bacf61ea_f7c7910f","updated":"2016-08-05 14:41:48.000000000","message":"However, all Enum fields in neutron/objects are mapped to specific classes. One reason it for testing purposes: https://github.com/openstack/neutron/blob/master/neutron/tests/unit/objects/test_base.py#L279\n\nUsing a specific class for EnumTypes is easier during the object simulation.\n\nI\u0027ll keep this change.","commit_id":"48441f8a7db40ae8a2e6e3415598200c0caed616"}],"neutron/objects/qos/policy.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b725b6477ba7c7091843f95f0f549c0596506b97","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":216,"context_line":"        _target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":217,"context_line":"        if _target_version \u003c (1, 1):"},{"line_number":218,"context_line":"            if \u0027rules\u0027 in primitive:"},{"line_number":219,"context_line":"                bw_obj_name \u003d rule_obj_impl.QosBandwidthLimitRule.obj_name()"},{"line_number":220,"context_line":"                primitive[\u0027rules\u0027] \u003d filter("}],"source_content_type":"text/x-python","patch_set":20,"id":"3ac371cc_d223eaa5","line":217,"updated":"2016-08-16 09:25:10.000000000","message":"A new version conversion code should be added here.","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"27230007c2deab0c2b6badd84ff905d1a7d118c4","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":216,"context_line":"        _target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":217,"context_line":"        if _target_version \u003c (1, 1):"},{"line_number":218,"context_line":"            if \u0027rules\u0027 in primitive:"},{"line_number":219,"context_line":"                bw_obj_name \u003d rule_obj_impl.QosBandwidthLimitRule.obj_name()"},{"line_number":220,"context_line":"                primitive[\u0027rules\u0027] \u003d filter("}],"source_content_type":"text/x-python","patch_set":20,"id":"3ac371cc_05c1ac80","line":217,"in_reply_to":"3ac371cc_c4a31a4e","updated":"2016-08-16 14:33:56.000000000","message":"Done","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"27230007c2deab0c2b6badd84ff905d1a7d118c4","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":216,"context_line":"        _target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":217,"context_line":"        if _target_version \u003c (1, 1):"},{"line_number":218,"context_line":"            if \u0027rules\u0027 in primitive:"},{"line_number":219,"context_line":"                bw_obj_name \u003d rule_obj_impl.QosBandwidthLimitRule.obj_name()"},{"line_number":220,"context_line":"                primitive[\u0027rules\u0027] \u003d filter("}],"source_content_type":"text/x-python","patch_set":20,"id":"3ac371cc_24b14e48","line":217,"in_reply_to":"3ac371cc_d223eaa5","updated":"2016-08-16 14:33:56.000000000","message":"Done","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"ebad5d1b180f75b3dd8c08445b03af03debdd0a1","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":216,"context_line":"        _target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":217,"context_line":"        if _target_version \u003c (1, 1):"},{"line_number":218,"context_line":"            if \u0027rules\u0027 in primitive:"},{"line_number":219,"context_line":"                bw_obj_name \u003d rule_obj_impl.QosBandwidthLimitRule.obj_name()"},{"line_number":220,"context_line":"                primitive[\u0027rules\u0027] \u003d filter("}],"source_content_type":"text/x-python","patch_set":20,"id":"3ac371cc_c4a31a4e","line":217,"in_reply_to":"3ac371cc_d223eaa5","updated":"2016-08-16 14:09:43.000000000","message":"yes, to leave only rules in DSCP or BwLimit if _target_version \u003c (1,2)\n\ngood catch.","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"403dceff807f470ded88e421bcadc9c717efc52e","unresolved":false,"context_lines":[{"line_number":38,"context_line":"class QosPolicy(base.NeutronDbObject):"},{"line_number":39,"context_line":"    # Version 1.0: Initial version"},{"line_number":40,"context_line":"    # Version 1.1: QosDscpMarkingRule introduced"},{"line_number":41,"context_line":"    # Version 1.2: Added QosMinEgressBandwidthRule"},{"line_number":42,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    # required by RbacNeutronMetaclass"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_21950be4","line":41,"range":{"start_line":41,"start_character":25,"end_line":41,"end_character":50},"updated":"2016-08-19 15:54:49.000000000","message":"%s/QosMinEgressBandwidthRule/QosMinimumBandwidthRule/g","commit_id":"26351c0640289aac852267180a42e2e4211cac1b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2efc6216e1da2dab5ffcfdb687e970de5b13508d","unresolved":false,"context_lines":[{"line_number":38,"context_line":"class QosPolicy(base.NeutronDbObject):"},{"line_number":39,"context_line":"    # Version 1.0: Initial version"},{"line_number":40,"context_line":"    # Version 1.1: QosDscpMarkingRule introduced"},{"line_number":41,"context_line":"    # Version 1.2: Added QosMinEgressBandwidthRule"},{"line_number":42,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    # required by RbacNeutronMetaclass"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_347387b3","line":41,"range":{"start_line":41,"start_character":25,"end_line":41,"end_character":50},"in_reply_to":"1ac06dbe_21950be4","updated":"2016-08-19 15:55:54.000000000","message":"Done","commit_id":"26351c0640289aac852267180a42e2e4211cac1b"}],"neutron/objects/qos/rule.py":[{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"a842965d01b2caefb096c279b3353fb4a6e56157","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from oslo_versionedobjects import fields as obj_fields"},{"line_number":23,"context_line":"import six"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from neutron.common import constants"},{"line_number":26,"context_line":"from neutron.common import utils"},{"line_number":27,"context_line":"from neutron.db import api as db_api"},{"line_number":28,"context_line":"from neutron.db.qos import models as qos_db_model"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_469cf50d","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":36},"updated":"2016-08-05 12:38:05.000000000","message":"don\u0027t think this is related and probably better to get the neutron-lib constants.","commit_id":"48441f8a7db40ae8a2e6e3415598200c0caed616"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5fa458efe2b4b8ce67e120050475177aeffe93fc","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from oslo_versionedobjects import fields as obj_fields"},{"line_number":23,"context_line":"import six"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from neutron.common import constants"},{"line_number":26,"context_line":"from neutron.common import utils"},{"line_number":27,"context_line":"from neutron.db import api as db_api"},{"line_number":28,"context_line":"from neutron.db.qos import models as qos_db_model"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_5c94c489","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":36},"in_reply_to":"bacf61ea_469cf50d","updated":"2016-08-05 14:27:51.000000000","message":"Yes, you are right. Neutron constants are being moved to neutron-lib.\nBut some parameters are still in neutron.common.constants","commit_id":"48441f8a7db40ae8a2e6e3415598200c0caed616"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"a842965d01b2caefb096c279b3353fb4a6e56157","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    fields \u003d {"},{"line_number":129,"context_line":"        \u0027min_kbps\u0027: obj_fields.IntegerField(nullable\u003dTrue),"},{"line_number":130,"context_line":"        \u0027direction\u0027: common_types.FlowDirectionEgressEnumField(),"},{"line_number":131,"context_line":"    }"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    rule_type \u003d qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_665c994b","line":130,"range":{"start_line":130,"start_character":7,"end_line":130,"end_character":65},"updated":"2016-08-05 12:38:05.000000000","message":"so can this be FlowDirectionEnumField(read_only\u003dTrue, default\u003degress)","commit_id":"48441f8a7db40ae8a2e6e3415598200c0caed616"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5fa458efe2b4b8ce67e120050475177aeffe93fc","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    fields \u003d {"},{"line_number":129,"context_line":"        \u0027min_kbps\u0027: obj_fields.IntegerField(nullable\u003dTrue),"},{"line_number":130,"context_line":"        \u0027direction\u0027: common_types.FlowDirectionEgressEnumField(),"},{"line_number":131,"context_line":"    }"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    rule_type \u003d qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_c06ba6ef","line":130,"range":{"start_line":130,"start_character":7,"end_line":130,"end_character":65},"in_reply_to":"bacf61ea_665c994b","updated":"2016-08-05 14:27:51.000000000","message":"I can\u0027t set this field to read_only, but I\u0027ll set this as an Enum with only one choice (for now). It will be easier to upgrade.","commit_id":"48441f8a7db40ae8a2e6e3415598200c0caed616"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"6aa8e078dedfc8199df7fdaa468b52ea7a6067f3","unresolved":false,"context_lines":[{"line_number":49,"context_line":"class QosRule(base.NeutronDbObject):"},{"line_number":50,"context_line":"    # Version 1.0: Initial version, only BandwidthLimitRule"},{"line_number":51,"context_line":"    #         1.1: Added DscpMarkingRule"},{"line_number":52,"context_line":"    #         1.2: Added QosMinEgressBandwidthRule"},{"line_number":53,"context_line":"    #"},{"line_number":54,"context_line":"    #NOTE(mangelajo): versions need to be handled from the top QosRule object"},{"line_number":55,"context_line":"    #                 because it\u0027s the only reference QosPolicy can make"}],"source_content_type":"text/x-python","patch_set":25,"id":"1ac06dbe_c35de4ed","line":52,"range":{"start_line":52,"start_character":25,"end_line":52,"end_character":50},"updated":"2016-08-25 12:13:54.000000000","message":"please match the real object name. Yeah, I know previous comments are not followin\u0027 it...","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"4043d82cc0399886357973d3247783c67499de8b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"class QosRule(base.NeutronDbObject):"},{"line_number":50,"context_line":"    # Version 1.0: Initial version, only BandwidthLimitRule"},{"line_number":51,"context_line":"    #         1.1: Added DscpMarkingRule"},{"line_number":52,"context_line":"    #         1.2: Added QosMinEgressBandwidthRule"},{"line_number":53,"context_line":"    #"},{"line_number":54,"context_line":"    #NOTE(mangelajo): versions need to be handled from the top QosRule object"},{"line_number":55,"context_line":"    #                 because it\u0027s the only reference QosPolicy can make"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa7ab95a_c417dceb","line":52,"range":{"start_line":52,"start_character":25,"end_line":52,"end_character":50},"in_reply_to":"1ac06dbe_c35de4ed","updated":"2016-08-26 06:19:11.000000000","message":"+1","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cd8cb871dd90f8951b7a287622532ada9da24196","unresolved":false,"context_lines":[{"line_number":49,"context_line":"class QosRule(base.NeutronDbObject):"},{"line_number":50,"context_line":"    # Version 1.0: Initial version, only BandwidthLimitRule"},{"line_number":51,"context_line":"    #         1.1: Added DscpMarkingRule"},{"line_number":52,"context_line":"    #         1.2: Added QosMinEgressBandwidthRule"},{"line_number":53,"context_line":"    #"},{"line_number":54,"context_line":"    #NOTE(mangelajo): versions need to be handled from the top QosRule object"},{"line_number":55,"context_line":"    #                 because it\u0027s the only reference QosPolicy can make"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa7ab95a_70aa47d6","line":52,"range":{"start_line":52,"start_character":25,"end_line":52,"end_character":50},"in_reply_to":"fa7ab95a_c417dceb","updated":"2016-08-26 09:24:00.000000000","message":"Done","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"}],"neutron/services/qos/qos_consts.py":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"739441a124252484445604afceb1686fef8c4501","unresolved":false,"context_lines":[{"line_number":29,"context_line":"# fine."},{"line_number":30,"context_line":"DEFAULT_BURST_RATE \u003d 0.8"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"QOS_QUEUE_INIT_NUM \u003d 1"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_087b23c2","line":32,"updated":"2016-08-11 11:25:49.000000000","message":"NOTE","commit_id":"0df471f86b35a5d8e018018454ee6139e89cb99b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"557086cc2725b4b74ef4d71cdb14c775b1a91fcd","unresolved":false,"context_lines":[{"line_number":29,"context_line":"# fine."},{"line_number":30,"context_line":"DEFAULT_BURST_RATE \u003d 0.8"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"QOS_QUEUE_INIT_NUM \u003d 1"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_9cd62c4d","line":32,"in_reply_to":"9ad45d7e_087b23c2","updated":"2016-08-11 13:48:58.000000000","message":"Done","commit_id":"0df471f86b35a5d8e018018454ee6139e89cb99b"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"4043d82cc0399886357973d3247783c67499de8b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"RULE_TYPE_MINIMUM_BANDWIDTH \u003d \u0027minimum_bandwidth\u0027"},{"line_number":19,"context_line":"VALID_RULE_TYPES \u003d [RULE_TYPE_BANDWIDTH_LIMIT,"},{"line_number":20,"context_line":"                    RULE_TYPE_DSCP_MARKING,"},{"line_number":21,"context_line":"                    RULE_TYPE_MINIMUM_BANDWIDTH,"},{"line_number":22,"context_line":"                    ]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"QOS_POLICY_ID \u003d \u0027qos_policy_id\u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa7ab95a_84e4f40d","line":21,"range":{"start_line":21,"start_character":47,"end_line":21,"end_character":48},"updated":"2016-08-26 06:19:11.000000000","message":"very nitty: \u0027,\u0027 not necessary at the end.","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cd8cb871dd90f8951b7a287622532ada9da24196","unresolved":false,"context_lines":[{"line_number":18,"context_line":"RULE_TYPE_MINIMUM_BANDWIDTH \u003d \u0027minimum_bandwidth\u0027"},{"line_number":19,"context_line":"VALID_RULE_TYPES \u003d [RULE_TYPE_BANDWIDTH_LIMIT,"},{"line_number":20,"context_line":"                    RULE_TYPE_DSCP_MARKING,"},{"line_number":21,"context_line":"                    RULE_TYPE_MINIMUM_BANDWIDTH,"},{"line_number":22,"context_line":"                    ]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"QOS_POLICY_ID \u003d \u0027qos_policy_id\u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa7ab95a_8b7cfc21","line":21,"range":{"start_line":21,"start_character":47,"end_line":21,"end_character":48},"in_reply_to":"fa7ab95a_84e4f40d","updated":"2016-08-26 09:24:00.000000000","message":"Done","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ab1622c43d947fe5389a6c813093cbe722c75a06","unresolved":false,"context_lines":[{"line_number":18,"context_line":"RULE_TYPE_MINIMUM_BANDWIDTH \u003d \u0027minimum_bandwidth\u0027"},{"line_number":19,"context_line":"VALID_RULE_TYPES \u003d [RULE_TYPE_BANDWIDTH_LIMIT,"},{"line_number":20,"context_line":"                    RULE_TYPE_DSCP_MARKING,"},{"line_number":21,"context_line":"                    RULE_TYPE_MINIMUM_BANDWIDTH,"},{"line_number":22,"context_line":"                    ]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"QOS_POLICY_ID \u003d \u0027qos_policy_id\u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa7ab95a_a56801bc","line":21,"range":{"start_line":21,"start_character":47,"end_line":21,"end_character":48},"in_reply_to":"fa7ab95a_8b7cfc21","updated":"2016-08-26 11:48:26.000000000","message":"Come on... This comma is actually USEFUL because it simplifies next patches (they don\u0027t need to touch this line in the future).","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"}],"neutron/tests/etc/policy.json":[{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"d2ea7054ad2f0be19840ecd09ec8f52bd405eaa2","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    \"delete_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":207,"context_line":"    \"update_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":208,"context_line":"    \"get_rule_type\": \"rule:regular_user\","},{"line_number":209,"context_line":"    \"get_policy_egress_bandwidth_minimum_rule\": \"rule:regular_user\","},{"line_number":210,"context_line":"    \"create_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":211,"context_line":"    \"delete_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":212,"context_line":"    \"update_policy_minimum_bandwidth_rule\": \"rule:admin_only\","}],"source_content_type":"application/json","patch_set":3,"id":"dada55a8_ae533b6a","line":209,"range":{"start_line":209,"start_character":16,"end_line":209,"end_character":22},"updated":"2016-07-20 08:51:10.000000000","message":"Should this only be on this one?","commit_id":"b856fcefe5d828080e50d2f7c0b0b7d68eddccdb"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"a842965d01b2caefb096c279b3353fb4a6e56157","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    \"delete_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":207,"context_line":"    \"update_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":208,"context_line":"    \"get_rule_type\": \"rule:regular_user\","},{"line_number":209,"context_line":"    \"get_policy_egress_bandwidth_minimum_rule\": \"rule:regular_user\","},{"line_number":210,"context_line":"    \"create_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":211,"context_line":"    \"delete_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":212,"context_line":"    \"update_policy_minimum_bandwidth_rule\": \"rule:admin_only\","}],"source_content_type":"application/json","patch_set":14,"id":"bacf61ea_a6005103","line":209,"range":{"start_line":209,"start_character":5,"end_line":209,"end_character":45},"updated":"2016-08-05 12:38:05.000000000","message":"I think it should be \nget_policy_bandwidth_minimum_rule","commit_id":"48441f8a7db40ae8a2e6e3415598200c0caed616"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5fa458efe2b4b8ce67e120050475177aeffe93fc","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    \"delete_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":207,"context_line":"    \"update_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":208,"context_line":"    \"get_rule_type\": \"rule:regular_user\","},{"line_number":209,"context_line":"    \"get_policy_egress_bandwidth_minimum_rule\": \"rule:regular_user\","},{"line_number":210,"context_line":"    \"create_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":211,"context_line":"    \"delete_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":212,"context_line":"    \"update_policy_minimum_bandwidth_rule\": \"rule:admin_only\","}],"source_content_type":"application/json","patch_set":14,"id":"bacf61ea_bc5fc00d","line":209,"range":{"start_line":209,"start_character":5,"end_line":209,"end_character":45},"in_reply_to":"bacf61ea_a6005103","updated":"2016-08-05 14:27:51.000000000","message":"Done","commit_id":"48441f8a7db40ae8a2e6e3415598200c0caed616"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"739441a124252484445604afceb1686fef8c4501","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    \"delete_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":207,"context_line":"    \"update_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":208,"context_line":"    \"get_rule_type\": \"rule:regular_user\","},{"line_number":209,"context_line":"    \"get_policy_bandwidth_minimum_rule\": \"rule:regular_user\","},{"line_number":210,"context_line":"    \"create_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":211,"context_line":"    \"delete_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":212,"context_line":"    \"update_policy_minimum_bandwidth_rule\": \"rule:admin_only\","}],"source_content_type":"application/json","patch_set":18,"id":"9ad45d7e_48587b56","line":209,"updated":"2016-08-11 11:25:49.000000000","message":"get_policy_minimum_bandwidth_rule","commit_id":"0df471f86b35a5d8e018018454ee6139e89cb99b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"557086cc2725b4b74ef4d71cdb14c775b1a91fcd","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    \"delete_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":207,"context_line":"    \"update_policy_dscp_marking_rule\": \"rule:admin_only\","},{"line_number":208,"context_line":"    \"get_rule_type\": \"rule:regular_user\","},{"line_number":209,"context_line":"    \"get_policy_bandwidth_minimum_rule\": \"rule:regular_user\","},{"line_number":210,"context_line":"    \"create_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":211,"context_line":"    \"delete_policy_minimum_bandwidth_rule\": \"rule:admin_only\","},{"line_number":212,"context_line":"    \"update_policy_minimum_bandwidth_rule\": \"rule:admin_only\","}],"source_content_type":"application/json","patch_set":18,"id":"9ad45d7e_a1666d27","line":209,"in_reply_to":"9ad45d7e_48587b56","updated":"2016-08-11 13:48:58.000000000","message":"Done","commit_id":"0df471f86b35a5d8e018018454ee6139e89cb99b"}],"neutron/tests/tempest/api/test_qos.py":[{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"ad6884f04e535ae238d67f6264ef701387edac01","unresolved":false,"context_lines":[{"line_number":852,"context_line":""},{"line_number":853,"context_line":"        # Test \u0027show rule\u0027"},{"line_number":854,"context_line":"        retrieved_rule \u003d self.admin_client.show_minimum_bandwidth_rule("},{"line_number":855,"context_line":"            policy[\u0027id\u0027], rule[\u0027id\u0027])"},{"line_number":856,"context_line":"        retrieved_rule \u003d retrieved_rule[\u0027bandwidth_limit_rule\u0027]"},{"line_number":857,"context_line":"        self.assertEqual(rule[\u0027id\u0027], retrieved_rule[\u0027id\u0027])"},{"line_number":858,"context_line":"        self.assertEqual(1138, retrieved_rule[\u0027min_kbps\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_36e22aa0","line":855,"range":{"start_line":855,"start_character":26,"end_line":855,"end_character":36},"updated":"2016-07-19 17:21:05.000000000","message":"this call seems to be the cause in the majority of tests that fail. Seems there isn\u0027t an \u0027id\u0027 key in the rule.","commit_id":"e1a664fa5122fa7997c15d3bbbc9bc0790655b2a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ef61b34ead3db1e94a539ef819840219605ca44e","unresolved":false,"context_lines":[{"line_number":852,"context_line":""},{"line_number":853,"context_line":"        # Test \u0027show rule\u0027"},{"line_number":854,"context_line":"        retrieved_rule \u003d self.admin_client.show_minimum_bandwidth_rule("},{"line_number":855,"context_line":"            policy[\u0027id\u0027], rule[\u0027id\u0027])"},{"line_number":856,"context_line":"        retrieved_rule \u003d retrieved_rule[\u0027bandwidth_limit_rule\u0027]"},{"line_number":857,"context_line":"        self.assertEqual(rule[\u0027id\u0027], retrieved_rule[\u0027id\u0027])"},{"line_number":858,"context_line":"        self.assertEqual(1138, retrieved_rule[\u0027min_kbps\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_c8e947e8","line":855,"range":{"start_line":855,"start_character":26,"end_line":855,"end_character":36},"in_reply_to":"dada55a8_36e22aa0","updated":"2016-07-20 07:56:26.000000000","message":"I found the error. I\u0027ll submit the fix in the next patch.","commit_id":"e1a664fa5122fa7997c15d3bbbc9bc0790655b2a"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"ad6884f04e535ae238d67f6264ef701387edac01","unresolved":false,"context_lines":[{"line_number":853,"context_line":"        # Test \u0027show rule\u0027"},{"line_number":854,"context_line":"        retrieved_rule \u003d self.admin_client.show_minimum_bandwidth_rule("},{"line_number":855,"context_line":"            policy[\u0027id\u0027], rule[\u0027id\u0027])"},{"line_number":856,"context_line":"        retrieved_rule \u003d retrieved_rule[\u0027bandwidth_limit_rule\u0027]"},{"line_number":857,"context_line":"        self.assertEqual(rule[\u0027id\u0027], retrieved_rule[\u0027id\u0027])"},{"line_number":858,"context_line":"        self.assertEqual(1138, retrieved_rule[\u0027min_kbps\u0027])"},{"line_number":859,"context_line":"        self.assertEqual(self.DIRECTION_EGRESS, retrieved_rule[\u0027direction\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_b6245aaf","line":856,"range":{"start_line":856,"start_character":41,"end_line":856,"end_character":61},"updated":"2016-07-19 17:21:05.000000000","message":"A call from constants might be better here.\nie. qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH.\nIt would future proof the code in case there is an api change.","commit_id":"e1a664fa5122fa7997c15d3bbbc9bc0790655b2a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ef61b34ead3db1e94a539ef819840219605ca44e","unresolved":false,"context_lines":[{"line_number":853,"context_line":"        # Test \u0027show rule\u0027"},{"line_number":854,"context_line":"        retrieved_rule \u003d self.admin_client.show_minimum_bandwidth_rule("},{"line_number":855,"context_line":"            policy[\u0027id\u0027], rule[\u0027id\u0027])"},{"line_number":856,"context_line":"        retrieved_rule \u003d retrieved_rule[\u0027bandwidth_limit_rule\u0027]"},{"line_number":857,"context_line":"        self.assertEqual(rule[\u0027id\u0027], retrieved_rule[\u0027id\u0027])"},{"line_number":858,"context_line":"        self.assertEqual(1138, retrieved_rule[\u0027min_kbps\u0027])"},{"line_number":859,"context_line":"        self.assertEqual(self.DIRECTION_EGRESS, retrieved_rule[\u0027direction\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_08f07fc8","line":856,"range":{"start_line":856,"start_character":41,"end_line":856,"end_character":61},"in_reply_to":"dada55a8_b6245aaf","updated":"2016-07-20 07:56:26.000000000","message":"Good point!","commit_id":"e1a664fa5122fa7997c15d3bbbc9bc0790655b2a"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"ad6884f04e535ae238d67f6264ef701387edac01","unresolved":false,"context_lines":[{"line_number":860,"context_line":""},{"line_number":861,"context_line":"        # Test \u0027list rules\u0027"},{"line_number":862,"context_line":"        rules \u003d self.admin_client.list_minimum_bandwidth_rules(policy[\u0027id\u0027])"},{"line_number":863,"context_line":"        rules \u003d rules[\u0027minimum_bandwidth_rules\u0027]"},{"line_number":864,"context_line":"        rules_ids \u003d [r[\u0027id\u0027] for r in rules]"},{"line_number":865,"context_line":"        self.assertIn(rule[\u0027id\u0027], rules_ids)"},{"line_number":866,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_7651420e","line":863,"range":{"start_line":863,"start_character":22,"end_line":863,"end_character":47},"updated":"2016-07-19 17:21:05.000000000","message":"ditto","commit_id":"e1a664fa5122fa7997c15d3bbbc9bc0790655b2a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ef61b34ead3db1e94a539ef819840219605ca44e","unresolved":false,"context_lines":[{"line_number":860,"context_line":""},{"line_number":861,"context_line":"        # Test \u0027list rules\u0027"},{"line_number":862,"context_line":"        rules \u003d self.admin_client.list_minimum_bandwidth_rules(policy[\u0027id\u0027])"},{"line_number":863,"context_line":"        rules \u003d rules[\u0027minimum_bandwidth_rules\u0027]"},{"line_number":864,"context_line":"        rules_ids \u003d [r[\u0027id\u0027] for r in rules]"},{"line_number":865,"context_line":"        self.assertIn(rule[\u0027id\u0027], rules_ids)"},{"line_number":866,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_e8ec0bf5","line":863,"range":{"start_line":863,"start_character":22,"end_line":863,"end_character":47},"in_reply_to":"dada55a8_7651420e","updated":"2016-07-20 07:56:26.000000000","message":"Done","commit_id":"e1a664fa5122fa7997c15d3bbbc9bc0790655b2a"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"ad6884f04e535ae238d67f6264ef701387edac01","unresolved":false,"context_lines":[{"line_number":892,"context_line":"                                        description\u003d\u0027test policy\u0027,"},{"line_number":893,"context_line":"                                        shared\u003dFalse)"},{"line_number":894,"context_line":"        rule \u003d self.admin_client.create_minimum_bandwidth_rule("},{"line_number":895,"context_line":"            policy_id\u003dpolicy[\u0027id\u0027], max_kbps\u003d300,"},{"line_number":896,"context_line":"            direction\u003dself.DIRECTION_EGRESS)"},{"line_number":897,"context_line":""},{"line_number":898,"context_line":"        self.admin_client.update_minimum_bandwidth_limit_rule(policy[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_f0853aad","line":895,"range":{"start_line":895,"start_character":36,"end_line":895,"end_character":44},"updated":"2016-07-19 17:21:05.000000000","message":"s/max_kbps/min_kbps","commit_id":"e1a664fa5122fa7997c15d3bbbc9bc0790655b2a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ef61b34ead3db1e94a539ef819840219605ca44e","unresolved":false,"context_lines":[{"line_number":892,"context_line":"                                        description\u003d\u0027test policy\u0027,"},{"line_number":893,"context_line":"                                        shared\u003dFalse)"},{"line_number":894,"context_line":"        rule \u003d self.admin_client.create_minimum_bandwidth_rule("},{"line_number":895,"context_line":"            policy_id\u003dpolicy[\u0027id\u0027], max_kbps\u003d300,"},{"line_number":896,"context_line":"            direction\u003dself.DIRECTION_EGRESS)"},{"line_number":897,"context_line":""},{"line_number":898,"context_line":"        self.admin_client.update_minimum_bandwidth_limit_rule(policy[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_48a397b2","line":895,"range":{"start_line":895,"start_character":36,"end_line":895,"end_character":44},"in_reply_to":"dada55a8_f0853aad","updated":"2016-07-20 07:56:26.000000000","message":"Thanks!","commit_id":"e1a664fa5122fa7997c15d3bbbc9bc0790655b2a"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"ad6884f04e535ae238d67f6264ef701387edac01","unresolved":false,"context_lines":[{"line_number":900,"context_line":""},{"line_number":901,"context_line":"        retrieved_policy \u003d self.admin_client.show_minimum_bandwidth_rule("},{"line_number":902,"context_line":"            policy[\u0027id\u0027], rule[\u0027id\u0027])"},{"line_number":903,"context_line":"        retrieved_policy \u003d retrieved_policy[\u0027minimum_bandwidth_rule\u0027]"},{"line_number":904,"context_line":"        self.assertEqual(350, retrieved_policy[\u0027min_kbps\u0027])"},{"line_number":905,"context_line":"        self.assertEqual(self.DIRECTION_EGRESS, retrieved_policy[\u0027direction\u0027])"},{"line_number":906,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_f63d32bc","line":903,"range":{"start_line":903,"start_character":45,"end_line":903,"end_character":67},"updated":"2016-07-19 17:21:05.000000000","message":"ditto","commit_id":"e1a664fa5122fa7997c15d3bbbc9bc0790655b2a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ef61b34ead3db1e94a539ef819840219605ca44e","unresolved":false,"context_lines":[{"line_number":900,"context_line":""},{"line_number":901,"context_line":"        retrieved_policy \u003d self.admin_client.show_minimum_bandwidth_rule("},{"line_number":902,"context_line":"            policy[\u0027id\u0027], rule[\u0027id\u0027])"},{"line_number":903,"context_line":"        retrieved_policy \u003d retrieved_policy[\u0027minimum_bandwidth_rule\u0027]"},{"line_number":904,"context_line":"        self.assertEqual(350, retrieved_policy[\u0027min_kbps\u0027])"},{"line_number":905,"context_line":"        self.assertEqual(self.DIRECTION_EGRESS, retrieved_policy[\u0027direction\u0027])"},{"line_number":906,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_08c7df64","line":903,"range":{"start_line":903,"start_character":45,"end_line":903,"end_character":67},"in_reply_to":"dada55a8_f63d32bc","updated":"2016-07-20 07:56:26.000000000","message":"Done","commit_id":"e1a664fa5122fa7997c15d3bbbc9bc0790655b2a"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"ad6884f04e535ae238d67f6264ef701387edac01","unresolved":false,"context_lines":[{"line_number":910,"context_line":"                                        description\u003d\u0027test policy\u0027,"},{"line_number":911,"context_line":"                                        shared\u003dFalse)"},{"line_number":912,"context_line":"        rule \u003d self.admin_client.create_minimum_bandwidth_rule("},{"line_number":913,"context_line":"            policy[\u0027id\u0027], 200, self.DIRECTION_EGRESS)[\u0027minimum_bandwidth_rule\u0027]"},{"line_number":914,"context_line":""},{"line_number":915,"context_line":"        retrieved_policy \u003d self.admin_client.show_minimum_bandwidth_rule("},{"line_number":916,"context_line":"            policy[\u0027id\u0027], rule[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_564d1e6b","line":913,"range":{"start_line":913,"start_character":55,"end_line":913,"end_character":77},"updated":"2016-07-19 17:21:05.000000000","message":"ditto","commit_id":"e1a664fa5122fa7997c15d3bbbc9bc0790655b2a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ef61b34ead3db1e94a539ef819840219605ca44e","unresolved":false,"context_lines":[{"line_number":910,"context_line":"                                        description\u003d\u0027test policy\u0027,"},{"line_number":911,"context_line":"                                        shared\u003dFalse)"},{"line_number":912,"context_line":"        rule \u003d self.admin_client.create_minimum_bandwidth_rule("},{"line_number":913,"context_line":"            policy[\u0027id\u0027], 200, self.DIRECTION_EGRESS)[\u0027minimum_bandwidth_rule\u0027]"},{"line_number":914,"context_line":""},{"line_number":915,"context_line":"        retrieved_policy \u003d self.admin_client.show_minimum_bandwidth_rule("},{"line_number":916,"context_line":"            policy[\u0027id\u0027], rule[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_28a8e38c","line":913,"range":{"start_line":913,"start_character":55,"end_line":913,"end_character":77},"in_reply_to":"dada55a8_564d1e6b","updated":"2016-07-20 07:56:26.000000000","message":"Done","commit_id":"e1a664fa5122fa7997c15d3bbbc9bc0790655b2a"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"ad6884f04e535ae238d67f6264ef701387edac01","unresolved":false,"context_lines":[{"line_number":914,"context_line":""},{"line_number":915,"context_line":"        retrieved_policy \u003d self.admin_client.show_minimum_bandwidth_rule("},{"line_number":916,"context_line":"            policy[\u0027id\u0027], rule[\u0027id\u0027])"},{"line_number":917,"context_line":"        retrieved_policy \u003d retrieved_policy[\u0027minimum_bandwidth_rule\u0027]"},{"line_number":918,"context_line":"        self.assertEqual(rule[\u0027id\u0027], retrieved_policy[\u0027id\u0027])"},{"line_number":919,"context_line":""},{"line_number":920,"context_line":"        self.admin_client.delete_minimum_bandwidth_rule(policy[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_9675d699","line":917,"range":{"start_line":917,"start_character":45,"end_line":917,"end_character":67},"updated":"2016-07-19 17:21:05.000000000","message":"ditto","commit_id":"e1a664fa5122fa7997c15d3bbbc9bc0790655b2a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ef61b34ead3db1e94a539ef819840219605ca44e","unresolved":false,"context_lines":[{"line_number":914,"context_line":""},{"line_number":915,"context_line":"        retrieved_policy \u003d self.admin_client.show_minimum_bandwidth_rule("},{"line_number":916,"context_line":"            policy[\u0027id\u0027], rule[\u0027id\u0027])"},{"line_number":917,"context_line":"        retrieved_policy \u003d retrieved_policy[\u0027minimum_bandwidth_rule\u0027]"},{"line_number":918,"context_line":"        self.assertEqual(rule[\u0027id\u0027], retrieved_policy[\u0027id\u0027])"},{"line_number":919,"context_line":""},{"line_number":920,"context_line":"        self.admin_client.delete_minimum_bandwidth_rule(policy[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_88a90f93","line":917,"range":{"start_line":917,"start_character":45,"end_line":917,"end_character":67},"in_reply_to":"dada55a8_9675d699","updated":"2016-07-20 07:56:26.000000000","message":"Done","commit_id":"e1a664fa5122fa7997c15d3bbbc9bc0790655b2a"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"ad6884f04e535ae238d67f6264ef701387edac01","unresolved":false,"context_lines":[{"line_number":962,"context_line":""},{"line_number":963,"context_line":"        # Test \u0027list rules\u0027"},{"line_number":964,"context_line":"        rules \u003d self.admin_client.list_minimum_bandwidth_rules(policy1[\u0027id\u0027])"},{"line_number":965,"context_line":"        rules \u003d rules[\u0027minimum_bandwidth_rules\u0027]"},{"line_number":966,"context_line":"        rules_ids \u003d [r[\u0027id\u0027] for r in rules]"},{"line_number":967,"context_line":"        self.assertIn(rule1[\u0027id\u0027], rules_ids)"},{"line_number":968,"context_line":"        self.assertNotIn(rule2[\u0027id\u0027], rules_ids)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_f60ff22b","line":965,"range":{"start_line":965,"start_character":23,"end_line":965,"end_character":46},"updated":"2016-07-19 17:21:05.000000000","message":"ditto","commit_id":"e1a664fa5122fa7997c15d3bbbc9bc0790655b2a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a94127b1dabf946809052906f5e9032b7b339a19","unresolved":false,"context_lines":[{"line_number":962,"context_line":""},{"line_number":963,"context_line":"        # Test \u0027list rules\u0027"},{"line_number":964,"context_line":"        rules \u003d self.admin_client.list_minimum_bandwidth_rules(policy1[\u0027id\u0027])"},{"line_number":965,"context_line":"        rules \u003d rules[\u0027minimum_bandwidth_rules\u0027]"},{"line_number":966,"context_line":"        rules_ids \u003d [r[\u0027id\u0027] for r in rules]"},{"line_number":967,"context_line":"        self.assertIn(rule1[\u0027id\u0027], rules_ids)"},{"line_number":968,"context_line":"        self.assertNotIn(rule2[\u0027id\u0027], rules_ids)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_d360dc03","line":965,"range":{"start_line":965,"start_character":23,"end_line":965,"end_character":46},"in_reply_to":"dada55a8_f60ff22b","updated":"2016-07-20 08:27:52.000000000","message":"Done","commit_id":"e1a664fa5122fa7997c15d3bbbc9bc0790655b2a"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b725b6477ba7c7091843f95f0f549c0596506b97","unresolved":false,"context_lines":[{"line_number":833,"context_line":"        self.assertNotIn(rule2[\u0027id\u0027], rules_ids)"},{"line_number":834,"context_line":""},{"line_number":835,"context_line":""},{"line_number":836,"context_line":"class QosMinimumBandwidthRuleTestJSON(base.BaseAdminNetworkTest):"},{"line_number":837,"context_line":"    DIRECTION_EGRESS \u003d \"egress\""},{"line_number":838,"context_line":"    RULE_NAME \u003d qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH + \"_rule\""},{"line_number":839,"context_line":"    RULES_NAME \u003d RULE_NAME + \"s\""}],"source_content_type":"text/x-python","patch_set":20,"id":"3ac371cc_922fb23d","line":836,"updated":"2016-08-16 09:25:10.000000000","message":"please add a test case that tries to create a rule for ingress (and fails).","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b725b6477ba7c7091843f95f0f549c0596506b97","unresolved":false,"context_lines":[{"line_number":933,"context_line":"            \u0027policy\u0027, 200, self.DIRECTION_EGRESS)"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"    @test.idempotent_id(\u0027aed8e2a6-22da-421b-89b9-935a2c1a1b50\u0027)"},{"line_number":936,"context_line":"    def test_policy_create_forbidden_for_regular_tenants(self):"},{"line_number":937,"context_line":"        self.assertRaises("},{"line_number":938,"context_line":"            exceptions.Forbidden,"},{"line_number":939,"context_line":"            self.client.create_qos_policy,"}],"source_content_type":"text/x-python","patch_set":20,"id":"3ac371cc_92b972ce","line":936,"updated":"2016-08-16 09:25:10.000000000","message":"this test duplicates existing one from bwlimit test class. I understand that the original is misplaced (should be in a class that is not type specific), but duplicating it does not help.","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"27230007c2deab0c2b6badd84ff905d1a7d118c4","unresolved":false,"context_lines":[{"line_number":933,"context_line":"            \u0027policy\u0027, 200, self.DIRECTION_EGRESS)"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"    @test.idempotent_id(\u0027aed8e2a6-22da-421b-89b9-935a2c1a1b50\u0027)"},{"line_number":936,"context_line":"    def test_policy_create_forbidden_for_regular_tenants(self):"},{"line_number":937,"context_line":"        self.assertRaises("},{"line_number":938,"context_line":"            exceptions.Forbidden,"},{"line_number":939,"context_line":"            self.client.create_qos_policy,"}],"source_content_type":"text/x-python","patch_set":20,"id":"3ac371cc_0486d2b8","line":936,"in_reply_to":"3ac371cc_92b972ce","updated":"2016-08-16 14:33:56.000000000","message":"This test (and the one in bw-limit) should be in QosTestJSON. I\u0027ll move it.","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"6aa8e078dedfc8199df7fdaa468b52ea7a6067f3","unresolved":false,"context_lines":[{"line_number":316,"context_line":"        self.assertEqual(obtained_policy, policy)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    @test.idempotent_id(\u0027aed8e2a6-22da-421b-89b9-935a2c1a1b50\u0027)"},{"line_number":319,"context_line":"    def test_policy_create_forbidden_for_regular_tenants(self):"},{"line_number":320,"context_line":"        self.assertRaises("},{"line_number":321,"context_line":"            exceptions.Forbidden,"},{"line_number":322,"context_line":"            self.client.create_qos_policy,"}],"source_content_type":"text/x-python","patch_set":25,"id":"1ac06dbe_43ce1484","line":319,"updated":"2016-08-25 12:13:54.000000000","message":"Honestly that move could go in a separate patch. But since we don\u0027t plan to backport the patch, it\u0027s not that big of a deal I guess.","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cd8cb871dd90f8951b7a287622532ada9da24196","unresolved":false,"context_lines":[{"line_number":316,"context_line":"        self.assertEqual(obtained_policy, policy)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    @test.idempotent_id(\u0027aed8e2a6-22da-421b-89b9-935a2c1a1b50\u0027)"},{"line_number":319,"context_line":"    def test_policy_create_forbidden_for_regular_tenants(self):"},{"line_number":320,"context_line":"        self.assertRaises("},{"line_number":321,"context_line":"            exceptions.Forbidden,"},{"line_number":322,"context_line":"            self.client.create_qos_policy,"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa7ab95a_904b4b2b","line":319,"in_reply_to":"1ac06dbe_43ce1484","updated":"2016-08-26 09:24:00.000000000","message":"So I\u0027ll keep i there. I always try to make this \"extra\" changes in separate patches.","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"6aa8e078dedfc8199df7fdaa468b52ea7a6067f3","unresolved":false,"context_lines":[{"line_number":833,"context_line":"        self.assertNotIn(rule2[\u0027id\u0027], rules_ids)"},{"line_number":834,"context_line":""},{"line_number":835,"context_line":""},{"line_number":836,"context_line":"class QosMinimumBandwidthRuleTestJSON(base.BaseAdminNetworkTest):"},{"line_number":837,"context_line":"    DIRECTION_EGRESS \u003d \"egress\""},{"line_number":838,"context_line":"    RULE_NAME \u003d qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH + \"_rule\""},{"line_number":839,"context_line":"    RULES_NAME \u003d RULE_NAME + \"s\""}],"source_content_type":"text/x-python","patch_set":25,"id":"1ac06dbe_03825c00","line":836,"updated":"2016-08-25 12:13:54.000000000","message":"Still no test that would try to create ingress rule (and fail).","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cd8cb871dd90f8951b7a287622532ada9da24196","unresolved":false,"context_lines":[{"line_number":833,"context_line":"        self.assertNotIn(rule2[\u0027id\u0027], rules_ids)"},{"line_number":834,"context_line":""},{"line_number":835,"context_line":""},{"line_number":836,"context_line":"class QosMinimumBandwidthRuleTestJSON(base.BaseAdminNetworkTest):"},{"line_number":837,"context_line":"    DIRECTION_EGRESS \u003d \"egress\""},{"line_number":838,"context_line":"    RULE_NAME \u003d qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH + \"_rule\""},{"line_number":839,"context_line":"    RULES_NAME \u003d RULE_NAME + \"s\""}],"source_content_type":"text/x-python","patch_set":25,"id":"fa7ab95a_90726b7b","line":836,"in_reply_to":"1ac06dbe_03825c00","updated":"2016-08-26 09:24:00.000000000","message":"Done","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"4043d82cc0399886357973d3247783c67499de8b","unresolved":false,"context_lines":[{"line_number":834,"context_line":""},{"line_number":835,"context_line":""},{"line_number":836,"context_line":"class QosMinimumBandwidthRuleTestJSON(base.BaseAdminNetworkTest):"},{"line_number":837,"context_line":"    DIRECTION_EGRESS \u003d \"egress\""},{"line_number":838,"context_line":"    RULE_NAME \u003d qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH + \"_rule\""},{"line_number":839,"context_line":"    RULES_NAME \u003d RULE_NAME + \"s\""},{"line_number":840,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"fa7ab95a_e4a060a8","line":837,"updated":"2016-08-26 06:19:11.000000000","message":"How about adding test for \u0027ingress\u0027 direction?","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cd8cb871dd90f8951b7a287622532ada9da24196","unresolved":false,"context_lines":[{"line_number":834,"context_line":""},{"line_number":835,"context_line":""},{"line_number":836,"context_line":"class QosMinimumBandwidthRuleTestJSON(base.BaseAdminNetworkTest):"},{"line_number":837,"context_line":"    DIRECTION_EGRESS \u003d \"egress\""},{"line_number":838,"context_line":"    RULE_NAME \u003d qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH + \"_rule\""},{"line_number":839,"context_line":"    RULES_NAME \u003d RULE_NAME + \"s\""},{"line_number":840,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"fa7ab95a_d06cf39e","line":837,"in_reply_to":"fa7ab95a_e4a060a8","updated":"2016-08-26 09:24:00.000000000","message":"Done","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"93ea96fd2944949ff40ffe0e28c4cb04a11c71b0","unresolved":false,"context_lines":[{"line_number":893,"context_line":"        policy \u003d self.create_qos_policy(name\u003d\u0027test-policy\u0027,"},{"line_number":894,"context_line":"                                        description\u003d\u0027test policy\u0027,"},{"line_number":895,"context_line":"                                        shared\u003dFalse)"},{"line_number":896,"context_line":"        self.assertRaises(exceptions.Conflict,"},{"line_number":897,"context_line":"                          self.admin_client.create_minimum_bandwidth_rule,"},{"line_number":898,"context_line":"                          policy_id\u003dpolicy[\u0027id\u0027],"},{"line_number":899,"context_line":"                          min_kbps\u003d201, direction\u003dself.DIRECTION_INGRESS)"}],"source_content_type":"text/x-python","patch_set":26,"id":"fa7ab95a_c0a82cde","line":896,"range":{"start_line":896,"start_character":26,"end_line":896,"end_character":46},"updated":"2016-08-29 14:06:08.000000000","message":"This probably isn\u0027t right, couldn\u0027t get tempest working locally to see what the correct exception is. Once the CI catches it I\u0027ll update this.","commit_id":"77747f4ea04eec47f15b4d8fd3944ab3cc672a22"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"d13a20e23f8063db0990d96a4d51b016199410c8","unresolved":false,"context_lines":[{"line_number":893,"context_line":"        policy \u003d self.create_qos_policy(name\u003d\u0027test-policy\u0027,"},{"line_number":894,"context_line":"                                        description\u003d\u0027test policy\u0027,"},{"line_number":895,"context_line":"                                        shared\u003dFalse)"},{"line_number":896,"context_line":"        self.assertRaises(exceptions.Conflict,"},{"line_number":897,"context_line":"                          self.admin_client.create_minimum_bandwidth_rule,"},{"line_number":898,"context_line":"                          policy_id\u003dpolicy[\u0027id\u0027],"},{"line_number":899,"context_line":"                          min_kbps\u003d201, direction\u003dself.DIRECTION_INGRESS)"}],"source_content_type":"text/x-python","patch_set":26,"id":"fa7ab95a_495e0713","line":896,"range":{"start_line":896,"start_character":26,"end_line":896,"end_character":46},"in_reply_to":"fa7ab95a_a680a0f8","updated":"2016-08-29 14:40:16.000000000","message":"ack, Thought it was already implemented.","commit_id":"77747f4ea04eec47f15b4d8fd3944ab3cc672a22"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"f6d9f0442ba199c8fbe791a3d161b7ee45255124","unresolved":false,"context_lines":[{"line_number":893,"context_line":"        policy \u003d self.create_qos_policy(name\u003d\u0027test-policy\u0027,"},{"line_number":894,"context_line":"                                        description\u003d\u0027test policy\u0027,"},{"line_number":895,"context_line":"                                        shared\u003dFalse)"},{"line_number":896,"context_line":"        self.assertRaises(exceptions.Conflict,"},{"line_number":897,"context_line":"                          self.admin_client.create_minimum_bandwidth_rule,"},{"line_number":898,"context_line":"                          policy_id\u003dpolicy[\u0027id\u0027],"},{"line_number":899,"context_line":"                          min_kbps\u003d201, direction\u003dself.DIRECTION_INGRESS)"}],"source_content_type":"text/x-python","patch_set":26,"id":"fa7ab95a_a680a0f8","line":896,"range":{"start_line":896,"start_character":26,"end_line":896,"end_character":46},"in_reply_to":"fa7ab95a_c0a82cde","updated":"2016-08-29 14:35:03.000000000","message":"You will need to write code that would forbid setting wrong direction. Otherwise it will succeed (which should not happen because we don\u0027t support ingress right now).","commit_id":"77747f4ea04eec47f15b4d8fd3944ab3cc672a22"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"231df04f8d07137d52a98d6d8dbe92b5b750b5bb","unresolved":false,"context_lines":[{"line_number":943,"context_line":"        policy \u003d self.create_qos_policy(name\u003d\u0027test-policy\u0027,"},{"line_number":944,"context_line":"                                        description\u003d\u0027test policy\u0027,"},{"line_number":945,"context_line":"                                        shared\u003dFalse)"},{"line_number":946,"context_line":"        self.assertRaises(exceptions.Conflict,"},{"line_number":947,"context_line":"                          self.admin_client.create_minimum_bandwidth_rule,"},{"line_number":948,"context_line":"                          policy_id\u003dpolicy[\u0027id\u0027],"},{"line_number":949,"context_line":"                          min_kbps\u003d201, direction\u003dself.DIRECTION_INGRESS)"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa7ab95a_cc7f7a64","line":946,"updated":"2016-08-29 17:09:42.000000000","message":"afaiu you will get exceptions.BadRequest","commit_id":"80e0ca4cacd329ce3a18432f2cb5969881663996"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"e68ffd6cb6ac6b426b4413d6201f4a987fa62ee0","unresolved":false,"context_lines":[{"line_number":943,"context_line":"        policy \u003d self.create_qos_policy(name\u003d\u0027test-policy\u0027,"},{"line_number":944,"context_line":"                                        description\u003d\u0027test policy\u0027,"},{"line_number":945,"context_line":"                                        shared\u003dFalse)"},{"line_number":946,"context_line":"        self.assertRaises(exceptions.Conflict,"},{"line_number":947,"context_line":"                          self.admin_client.create_minimum_bandwidth_rule,"},{"line_number":948,"context_line":"                          policy_id\u003dpolicy[\u0027id\u0027],"},{"line_number":949,"context_line":"                          min_kbps\u003d201, direction\u003dself.DIRECTION_INGRESS)"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa7ab95a_4c8feacb","line":946,"in_reply_to":"fa7ab95a_cc7f7a64","updated":"2016-08-29 17:17:37.000000000","message":"ack, I\u0027ll update it now.","commit_id":"80e0ca4cacd329ce3a18432f2cb5969881663996"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"d06aee587dcf3ed242dc7f3e322efc5f00e8cf0e","unresolved":false,"context_lines":[{"line_number":939,"context_line":"                          policy_id\u003dpolicy[\u0027id\u0027],"},{"line_number":940,"context_line":"                          min_kbps\u003d201, direction\u003dself.DIRECTION_EGRESS)"},{"line_number":941,"context_line":""},{"line_number":942,"context_line":"    def test_rule_create_fail_for_direction_ingress(self):"},{"line_number":943,"context_line":"        policy \u003d self.create_qos_policy(name\u003d\u0027test-policy\u0027,"},{"line_number":944,"context_line":"                                        description\u003d\u0027test policy\u0027,"},{"line_number":945,"context_line":"                                        shared\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":28,"id":"fa7ab95a_68539a6b","line":942,"updated":"2016-08-30 06:22:38.000000000","message":"2016-08-29 17:58:14.961796 | please, assign unique uuids to each API test:\n2016-08-29 17:58:14.961823 | /home/jenkins/workspace/gate-neutron-pep8-ubuntu-xenial/neutron/tests/tempest/api/test_qos.py:942\n2016-08-29 17:58:14.961837 | missing @test.idempotent_id(\u0027...\u0027)\n2016-08-29 17:58:14.961857 | QosMinimumBandwidthRuleTestJSON.test_rule_create_fail_for_direction_ingress","commit_id":"09792e74fb75f726c7cde540f156bcf0982c34dd"}],"neutron/tests/unit/objects/qos/test_policy.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"4043d82cc0399886357973d3247783c67499de8b","unresolved":false,"context_lines":[{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    def test_object_version(self):"},{"line_number":389,"context_line":"        policy_obj, rule_objs \u003d self._create_test_policy_with_rules("},{"line_number":390,"context_line":"            [qos_consts.RULE_TYPE_BANDWIDTH_LIMIT,"},{"line_number":391,"context_line":"             qos_consts.RULE_TYPE_DSCP_MARKING,"},{"line_number":392,"context_line":"             qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH], reload_rules\u003dTrue)"},{"line_number":393,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"fa7ab95a_e4878010","line":390,"range":{"start_line":390,"start_character":13,"end_line":390,"end_character":23},"updated":"2016-08-26 06:19:11.000000000","message":"How about getting RULE_OBJ_CLS keys for consistency?","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cd8cb871dd90f8951b7a287622532ada9da24196","unresolved":false,"context_lines":[{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    def test_object_version(self):"},{"line_number":389,"context_line":"        policy_obj, rule_objs \u003d self._create_test_policy_with_rules("},{"line_number":390,"context_line":"            [qos_consts.RULE_TYPE_BANDWIDTH_LIMIT,"},{"line_number":391,"context_line":"             qos_consts.RULE_TYPE_DSCP_MARKING,"},{"line_number":392,"context_line":"             qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH], reload_rules\u003dTrue)"},{"line_number":393,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"fa7ab95a_06a1c1a9","line":390,"range":{"start_line":390,"start_character":13,"end_line":390,"end_character":23},"in_reply_to":"fa7ab95a_e4878010","updated":"2016-08-26 09:24:00.000000000","message":"Yes, that\u0027s better.","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"4043d82cc0399886357973d3247783c67499de8b","unresolved":false,"context_lines":[{"line_number":412,"context_line":"        #NOTE(mangelajo): we should not check .VERSION, since that\u0027s the"},{"line_number":413,"context_line":"        #                 local version on the class definition"},{"line_number":414,"context_line":"        policy_obj, rule_objs \u003d self._create_test_policy_with_rules("},{"line_number":415,"context_line":"            [qos_consts.RULE_TYPE_BANDWIDTH_LIMIT,"},{"line_number":416,"context_line":"             qos_consts.RULE_TYPE_DSCP_MARKING,"},{"line_number":417,"context_line":"             qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH], reload_rules\u003dTrue)"},{"line_number":418,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"fa7ab95a_048d4431","line":415,"updated":"2016-08-26 06:19:11.000000000","message":"ditto","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cd8cb871dd90f8951b7a287622532ada9da24196","unresolved":false,"context_lines":[{"line_number":412,"context_line":"        #NOTE(mangelajo): we should not check .VERSION, since that\u0027s the"},{"line_number":413,"context_line":"        #                 local version on the class definition"},{"line_number":414,"context_line":"        policy_obj, rule_objs \u003d self._create_test_policy_with_rules("},{"line_number":415,"context_line":"            [qos_consts.RULE_TYPE_BANDWIDTH_LIMIT,"},{"line_number":416,"context_line":"             qos_consts.RULE_TYPE_DSCP_MARKING,"},{"line_number":417,"context_line":"             qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH], reload_rules\u003dTrue)"},{"line_number":418,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"fa7ab95a_46abc989","line":415,"in_reply_to":"fa7ab95a_048d4431","updated":"2016-08-26 09:24:00.000000000","message":"Done","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"8d8c5dc59a177a596cd5255d11800f734a9d01e3","unresolved":false,"context_lines":[{"line_number":412,"context_line":"        #NOTE(mangelajo): we should not check .VERSION, since that\u0027s the"},{"line_number":413,"context_line":"        #                 local version on the class definition"},{"line_number":414,"context_line":"        policy_obj, rule_objs \u003d self._create_test_policy_with_rules("},{"line_number":415,"context_line":"            [qos_consts.RULE_TYPE_BANDWIDTH_LIMIT,"},{"line_number":416,"context_line":"             qos_consts.RULE_TYPE_DSCP_MARKING,"},{"line_number":417,"context_line":"             qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH], reload_rules\u003dTrue)"},{"line_number":418,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"fa7ab95a_f2bc2d08","line":415,"in_reply_to":"fa7ab95a_048d4431","updated":"2016-08-29 13:44:18.000000000","message":"dict.keys() does not return a list that is consistently ordered. This causes random rules to be used when assessing this test.","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"}],"neutron/tests/unit/objects/qos/test_rule.py":[{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"24bb8e948ef4ecab230d543284539fbf3099b91f","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    def setUp(self):"},{"line_number":149,"context_line":"        super(QosMinimumBandwidthRuleDbObjectTestCase, self).setUp()"},{"line_number":150,"context_line":"        # Prepare policy to be able to insert a rule"},{"line_number":151,"context_line":"        generated_qos_policy_id \u003d self.db_obj[\u0027qos_policy_id\u0027]"},{"line_number":152,"context_line":"        policy_obj \u003d policy.QosPolicy(self.context,"},{"line_number":153,"context_line":"                                      id\u003dgenerated_qos_policy_id)"},{"line_number":154,"context_line":"        policy_obj.create()"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_392912e7","line":154,"range":{"start_line":151,"start_character":8,"end_line":154,"end_character":27},"updated":"2016-07-27 09:49:25.000000000","message":"Can you create more policies? Like here [1]. It is needed to create more than one rule object.\n\n[1] https://review.openstack.org/#/c/334380/13/neutron/tests/unit/objects/qos/test_rule.py@86","commit_id":"fffe943d3c176e652b444dac5454945a60eac18a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"fed3e2ac65b87dac928babf0d4b6da6f7c1a3c3a","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    def setUp(self):"},{"line_number":149,"context_line":"        super(QosMinimumBandwidthRuleDbObjectTestCase, self).setUp()"},{"line_number":150,"context_line":"        # Prepare policy to be able to insert a rule"},{"line_number":151,"context_line":"        generated_qos_policy_id \u003d self.db_obj[\u0027qos_policy_id\u0027]"},{"line_number":152,"context_line":"        policy_obj \u003d policy.QosPolicy(self.context,"},{"line_number":153,"context_line":"                                      id\u003dgenerated_qos_policy_id)"},{"line_number":154,"context_line":"        policy_obj.create()"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_6f10d700","line":154,"range":{"start_line":151,"start_character":8,"end_line":154,"end_character":27},"in_reply_to":"dada55a8_392912e7","updated":"2016-07-27 10:43:21.000000000","message":"Sure! I\u0027ve seen your patch and makes sense to test in this way.","commit_id":"fffe943d3c176e652b444dac5454945a60eac18a"}],"releasenotes/notes/qos-min-egress-bw-rule-b1c80f5675a4c1c3.yaml":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b725b6477ba7c7091843f95f0f549c0596506b97","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    A new rule has been added to the API that sets the"},{"line_number":4,"context_line":"    minimum egress bandwidth assured for a port. This is"},{"line_number":5,"context_line":"    currently supported by the Open vSwitch driver, the"},{"line_number":6,"context_line":"    Linux Bridge driver and the SR-IOV driver."},{"line_number":7,"context_line":"features:"},{"line_number":8,"context_line":"  - Neutron can apply a QoS rule to port or a network to"},{"line_number":9,"context_line":"    setup the minimum egress guaranteed bandwidth per"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"3ac371cc_d2ebea76","line":6,"range":{"start_line":4,"start_character":49,"end_line":6,"end_character":46},"updated":"2016-08-16 09:25:10.000000000","message":"I don\u0027t see those bits. They may not land in time. I prefer we remove this from the patch.","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"27230007c2deab0c2b6badd84ff905d1a7d118c4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    A new rule has been added to the API that sets the"},{"line_number":4,"context_line":"    minimum egress bandwidth assured for a port. This is"},{"line_number":5,"context_line":"    currently supported by the Open vSwitch driver, the"},{"line_number":6,"context_line":"    Linux Bridge driver and the SR-IOV driver."},{"line_number":7,"context_line":"features:"},{"line_number":8,"context_line":"  - Neutron can apply a QoS rule to port or a network to"},{"line_number":9,"context_line":"    setup the minimum egress guaranteed bandwidth per"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"3ac371cc_a44b7e86","line":6,"range":{"start_line":4,"start_character":49,"end_line":6,"end_character":46},"in_reply_to":"3ac371cc_d2ebea76","updated":"2016-08-16 14:33:56.000000000","message":"Yes, I\u0027ll create new release notes with the following backend implementations.","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b725b6477ba7c7091843f95f0f549c0596506b97","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    Linux Bridge driver and the SR-IOV driver."},{"line_number":7,"context_line":"features:"},{"line_number":8,"context_line":"  - Neutron can apply a QoS rule to port or a network to"},{"line_number":9,"context_line":"    setup the minimum egress guaranteed bandwidth per"},{"line_number":10,"context_line":"    queue and port. The minimum egress bandwidth rule is"},{"line_number":11,"context_line":"    applied to each port individually."}],"source_content_type":"text/x-yaml","patch_set":20,"id":"3ac371cc_b2958ee5","line":9,"range":{"start_line":9,"start_character":29,"end_line":9,"end_character":39},"updated":"2016-08-16 09:25:10.000000000","message":"I think without nova scheduler work in place, there is no guarantee. Should we explain that?","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"27230007c2deab0c2b6badd84ff905d1a7d118c4","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    Linux Bridge driver and the SR-IOV driver."},{"line_number":7,"context_line":"features:"},{"line_number":8,"context_line":"  - Neutron can apply a QoS rule to port or a network to"},{"line_number":9,"context_line":"    setup the minimum egress guaranteed bandwidth per"},{"line_number":10,"context_line":"    queue and port. The minimum egress bandwidth rule is"},{"line_number":11,"context_line":"    applied to each port individually."}],"source_content_type":"text/x-yaml","patch_set":20,"id":"3ac371cc_a5d1b859","line":9,"range":{"start_line":9,"start_character":29,"end_line":9,"end_character":39},"in_reply_to":"3ac371cc_b2958ee5","updated":"2016-08-16 14:33:56.000000000","message":"Yes, we should. I\u0027ll try to do it.","commit_id":"c58400ae11b8afb4141fb88f25c6d9f36664db19"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"6aa8e078dedfc8199df7fdaa468b52ea7a6067f3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    A new rule has been added to the API that sets the"},{"line_number":4,"context_line":"    minimum egress bandwidth assured for a port. This patch"},{"line_number":5,"context_line":"    implements the front-end: adds a new database model and"},{"line_number":6,"context_line":"    populates the QoS extensions."},{"line_number":7,"context_line":"features:"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"1ac06dbe_43545453","line":4,"updated":"2016-08-25 12:13:54.000000000","message":"Please don\u0027t refer to the patch here. This release note is for the whole release. Just say that QoS extension now supports a new rule, and that\u0027s enough.\n\nAlso, why is it in prelude? Why do you think the text belongs to the header of the release notes for Newton? I think features section should be enough.","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cd8cb871dd90f8951b7a287622532ada9da24196","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    A new rule has been added to the API that sets the"},{"line_number":4,"context_line":"    minimum egress bandwidth assured for a port. This patch"},{"line_number":5,"context_line":"    implements the front-end: adds a new database model and"},{"line_number":6,"context_line":"    populates the QoS extensions."},{"line_number":7,"context_line":"features:"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"fa7ab95a_d006b31f","line":4,"in_reply_to":"1ac06dbe_43545453","updated":"2016-08-26 09:24:00.000000000","message":"Sorry but I\u0027m not use to it. I\u0027m still learning about OpenStack code style. Thanks for your comments. Is the fastest way to learn.","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"6aa8e078dedfc8199df7fdaa468b52ea7a6067f3","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    implements the front-end: adds a new database model and"},{"line_number":6,"context_line":"    populates the QoS extensions."},{"line_number":7,"context_line":"features:"},{"line_number":8,"context_line":"  - Neutron can apply a QoS rule to port or a network to"},{"line_number":9,"context_line":"    setup the minimum egress bandwidth per queue and port."},{"line_number":10,"context_line":"    The minimum egress bandwidth rule is applied to each port"},{"line_number":11,"context_line":"    individually."}],"source_content_type":"text/x-yaml","patch_set":25,"id":"1ac06dbe_c3620416","line":8,"range":{"start_line":8,"start_character":4,"end_line":8,"end_character":11},"updated":"2016-08-25 12:13:54.000000000","message":"That\u0027s a twisted way of describing it. It\u0027s user who applies rules, not Neutron (at least from release notes perspective).\n\n\u0027User now can apply a QoS rule to a port or a network to ...\u0027","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cd8cb871dd90f8951b7a287622532ada9da24196","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    implements the front-end: adds a new database model and"},{"line_number":6,"context_line":"    populates the QoS extensions."},{"line_number":7,"context_line":"features:"},{"line_number":8,"context_line":"  - Neutron can apply a QoS rule to port or a network to"},{"line_number":9,"context_line":"    setup the minimum egress bandwidth per queue and port."},{"line_number":10,"context_line":"    The minimum egress bandwidth rule is applied to each port"},{"line_number":11,"context_line":"    individually."}],"source_content_type":"text/x-yaml","patch_set":25,"id":"fa7ab95a_8b131c5c","line":8,"range":{"start_line":8,"start_character":4,"end_line":8,"end_character":11},"in_reply_to":"1ac06dbe_c3620416","updated":"2016-08-26 09:24:00.000000000","message":"Done","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"6aa8e078dedfc8199df7fdaa468b52ea7a6067f3","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    The minimum egress bandwidth rule is applied to each port"},{"line_number":11,"context_line":"    individually."},{"line_number":12,"context_line":"other:"},{"line_number":13,"context_line":"  - This feature is intended to implement the minimum bandwidth"},{"line_number":14,"context_line":"    parameter in several backends (Linux Bridge, Open vSwitch"},{"line_number":15,"context_line":"    and SR-IOV). These implementations will be submitted in"},{"line_number":16,"context_line":"    future patches."}],"source_content_type":"text/x-yaml","patch_set":25,"id":"1ac06dbe_83812c92","line":13,"updated":"2016-08-25 12:13:54.000000000","message":"No. This text would belong to patches that add support for those backends. Please remove.","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cd8cb871dd90f8951b7a287622532ada9da24196","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    The minimum egress bandwidth rule is applied to each port"},{"line_number":11,"context_line":"    individually."},{"line_number":12,"context_line":"other:"},{"line_number":13,"context_line":"  - This feature is intended to implement the minimum bandwidth"},{"line_number":14,"context_line":"    parameter in several backends (Linux Bridge, Open vSwitch"},{"line_number":15,"context_line":"    and SR-IOV). These implementations will be submitted in"},{"line_number":16,"context_line":"    future patches."}],"source_content_type":"text/x-yaml","patch_set":25,"id":"fa7ab95a_cbe7e43e","line":13,"in_reply_to":"1ac06dbe_83812c92","updated":"2016-08-26 09:24:00.000000000","message":"Done","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"6aa8e078dedfc8199df7fdaa468b52ea7a6067f3","unresolved":false,"context_lines":[{"line_number":13,"context_line":"  - This feature is intended to implement the minimum bandwidth"},{"line_number":14,"context_line":"    parameter in several backends (Linux Bridge, Open vSwitch"},{"line_number":15,"context_line":"    and SR-IOV). These implementations will be submitted in"},{"line_number":16,"context_line":"    future patches."},{"line_number":17,"context_line":"  - Setting this parameter in these drivers doesn\u0027t guarantee"},{"line_number":18,"context_line":"    a minimum egress bandwidth, until `[RFE] Strict minimum"},{"line_number":19,"context_line":"    bandwidth support (egress) \u003chttps://bugs.launchpad.net/neutron/+bug/1578989\u003e`_"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"1ac06dbe_a3338812","line":16,"updated":"2016-08-25 12:13:54.000000000","message":"You don\u0027t ever refer to patches in release notes. Those notes are visible to users and describe the final shipment, not development process.","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cd8cb871dd90f8951b7a287622532ada9da24196","unresolved":false,"context_lines":[{"line_number":13,"context_line":"  - This feature is intended to implement the minimum bandwidth"},{"line_number":14,"context_line":"    parameter in several backends (Linux Bridge, Open vSwitch"},{"line_number":15,"context_line":"    and SR-IOV). These implementations will be submitted in"},{"line_number":16,"context_line":"    future patches."},{"line_number":17,"context_line":"  - Setting this parameter in these drivers doesn\u0027t guarantee"},{"line_number":18,"context_line":"    a minimum egress bandwidth, until `[RFE] Strict minimum"},{"line_number":19,"context_line":"    bandwidth support (egress) \u003chttps://bugs.launchpad.net/neutron/+bug/1578989\u003e`_"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"fa7ab95a_6bcfb8b0","line":16,"in_reply_to":"1ac06dbe_a3338812","updated":"2016-08-26 09:24:00.000000000","message":"Thanks for the tip.","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"6aa8e078dedfc8199df7fdaa468b52ea7a6067f3","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    parameter in several backends (Linux Bridge, Open vSwitch"},{"line_number":15,"context_line":"    and SR-IOV). These implementations will be submitted in"},{"line_number":16,"context_line":"    future patches."},{"line_number":17,"context_line":"  - Setting this parameter in these drivers doesn\u0027t guarantee"},{"line_number":18,"context_line":"    a minimum egress bandwidth, until `[RFE] Strict minimum"},{"line_number":19,"context_line":"    bandwidth support (egress) \u003chttps://bugs.launchpad.net/neutron/+bug/1578989\u003e`_"},{"line_number":20,"context_line":"    is implemented. This feature avoids physical interfaces"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"1ac06dbe_6646be50","line":17,"range":{"start_line":17,"start_character":36,"end_line":17,"end_character":43},"updated":"2016-08-25 12:13:54.000000000","message":"Which drivers? I guess most of this text should go away. Just tell that \u0027At the time of writing, Neutron bandwidth booking is not integrated with Compute scheduler, which means that minimal bandwidth is not guaranteed but provided as best effort.\u0027","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"6aa8e078dedfc8199df7fdaa468b52ea7a6067f3","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    parameter in several backends (Linux Bridge, Open vSwitch"},{"line_number":15,"context_line":"    and SR-IOV). These implementations will be submitted in"},{"line_number":16,"context_line":"    future patches."},{"line_number":17,"context_line":"  - Setting this parameter in these drivers doesn\u0027t guarantee"},{"line_number":18,"context_line":"    a minimum egress bandwidth, until `[RFE] Strict minimum"},{"line_number":19,"context_line":"    bandwidth support (egress) \u003chttps://bugs.launchpad.net/neutron/+bug/1578989\u003e`_"},{"line_number":20,"context_line":"    is implemented. This feature avoids physical interfaces"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"1ac06dbe_432574c0","line":17,"updated":"2016-08-25 12:13:54.000000000","message":"Which parameter? You mean rule?","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cd8cb871dd90f8951b7a287622532ada9da24196","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    parameter in several backends (Linux Bridge, Open vSwitch"},{"line_number":15,"context_line":"    and SR-IOV). These implementations will be submitted in"},{"line_number":16,"context_line":"    future patches."},{"line_number":17,"context_line":"  - Setting this parameter in these drivers doesn\u0027t guarantee"},{"line_number":18,"context_line":"    a minimum egress bandwidth, until `[RFE] Strict minimum"},{"line_number":19,"context_line":"    bandwidth support (egress) \u003chttps://bugs.launchpad.net/neutron/+bug/1578989\u003e`_"},{"line_number":20,"context_line":"    is implemented. This feature avoids physical interfaces"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"fa7ab95a_ab6f0091","line":17,"range":{"start_line":17,"start_character":36,"end_line":17,"end_character":43},"in_reply_to":"1ac06dbe_6646be50","updated":"2016-08-26 09:24:00.000000000","message":"Yes, shorter and clear.","commit_id":"bc7251ac2daced566206e9bbea39251bc5134422"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"f6d9f0442ba199c8fbe791a3d161b7ee45255124","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    A new rule has been added to the API that sets the"},{"line_number":4,"context_line":"    minimum egress bandwidth assured for a port."},{"line_number":5,"context_line":"features:"},{"line_number":6,"context_line":"  - Users can now apply a QoS rule to a port or network to"}],"source_content_type":"text/x-yaml","patch_set":26,"id":"fa7ab95a_261f30b8","line":3,"updated":"2016-08-29 14:35:03.000000000","message":"So I don\u0027t think that prelude is the right section at all. \u0027Features\u0027 should be enough, right?","commit_id":"77747f4ea04eec47f15b4d8fd3944ab3cc672a22"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"d13a20e23f8063db0990d96a4d51b016199410c8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    A new rule has been added to the API that sets the"},{"line_number":4,"context_line":"    minimum egress bandwidth assured for a port."},{"line_number":5,"context_line":"features:"},{"line_number":6,"context_line":"  - Users can now apply a QoS rule to a port or network to"}],"source_content_type":"text/x-yaml","patch_set":26,"id":"fa7ab95a_89548fff","line":3,"in_reply_to":"fa7ab95a_261f30b8","updated":"2016-08-29 14:40:16.000000000","message":"a prelude is an introduction and I think this fits, however I\u0027ll remove it, you want this pre-pended to the Features section correct?","commit_id":"77747f4ea04eec47f15b4d8fd3944ab3cc672a22"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"df8df126f1d4c666ce86039a95225bfedad3cf83","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    A new rule has been added to the API that sets the"},{"line_number":4,"context_line":"    minimum egress bandwidth assured for a port."},{"line_number":5,"context_line":"features:"},{"line_number":6,"context_line":"  - Users can now apply a QoS rule to a port or network to"}],"source_content_type":"text/x-yaml","patch_set":26,"id":"fa7ab95a_80be1963","line":3,"in_reply_to":"fa7ab95a_8091b949","updated":"2016-08-29 16:45:17.000000000","message":"ack, done","commit_id":"77747f4ea04eec47f15b4d8fd3944ab3cc672a22"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3e18aa6b34c30bd5fd31c717d9e487057e0e0535","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    A new rule has been added to the API that sets the"},{"line_number":4,"context_line":"    minimum egress bandwidth assured for a port."},{"line_number":5,"context_line":"features:"},{"line_number":6,"context_line":"  - Users can now apply a QoS rule to a port or network to"}],"source_content_type":"text/x-yaml","patch_set":26,"id":"fa7ab95a_8091b949","line":3,"in_reply_to":"fa7ab95a_89548fff","updated":"2016-08-29 16:28:07.000000000","message":"I believe it\u0027s already enough info in features. Prelude is used only for release wide notes, not for specific features.","commit_id":"77747f4ea04eec47f15b4d8fd3944ab3cc672a22"}]}
