)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"6421a27ad8561766588018b90820f6eb792f3408","unresolved":false,"context_lines":[{"line_number":13,"context_line":"DocImpact"},{"line_number":14,"context_line":"APIImpact"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Partially-Implements: blueprint ml2-qos"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Iea4dfa742f8005057f6caee8ab734649c0262d75"},{"line_number":19,"context_line":"Co-Authored-By: vikram.choudhary \u003cvikram.choudhary@huawei.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba3cc151_92f87a4b","line":16,"updated":"2015-07-05 13:11:03.000000000","message":"Pointing to wrong BP. Please correct.","commit_id":"8552407753827b242eccfe722273c9e68a6cfd46"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"69594d6b4a5556c5777017abc7f6992c2c2a9798","unresolved":false,"context_lines":[{"line_number":13,"context_line":"DocImpact"},{"line_number":14,"context_line":"APIImpact"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Partially-Implements: blueprint ml2-qos"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Iea4dfa742f8005057f6caee8ab734649c0262d75"},{"line_number":19,"context_line":"Co-Authored-By: vikram.choudhary \u003cvikram.choudhary@huawei.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba3cc151_f9d766bd","line":16,"in_reply_to":"ba3cc151_15869413","updated":"2015-07-06 05:40:51.000000000","message":"Will update.","commit_id":"8552407753827b242eccfe722273c9e68a6cfd46"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"a66835a0fe1012261c5e516ff735b9ac28a58652","unresolved":false,"context_lines":[{"line_number":13,"context_line":"DocImpact"},{"line_number":14,"context_line":"APIImpact"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Partially-Implements: blueprint ml2-qos"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Iea4dfa742f8005057f6caee8ab734649c0262d75"},{"line_number":19,"context_line":"Co-Authored-By: vikram.choudhary \u003cvikram.choudhary@huawei.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba3cc151_15869413","line":16,"in_reply_to":"ba3cc151_92f87a4b","updated":"2015-07-05 14:26:59.000000000","message":"Please update the topic as well","commit_id":"8552407753827b242eccfe722273c9e68a6cfd46"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"248e9fe460d0487d3b0b2eb900684874055a7897","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the command line support for"},{"line_number":10,"context_line":"QoS rules, make changes for future extendable the command."},{"line_number":11,"context_line":"TODO:Support QoS policy with  patch (1/2)."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact"},{"line_number":14,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ba3cc151_ad564304","line":11,"updated":"2015-07-07 07:18:38.000000000","message":"I think a separate patch is raised for QoS Policy. What is exactly meant by \"TODO\"?","commit_id":"bfa3bfdf118c72887dfa812b0bc1c9213bd63e7c"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"da21a1b37c5dfeb201a6a2f8e869b359c9b964d6","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Support CLI changes for QoS (2/2)."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the command line support for"},{"line_number":10,"context_line":"QoS rules, make changes for future extendable the command."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"},{"line_number":13,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a41bdd9_c945176f","line":10,"updated":"2015-07-16 11:04:21.000000000","message":"i think \"make changes for future extendable the command\" doesn\u0027t make sense now. Can you clearly mention what all CLI\u0027s are being implemented using this patch?","commit_id":"142c54e773b4b1542382740b4ca9a390aa8ef09d"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"7760eaac4d668945f88726646c88f3a731716b32","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Support CLI changes for QoS (2/2)."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the command line support for"},{"line_number":10,"context_line":"QoS rules, make changes for future extendable the command."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"},{"line_number":13,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a41bdd9_ea8c5b81","line":10,"in_reply_to":"9a41bdd9_c945176f","updated":"2015-07-20 04:38:28.000000000","message":"will modify it","commit_id":"142c54e773b4b1542382740b4ca9a390aa8ef09d"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"9092d0723b8eeb894589fd4c5e5405043a12ed45","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Support CLI changes for QoS (2/2)."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the command line support for"},{"line_number":10,"context_line":"QoS rules."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"},{"line_number":13,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"1a4dcd0f_ccd9db23","line":10,"updated":"2015-08-12 15:33:32.000000000","message":"seems it maybe useful to mention gotchas you had to deal with","commit_id":"9804c1c5681a871f717b1a117d01fd02bc47f7c4"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"55cf123992ec671bb6037d83a1e7bf2842a75ceb","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Support CLI changes for QoS (2/2)."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the command line support for"},{"line_number":10,"context_line":"QoS rules."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"},{"line_number":13,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"1a4dcd0f_ecfff7ff","line":10,"in_reply_to":"1a4dcd0f_ccd9db23","updated":"2015-08-12 15:36:42.000000000","message":"There were quite a bit of gotchas handled... I didn\u0027t keep track and summarizing them seems laborious so I\u0027d rather not...","commit_id":"9804c1c5681a871f717b1a117d01fd02bc47f7c4"}],"neutronclient/neutron/v2_0/qos/bandwidth_limit_rule.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"33c12430130218b4bf60a2123980a23df52a204c","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutronclient.neutron import v2_0 as neutronv20"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def add_policy_argument(parser):"},{"line_number":24,"context_line":"    parser.add_argument("},{"line_number":25,"context_line":"        \u0027policy\u0027, metavar\u003d\u0027QOS_POLICY\u0027,"},{"line_number":26,"context_line":"        help\u003d_(\u0027ID or name of the QoS policy.\u0027))"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_76bddbd6","line":23,"updated":"2015-07-23 09:37:58.000000000","message":"why do we have identical add_policy_argument and add_rule_argument functions here and in common rule.py? Please reuse a single function.","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"dbd63ce29114fa627d6c0ec509afbb213b8d6f66","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutronclient.neutron import v2_0 as neutronv20"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def add_policy_argument(parser):"},{"line_number":24,"context_line":"    parser.add_argument("},{"line_number":25,"context_line":"        \u0027policy\u0027, metavar\u003d\u0027QOS_POLICY\u0027,"},{"line_number":26,"context_line":"        help\u003d_(\u0027ID or name of the QoS policy.\u0027))"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_6cbd0ed7","line":23,"in_reply_to":"3a50d1a3_76bddbd6","updated":"2015-07-23 11:37:07.000000000","message":"+1","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"33c12430130218b4bf60a2123980a23df52a204c","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def update_bandwidth_limit_args2body(parsed_args, body):"},{"line_number":49,"context_line":"    m_kbps \u003d parsed_args.max_kbps"},{"line_number":50,"context_line":"    b_kbps \u003d parsed_args.max_burst_kbps"},{"line_number":51,"context_line":"    if (not m_kbps and not b_kbps):"},{"line_number":52,"context_line":"        raise exceptions.CommandError(_(\"Must provide max_kbps\""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_16c9f758","line":49,"updated":"2015-07-23 09:37:58.000000000","message":"Can we avoid abbreviating variables that much? max_kbps should be fine. Same for burst (maxburst_kbps).","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"33c12430130218b4bf60a2123980a23df52a204c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"def update_bandwidth_limit_args2body(parsed_args, body):"},{"line_number":49,"context_line":"    m_kbps \u003d parsed_args.max_kbps"},{"line_number":50,"context_line":"    b_kbps \u003d parsed_args.max_burst_kbps"},{"line_number":51,"context_line":"    if (not m_kbps and not b_kbps):"},{"line_number":52,"context_line":"        raise exceptions.CommandError(_(\"Must provide max_kbps\""},{"line_number":53,"context_line":"                                        \" or max_burst_kbps option.\"))"},{"line_number":54,"context_line":"    neutronv20.update_dict(parsed_args, body,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_16a25799","line":51,"updated":"2015-07-23 09:37:58.000000000","message":"if not (m_kbps or b_kbps)","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"dbd63ce29114fa627d6c0ec509afbb213b8d6f66","unresolved":false,"context_lines":[{"line_number":48,"context_line":"def update_bandwidth_limit_args2body(parsed_args, body):"},{"line_number":49,"context_line":"    m_kbps \u003d parsed_args.max_kbps"},{"line_number":50,"context_line":"    b_kbps \u003d parsed_args.max_burst_kbps"},{"line_number":51,"context_line":"    if (not m_kbps and not b_kbps):"},{"line_number":52,"context_line":"        raise exceptions.CommandError(_(\"Must provide max_kbps\""},{"line_number":53,"context_line":"                                        \" or max_burst_kbps option.\"))"},{"line_number":54,"context_line":"    neutronv20.update_dict(parsed_args, body,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_a83d3fc5","line":51,"in_reply_to":"3a50d1a3_16a25799","updated":"2015-07-23 11:37:07.000000000","message":"+1","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"b76ff2e91663953c892058ca751940eab4085c03","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        neutron_client.format \u003d parsed_args.request_format"},{"line_number":75,"context_line":"        body \u003d self.args2body(parsed_args)"},{"line_number":76,"context_line":"        _policy_id \u003d ("},{"line_number":77,"context_line":"            neutronv20.find_resourceid_by_name_or_id(neutron_client,"},{"line_number":78,"context_line":"                                                     self.resource,"},{"line_number":79,"context_line":"                                                     parsed_args.policy))"},{"line_number":80,"context_line":"        return neutron_client.create_qos_bandwidth_limit_rule(_policy_id, body)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_caf93482","line":77,"updated":"2015-07-21 05:57:56.000000000","message":"How about calling \"get_qos_policy_id\" API instead?","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"dbd63ce29114fa627d6c0ec509afbb213b8d6f66","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        neutron_client.format \u003d parsed_args.request_format"},{"line_number":75,"context_line":"        body \u003d self.args2body(parsed_args)"},{"line_number":76,"context_line":"        _policy_id \u003d ("},{"line_number":77,"context_line":"            neutronv20.find_resourceid_by_name_or_id(neutron_client,"},{"line_number":78,"context_line":"                                                     self.resource,"},{"line_number":79,"context_line":"                                                     parsed_args.policy))"},{"line_number":80,"context_line":"        return neutron_client.create_qos_bandwidth_limit_rule(_policy_id, body)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_8ea72ba6","line":77,"in_reply_to":"3a50d1a3_caf93482","updated":"2015-07-23 11:37:07.000000000","message":"+1","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"b76ff2e91663953c892058ca751940eab4085c03","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        neutron_client \u003d self.get_client()"},{"line_number":100,"context_line":"        neutron_client.format \u003d parsed_args.request_format"},{"line_number":101,"context_line":"        body \u003d self.args2body(parsed_args)"},{"line_number":102,"context_line":"        _policy_id \u003d neutronv20.find_resourceid_by_name_or_id(neutron_client,"},{"line_number":103,"context_line":"                                                              self.resource,"},{"line_number":104,"context_line":"                                                              parsed_args.id)"},{"line_number":105,"context_line":"        return neutron_client.update_qos_bandwidth_limit_rule(_policy_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_0aff1c68","line":102,"updated":"2015-07-21 05:57:56.000000000","message":"How about calling \"get_qos_policy_id\" API instead?","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"72371f4e166d6fc43e506c9d6b65d9810125dbec","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                           [\u0027max_kbps\u0027, \u0027max_burst_kbps\u0027])"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class QosRuleMixin(object):"},{"line_number":45,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":46,"context_line":"        qos_rule.add_policy_argument(parser)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_c06aa281","line":44,"updated":"2015-07-30 13:44:44.000000000","message":"This class should probably go in rule.py.","commit_id":"6fc21d9956d70b4d38ca2e3fc4fa48a70bf164ee"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"47b4edad1ab6f37fa2c66aa7db40acfbd0588f30","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                           [\u0027max_kbps\u0027, \u0027max_burst_kbps\u0027])"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class QosRuleMixin(object):"},{"line_number":45,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":46,"context_line":"        qos_rule.add_policy_argument(parser)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_66472678","line":44,"in_reply_to":"3a50d1a3_c06aa281","updated":"2015-07-30 14:42:51.000000000","message":"Done","commit_id":"6fc21d9956d70b4d38ca2e3fc4fa48a70bf164ee"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"89393da8069157f991473a63d153fb30eebbaf58","unresolved":false,"context_lines":[{"line_number":53,"context_line":"class CreateQoSBandwidthLimitRule(QosRuleMixin, neutronv20.CreateCommand):"},{"line_number":54,"context_line":"    \"\"\"Create a qos bandwidth limit rule.\"\"\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    resource \u003d \u0027bandwidth_limit_rule\u0027"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":59,"context_line":"        super(CreateQoSBandwidthLimitRule, self).add_known_arguments(parser)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_24159d48","line":56,"updated":"2015-07-30 13:00:21.000000000","message":"Can we define it as a constant somewhere?","commit_id":"6fc21d9956d70b4d38ca2e3fc4fa48a70bf164ee"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"47b4edad1ab6f37fa2c66aa7db40acfbd0588f30","unresolved":false,"context_lines":[{"line_number":53,"context_line":"class CreateQoSBandwidthLimitRule(QosRuleMixin, neutronv20.CreateCommand):"},{"line_number":54,"context_line":"    \"\"\"Create a qos bandwidth limit rule.\"\"\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    resource \u003d \u0027bandwidth_limit_rule\u0027"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":59,"context_line":"        super(CreateQoSBandwidthLimitRule, self).add_known_arguments(parser)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_695a992c","line":56,"in_reply_to":"3a50d1a3_24159d48","updated":"2015-07-30 14:42:51.000000000","message":"We can.","commit_id":"6fc21d9956d70b4d38ca2e3fc4fa48a70bf164ee"},{"author":{"_account_id":16707,"name":"Mohankumar","email":"nmohankumar1011@gmail.com","username":"mohankumar_n"},"change_message_id":"348805dd55aca4fe2a1fbc2fa3bac8ea3285743e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    parser.add_argument("},{"line_number":32,"context_line":"        \u0027--max_burst_kbps\u0027,"},{"line_number":33,"context_line":"        help\u003d_(\u0027Max burst bandwidth in kbps.\u0027))"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def update_bandwidth_limit_args2body(parsed_args, body):"},{"line_number":37,"context_line":"    max_kbps \u003d parsed_args.max_kbps"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a50d1a3_7afd59b0","line":34,"updated":"2015-07-31 06:43:41.000000000","message":"Between functions , one line space would be good","commit_id":"a09c9a8da9f5b483e5bce5ca0206163d6b2112f7"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"1eeb6368733b14f9ab77c5eb5011093b253ac9e2","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    parser.add_argument("},{"line_number":32,"context_line":"        \u0027--max_burst_kbps\u0027,"},{"line_number":33,"context_line":"        help\u003d_(\u0027Max burst bandwidth in kbps.\u0027))"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def update_bandwidth_limit_args2body(parsed_args, body):"},{"line_number":37,"context_line":"    max_kbps \u003d parsed_args.max_kbps"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a50d1a3_1d9a0fc6","line":34,"in_reply_to":"3a50d1a3_7afd59b0","updated":"2015-07-31 07:09:03.000000000","message":"Actually pep8 dictates exactly 2 spaces between two functions that are not methods.","commit_id":"a09c9a8da9f5b483e5bce5ca0206163d6b2112f7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"380f7682a8c01d98c8881ae00bd7dcc447e69166","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        raise exceptions.CommandError(_(\"Must provide max_kbps\""},{"line_number":41,"context_line":"                                        \" or max_burst_kbps option.\"))"},{"line_number":42,"context_line":"    neutronv20.update_dict(parsed_args, body,"},{"line_number":43,"context_line":"                           [\u0027max_kbps\u0027, \u0027max_burst_kbps\u0027])"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class CreateQoSBandwidthLimitRule(qos_rule.QosRuleMixin,"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a4dcd0f_42bb02c5","line":43,"updated":"2015-08-03 21:43:10.000000000","message":"I think we miss some common arguments here, f.e. tenant_id. Without the latter, noauth does not work.","commit_id":"babe02ba46aad6325ad2debacad84b1d77b74046"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"459b7ec713f0a57ab9bf018f7f3539e50114786a","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        raise exceptions.CommandError(_(\"Must provide max_kbps\""},{"line_number":41,"context_line":"                                        \" or max_burst_kbps option.\"))"},{"line_number":42,"context_line":"    neutronv20.update_dict(parsed_args, body,"},{"line_number":43,"context_line":"                           [\u0027max_kbps\u0027, \u0027max_burst_kbps\u0027])"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class CreateQoSBandwidthLimitRule(qos_rule.QosRuleMixin,"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a4dcd0f_d418bd77","line":43,"in_reply_to":"1a4dcd0f_42bb02c5","updated":"2015-08-05 15:18:58.000000000","message":"Done","commit_id":"babe02ba46aad6325ad2debacad84b1d77b74046"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"c8aecdcb091c1fdfb49a92a2bdfc22ef7bdbe21a","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        help\u003d_(\u0027max bandwidth in kbps.\u0027))"},{"line_number":31,"context_line":"    parser.add_argument("},{"line_number":32,"context_line":"        \u0027--max_burst_kbps\u0027,"},{"line_number":33,"context_line":"        help\u003d_(\u0027Max burst bandwidth in kbps.\u0027))"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def update_bandwidth_limit_args2body(parsed_args, body):"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_f0012fb0","line":33,"updated":"2015-08-06 01:11:38.000000000","message":"maybe you want to be a consistent with help strings. Either start with capital M or lower case all along","commit_id":"67f98e4ede9f036b5363dca57c3423f5d2e48adc"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"3b4949ad6282797eaf2170eec69c9f67ccdc941f","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        help\u003d_(\u0027max bandwidth in kbps.\u0027))"},{"line_number":31,"context_line":"    parser.add_argument("},{"line_number":32,"context_line":"        \u0027--max_burst_kbps\u0027,"},{"line_number":33,"context_line":"        help\u003d_(\u0027Max burst bandwidth in kbps.\u0027))"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def update_bandwidth_limit_args2body(parsed_args, body):"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_fed49920","line":33,"in_reply_to":"1a4dcd0f_f0012fb0","updated":"2015-08-06 06:06:18.000000000","message":"+1","commit_id":"67f98e4ede9f036b5363dca57c3423f5d2e48adc"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"27b8747a06019a471809b056e216a069926db2f0","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        help\u003d_(\u0027max bandwidth in kbps.\u0027))"},{"line_number":31,"context_line":"    parser.add_argument("},{"line_number":32,"context_line":"        \u0027--max_burst_kbps\u0027,"},{"line_number":33,"context_line":"        help\u003d_(\u0027Max burst bandwidth in kbps.\u0027))"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def update_bandwidth_limit_args2body(parsed_args, body):"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_bb437e12","line":33,"in_reply_to":"1a4dcd0f_fed49920","updated":"2015-08-06 07:49:54.000000000","message":"+1.\nDone.","commit_id":"67f98e4ede9f036b5363dca57c3423f5d2e48adc"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"c8aecdcb091c1fdfb49a92a2bdfc22ef7bdbe21a","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"class DeleteQoSBandwidthLimitRule(qos_rule.QosRuleMixin,"},{"line_number":101,"context_line":"                                  neutronv20.DeleteCommand):"},{"line_number":102,"context_line":"    \"\"\"LBaaS v2 Delete a given member.\"\"\""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    resource \u003d BANDWIDTH_LIMIT_RULE_RESOURCE"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_d00c33ef","line":102,"updated":"2015-08-06 01:11:38.000000000","message":"LBaaS? looks like copy paste went wrong :)","commit_id":"67f98e4ede9f036b5363dca57c3423f5d2e48adc"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"27b8747a06019a471809b056e216a069926db2f0","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"class DeleteQoSBandwidthLimitRule(qos_rule.QosRuleMixin,"},{"line_number":101,"context_line":"                                  neutronv20.DeleteCommand):"},{"line_number":102,"context_line":"    \"\"\"LBaaS v2 Delete a given member.\"\"\""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    resource \u003d BANDWIDTH_LIMIT_RULE_RESOURCE"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_7b4ad627","line":102,"in_reply_to":"1a4dcd0f_3e18c11d","updated":"2015-08-06 07:49:54.000000000","message":"+1.\nDone.","commit_id":"67f98e4ede9f036b5363dca57c3423f5d2e48adc"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"3b4949ad6282797eaf2170eec69c9f67ccdc941f","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"class DeleteQoSBandwidthLimitRule(qos_rule.QosRuleMixin,"},{"line_number":101,"context_line":"                                  neutronv20.DeleteCommand):"},{"line_number":102,"context_line":"    \"\"\"LBaaS v2 Delete a given member.\"\"\""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    resource \u003d BANDWIDTH_LIMIT_RULE_RESOURCE"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_3e18c11d","line":102,"in_reply_to":"1a4dcd0f_d00c33ef","updated":"2015-08-06 06:06:18.000000000","message":"+1.","commit_id":"67f98e4ede9f036b5363dca57c3423f5d2e48adc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"334c2a00d5edb449f071a70a82c9109e7181cdb0","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def add_bandwidth_limit_arguments(parser):"},{"line_number":28,"context_line":"    parser.add_argument("},{"line_number":29,"context_line":"        \u0027--max_kbps\u0027,"},{"line_number":30,"context_line":"        help\u003d_(\u0027max bandwidth in kbps.\u0027))"},{"line_number":31,"context_line":"    parser.add_argument("},{"line_number":32,"context_line":"        \u0027--max_burst_kbps\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa1b9901_ee7ff5dc","line":29,"range":{"start_line":29,"start_character":9,"end_line":29,"end_character":19},"updated":"2015-08-26 12:00:35.000000000","message":"We don\u0027t use underscore in option names.\nInstead \"--max-kbps\" needs to be used.","commit_id":"1d23a72bcd9af3fba08b940a3747733f8be01117"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"e446080b42919e6270e31fbc63ab1f09bc6a0775","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def add_bandwidth_limit_arguments(parser):"},{"line_number":28,"context_line":"    parser.add_argument("},{"line_number":29,"context_line":"        \u0027--max_kbps\u0027,"},{"line_number":30,"context_line":"        help\u003d_(\u0027max bandwidth in kbps.\u0027))"},{"line_number":31,"context_line":"    parser.add_argument("},{"line_number":32,"context_line":"        \u0027--max_burst_kbps\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa1b9901_54178fed","line":29,"in_reply_to":"fa1b9901_ee7ff5dc","updated":"2015-08-26 13:32:21.000000000","message":"Done","commit_id":"1d23a72bcd9af3fba08b940a3747733f8be01117"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"334c2a00d5edb449f071a70a82c9109e7181cdb0","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        \u0027--max_kbps\u0027,"},{"line_number":30,"context_line":"        help\u003d_(\u0027max bandwidth in kbps.\u0027))"},{"line_number":31,"context_line":"    parser.add_argument("},{"line_number":32,"context_line":"        \u0027--max_burst_kbps\u0027,"},{"line_number":33,"context_line":"        help\u003d_(\u0027max burst bandwidth in kbps.\u0027))"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"fa1b9901_0e8589cd","line":32,"updated":"2015-08-26 12:00:35.000000000","message":"ditto","commit_id":"1d23a72bcd9af3fba08b940a3747733f8be01117"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"e446080b42919e6270e31fbc63ab1f09bc6a0775","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        \u0027--max_kbps\u0027,"},{"line_number":30,"context_line":"        help\u003d_(\u0027max bandwidth in kbps.\u0027))"},{"line_number":31,"context_line":"    parser.add_argument("},{"line_number":32,"context_line":"        \u0027--max_burst_kbps\u0027,"},{"line_number":33,"context_line":"        help\u003d_(\u0027max burst bandwidth in kbps.\u0027))"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"fa1b9901_14d4b71d","line":32,"in_reply_to":"fa1b9901_0e8589cd","updated":"2015-08-26 13:32:21.000000000","message":"Done","commit_id":"1d23a72bcd9af3fba08b940a3747733f8be01117"}],"neutronclient/neutron/v2_0/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":"89393da8069157f991473a63d153fb30eebbaf58","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def format_output_data(self, data):"},{"line_number":45,"context_line":"        rules \u003d []"},{"line_number":46,"context_line":"        for rule in data[\u0027policy\u0027][\u0027bandwidth_limit_rules\u0027]:"},{"line_number":47,"context_line":"            rules.append(\"max kbps: %d, max burst kbps: %d\" % ("},{"line_number":48,"context_line":"                rule[\u0027max_kbps\u0027], rule[\u0027max_burst_kbps\u0027]))"},{"line_number":49,"context_line":"        data[\u0027policy\u0027][\u0027bandwidth_limit_rules\u0027] \u003d os.linesep.join(rules)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_3f4b6661","line":46,"updated":"2015-07-30 13:00:21.000000000","message":"It will be \u0027rules\u0027, generic one, with \u0027type\u0027 attribute for each of the rules to determine the contents.","commit_id":"6fc21d9956d70b4d38ca2e3fc4fa48a70bf164ee"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"47b4edad1ab6f37fa2c66aa7db40acfbd0588f30","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def format_output_data(self, data):"},{"line_number":45,"context_line":"        rules \u003d []"},{"line_number":46,"context_line":"        for rule in data[\u0027policy\u0027][\u0027bandwidth_limit_rules\u0027]:"},{"line_number":47,"context_line":"            rules.append(\"max kbps: %d, max burst kbps: %d\" % ("},{"line_number":48,"context_line":"                rule[\u0027max_kbps\u0027], rule[\u0027max_burst_kbps\u0027]))"},{"line_number":49,"context_line":"        data[\u0027policy\u0027][\u0027bandwidth_limit_rules\u0027] \u003d os.linesep.join(rules)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_a9ec212a","line":46,"in_reply_to":"3a50d1a3_3f4b6661","updated":"2015-07-30 14:42:51.000000000","message":"When it will be, we can change this logic to do so. Right now I\u0027m working against the upstream feature branch so I\u0027d rather not guess :)\n\nAdded a TODO.","commit_id":"6fc21d9956d70b4d38ca2e3fc4fa48a70bf164ee"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"4d716c4beca4d0cf226cbef3dc44134696f335af","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def get_qos_policy_id(client, policy_id_or_name):"},{"line_number":24,"context_line":"    _policy_id \u003d neutronv20.find_resourceid_by_name_or_id(client,"},{"line_number":25,"context_line":"                                                          \u0027policy\u0027,"},{"line_number":26,"context_line":"                                                          policy_id_or_name)"},{"line_number":27,"context_line":"    return _policy_id"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a4dcd0f_71f7578b","line":25,"updated":"2015-08-06 08:42:07.000000000","message":"cmd_resource\u003d\u0027qos_policy\u0027","commit_id":"633a7920b5d76d1074995c9b2c0283e079cbbc42"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"4b68734a780dd8912eb075967c111b6a2224671c","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    def format_output_data(self, data):"},{"line_number":66,"context_line":"        rules \u003d []"},{"line_number":67,"context_line":"        for rule in data[\u0027policy\u0027].get(\u0027rules\u0027, []):"},{"line_number":68,"context_line":"            if rule[\u0027type\u0027] \u003d\u003d \"bandwidth_limit\":"},{"line_number":69,"context_line":"                rules.append(\"[%s]: max kbps: %d, max burst kbps: %d\" % ("},{"line_number":70,"context_line":"                    rule[\u0027id\u0027], rule[\u0027max_kbps\u0027], rule[\u0027max_burst_kbps\u0027]))"},{"line_number":71,"context_line":"        data[\u0027policy\u0027][\u0027rules\u0027] \u003d os.linesep.join(rules)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_83188b76","line":68,"updated":"2015-08-06 13:42:36.000000000","message":"nit: shouldn\u0027t constant be used?","commit_id":"4b4b02ecf12f5717ec040e7c466ed3f5d4308af0"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"c2bac09fee28fb030e8b9f7a802b2619831fb730","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    def format_output_data(self, data):"},{"line_number":66,"context_line":"        rules \u003d []"},{"line_number":67,"context_line":"        for rule in data[\u0027policy\u0027].get(\u0027rules\u0027, []):"},{"line_number":68,"context_line":"            if rule[\u0027type\u0027] \u003d\u003d \"bandwidth_limit\":"},{"line_number":69,"context_line":"                rules.append(\"[%s]: max kbps: %d, max burst kbps: %d\" % ("},{"line_number":70,"context_line":"                    rule[\u0027id\u0027], rule[\u0027max_kbps\u0027], rule[\u0027max_burst_kbps\u0027]))"},{"line_number":71,"context_line":"        data[\u0027policy\u0027][\u0027rules\u0027] \u003d os.linesep.join(rules)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_8331475c","line":68,"in_reply_to":"1a4dcd0f_83188b76","updated":"2015-08-07 06:21:16.000000000","message":"Meh. If it\u0027s a one off, I\u0027m not against it.","commit_id":"4b4b02ecf12f5717ec040e7c466ed3f5d4308af0"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"4b68734a780dd8912eb075967c111b6a2224671c","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        for rule in data[\u0027policy\u0027].get(\u0027rules\u0027, []):"},{"line_number":68,"context_line":"            if rule[\u0027type\u0027] \u003d\u003d \"bandwidth_limit\":"},{"line_number":69,"context_line":"                rules.append(\"[%s]: max kbps: %d, max burst kbps: %d\" % ("},{"line_number":70,"context_line":"                    rule[\u0027id\u0027], rule[\u0027max_kbps\u0027], rule[\u0027max_burst_kbps\u0027]))"},{"line_number":71,"context_line":"        data[\u0027policy\u0027][\u0027rules\u0027] \u003d os.linesep.join(rules)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        super(ShowQoSPolicy, self).format_output_data(data)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_6349bf5f","line":70,"updated":"2015-08-06 13:42:36.000000000","message":"This part will be very invasive to update for new rule types","commit_id":"4b4b02ecf12f5717ec040e7c466ed3f5d4308af0"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"db5566d863da1950b013d96a1a7bbd98069a4521","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        for rule in data[\u0027policy\u0027].get(\u0027rules\u0027, []):"},{"line_number":68,"context_line":"            if rule[\u0027type\u0027] \u003d\u003d \"bandwidth_limit\":"},{"line_number":69,"context_line":"                rules.append(\"[%s]: max kbps: %d, max burst kbps: %d\" % ("},{"line_number":70,"context_line":"                    rule[\u0027id\u0027], rule[\u0027max_kbps\u0027], rule[\u0027max_burst_kbps\u0027]))"},{"line_number":71,"context_line":"        data[\u0027policy\u0027][\u0027rules\u0027] \u003d os.linesep.join(rules)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        super(ShowQoSPolicy, self).format_output_data(data)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_20eb49b2","line":70,"in_reply_to":"1a4dcd0f_1b9b5767","updated":"2015-08-09 07:02:17.000000000","message":"Though we don\u0027t want to display all the keys - some are useless (like \u0027qos_policy_id\u0027 of the policy we\u0027re showing right now, and the type which is \u0027bandwidth_limit\u0027 (and looks bad on the eye of the user IMO)).","commit_id":"4b4b02ecf12f5717ec040e7c466ed3f5d4308af0"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"bb5954ed8ab7345fce7afcb856905f46f0108fb8","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        for rule in data[\u0027policy\u0027].get(\u0027rules\u0027, []):"},{"line_number":68,"context_line":"            if rule[\u0027type\u0027] \u003d\u003d \"bandwidth_limit\":"},{"line_number":69,"context_line":"                rules.append(\"[%s]: max kbps: %d, max burst kbps: %d\" % ("},{"line_number":70,"context_line":"                    rule[\u0027id\u0027], rule[\u0027max_kbps\u0027], rule[\u0027max_burst_kbps\u0027]))"},{"line_number":71,"context_line":"        data[\u0027policy\u0027][\u0027rules\u0027] \u003d os.linesep.join(rules)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        super(ShowQoSPolicy, self).format_output_data(data)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_3bfe1806","line":70,"in_reply_to":"1a4dcd0f_20eb49b2","updated":"2015-08-09 08:03:21.000000000","message":"Well, it could be a helper that handles those details.","commit_id":"4b4b02ecf12f5717ec040e7c466ed3f5d4308af0"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"e67aa4e20ac451c0569503ee2856bf4547d2a6f3","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        for rule in data[\u0027policy\u0027].get(\u0027rules\u0027, []):"},{"line_number":68,"context_line":"            if rule[\u0027type\u0027] \u003d\u003d \"bandwidth_limit\":"},{"line_number":69,"context_line":"                rules.append(\"[%s]: max kbps: %d, max burst kbps: %d\" % ("},{"line_number":70,"context_line":"                    rule[\u0027id\u0027], rule[\u0027max_kbps\u0027], rule[\u0027max_burst_kbps\u0027]))"},{"line_number":71,"context_line":"        data[\u0027policy\u0027][\u0027rules\u0027] \u003d os.linesep.join(rules)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        super(ShowQoSPolicy, self).format_output_data(data)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_822580af","line":70,"in_reply_to":"1a4dcd0f_3b3618b5","updated":"2015-08-09 13:21:40.000000000","message":"I am not sure why we want to show the rule fields. I think it is better to show \njust the rule id and rule type and if user want more information he can query the rule it self. there maybe other rules with much more attributes in the future and showing all  them can be a mess.","commit_id":"4b4b02ecf12f5717ec040e7c466ed3f5d4308af0"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"9fa09a9c33aa921bc4398ed03b04aa66fb0f4289","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        for rule in data[\u0027policy\u0027].get(\u0027rules\u0027, []):"},{"line_number":68,"context_line":"            if rule[\u0027type\u0027] \u003d\u003d \"bandwidth_limit\":"},{"line_number":69,"context_line":"                rules.append(\"[%s]: max kbps: %d, max burst kbps: %d\" % ("},{"line_number":70,"context_line":"                    rule[\u0027id\u0027], rule[\u0027max_kbps\u0027], rule[\u0027max_burst_kbps\u0027]))"},{"line_number":71,"context_line":"        data[\u0027policy\u0027][\u0027rules\u0027] \u003d os.linesep.join(rules)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        super(ShowQoSPolicy, self).format_output_data(data)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_3b3618b5","line":70,"in_reply_to":"1a4dcd0f_3bfe1806","updated":"2015-08-09 08:55:54.000000000","message":"+1, basically each rule type should  show its specific fields, not the ones defined in common_args in the spec","commit_id":"4b4b02ecf12f5717ec040e7c466ed3f5d4308af0"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"bf4b83b2f3a58508dd4ddf3db19a6bd121cb11d8","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        for rule in data[\u0027policy\u0027].get(\u0027rules\u0027, []):"},{"line_number":68,"context_line":"            if rule[\u0027type\u0027] \u003d\u003d \"bandwidth_limit\":"},{"line_number":69,"context_line":"                rules.append(\"[%s]: max kbps: %d, max burst kbps: %d\" % ("},{"line_number":70,"context_line":"                    rule[\u0027id\u0027], rule[\u0027max_kbps\u0027], rule[\u0027max_burst_kbps\u0027]))"},{"line_number":71,"context_line":"        data[\u0027policy\u0027][\u0027rules\u0027] \u003d os.linesep.join(rules)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        super(ShowQoSPolicy, self).format_output_data(data)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_6ca68710","line":70,"in_reply_to":"1a4dcd0f_42af787d","updated":"2015-08-12 15:25:15.000000000","message":"I\u0027m game with Moshe\u0027s proposal - it makes a LOT of sense :)","commit_id":"4b4b02ecf12f5717ec040e7c466ed3f5d4308af0"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"61fa07fae98f45e6087d83318c7d958196640266","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        for rule in data[\u0027policy\u0027].get(\u0027rules\u0027, []):"},{"line_number":68,"context_line":"            if rule[\u0027type\u0027] \u003d\u003d \"bandwidth_limit\":"},{"line_number":69,"context_line":"                rules.append(\"[%s]: max kbps: %d, max burst kbps: %d\" % ("},{"line_number":70,"context_line":"                    rule[\u0027id\u0027], rule[\u0027max_kbps\u0027], rule[\u0027max_burst_kbps\u0027]))"},{"line_number":71,"context_line":"        data[\u0027policy\u0027][\u0027rules\u0027] \u003d os.linesep.join(rules)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        super(ShowQoSPolicy, self).format_output_data(data)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_c3d50fe5","line":70,"in_reply_to":"1a4dcd0f_6349bf5f","updated":"2015-08-07 06:20:24.000000000","message":"Do you have any suggestion as to making this less invasive?","commit_id":"4b4b02ecf12f5717ec040e7c466ed3f5d4308af0"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"a712fbea12eb677254a7ee8eafe059bd8ffe6da6","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        for rule in data[\u0027policy\u0027].get(\u0027rules\u0027, []):"},{"line_number":68,"context_line":"            if rule[\u0027type\u0027] \u003d\u003d \"bandwidth_limit\":"},{"line_number":69,"context_line":"                rules.append(\"[%s]: max kbps: %d, max burst kbps: %d\" % ("},{"line_number":70,"context_line":"                    rule[\u0027id\u0027], rule[\u0027max_kbps\u0027], rule[\u0027max_burst_kbps\u0027]))"},{"line_number":71,"context_line":"        data[\u0027policy\u0027][\u0027rules\u0027] \u003d os.linesep.join(rules)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        super(ShowQoSPolicy, self).format_output_data(data)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_42af787d","line":70,"in_reply_to":"1a4dcd0f_822580af","updated":"2015-08-09 14:13:13.000000000","message":"I think your suggestion makes sense. We can go either way (since its first version for single rule type and we want user feedback), but in any option, please make this extendable for future rule types","commit_id":"4b4b02ecf12f5717ec040e7c466ed3f5d4308af0"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"febf73d085e92e68167e935a4222b5fe6bb4559e","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        for rule in data[\u0027policy\u0027].get(\u0027rules\u0027, []):"},{"line_number":68,"context_line":"            if rule[\u0027type\u0027] \u003d\u003d \"bandwidth_limit\":"},{"line_number":69,"context_line":"                rules.append(\"[%s]: max kbps: %d, max burst kbps: %d\" % ("},{"line_number":70,"context_line":"                    rule[\u0027id\u0027], rule[\u0027max_kbps\u0027], rule[\u0027max_burst_kbps\u0027]))"},{"line_number":71,"context_line":"        data[\u0027policy\u0027][\u0027rules\u0027] \u003d os.linesep.join(rules)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        super(ShowQoSPolicy, self).format_output_data(data)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_1b9b5767","line":70,"in_reply_to":"1a4dcd0f_c3d50fe5","updated":"2015-08-07 08:35:14.000000000","message":"\", \".join(\"%s: %s\" % key, val for key, val in dict.items())","commit_id":"4b4b02ecf12f5717ec040e7c466ed3f5d4308af0"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"9092d0723b8eeb894589fd4c5e5405043a12ed45","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    def format_output_data(self, data):"},{"line_number":78,"context_line":"        rules \u003d []"},{"line_number":79,"context_line":"        for rule in data[\u0027policy\u0027].get(\u0027rules\u0027, []):"},{"line_number":80,"context_line":"            if rule[\u0027type\u0027] \u003d\u003d \"bandwidth_limit\":"},{"line_number":81,"context_line":"                rules.append(\"%s (type: %s)\" % (rule[\u0027id\u0027], rule[\u0027type\u0027]))"},{"line_number":82,"context_line":"        data[\u0027policy\u0027][\u0027rules\u0027] \u003d os.linesep.join(rules)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"1a4dcd0f_8c7bd3f4","line":80,"updated":"2015-08-12 15:33:32.000000000","message":"do you need to filter specific type here?","commit_id":"9804c1c5681a871f717b1a117d01fd02bc47f7c4"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"55cf123992ec671bb6037d83a1e7bf2842a75ceb","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    def format_output_data(self, data):"},{"line_number":78,"context_line":"        rules \u003d []"},{"line_number":79,"context_line":"        for rule in data[\u0027policy\u0027].get(\u0027rules\u0027, []):"},{"line_number":80,"context_line":"            if rule[\u0027type\u0027] \u003d\u003d \"bandwidth_limit\":"},{"line_number":81,"context_line":"                rules.append(\"%s (type: %s)\" % (rule[\u0027id\u0027], rule[\u0027type\u0027]))"},{"line_number":82,"context_line":"        data[\u0027policy\u0027][\u0027rules\u0027] \u003d os.linesep.join(rules)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"1a4dcd0f_ac4faf90","line":80,"in_reply_to":"1a4dcd0f_8c7bd3f4","updated":"2015-08-12 15:36:42.000000000","message":"Nope. Thanks.","commit_id":"9804c1c5681a871f717b1a117d01fd02bc47f7c4"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"86310048170986530c6ae71e6a697b4997c81728","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        rules \u003d []"},{"line_number":79,"context_line":"        for rule in data[\u0027policy\u0027].get(\u0027rules\u0027, []):"},{"line_number":80,"context_line":"            rules.append(\"%s (type: %s)\" % (rule[\u0027id\u0027], rule[\u0027type\u0027]))"},{"line_number":81,"context_line":"        data[\u0027policy\u0027][\u0027rules\u0027] \u003d os.linesep.join(rules)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        super(ShowQoSPolicy, self).format_output_data(data)"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"fa1b9901_48b32e98","line":81,"updated":"2015-08-21 15:40:08.000000000","message":"not sure it\u0027s a good idea to use client line separator (typically on windows) ... it would prefer we use \u0027\\n\u0027","commit_id":"104f7b3b52afb62fe7eed547ae033345d97d1c6a"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"efc4d7ade14b19815961ee6e74f266b148814e1e","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        rules \u003d []"},{"line_number":79,"context_line":"        for rule in data[\u0027policy\u0027].get(\u0027rules\u0027, []):"},{"line_number":80,"context_line":"            rules.append(\"%s (type: %s)\" % (rule[\u0027id\u0027], rule[\u0027type\u0027]))"},{"line_number":81,"context_line":"        data[\u0027policy\u0027][\u0027rules\u0027] \u003d os.linesep.join(rules)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        super(ShowQoSPolicy, self).format_output_data(data)"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"fa1b9901_9eb4ebd1","line":81,"in_reply_to":"fa1b9901_298fd976","updated":"2015-08-24 08:04:21.000000000","message":"I\u0027m afraid I still don\u0027t follow. \u0027data\u0027 is only used locally (it\u0027s not sent to the server - it contains the response as received from the server) so it doesn\u0027t change anything on the server side, and regarding the client side - it should be os.linesep.","commit_id":"104f7b3b52afb62fe7eed547ae033345d97d1c6a"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"44c86f350bbdfafa1fe45e22f1fce4ff029da779","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        rules \u003d []"},{"line_number":79,"context_line":"        for rule in data[\u0027policy\u0027].get(\u0027rules\u0027, []):"},{"line_number":80,"context_line":"            rules.append(\"%s (type: %s)\" % (rule[\u0027id\u0027], rule[\u0027type\u0027]))"},{"line_number":81,"context_line":"        data[\u0027policy\u0027][\u0027rules\u0027] \u003d os.linesep.join(rules)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        super(ShowQoSPolicy, self).format_output_data(data)"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"fa1b9901_298fd976","line":81,"in_reply_to":"fa1b9901_432b0c95","updated":"2015-08-21 17:22:27.000000000","message":"because data[\u0027policy\u0027][\u0027rules\u0027] will be parsed on server side but serialized using client os.linesep","commit_id":"104f7b3b52afb62fe7eed547ae033345d97d1c6a"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"28ad5204f7b968b34d9010ceeb1814b9dba6c88e","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        rules \u003d []"},{"line_number":79,"context_line":"        for rule in data[\u0027policy\u0027].get(\u0027rules\u0027, []):"},{"line_number":80,"context_line":"            rules.append(\"%s (type: %s)\" % (rule[\u0027id\u0027], rule[\u0027type\u0027]))"},{"line_number":81,"context_line":"        data[\u0027policy\u0027][\u0027rules\u0027] \u003d os.linesep.join(rules)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        super(ShowQoSPolicy, self).format_output_data(data)"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"fa1b9901_432b0c95","line":81,"in_reply_to":"fa1b9901_48b32e98","updated":"2015-08-21 16:52:38.000000000","message":"Not sure I understand how using \\n on windows is preferable, since windows expects \\r\\n (and os.linesep is whatever the OS uses for each platform)...\n\nCan you expand on your thoughts?","commit_id":"104f7b3b52afb62fe7eed547ae033345d97d1c6a"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"6daafc925733b7979cefd8ca3c3b5acaf4764344","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        rules \u003d []"},{"line_number":79,"context_line":"        for rule in data[\u0027policy\u0027].get(\u0027rules\u0027, []):"},{"line_number":80,"context_line":"            rules.append(\"%s (type: %s)\" % (rule[\u0027id\u0027], rule[\u0027type\u0027]))"},{"line_number":81,"context_line":"        data[\u0027policy\u0027][\u0027rules\u0027] \u003d os.linesep.join(rules)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        super(ShowQoSPolicy, self).format_output_data(data)"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"fa1b9901_22bf5dab","line":81,"in_reply_to":"fa1b9901_9eb4ebd1","updated":"2015-08-25 21:56:43.000000000","message":"oups","commit_id":"104f7b3b52afb62fe7eed547ae033345d97d1c6a"}],"neutronclient/neutron/v2_0/qos/rule.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"a66835a0fe1012261c5e516ff735b9ac28a58652","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from neutronclient.i18n import _"},{"line_number":18,"context_line":"from neutronclient.neutron import v2_0 as neutronv20"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"BANDWIDTH_LIMIT \u003d \u0027bandwidth_limit\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def add_policy_argument(parser):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_b5a24899","line":20,"updated":"2015-07-05 14:26:59.000000000","message":"Maybe you can add constant for valid rule types and reference it in line 37","commit_id":"8552407753827b242eccfe722273c9e68a6cfd46"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"69594d6b4a5556c5777017abc7f6992c2c2a9798","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from neutronclient.i18n import _"},{"line_number":18,"context_line":"from neutronclient.neutron import v2_0 as neutronv20"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"BANDWIDTH_LIMIT \u003d \u0027bandwidth_limit\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def add_policy_argument(parser):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_39d5ceb8","line":20,"in_reply_to":"ba3cc151_b5a24899","updated":"2015-07-06 05:40:51.000000000","message":"You are correct. I have done the changes. Will upload soon.","commit_id":"8552407753827b242eccfe722273c9e68a6cfd46"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"a66835a0fe1012261c5e516ff735b9ac28a58652","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    resource \u003d \u0027qos_policy\u0027"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def call_api(self, neutron_client, policy_id, rule_type, body):"},{"line_number":115,"context_line":"        if rule_type \u003d\u003d BANDWIDTH_LIMIT:"},{"line_number":116,"context_line":"            return neutron_client.create_bandwidth_limit_rule(policy_id, body)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def add_known_arguments(self, parser):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_35039878","line":115,"updated":"2015-07-05 14:26:59.000000000","message":"I think it worth to have sort of factory for different rule types methods. Simple way it to have dict keyed by rule type. Then you can just invoke create_rule[rule_type]","commit_id":"8552407753827b242eccfe722273c9e68a6cfd46"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"69594d6b4a5556c5777017abc7f6992c2c2a9798","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    resource \u003d \u0027qos_policy\u0027"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def call_api(self, neutron_client, policy_id, rule_type, body):"},{"line_number":115,"context_line":"        if rule_type \u003d\u003d BANDWIDTH_LIMIT:"},{"line_number":116,"context_line":"            return neutron_client.create_bandwidth_limit_rule(policy_id, body)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def add_known_arguments(self, parser):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_994dfac6","line":115,"in_reply_to":"ba3cc151_35039878","updated":"2015-07-06 05:40:51.000000000","message":"You are correct. I have done the changes. Will upload soon.","commit_id":"8552407753827b242eccfe722273c9e68a6cfd46"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"a66835a0fe1012261c5e516ff735b9ac28a58652","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":119,"context_line":"        add_policy_argument(parser)"},{"line_number":120,"context_line":"        add_type_argument(parser)"},{"line_number":121,"context_line":"        add_bandwidth_limit_arguments(parser)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def args2body(self, parsed_args):"},{"line_number":124,"context_line":"        body \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_75f12095","line":121,"updated":"2015-07-05 14:26:59.000000000","message":"Here again, I think to allow further rule types additions, it\u0027s better to nave map of add_rule_type_argument methods","commit_id":"8552407753827b242eccfe722273c9e68a6cfd46"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"69594d6b4a5556c5777017abc7f6992c2c2a9798","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":119,"context_line":"        add_policy_argument(parser)"},{"line_number":120,"context_line":"        add_type_argument(parser)"},{"line_number":121,"context_line":"        add_bandwidth_limit_arguments(parser)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def args2body(self, parsed_args):"},{"line_number":124,"context_line":"        body \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_59c69217","line":121,"in_reply_to":"ba3cc151_75f12095","updated":"2015-07-06 05:40:51.000000000","message":"You are correct. I have done the changes. Will upload soon.","commit_id":"8552407753827b242eccfe722273c9e68a6cfd46"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"a66835a0fe1012261c5e516ff735b9ac28a58652","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        updatable_policy_args2body(self, parsed_args, body)"},{"line_number":128,"context_line":"        updatable_type_args2body(self, parsed_args, body)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        if parsed_args.type \u003d\u003d BANDWIDTH_LIMIT:"},{"line_number":131,"context_line":"            updatable_bandwidth_limit_args2body(self, parsed_args, body)"},{"line_number":132,"context_line":"        return body"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_95ee24b3","line":130,"updated":"2015-07-05 14:26:59.000000000","message":"Ditto","commit_id":"8552407753827b242eccfe722273c9e68a6cfd46"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"69594d6b4a5556c5777017abc7f6992c2c2a9798","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        updatable_policy_args2body(self, parsed_args, body)"},{"line_number":128,"context_line":"        updatable_type_args2body(self, parsed_args, body)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        if parsed_args.type \u003d\u003d BANDWIDTH_LIMIT:"},{"line_number":131,"context_line":"            updatable_bandwidth_limit_args2body(self, parsed_args, body)"},{"line_number":132,"context_line":"        return body"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_79cb561f","line":130,"in_reply_to":"ba3cc151_95ee24b3","updated":"2015-07-06 05:40:51.000000000","message":"You are correct. I have done the changes. Will upload soon.","commit_id":"8552407753827b242eccfe722273c9e68a6cfd46"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"d7e7c20f2019d45dd649331eb437b366141d3c31","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def add_type_argument(parser):"},{"line_number":36,"context_line":"    parser.add_argument("},{"line_number":37,"context_line":"        \u0027--type\u0027, choices\u003dqos_rule_types.QOS_RULE_TYPE_LIST,"},{"line_number":38,"context_line":"        help\u003d_(\u0027Name of the QoS rule type.\u0027))"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_79f319a0","line":37,"updated":"2015-07-07 09:07:33.000000000","message":"\"type\" should be a mandatory field. Seek other\u0027s opinion.","commit_id":"bfa3bfdf118c72887dfa812b0bc1c9213bd63e7c"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"43d7f10a9019318a4c5700d5bf0a813eb9038faa","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    \"\"\"List all qos rules belonging to the specified policy.\"\"\""},{"line_number":56,"context_line":"    resource \u003d \u0027qos_policy\u0027"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    list_columns \u003d [\u0027id\u0027]"},{"line_number":59,"context_line":"    _formatters \u003d {}"},{"line_number":60,"context_line":"    pagination_support \u003d True"},{"line_number":61,"context_line":"    sorting_support \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_a8efd185","line":58,"updated":"2015-07-08 09:55:58.000000000","message":"It will be good if we can display \"type\" along-with the id. Just \u0027id\u0027 won\u0027t give much information.It\u0027s better to re-check the implementation with the latest spec\"https://review.openstack.org/#/c/199112\"","commit_id":"dadadcf0de3f6253fd0230e17b76c4d097099fc9"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"08e3d88b6051f75ece8fc2edc0b09ef9eb203ad3","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    \"\"\"List all qos rules belonging to the specified policy.\"\"\""},{"line_number":56,"context_line":"    resource \u003d \u0027qos_policy\u0027"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    list_columns \u003d [\u0027id\u0027]"},{"line_number":59,"context_line":"    _formatters \u003d {}"},{"line_number":60,"context_line":"    pagination_support \u003d True"},{"line_number":61,"context_line":"    sorting_support \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_ab084b92","line":58,"in_reply_to":"ba3cc151_a8efd185","updated":"2015-07-14 09:18:45.000000000","message":"ok. will do","commit_id":"dadadcf0de3f6253fd0230e17b76c4d097099fc9"},{"author":{"_account_id":16707,"name":"Mohankumar","email":"nmohankumar1011@gmail.com","username":"mohankumar_n"},"change_message_id":"233a0ee4646a2724d234921a3952dfcfe7d4430f","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    def args2body(self, parsed_args):"},{"line_number":115,"context_line":"        body \u003d {}"},{"line_number":116,"context_line":"        if not parsed_args.type:"},{"line_number":117,"context_line":"            raise exceptions.CommandError(_(\"Must provide type option.\"))"},{"line_number":118,"context_line":"        qos_rule_types.update_type_param_args2body(parsed_args, body)"},{"line_number":119,"context_line":"        return {(parsed_args.type + \u0027_rule\u0027): body}"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_8bb76ed7","line":117,"updated":"2015-07-08 07:25:10.000000000","message":"can you elaborate error message","commit_id":"dadadcf0de3f6253fd0230e17b76c4d097099fc9"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"d5a6f8137cb64f6c144370b4dc99185fec83b9a0","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    def args2body(self, parsed_args):"},{"line_number":115,"context_line":"        body \u003d {}"},{"line_number":116,"context_line":"        if not parsed_args.type:"},{"line_number":117,"context_line":"            raise exceptions.CommandError(_(\"Must provide type option.\"))"},{"line_number":118,"context_line":"        qos_rule_types.update_type_param_args2body(parsed_args, body)"},{"line_number":119,"context_line":"        return {(parsed_args.type + \u0027_rule\u0027): body}"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_a805917a","line":117,"in_reply_to":"ba3cc151_8bb76ed7","updated":"2015-07-08 09:52:22.000000000","message":"i think  this fine for throw error on console when not provide --type","commit_id":"dadadcf0de3f6253fd0230e17b76c4d097099fc9"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"33c12430130218b4bf60a2123980a23df52a204c","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    neutronv20.update_dict(parsed_args, body, [\u0027rule\u0027])"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def get_qos_policy_id(client, policy_id_or_name):"},{"line_number":43,"context_line":"    _policy_id \u003d (neutronv20.find_resourceid_by_name_or_id(client,"},{"line_number":44,"context_line":"                                                           \u0027qos_policy\u0027,"},{"line_number":45,"context_line":"                                                           policy_id_or_name))"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_5346b17b","line":42,"updated":"2015-07-23 09:37:58.000000000","message":"I wonder why we maintain those two pieces of neutron client as separate patches. It makes it hard to use both of them (they conflict on cherry-pick), and we have duplicate functions like that one, that are already present in the first piece of client changes.","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"dbd63ce29114fa627d6c0ec509afbb213b8d6f66","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    neutronv20.update_dict(parsed_args, body, [\u0027rule\u0027])"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def get_qos_policy_id(client, policy_id_or_name):"},{"line_number":43,"context_line":"    _policy_id \u003d (neutronv20.find_resourceid_by_name_or_id(client,"},{"line_number":44,"context_line":"                                                           \u0027qos_policy\u0027,"},{"line_number":45,"context_line":"                                                           policy_id_or_name))"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_aecd4767","line":42,"in_reply_to":"3a50d1a3_5346b17b","updated":"2015-07-23 11:37:07.000000000","message":"+1","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"33c12430130218b4bf60a2123980a23df52a204c","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    return _policy_id"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class ListQoSPolicyRuleTypes(neutronv20.ListCommand):"},{"line_number":50,"context_line":"    \"\"\"List available qos policy rule types.\"\"\""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    resource \u003d \u0027rule_types\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_966427b9","line":49,"updated":"2015-07-23 09:37:58.000000000","message":"I think it\u0027s better: ListQoSRuleTypes. Policy is not really involved here.","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"33c12430130218b4bf60a2123980a23df52a204c","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class ListQoSPolicyRuleTypes(neutronv20.ListCommand):"},{"line_number":50,"context_line":"    \"\"\"List available qos policy rule types.\"\"\""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    resource \u003d \u0027rule_types\u0027"},{"line_number":53,"context_line":"    shadow_resource \u003d \u0027qos_rule_type\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_b66b6384","line":50,"updated":"2015-07-23 09:37:58.000000000","message":"then kill notion of policy here.","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"33c12430130218b4bf60a2123980a23df52a204c","unresolved":false,"context_lines":[{"line_number":49,"context_line":"class ListQoSPolicyRuleTypes(neutronv20.ListCommand):"},{"line_number":50,"context_line":"    \"\"\"List available qos policy rule types.\"\"\""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    resource \u003d \u0027rule_types\u0027"},{"line_number":53,"context_line":"    shadow_resource \u003d \u0027qos_rule_type\u0027"},{"line_number":54,"context_line":"    list_columns \u003d []"},{"line_number":55,"context_line":"    _formatters \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_1324a9c2","line":52,"updated":"2015-07-23 09:37:58.000000000","message":"should it be rule_type?","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"33c12430130218b4bf60a2123980a23df52a204c","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class ListQoSRule(neutronv20.ListCommand):"},{"line_number":61,"context_line":"    \"\"\"List all qos rules belonging to the specified policy.\"\"\""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    resource \u003d \u0027qos_policy\u0027"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_9653c716","line":61,"updated":"2015-07-23 09:37:58.000000000","message":"should it be ListQoSRules then?","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"dbd63ce29114fa627d6c0ec509afbb213b8d6f66","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class ListQoSRule(neutronv20.ListCommand):"},{"line_number":61,"context_line":"    \"\"\"List all qos rules belonging to the specified policy.\"\"\""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    resource \u003d \u0027qos_policy\u0027"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_6edadf18","line":61,"in_reply_to":"3a50d1a3_9653c716","updated":"2015-07-23 11:37:07.000000000","message":"+1, addressed all comments","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"89393da8069157f991473a63d153fb30eebbaf58","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    \"\"\"List available qos rule types.\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    resource \u003d \u0027rule_type\u0027"},{"line_number":46,"context_line":"    shadow_resource \u003d \u0027qos_rule_type\u0027"},{"line_number":47,"context_line":"    list_columns \u003d []"},{"line_number":48,"context_line":"    _formatters \u003d {}"},{"line_number":49,"context_line":"    pagination_support \u003d True"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_7fb7ae3a","line":46,"updated":"2015-07-30 13:00:21.000000000","message":"shadow/formatters really needed?","commit_id":"6fc21d9956d70b4d38ca2e3fc4fa48a70bf164ee"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"47b4edad1ab6f37fa2c66aa7db40acfbd0588f30","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    \"\"\"List available qos rule types.\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    resource \u003d \u0027rule_type\u0027"},{"line_number":46,"context_line":"    shadow_resource \u003d \u0027qos_rule_type\u0027"},{"line_number":47,"context_line":"    list_columns \u003d []"},{"line_number":48,"context_line":"    _formatters \u003d {}"},{"line_number":49,"context_line":"    pagination_support \u003d True"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_09c3d58b","line":46,"in_reply_to":"3a50d1a3_7fb7ae3a","updated":"2015-07-30 14:42:51.000000000","message":"Cleaned up a bit. Shadow resource is needed (it points us to \u0027list_qos_rule_types\u0027 and  removing that will point us to \u0027list_rule_types\u0027 instead, which is far from perfect.","commit_id":"6fc21d9956d70b4d38ca2e3fc4fa48a70bf164ee"}],"neutronclient/neutron/v2_0/qos/type.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"b7f279210dea7eb0dd59413038e3dd9fa5b92912","unresolved":false,"context_lines":[{"line_number":24,"context_line":"\"\"\""},{"line_number":25,"context_line":"QOS_RULE_TYPE_LIST \u003d [\u0027bandwidth_limit\u0027]"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"type_resource \u003d {"},{"line_number":28,"context_line":"    \u0027bandwidth_limit\u0027: \u0027qos_bandwidth_limit_rule\u0027,"},{"line_number":29,"context_line":"}"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_c4960394","line":27,"updated":"2015-07-07 06:17:50.000000000","message":"I think its worth to add comment explaining the key and value in the dictionary, so when new rule type is introduced, it will be easy to know what to add here. Maybe it worth to add either here or maybe devref explaining what it takes to add new rule type","commit_id":"bfa3bfdf118c72887dfa812b0bc1c9213bd63e7c"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"248e9fe460d0487d3b0b2eb900684874055a7897","unresolved":false,"context_lines":[{"line_number":24,"context_line":"\"\"\""},{"line_number":25,"context_line":"QOS_RULE_TYPE_LIST \u003d [\u0027bandwidth_limit\u0027]"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"type_resource \u003d {"},{"line_number":28,"context_line":"    \u0027bandwidth_limit\u0027: \u0027qos_bandwidth_limit_rule\u0027,"},{"line_number":29,"context_line":"}"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_0d85ef57","line":27,"in_reply_to":"ba3cc151_c4960394","updated":"2015-07-07 07:18:38.000000000","message":"+1.","commit_id":"bfa3bfdf118c72887dfa812b0bc1c9213bd63e7c"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"d7e7c20f2019d45dd649331eb437b366141d3c31","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    \"\"\"Function to parse qos rule type arguments.\"\"\""},{"line_number":53,"context_line":"    update_bandwidth_limit_args2body(parsed_args, body)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def call_create_api(neutron_client, policy_id, rule_type, body):"},{"line_number":57,"context_line":"    if rule_type in type_resource.keys():"},{"line_number":58,"context_line":"        create_api \u003d getattr(neutron_client,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_394911b8","line":55,"updated":"2015-07-07 09:07:33.000000000","message":"Add function for validating parameters based on the parsed type.  \n\nE.g.: either \"max_kbps\" or \"max_burst_kbps\" must me specified if the input type is \"bandwidth_limit\" otherwise throw error.","commit_id":"bfa3bfdf118c72887dfa812b0bc1c9213bd63e7c"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"eb54ecd2fe40b39e726b41c590717c3f41eb6e82","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def add_type_param_arguments(parser):"},{"line_number":49,"context_line":"    \"\"\"Function to add qos rule type arguments.\"\"\""},{"line_number":50,"context_line":"    add_bandwidth_limit_arguments(parser)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def update_bandwidth_limit_args2body(parsed_args, body):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_03cd975c","line":50,"updated":"2015-07-07 21:03:02.000000000","message":"this still handles bandwidth_limit case. shouldn\u0027t it be according to the type_resource?","commit_id":"dadadcf0de3f6253fd0230e17b76c4d097099fc9"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"931b4b75c91a4f7390a6cab9e1d38c32a4bcfa3b","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def add_type_param_arguments(parser):"},{"line_number":49,"context_line":"    \"\"\"Function to add qos rule type arguments.\"\"\""},{"line_number":50,"context_line":"    add_bandwidth_limit_arguments(parser)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def update_bandwidth_limit_args2body(parsed_args, body):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_300c8deb","line":50,"in_reply_to":"ba3cc151_03cd975c","updated":"2015-07-08 06:49:06.000000000","message":"Command arguments are added before parsing hence we must install all options, since type is unknown here.","commit_id":"dadadcf0de3f6253fd0230e17b76c4d097099fc9"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"43d7f10a9019318a4c5700d5bf0a813eb9038faa","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def add_type_param_arguments(parser):"},{"line_number":49,"context_line":"    \"\"\"Function to add qos rule type arguments.\"\"\""},{"line_number":50,"context_line":"    add_bandwidth_limit_arguments(parser)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def update_bandwidth_limit_args2body(parsed_args, body):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_68e549a2","line":50,"in_reply_to":"ba3cc151_300c8deb","updated":"2015-07-08 09:55:58.000000000","message":"@Rama: +1.","commit_id":"dadadcf0de3f6253fd0230e17b76c4d097099fc9"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"adcdcd8193db41df1bb377c78c2a270f49293170","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def add_type_param_arguments(parser):"},{"line_number":49,"context_line":"    \"\"\"Function to add qos rule type arguments.\"\"\""},{"line_number":50,"context_line":"    add_bandwidth_limit_arguments(parser)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def update_bandwidth_limit_args2body(parsed_args, body):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_3f0a3122","line":50,"in_reply_to":"ba3cc151_68e549a2","updated":"2015-07-14 10:39:47.000000000","message":"Yeah, that was my point to make separate commands if we cannot make a difference from --type for help I believe we should move into separate commands per rule type. Otherwise --help is going to be a mess, and all arguments optional... not nice.","commit_id":"dadadcf0de3f6253fd0230e17b76c4d097099fc9"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"eb54ecd2fe40b39e726b41c590717c3f41eb6e82","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    if rule_type in type_resource.keys():"},{"line_number":74,"context_line":"        create_api \u003d getattr(neutron_client,"},{"line_number":75,"context_line":"                             \"create_%s\" % type_resource[rule_type])"},{"line_number":76,"context_line":"        return create_api(policy_id, body)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"def call_update_api(neutron_client, policy_id, rule_id, rule_type, body):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_63a103a9","line":76,"updated":"2015-07-07 21:03:02.000000000","message":"maybe worth to handle the case if rule type not in type_resource.keys()?","commit_id":"dadadcf0de3f6253fd0230e17b76c4d097099fc9"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"43d7f10a9019318a4c5700d5bf0a813eb9038faa","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    if rule_type in type_resource.keys():"},{"line_number":74,"context_line":"        create_api \u003d getattr(neutron_client,"},{"line_number":75,"context_line":"                             \"create_%s\" % type_resource[rule_type])"},{"line_number":76,"context_line":"        return create_api(policy_id, body)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"def call_update_api(neutron_client, policy_id, rule_id, rule_type, body):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_28042148","line":76,"in_reply_to":"ba3cc151_106709ea","updated":"2015-07-08 09:55:58.000000000","message":"@Rama: +1.","commit_id":"dadadcf0de3f6253fd0230e17b76c4d097099fc9"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"931b4b75c91a4f7390a6cab9e1d38c32a4bcfa3b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    if rule_type in type_resource.keys():"},{"line_number":74,"context_line":"        create_api \u003d getattr(neutron_client,"},{"line_number":75,"context_line":"                             \"create_%s\" % type_resource[rule_type])"},{"line_number":76,"context_line":"        return create_api(policy_id, body)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"def call_update_api(neutron_client, policy_id, rule_id, rule_type, body):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_106709ea","line":76,"in_reply_to":"ba3cc151_63a103a9","updated":"2015-07-08 06:49:06.000000000","message":"since type is of \"choice\" datatype, so it only accepts from choice list. otherwise error is thrown to user, hence i feel no need to handle it.","commit_id":"dadadcf0de3f6253fd0230e17b76c4d097099fc9"}],"neutronclient/shell.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"c9ea996edfcaf78d75c19d9168ec816d7e2b997b","unresolved":false,"context_lines":[{"line_number":365,"context_line":"    \u0027qos-rule-show\u0027: qos_rule.ShowQoSRule,"},{"line_number":366,"context_line":"    \u0027qos-rule-create\u0027: qos_rule.CreateQoSRule,"},{"line_number":367,"context_line":"    \u0027qos-rule-update\u0027: qos_rule.UpdateQoSRule,"},{"line_number":368,"context_line":"    \u0027qos-rule-delete\u0027: qos_rule.DeleteQoSRule,"},{"line_number":369,"context_line":"}"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"COMMANDS \u003d {\u00272.0\u0027: COMMAND_V2}"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_c7e9c980","line":368,"updated":"2015-07-08 17:23:36.000000000","message":"Please implement the new \"qos-policy-rules-available\" CLI for listing all the available rule-types. For details plz refer to \"https://review.openstack.org/#/c/199112/3/specs/liberty/qos-api-extension.rst\"","commit_id":"dadadcf0de3f6253fd0230e17b76c4d097099fc9"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"08e3d88b6051f75ece8fc2edc0b09ef9eb203ad3","unresolved":false,"context_lines":[{"line_number":365,"context_line":"    \u0027qos-rule-show\u0027: qos_rule.ShowQoSRule,"},{"line_number":366,"context_line":"    \u0027qos-rule-create\u0027: qos_rule.CreateQoSRule,"},{"line_number":367,"context_line":"    \u0027qos-rule-update\u0027: qos_rule.UpdateQoSRule,"},{"line_number":368,"context_line":"    \u0027qos-rule-delete\u0027: qos_rule.DeleteQoSRule,"},{"line_number":369,"context_line":"}"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"COMMANDS \u003d {\u00272.0\u0027: COMMAND_V2}"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_eb73b313","line":368,"in_reply_to":"ba3cc151_c7e9c980","updated":"2015-07-14 09:18:45.000000000","message":"ok. will do","commit_id":"dadadcf0de3f6253fd0230e17b76c4d097099fc9"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"33c12430130218b4bf60a2123980a23df52a204c","unresolved":false,"context_lines":[{"line_number":371,"context_line":"    \u0027qos-bandwidth-limit-rule-update\u0027: ("},{"line_number":372,"context_line":"        bandwidth_limit_rule.UpdateQoSBandwidthLimitRule"},{"line_number":373,"context_line":"    ),"},{"line_number":374,"context_line":"    \u0027qos-policy-rules-available\u0027: qos_rule.ListQoSPolicyRuleTypes,"},{"line_number":375,"context_line":"}"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"COMMANDS \u003d {\u00272.0\u0027: COMMAND_V2}"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_16c3378a","line":374,"updated":"2015-07-23 09:37:58.000000000","message":"I think the name of the command is not ideal. Better: qos-available-rule-types","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"dbd63ce29114fa627d6c0ec509afbb213b8d6f66","unresolved":false,"context_lines":[{"line_number":371,"context_line":"    \u0027qos-bandwidth-limit-rule-update\u0027: ("},{"line_number":372,"context_line":"        bandwidth_limit_rule.UpdateQoSBandwidthLimitRule"},{"line_number":373,"context_line":"    ),"},{"line_number":374,"context_line":"    \u0027qos-policy-rules-available\u0027: qos_rule.ListQoSPolicyRuleTypes,"},{"line_number":375,"context_line":"}"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"COMMANDS \u003d {\u00272.0\u0027: COMMAND_V2}"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_0e00fb64","line":374,"in_reply_to":"3a50d1a3_16c3378a","updated":"2015-07-23 11:37:07.000000000","message":"+1","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"}],"neutronclient/tests/unit/qos/test_cli20_rule.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"e849617e2d61a66e4fadfcd28742902f4b915ebb","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class CLITestV20QoSRuleJSON(test_cli20.CLITestV20Base):"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def test_create_bandwidth_limit_rule_with_max_kbps(self):"},{"line_number":29,"context_line":"        cmd \u003d bw_rule.CreateQoSBandwidthLimitRule(test_cli20.MyApp(sys.stdout),"},{"line_number":30,"context_line":"                                                  None)"},{"line_number":31,"context_line":"        resource \u003d \u0027bandwidth_limit_rule\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a41bdd9_294da3c3","line":28,"updated":"2015-07-16 11:02:49.000000000","message":"suggest to keep bandwidth related test cases in a separate file.","commit_id":"142c54e773b4b1542382740b4ca9a390aa8ef09d"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"7760eaac4d668945f88726646c88f3a731716b32","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class CLITestV20QoSRuleJSON(test_cli20.CLITestV20Base):"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def test_create_bandwidth_limit_rule_with_max_kbps(self):"},{"line_number":29,"context_line":"        cmd \u003d bw_rule.CreateQoSBandwidthLimitRule(test_cli20.MyApp(sys.stdout),"},{"line_number":30,"context_line":"                                                  None)"},{"line_number":31,"context_line":"        resource \u003d \u0027bandwidth_limit_rule\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_11ec6cc6","line":28,"in_reply_to":"9a41bdd9_294da3c3","updated":"2015-07-20 04:38:28.000000000","message":"i feel it is ok, just for add/update have this separate test cases","commit_id":"142c54e773b4b1542382740b4ca9a390aa8ef09d"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"e849617e2d61a66e4fadfcd28742902f4b915ebb","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        self.mox.VerifyAll()"},{"line_number":221,"context_line":"        self.mox.UnsetStubs()"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def test_show_qos_rule(self):"},{"line_number":224,"context_line":"        cmd \u003d qos_rule.ShowQoSRule(test_cli20.MyApp(sys.stdout), None)"},{"line_number":225,"context_line":"        resource \u003d \u0027qos_rule\u0027"},{"line_number":226,"context_line":"        policy_id \u003d \u0027p_id\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a41bdd9_69de4bde","line":223,"updated":"2015-07-16 11:02:49.000000000","message":"Test cases missing for \"qos_list_rules\". plz add them.","commit_id":"142c54e773b4b1542382740b4ca9a390aa8ef09d"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"7760eaac4d668945f88726646c88f3a731716b32","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        self.mox.VerifyAll()"},{"line_number":221,"context_line":"        self.mox.UnsetStubs()"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def test_show_qos_rule(self):"},{"line_number":224,"context_line":"        cmd \u003d qos_rule.ShowQoSRule(test_cli20.MyApp(sys.stdout), None)"},{"line_number":225,"context_line":"        resource \u003d \u0027qos_rule\u0027"},{"line_number":226,"context_line":"        policy_id \u003d \u0027p_id\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_f1af807b","line":223,"in_reply_to":"9a41bdd9_69de4bde","updated":"2015-07-20 04:38:28.000000000","message":"Facing some issue for this testcase, may be will get some help from experts.","commit_id":"142c54e773b4b1542382740b4ca9a390aa8ef09d"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"33c12430130218b4bf60a2123980a23df52a204c","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import sys"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from mox3 import mox"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from neutronclient.neutron.v2_0.qos import bandwidth_limit_rule as bw_rule"},{"line_number":22,"context_line":"from neutronclient.neutron.v2_0.qos import rule as qos_rule"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_560e9f8c","line":19,"updated":"2015-07-23 09:37:58.000000000","message":"tests from the 1st patch that implements policies does not directly use mox. Can we also avoid messing with mox here?","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"dbd63ce29114fa627d6c0ec509afbb213b8d6f66","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import sys"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from mox3 import mox"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from neutronclient.neutron.v2_0.qos import bandwidth_limit_rule as bw_rule"},{"line_number":22,"context_line":"from neutronclient.neutron.v2_0.qos import rule as qos_rule"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_ae29c7e7","line":19,"in_reply_to":"3a50d1a3_560e9f8c","updated":"2015-07-23 11:37:07.000000000","message":"can not write similar as policy, since rules derived from policy and resource also different","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"33c12430130218b4bf60a2123980a23df52a204c","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        cmd.get_client().MultipleTimes().AndReturn(self.client)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        body \u003d {resource: {\u0027max_kbps\u0027: max_kbps}}"},{"line_number":41,"context_line":"        result \u003d {resource: {\u0027max_kbps\u0027: max_kbps}, }"},{"line_number":42,"context_line":"        result_str \u003d self.client.serialize(result)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        path \u003d (getattr(self.client, \"qos_bandwidth_limit_rules_path\") %"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_d6714f0d","line":41,"updated":"2015-07-23 09:37:58.000000000","message":"body and result seem identical?","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a4b7f03446a1376f7d235233ac33b15d8d9eeddd","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class CLITestV20QoSRuleJSON(test_cli20.CLITestV20Base):"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def test_create_bandwidth_limit_rule_with_max_kbps(self):"},{"line_number":29,"context_line":"        cmd \u003d bw_rule.CreateQoSBandwidthLimitRule(test_cli20.MyApp(sys.stdout),"},{"line_number":30,"context_line":"                                                  None)"},{"line_number":31,"context_line":"        resource \u003d \u0027bandwidth_limit_rule\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_b128469b","line":28,"updated":"2015-07-23 11:58:55.000000000","message":"For the very least, most of those test cases are similar, so you should move common pieces into a helper method.","commit_id":"f4ca2ea6306d10b95efea60b9c3eb83a5ef7ce98"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"070568c0e6bf73e35f60575471e3fae6c92642ed","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class CLITestV20QoSRuleJSON(test_cli20.CLITestV20Base):"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def test_create_bandwidth_limit_rule_with_max_kbps(self):"},{"line_number":29,"context_line":"        cmd \u003d bw_rule.CreateQoSBandwidthLimitRule(test_cli20.MyApp(sys.stdout),"},{"line_number":30,"context_line":"                                                  None)"},{"line_number":31,"context_line":"        resource \u003d \u0027bandwidth_limit_rule\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_f4131163","line":28,"in_reply_to":"3a50d1a3_b128469b","updated":"2015-07-23 14:49:54.000000000","message":"looks similar, but the way mox os different for POST/GET/PUT..etc,\nbetter have seperate","commit_id":"f4ca2ea6306d10b95efea60b9c3eb83a5ef7ce98"}],"neutronclient/tests/unit/test_cli20.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a4b7f03446a1376f7d235233ac33b15d8d9eeddd","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                                      \u0027policy_profile\u0027, \u0027ikepolicy\u0027,"},{"line_number":225,"context_line":"                                      \u0027ipsecpolicy\u0027, \u0027metering_label\u0027,"},{"line_number":226,"context_line":"                                      \u0027metering_label_rule\u0027, \u0027net_partition\u0027,"},{"line_number":227,"context_line":"                                      \u0027fox_socket\u0027, \u0027subnetpool\u0027, \u0027policy\u0027,"},{"line_number":228,"context_line":"                                      \u0027bandwidth_limit_rule\u0027, \u0027qos_policy\u0027]"},{"line_number":229,"context_line":"        if not cmd_resource:"},{"line_number":230,"context_line":"            cmd_resource \u003d resource"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_110eda8b","line":227,"updated":"2015-07-23 11:58:55.000000000","message":"why do we have policy and qos_policy here?","commit_id":"f4ca2ea6306d10b95efea60b9c3eb83a5ef7ce98"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"2ad93d5591b0ec2db25586993d6febbf7f5bb6c4","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                                      \u0027policy_profile\u0027, \u0027ikepolicy\u0027,"},{"line_number":225,"context_line":"                                      \u0027ipsecpolicy\u0027, \u0027metering_label\u0027,"},{"line_number":226,"context_line":"                                      \u0027metering_label_rule\u0027, \u0027net_partition\u0027,"},{"line_number":227,"context_line":"                                      \u0027fox_socket\u0027, \u0027subnetpool\u0027, \u0027policy\u0027,"},{"line_number":228,"context_line":"                                      \u0027bandwidth_limit_rule\u0027, \u0027qos_policy\u0027]"},{"line_number":229,"context_line":"        if not cmd_resource:"},{"line_number":230,"context_line":"            cmd_resource \u003d resource"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_23f1456b","line":227,"in_reply_to":"3a50d1a3_110eda8b","updated":"2015-07-23 14:13:45.000000000","message":"will check and remove if not required","commit_id":"f4ca2ea6306d10b95efea60b9c3eb83a5ef7ce98"}],"neutronclient/v2_0/client.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"a66835a0fe1012261c5e516ff735b9ac28a58652","unresolved":false,"context_lines":[{"line_number":1638,"context_line":""},{"line_number":1639,"context_line":"    def list_qos_rules(self, policy):"},{"line_number":1640,"context_line":"        \"\"\"Deletes the specified qos rules.\"\"\""},{"line_number":1641,"context_line":"        return self.delete(self.qos_rules_path % {policy})"},{"line_number":1642,"context_line":""},{"line_number":1643,"context_line":"    def show_qos_rule(self, policy, rule):"},{"line_number":1644,"context_line":"        \"\"\"Deletes the specified qos rules.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_b553286c","line":1641,"updated":"2015-07-05 14:26:59.000000000","message":"Why delete?","commit_id":"8552407753827b242eccfe722273c9e68a6cfd46"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"69594d6b4a5556c5777017abc7f6992c2c2a9798","unresolved":false,"context_lines":[{"line_number":1638,"context_line":""},{"line_number":1639,"context_line":"    def list_qos_rules(self, policy):"},{"line_number":1640,"context_line":"        \"\"\"Deletes the specified qos rules.\"\"\""},{"line_number":1641,"context_line":"        return self.delete(self.qos_rules_path % {policy})"},{"line_number":1642,"context_line":""},{"line_number":1643,"context_line":"    def show_qos_rule(self, policy, rule):"},{"line_number":1644,"context_line":"        \"\"\"Deletes the specified qos rules.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_79f27671","line":1641,"in_reply_to":"ba3cc151_b553286c","updated":"2015-07-06 05:40:51.000000000","message":"Copy paste error. Will correct. Next patch will address these issues.","commit_id":"8552407753827b242eccfe722273c9e68a6cfd46"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"a66835a0fe1012261c5e516ff735b9ac28a58652","unresolved":false,"context_lines":[{"line_number":1643,"context_line":"    def show_qos_rule(self, policy, rule):"},{"line_number":1644,"context_line":"        \"\"\"Deletes the specified qos rules.\"\"\""},{"line_number":1645,"context_line":"        return self.delete(self.qos_rule_path % {policy, rule})"},{"line_number":1646,"context_line":""},{"line_number":1647,"context_line":"    def __init__(self, **kwargs):"},{"line_number":1648,"context_line":"        \"\"\"Initialize a new client for the Neutron v2.0 API.\"\"\""},{"line_number":1649,"context_line":"        super(Client, self).__init__(**kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_954aa4ab","line":1646,"updated":"2015-07-05 14:26:59.000000000","message":"Ditto","commit_id":"8552407753827b242eccfe722273c9e68a6cfd46"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"69594d6b4a5556c5777017abc7f6992c2c2a9798","unresolved":false,"context_lines":[{"line_number":1643,"context_line":"    def show_qos_rule(self, policy, rule):"},{"line_number":1644,"context_line":"        \"\"\"Deletes the specified qos rules.\"\"\""},{"line_number":1645,"context_line":"        return self.delete(self.qos_rule_path % {policy, rule})"},{"line_number":1646,"context_line":""},{"line_number":1647,"context_line":"    def __init__(self, **kwargs):"},{"line_number":1648,"context_line":"        \"\"\"Initialize a new client for the Neutron v2.0 API.\"\"\""},{"line_number":1649,"context_line":"        super(Client, self).__init__(**kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_39ecee8e","line":1646,"in_reply_to":"ba3cc151_954aa4ab","updated":"2015-07-06 05:40:51.000000000","message":"Copy paste error. Will correct. Next patch will address these issues.","commit_id":"8552407753827b242eccfe722273c9e68a6cfd46"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"248e9fe460d0487d3b0b2eb900684874055a7897","unresolved":false,"context_lines":[{"line_number":427,"context_line":"    firewall_path \u003d \"/fw/firewalls/%s\""},{"line_number":428,"context_line":"    net_partitions_path \u003d \"/net-partitions\""},{"line_number":429,"context_line":"    net_partition_path \u003d \"/net-partitions/%s\""},{"line_number":430,"context_line":"    qos_policies_path \u003d \"/qos/policies\""},{"line_number":431,"context_line":"    qos_policy_path \u003d \"/qos/policies/%s\""},{"line_number":432,"context_line":"    qos_rules_path \u003d \"/qos/policies/%(policy)s/\""},{"line_number":433,"context_line":"    qos_rule_path \u003d \"/qos/policies/%(policy)s/%(rule)s\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_cda7070a","line":430,"updated":"2015-07-07 07:18:38.000000000","message":"this is already defined in \"https://review.openstack.org/#/c/189655/\". So I feel please make this patch a dependent of the former patch and remove these.","commit_id":"bfa3bfdf118c72887dfa812b0bc1c9213bd63e7c"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"248e9fe460d0487d3b0b2eb900684874055a7897","unresolved":false,"context_lines":[{"line_number":466,"context_line":"                     \u0027lbaas_healthmonitors\u0027: \u0027lbaas_healthmonitor\u0027,"},{"line_number":467,"context_line":"                     \u0027lbaas_members\u0027: \u0027lbaas_member\u0027,"},{"line_number":468,"context_line":"                     \u0027healthmonitors\u0027: \u0027healthmonitor\u0027,"},{"line_number":469,"context_line":"                     \u0027qos_policies\u0027: \u0027qos_policy\u0027,"},{"line_number":470,"context_line":"                     \u0027qos_rules\u0027: \u0027qos_rule\u0027,"},{"line_number":471,"context_line":"                     }"},{"line_number":472,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_0d9e4fb8","line":469,"updated":"2015-07-07 07:18:38.000000000","message":"This is already defined in \"https://review.openstack.org/#/c/189655/\". So I feel please make this patch a dependent of the former patch and remove these.","commit_id":"bfa3bfdf118c72887dfa812b0bc1c9213bd63e7c"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"e849617e2d61a66e4fadfcd28742902f4b915ebb","unresolved":false,"context_lines":[{"line_number":427,"context_line":"    firewall_path \u003d \"/fw/firewalls/%s\""},{"line_number":428,"context_line":"    net_partitions_path \u003d \"/net-partitions\""},{"line_number":429,"context_line":"    net_partition_path \u003d \"/net-partitions/%s\""},{"line_number":430,"context_line":"    qos_policies_path \u003d \"/qos/policies\""},{"line_number":431,"context_line":"    qos_policy_path \u003d \"/qos/policies/%s\""},{"line_number":432,"context_line":"    qos_rules_path \u003d \"/qos/policies/%(policy)s/\""},{"line_number":433,"context_line":"    qos_rule_path \u003d \"/qos/policies/%(policy)s/%(rule)s\""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a41bdd9_099bff18","line":430,"updated":"2015-07-16 11:02:49.000000000","message":"\"qos_policies_path\" is already defined in https://review.openstack.org/#/c/189655/. Request you to please make this patch dependent on \"https://review.openstack.org/#/c/189655/\"","commit_id":"142c54e773b4b1542382740b4ca9a390aa8ef09d"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"7760eaac4d668945f88726646c88f3a731716b32","unresolved":false,"context_lines":[{"line_number":427,"context_line":"    firewall_path \u003d \"/fw/firewalls/%s\""},{"line_number":428,"context_line":"    net_partitions_path \u003d \"/net-partitions\""},{"line_number":429,"context_line":"    net_partition_path \u003d \"/net-partitions/%s\""},{"line_number":430,"context_line":"    qos_policies_path \u003d \"/qos/policies\""},{"line_number":431,"context_line":"    qos_policy_path \u003d \"/qos/policies/%s\""},{"line_number":432,"context_line":"    qos_rules_path \u003d \"/qos/policies/%(policy)s/\""},{"line_number":433,"context_line":"    qos_rule_path \u003d \"/qos/policies/%(policy)s/%(rule)s\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_91d87c1f","line":430,"in_reply_to":"9a41bdd9_099bff18","updated":"2015-07-20 04:38:28.000000000","message":"i will keep it separate as of now, when merge will make single post","commit_id":"142c54e773b4b1542382740b4ca9a390aa8ef09d"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"33c12430130218b4bf60a2123980a23df52a204c","unresolved":false,"context_lines":[{"line_number":432,"context_line":"    qos_rules_path \u003d \"/qos/policies/%(policy)s/\""},{"line_number":433,"context_line":"    qos_rule_path \u003d \"/qos/policies/%(policy)s/%(rule)s\""},{"line_number":434,"context_line":"    qos_bandwidth_limit_rules_path \u003d (qos_rules_path +"},{"line_number":435,"context_line":"                                      \"bandwidth-limit-rules\")"},{"line_number":436,"context_line":"    qos_bandwidth_limit_rule_path \u003d (qos_rules_path +"},{"line_number":437,"context_line":"                                     \"bandwidth-limit-rules/%(rule)s\")"},{"line_number":438,"context_line":"    qos_rule_types_path \u003d \"/qos/rule-types\""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_36b5137d","line":435,"updated":"2015-07-23 09:37:58.000000000","message":"I *think* that server implements those in bandwidth_limit_rules, not with dashes. Have you actually tried the client against the latest server from feature/qos branch? API wise, it should already be ready to test against a real server.","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"33c12430130218b4bf60a2123980a23df52a204c","unresolved":false,"context_lines":[{"line_number":1616,"context_line":""},{"line_number":1617,"context_line":"    @APIParamsCall"},{"line_number":1618,"context_line":"    def list_qos_rule_types(self, retrieve_all\u003dTrue, **_params):"},{"line_number":1619,"context_line":"        \"\"\"List available qos policy rule types.\"\"\""},{"line_number":1620,"context_line":"        return self.list(\u0027qos_rule_types\u0027, self.qos_rule_types_path,"},{"line_number":1621,"context_line":"                         retrieve_all, **_params)"},{"line_number":1622,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_165d7746","line":1619,"updated":"2015-07-23 09:37:58.000000000","message":"kill \"policy\"","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"33c12430130218b4bf60a2123980a23df52a204c","unresolved":false,"context_lines":[{"line_number":1634,"context_line":""},{"line_number":1635,"context_line":"    @APIParamsCall"},{"line_number":1636,"context_line":"    def delete_qos_rule(self, policy, rule):"},{"line_number":1637,"context_line":"        \"\"\"Deletes the specified qos rules.\"\"\""},{"line_number":1638,"context_line":"        return self.delete(self.qos_rule_path %"},{"line_number":1639,"context_line":"                           {\u0027policy\u0027: policy, \u0027rule\u0027: rule})"},{"line_number":1640,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_563d3fdb","line":1637,"updated":"2015-07-23 09:37:58.000000000","message":"rules -\u003e rule","commit_id":"09d0f7642d632be5b67b902c72d708b779d43839"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a4b7f03446a1376f7d235233ac33b15d8d9eeddd","unresolved":false,"context_lines":[{"line_number":432,"context_line":"    qos_rules_path \u003d \"/qos/policies/%(policy)s/\""},{"line_number":433,"context_line":"    qos_rule_path \u003d \"/qos/policies/%(policy)s/%(rule)s\""},{"line_number":434,"context_line":"    qos_bandwidth_limit_rules_path \u003d (qos_rules_path +"},{"line_number":435,"context_line":"                                      \"bandwidth-limit-rules\")"},{"line_number":436,"context_line":"    qos_bandwidth_limit_rule_path \u003d (qos_rules_path +"},{"line_number":437,"context_line":"                                     \"bandwidth-limit-rules/%(rule)s\")"},{"line_number":438,"context_line":"    qos_rule_types_path \u003d \"/qos/rule-types\""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_317c36eb","line":435,"updated":"2015-07-23 11:58:55.000000000","message":"have you checked that dashed version actually works? I think it should be bandwidth_limit_rules.","commit_id":"f4ca2ea6306d10b95efea60b9c3eb83a5ef7ce98"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"d5f2cb6e88bdba7b14da6e38e66ac6db5f9b6260","unresolved":false,"context_lines":[{"line_number":432,"context_line":"    qos_rules_path \u003d \"/qos/policies/%(policy)s/\""},{"line_number":433,"context_line":"    qos_rule_path \u003d \"/qos/policies/%(policy)s/%(rule)s\""},{"line_number":434,"context_line":"    qos_bandwidth_limit_rules_path \u003d (qos_rules_path +"},{"line_number":435,"context_line":"                                      \"bandwidth-limit-rules\")"},{"line_number":436,"context_line":"    qos_bandwidth_limit_rule_path \u003d (qos_rules_path +"},{"line_number":437,"context_line":"                                     \"bandwidth-limit-rules/%(rule)s\")"},{"line_number":438,"context_line":"    qos_rule_types_path \u003d \"/qos/rule-types\""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_54f1a593","line":435,"in_reply_to":"3a50d1a3_1e2fbe3f","updated":"2015-07-23 14:46:39.000000000","message":"should be like\n/qos/policies/46ebaec0-0570-43ac-82f6-60d2b03168c4/bandwidth-limit-rules/","commit_id":"f4ca2ea6306d10b95efea60b9c3eb83a5ef7ce98"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f1da28eb9092dac5c954c8487509b4c1cc0a7944","unresolved":false,"context_lines":[{"line_number":432,"context_line":"    qos_rules_path \u003d \"/qos/policies/%(policy)s/\""},{"line_number":433,"context_line":"    qos_rule_path \u003d \"/qos/policies/%(policy)s/%(rule)s\""},{"line_number":434,"context_line":"    qos_bandwidth_limit_rules_path \u003d (qos_rules_path +"},{"line_number":435,"context_line":"                                      \"bandwidth-limit-rules\")"},{"line_number":436,"context_line":"    qos_bandwidth_limit_rule_path \u003d (qos_rules_path +"},{"line_number":437,"context_line":"                                     \"bandwidth-limit-rules/%(rule)s\")"},{"line_number":438,"context_line":"    qos_rule_types_path \u003d \"/qos/rule-types\""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_1e2fbe3f","line":435,"in_reply_to":"3a50d1a3_317c36eb","updated":"2015-07-23 14:20:24.000000000","message":"Ihar is right, there was a bug in spec - https://review.openstack.org/#/c/203983/1/specs/liberty/qos-api-extension.rst","commit_id":"f4ca2ea6306d10b95efea60b9c3eb83a5ef7ce98"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"ccc322cd735c1f4f920222ec5d5542a619adc14f","unresolved":false,"context_lines":[{"line_number":435,"context_line":"                                      \"bandwidth-limit-rules\")"},{"line_number":436,"context_line":"    qos_bandwidth_limit_rule_path \u003d (qos_rules_path +"},{"line_number":437,"context_line":"                                     \"bandwidth-limit-rules/%(rule)s\")"},{"line_number":438,"context_line":"    qos_rule_types_path \u003d \"/qos/rule-types\""},{"line_number":439,"context_line":"    qos_rule_type_path \u003d \"/qos/rule-types/%s\""},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"    # API has no way to report plurals, so we have to hard code them"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_5e9ea663","line":438,"updated":"2015-07-23 14:21:47.000000000","message":"Which makes me think that we should unify the api :-/","commit_id":"f4ca2ea6306d10b95efea60b9c3eb83a5ef7ce98"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a4b7f03446a1376f7d235233ac33b15d8d9eeddd","unresolved":false,"context_lines":[{"line_number":469,"context_line":"                     \u0027lbaas_members\u0027: \u0027lbaas_member\u0027,"},{"line_number":470,"context_line":"                     \u0027healthmonitors\u0027: \u0027healthmonitor\u0027,"},{"line_number":471,"context_line":"                     \u0027qos_policies\u0027: \u0027qos_policy\u0027,"},{"line_number":472,"context_line":"                     \u0027policies\u0027: \u0027policy\u0027,"},{"line_number":473,"context_line":"                     \u0027qos_bandwidth_limit_rules\u0027: \u0027qos_bandwidth_limit_rule\u0027,"},{"line_number":474,"context_line":"                     \u0027qos_rules\u0027: \u0027qos_rule\u0027,"},{"line_number":475,"context_line":"                     \u0027qos_rule_types\u0027: \u0027qos_rule_type\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_91718a0e","line":472,"updated":"2015-07-23 11:58:55.000000000","message":"Why do we have both policy and qos_policy here?","commit_id":"f4ca2ea6306d10b95efea60b9c3eb83a5ef7ce98"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"2ad93d5591b0ec2db25586993d6febbf7f5bb6c4","unresolved":false,"context_lines":[{"line_number":469,"context_line":"                     \u0027lbaas_members\u0027: \u0027lbaas_member\u0027,"},{"line_number":470,"context_line":"                     \u0027healthmonitors\u0027: \u0027healthmonitor\u0027,"},{"line_number":471,"context_line":"                     \u0027qos_policies\u0027: \u0027qos_policy\u0027,"},{"line_number":472,"context_line":"                     \u0027policies\u0027: \u0027policy\u0027,"},{"line_number":473,"context_line":"                     \u0027qos_bandwidth_limit_rules\u0027: \u0027qos_bandwidth_limit_rule\u0027,"},{"line_number":474,"context_line":"                     \u0027qos_rules\u0027: \u0027qos_rule\u0027,"},{"line_number":475,"context_line":"                     \u0027qos_rule_types\u0027: \u0027qos_rule_type\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_4331f158","line":472,"in_reply_to":"3a50d1a3_91718a0e","updated":"2015-07-23 14:13:45.000000000","message":"Actual resource is \u0027policy\u0027, but to make client function as qos_XXX_Policy() fn,\nused shadow resource as    \u0027qos_policies\u0027: \u0027qos_policy\u0027","commit_id":"f4ca2ea6306d10b95efea60b9c3eb83a5ef7ce98"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a4b7f03446a1376f7d235233ac33b15d8d9eeddd","unresolved":false,"context_lines":[{"line_number":473,"context_line":"                     \u0027qos_bandwidth_limit_rules\u0027: \u0027qos_bandwidth_limit_rule\u0027,"},{"line_number":474,"context_line":"                     \u0027qos_rules\u0027: \u0027qos_rule\u0027,"},{"line_number":475,"context_line":"                     \u0027qos_rule_types\u0027: \u0027qos_rule_type\u0027,"},{"line_number":476,"context_line":"                     \u0027rule_types\u0027: \u0027rule_type\u0027,"},{"line_number":477,"context_line":"                     }"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    @APIParamsCall"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_71e4feaa","line":476,"updated":"2015-07-23 11:58:55.000000000","message":"why do we have rule_types and qos_rule_types here?","commit_id":"f4ca2ea6306d10b95efea60b9c3eb83a5ef7ce98"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"2ad93d5591b0ec2db25586993d6febbf7f5bb6c4","unresolved":false,"context_lines":[{"line_number":473,"context_line":"                     \u0027qos_bandwidth_limit_rules\u0027: \u0027qos_bandwidth_limit_rule\u0027,"},{"line_number":474,"context_line":"                     \u0027qos_rules\u0027: \u0027qos_rule\u0027,"},{"line_number":475,"context_line":"                     \u0027qos_rule_types\u0027: \u0027qos_rule_type\u0027,"},{"line_number":476,"context_line":"                     \u0027rule_types\u0027: \u0027rule_type\u0027,"},{"line_number":477,"context_line":"                     }"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    @APIParamsCall"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_23caa51b","line":476,"in_reply_to":"3a50d1a3_71e4feaa","updated":"2015-07-23 14:13:45.000000000","message":"i will check and remove if not required","commit_id":"f4ca2ea6306d10b95efea60b9c3eb83a5ef7ce98"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"12ff2b3ffbe72897d2b4bbff7a29ed293819d336","unresolved":false,"context_lines":[{"line_number":430,"context_line":"    qos_policies_path \u003d \"/qos/policies\""},{"line_number":431,"context_line":"    qos_policy_path \u003d \"/qos/policies/%s\""},{"line_number":432,"context_line":"    qos_bandwidth_limit_rules_path \u003d \"/qos/policies/%s/bandwidth_limit_rules\""},{"line_number":433,"context_line":"    qos_bandwidth_limit_rule_path \u003d \"/qos/policies/%s/bandwidth-limit-rules/%s\""},{"line_number":434,"context_line":"    qos_rule_types_path \u003d \"/qos/rule-types\""},{"line_number":435,"context_line":"    qos_rule_type_path \u003d \"/qos/rule-types/%s\""},{"line_number":436,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3a50d1a3_0fe67516","line":433,"updated":"2015-07-30 15:14:52.000000000","message":"Why the resource path for \"qos_bandwidth_limit_rules_path\" and \"qos_bandwidth_limit_rule_path\" defined differently for \"bandwidth_limit_rules\". One is being defined as \"bandwidth_limit_rules\" while the other as \"bandwidth-limit-rules\". Is it intentional?","commit_id":"a09c9a8da9f5b483e5bce5ca0206163d6b2112f7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"35f7e75a6d81b16927be537702353c1a9db5baf4","unresolved":false,"context_lines":[{"line_number":430,"context_line":"    qos_policies_path \u003d \"/qos/policies\""},{"line_number":431,"context_line":"    qos_policy_path \u003d \"/qos/policies/%s\""},{"line_number":432,"context_line":"    qos_bandwidth_limit_rules_path \u003d \"/qos/policies/%s/bandwidth_limit_rules\""},{"line_number":433,"context_line":"    qos_bandwidth_limit_rule_path \u003d \"/qos/policies/%s/bandwidth-limit-rules/%s\""},{"line_number":434,"context_line":"    qos_rule_types_path \u003d \"/qos/rule-types\""},{"line_number":435,"context_line":"    qos_rule_type_path \u003d \"/qos/rule-types/%s\""},{"line_number":436,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3a50d1a3_6f5db978","line":433,"in_reply_to":"3a50d1a3_0fe67516","updated":"2015-07-30 15:18:23.000000000","message":"Yeah, it sucks a bit.","commit_id":"a09c9a8da9f5b483e5bce5ca0206163d6b2112f7"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"1eeb6368733b14f9ab77c5eb5011093b253ac9e2","unresolved":false,"context_lines":[{"line_number":430,"context_line":"    qos_policies_path \u003d \"/qos/policies\""},{"line_number":431,"context_line":"    qos_policy_path \u003d \"/qos/policies/%s\""},{"line_number":432,"context_line":"    qos_bandwidth_limit_rules_path \u003d \"/qos/policies/%s/bandwidth_limit_rules\""},{"line_number":433,"context_line":"    qos_bandwidth_limit_rule_path \u003d \"/qos/policies/%s/bandwidth-limit-rules/%s\""},{"line_number":434,"context_line":"    qos_rule_types_path \u003d \"/qos/rule-types\""},{"line_number":435,"context_line":"    qos_rule_type_path \u003d \"/qos/rule-types/%s\""},{"line_number":436,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3a50d1a3_5d6bb785","line":433,"in_reply_to":"3a50d1a3_6f5db978","updated":"2015-07-31 07:09:03.000000000","message":"This is actually a bug. Thanks! :)","commit_id":"a09c9a8da9f5b483e5bce5ca0206163d6b2112f7"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"12ff2b3ffbe72897d2b4bbff7a29ed293819d336","unresolved":false,"context_lines":[{"line_number":1642,"context_line":"        return self.delete(self.qos_policy_path % qos_policy)"},{"line_number":1643,"context_line":""},{"line_number":1644,"context_line":"    @APIParamsCall"},{"line_number":1645,"context_line":"    def list_qos_rule_types(self, retrieve_all\u003dTrue, **_params):"},{"line_number":1646,"context_line":"        \"\"\"List available qos rule types.\"\"\""},{"line_number":1647,"context_line":"        return self.list(\u0027rule_types\u0027, self.qos_rule_types_path,"},{"line_number":1648,"context_line":"                         retrieve_all, **_params)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a50d1a3_8f860515","line":1645,"updated":"2015-07-30 15:14:52.000000000","message":"Why we are leaving this alone having qos_xxx suffix :-) It would be good if we can change this as well.","commit_id":"a09c9a8da9f5b483e5bce5ca0206163d6b2112f7"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"1eeb6368733b14f9ab77c5eb5011093b253ac9e2","unresolved":false,"context_lines":[{"line_number":1642,"context_line":"        return self.delete(self.qos_policy_path % qos_policy)"},{"line_number":1643,"context_line":""},{"line_number":1644,"context_line":"    @APIParamsCall"},{"line_number":1645,"context_line":"    def list_qos_rule_types(self, retrieve_all\u003dTrue, **_params):"},{"line_number":1646,"context_line":"        \"\"\"List available qos rule types.\"\"\""},{"line_number":1647,"context_line":"        return self.list(\u0027rule_types\u0027, self.qos_rule_types_path,"},{"line_number":1648,"context_line":"                         retrieve_all, **_params)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a50d1a3_1d044fc4","line":1645,"in_reply_to":"3a50d1a3_4fcf9d29","updated":"2015-07-31 07:09:03.000000000","message":"Done","commit_id":"a09c9a8da9f5b483e5bce5ca0206163d6b2112f7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"35f7e75a6d81b16927be537702353c1a9db5baf4","unresolved":false,"context_lines":[{"line_number":1642,"context_line":"        return self.delete(self.qos_policy_path % qos_policy)"},{"line_number":1643,"context_line":""},{"line_number":1644,"context_line":"    @APIParamsCall"},{"line_number":1645,"context_line":"    def list_qos_rule_types(self, retrieve_all\u003dTrue, **_params):"},{"line_number":1646,"context_line":"        \"\"\"List available qos rule types.\"\"\""},{"line_number":1647,"context_line":"        return self.list(\u0027rule_types\u0027, self.qos_rule_types_path,"},{"line_number":1648,"context_line":"                         retrieve_all, **_params)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a50d1a3_4fcf9d29","line":1645,"in_reply_to":"3a50d1a3_8f860515","updated":"2015-07-30 15:18:23.000000000","message":"Yeah, it should be either all with qos or without.","commit_id":"a09c9a8da9f5b483e5bce5ca0206163d6b2112f7"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"23a3d48e15d66cdabfd3400dc9e091fd95e6328c","unresolved":false,"context_lines":[{"line_number":471,"context_line":"                     \u0027rbac_policies\u0027: \u0027rbac_policy\u0027,"},{"line_number":472,"context_line":"                     \u0027address_scopes\u0027: \u0027address_scope\u0027,"},{"line_number":473,"context_line":"                     \u0027qos_policies\u0027: \u0027qos_policy\u0027,"},{"line_number":474,"context_line":"                     \u0027policies\u0027: \u0027policy\u0027,"},{"line_number":475,"context_line":"                     \u0027bandwidth_limit_rules\u0027: \u0027bandwidth_limit_rule\u0027,"},{"line_number":476,"context_line":"                     \u0027rule_types\u0027: \u0027rule_type\u0027,"},{"line_number":477,"context_line":"                     }"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa1b9901_1b063b1d","line":474,"updated":"2015-08-20 10:01:32.000000000","message":"Is this line still needed?","commit_id":"104f7b3b52afb62fe7eed547ae033345d97d1c6a"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"8bd4861717a3ec4289995c5fa334e5770cd81941","unresolved":false,"context_lines":[{"line_number":471,"context_line":"                     \u0027rbac_policies\u0027: \u0027rbac_policy\u0027,"},{"line_number":472,"context_line":"                     \u0027address_scopes\u0027: \u0027address_scope\u0027,"},{"line_number":473,"context_line":"                     \u0027qos_policies\u0027: \u0027qos_policy\u0027,"},{"line_number":474,"context_line":"                     \u0027policies\u0027: \u0027policy\u0027,"},{"line_number":475,"context_line":"                     \u0027bandwidth_limit_rules\u0027: \u0027bandwidth_limit_rule\u0027,"},{"line_number":476,"context_line":"                     \u0027rule_types\u0027: \u0027rule_type\u0027,"},{"line_number":477,"context_line":"                     }"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa1b9901_9c1d5e64","line":474,"in_reply_to":"fa1b9901_1b063b1d","updated":"2015-08-20 10:02:13.000000000","message":"ignore ^, this was a leftover comment that I did on the other patch and it was clarified.","commit_id":"104f7b3b52afb62fe7eed547ae033345d97d1c6a"},{"author":{"_account_id":14033,"name":"James Reeves","email":"james.reeves5546@gmail.com","username":"trombongod"},"change_message_id":"9fa492689e02b948f5c37d7134bd2e6ff719c905","unresolved":false,"context_lines":[{"line_number":436,"context_line":"    qos_bandwidth_limit_rules_path \u003d \"/qos/policies/%s/bandwidth_limit_rules\""},{"line_number":437,"context_line":"    qos_bandwidth_limit_rule_path \u003d \"/qos/policies/%s/bandwidth_limit_rules/%s\""},{"line_number":438,"context_line":"    qos_rule_types_path \u003d \"/qos/rule-types\""},{"line_number":439,"context_line":"    qos_rule_type_path \u003d \"/qos/rule-types/%s\""},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"    # API has no way to report plurals, so we have to hard code them"},{"line_number":442,"context_line":"    EXTED_PLURALS \u003d {\u0027routers\u0027: \u0027router\u0027,"}],"source_content_type":"text/x-python","patch_set":26,"id":"fa1b9901_efe92c80","line":439,"updated":"2015-08-26 13:51:32.000000000","message":"It seems there\u0027s an inconsistency to the path. Some have underscores (bandwidth_limit_rules), but these two and others above sometimes use dashes....","commit_id":"31df9de28fe089af0c492b6becca5eb3d8f2676d"},{"author":{"_account_id":14033,"name":"James Reeves","email":"james.reeves5546@gmail.com","username":"trombongod"},"change_message_id":"0c3f96c8c0a3f34aacc955cc40d736b604f9cdb8","unresolved":false,"context_lines":[{"line_number":436,"context_line":"    qos_bandwidth_limit_rules_path \u003d \"/qos/policies/%s/bandwidth_limit_rules\""},{"line_number":437,"context_line":"    qos_bandwidth_limit_rule_path \u003d \"/qos/policies/%s/bandwidth_limit_rules/%s\""},{"line_number":438,"context_line":"    qos_rule_types_path \u003d \"/qos/rule-types\""},{"line_number":439,"context_line":"    qos_rule_type_path \u003d \"/qos/rule-types/%s\""},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"    # API has no way to report plurals, so we have to hard code them"},{"line_number":442,"context_line":"    EXTED_PLURALS \u003d {\u0027routers\u0027: \u0027router\u0027,"}],"source_content_type":"text/x-python","patch_set":26,"id":"da20952f_b357d8c9","line":439,"in_reply_to":"fa1b9901_2a9b9219","updated":"2015-08-26 17:23:28.000000000","message":"https://bugs.launchpad.net/neutron/+bug/1489085","commit_id":"31df9de28fe089af0c492b6becca5eb3d8f2676d"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"e5df5cc570a13d68c1f5f951e0a8eef91420abaf","unresolved":false,"context_lines":[{"line_number":436,"context_line":"    qos_bandwidth_limit_rules_path \u003d \"/qos/policies/%s/bandwidth_limit_rules\""},{"line_number":437,"context_line":"    qos_bandwidth_limit_rule_path \u003d \"/qos/policies/%s/bandwidth_limit_rules/%s\""},{"line_number":438,"context_line":"    qos_rule_types_path \u003d \"/qos/rule-types\""},{"line_number":439,"context_line":"    qos_rule_type_path \u003d \"/qos/rule-types/%s\""},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"    # API has no way to report plurals, so we have to hard code them"},{"line_number":442,"context_line":"    EXTED_PLURALS \u003d {\u0027routers\u0027: \u0027router\u0027,"}],"source_content_type":"text/x-python","patch_set":26,"id":"fa1b9901_2a9b9219","line":439,"in_reply_to":"fa1b9901_efe92c80","updated":"2015-08-26 14:04:02.000000000","message":"I agree. This seems like a bug on the server side. Do you mind opening a launchpad bug on this issue? :)","commit_id":"31df9de28fe089af0c492b6becca5eb3d8f2676d"}]}
