)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"36cde83cddda7dbb629a630496cff91fdde37108","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Need to do for QoS Rules, UT, etc..."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: If7460516a3b3e3ccb91f2e7becfe7335ff809bda"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa32b979_7a076481","line":11,"updated":"2015-06-23 11:38:08.000000000","message":"Add Ramanjaneya, etc as co-authors ? :)\nhttps://wiki.openstack.org/wiki/GitCommitMessages\n\n(use the Co-Authored-By: flag)","commit_id":"1c436522aea083b4f40ef0c0e1c3e1cdd65ad84b"}],"neutronclient/neutron/v2_0/network.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"4f750340f47227394cb26f816efdc68fed84c12e","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        body \u003d {\u0027network\u0027: {"},{"line_number":157,"context_line":"            \u0027name\u0027: parsed_args.name,"},{"line_number":158,"context_line":"            \u0027admin_state_up\u0027: parsed_args.admin_state}, }"},{"line_number":159,"context_line":"        neutronV20.update_dict(parsed_args, body[\u0027network\u0027],"},{"line_number":160,"context_line":"                               [\u0027shared\u0027, \u0027tenant_id\u0027, \u0027router:external\u0027,"},{"line_number":161,"context_line":"                                \u0027vlan_transparent\u0027,"},{"line_number":162,"context_line":"                                \u0027provider:network_type\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_e15f4b3f","line":159,"updated":"2015-07-01 10:11:44.000000000","message":"qos-policy could be a name or an id. please convert to id.","commit_id":"626edc64c3be83f3fb753544e1c045670da69164"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"4f750340f47227394cb26f816efdc68fed84c12e","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    resource \u003d \u0027network\u0027"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"class UpdateNetwork(neutronV20.UpdateCommand):"},{"line_number":176,"context_line":"    \"\"\"Update network\u0027s information.\"\"\""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    resource \u003d \u0027network\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_61b7bbd8","line":175,"updated":"2015-07-01 10:11:44.000000000","message":"I think we need to have dettach qos-policy option from network as well. Please confirm.","commit_id":"626edc64c3be83f3fb753544e1c045670da69164"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"74a1bd7cf616ece3bffd687b7e7975ff065548eb","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                                \u0027provider:segmentation_id\u0027])"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        if parsed_args.qos_policy:"},{"line_number":162,"context_line":"            if parsed_args.qos_policy \u003d\u003d \u0027None\u0027:"},{"line_number":163,"context_line":"                _qospolicy_id \u003d None"},{"line_number":164,"context_line":"            else:"},{"line_number":165,"context_line":"                _qospolicy_id \u003d neutronV20.find_resourceid_by_name_or_id("}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_187fcbe0","line":162,"updated":"2015-07-16 10:09:49.000000000","message":"I don\u0027t understand this - does it mean we can all \"--qos-policy None\" just to send None (that I believe is still represented as \"None\" string in http body).\n\nIf None means no policy is tied with given network, I think it makes more sense to just not define qos policy.","commit_id":"a1ce10eb0d289dcff712b98a29c234c5c47e611e"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"5064223247eecc69cb83a76f0ac94987ce1fb9b3","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                                \u0027provider:segmentation_id\u0027])"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        if parsed_args.qos_policy:"},{"line_number":162,"context_line":"            if parsed_args.qos_policy \u003d\u003d \u0027None\u0027:"},{"line_number":163,"context_line":"                _qospolicy_id \u003d None"},{"line_number":164,"context_line":"            else:"},{"line_number":165,"context_line":"                _qospolicy_id \u003d neutronV20.find_resourceid_by_name_or_id("}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_5bb30d4d","line":162,"in_reply_to":"9a41bdd9_187fcbe0","updated":"2015-07-16 10:17:42.000000000","message":"+","commit_id":"a1ce10eb0d289dcff712b98a29c234c5c47e611e"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"a4e721bec1eb0acc1a0b29a1dd8ab60e48e55678","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                                \u0027provider:segmentation_id\u0027])"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        if parsed_args.qos_policy:"},{"line_number":162,"context_line":"            if parsed_args.qos_policy \u003d\u003d \u0027None\u0027:"},{"line_number":163,"context_line":"                _qospolicy_id \u003d None"},{"line_number":164,"context_line":"            else:"},{"line_number":165,"context_line":"                _qospolicy_id \u003d neutronV20.find_resourceid_by_name_or_id("}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_047a0688","line":162,"in_reply_to":"9a41bdd9_5bb30d4d","updated":"2015-07-16 11:10:55.000000000","message":"@Jakub: We will remove this if-clause and parse whatever the user specifies. For removing qos-policy we have a separate \"no-qos-policy\" option in the update CLI.","commit_id":"a1ce10eb0d289dcff712b98a29c234c5c47e611e"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"4c0a23ef1140c8e09f97689194935a382a4008a4","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":185,"context_line":"        parser.add_argument("},{"line_number":186,"context_line":"            \u0027--qos-policy\u0027,"},{"line_number":187,"context_line":"            help\u003d_(\u0027Attach QoS policy ID or name to the network.\u0027))"},{"line_number":188,"context_line":"        parser.add_argument("},{"line_number":189,"context_line":"            \u0027--no-qos-policy\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_122256a3","line":186,"updated":"2015-07-16 04:41:47.000000000","message":"--qos-policy and --no-qos-policy are mutually exclusive. It is better to use parser.add_mutually_exclusive_group. For reference refer to \"https://github.com/openstack/python-neutronclient/blob/master/neutronclient/neutron/v2_0/subnetpool.py#L110\"","commit_id":"a1ce10eb0d289dcff712b98a29c234c5c47e611e"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"77c7a7e68d18a156125071be4778745ed6498f7c","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                                \u0027provider:segmentation_id\u0027])"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        if parsed_args.qos_policy:"},{"line_number":162,"context_line":"            _qospolicy_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":163,"context_line":"                self.get_client(), \u0027qos_policy\u0027,"},{"line_number":164,"context_line":"                parsed_args.qos_policy)"},{"line_number":165,"context_line":"            body[\u0027network\u0027].update({\u0027qos_policy_id\u0027: _qospolicy_id})"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a50d1a3_05b5cdec","line":162,"updated":"2015-07-21 06:18:26.000000000","message":"How about calling \"get_qos_policy_id\" API instead?","commit_id":"efeb57fc05e042fa89ddabc6c74f97f30bc0ea3b"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"77c7a7e68d18a156125071be4778745ed6498f7c","unresolved":false,"context_lines":[{"line_number":191,"context_line":"    def args2body(self, parsed_args):"},{"line_number":192,"context_line":"        body \u003d {\u0027network\u0027: {}}"},{"line_number":193,"context_line":"        if parsed_args.qos_policy:"},{"line_number":194,"context_line":"            _qospolicy_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":195,"context_line":"                self.get_client(), \u0027qos_policy\u0027,"},{"line_number":196,"context_line":"                parsed_args.qos_policy)"},{"line_number":197,"context_line":"            body[\u0027network\u0027].update({\u0027qos_policy_id\u0027: _qospolicy_id})"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a50d1a3_65be11d6","line":194,"updated":"2015-07-21 06:18:26.000000000","message":"How about calling \"get_qos_policy_id\" API instead?","commit_id":"efeb57fc05e042fa89ddabc6c74f97f30bc0ea3b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"53c63a665a9ccf32e1e648305d5ecad983391e40","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    resource \u003d \u0027network\u0027"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"class CreateNetwork(neutronV20.CreateCommand, qos_policy.CreateQosPolicyMixin):"},{"line_number":106,"context_line":"    \"\"\"Create a network for a given tenant.\"\"\""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    resource \u003d \u0027network\u0027"}],"source_content_type":"text/x-python","patch_set":28,"id":"1a4dcd0f_0cdfbed6","line":105,"updated":"2015-08-13 08:32:09.000000000","message":"I don\u0027t think usage of mixin is justified here. It\u0027s just to handle parameters and add_arguments_qos_policy doesn\u0027t even use \u0027self\u0027 which highlights the fact it should be rather a function instead of method.","commit_id":"f893f05ccbd15767bd2e4b14e4dacabbde78800c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"53c63a665a9ccf32e1e648305d5ecad983391e40","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                                \u0027provider:physical_network\u0027,"},{"line_number":159,"context_line":"                                \u0027provider:segmentation_id\u0027])"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        self.args2body_qos_policy(parsed_args, body[\u0027network\u0027])"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        return body"},{"line_number":164,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"1a4dcd0f_0cf6de5c","line":161,"updated":"2015-08-13 08:32:09.000000000","message":"This should be also changed to a function.","commit_id":"f893f05ccbd15767bd2e4b14e4dacabbde78800c"}],"neutronclient/neutron/v2_0/port.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"4f750340f47227394cb26f816efdc68fed84c12e","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        if parsed_args.binding_profile:"},{"line_number":256,"context_line":"            body[\u0027port\u0027].update({\u0027binding:profile\u0027:"},{"line_number":257,"context_line":"                                 jsonutils.loads(parsed_args.binding_profile)})"},{"line_number":258,"context_line":"        if parsed_args.qos_policy:"},{"line_number":259,"context_line":"            body[\u0027port\u0027].update({\u0027qos_policy\u0027: parsed_args.qos_policy})"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        self.args2body_secgroup(parsed_args, body[\u0027port\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_6119fb87","line":258,"updated":"2015-07-01 10:11:44.000000000","message":"qos-policy could be name or id. please convert it to id before proceeding.","commit_id":"626edc64c3be83f3fb753544e1c045670da69164"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"74a1bd7cf616ece3bffd687b7e7975ff065548eb","unresolved":false,"context_lines":[{"line_number":256,"context_line":"            body[\u0027port\u0027].update({\u0027binding:profile\u0027:"},{"line_number":257,"context_line":"                                 jsonutils.loads(parsed_args.binding_profile)})"},{"line_number":258,"context_line":"        if parsed_args.qos_policy:"},{"line_number":259,"context_line":"            if parsed_args.qos_policy \u003d\u003d \u0027None\u0027:"},{"line_number":260,"context_line":"                _qospolicy_id \u003d None"},{"line_number":261,"context_line":"            else:"},{"line_number":262,"context_line":"                _qospolicy_id \u003d neutronV20.find_resourceid_by_name_or_id("}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_98499b33","line":259,"updated":"2015-07-16 10:09:49.000000000","message":"This whole part is the same as in network module, you should make a function and call it instead of copy\u0026paste.","commit_id":"a1ce10eb0d289dcff712b98a29c234c5c47e611e"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"74a1bd7cf616ece3bffd687b7e7975ff065548eb","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                                 jsonutils.loads(parsed_args.binding_profile)})"},{"line_number":258,"context_line":"        if parsed_args.qos_policy:"},{"line_number":259,"context_line":"            if parsed_args.qos_policy \u003d\u003d \u0027None\u0027:"},{"line_number":260,"context_line":"                _qospolicy_id \u003d None"},{"line_number":261,"context_line":"            else:"},{"line_number":262,"context_line":"                _qospolicy_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":263,"context_line":"                    self.get_client(), \u0027policy\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_9870bb73","line":260,"updated":"2015-07-16 10:09:49.000000000","message":"I find the leading underscore misleading.","commit_id":"a1ce10eb0d289dcff712b98a29c234c5c47e611e"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1c51bdf7c7407d227a0aa38138f1e518c3487c0a","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                                 jsonutils.loads(parsed_args.binding_profile)})"},{"line_number":258,"context_line":"        if parsed_args.qos_policy:"},{"line_number":259,"context_line":"            if parsed_args.qos_policy \u003d\u003d \u0027None\u0027:"},{"line_number":260,"context_line":"                _qospolicy_id \u003d None"},{"line_number":261,"context_line":"            else:"},{"line_number":262,"context_line":"                _qospolicy_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":263,"context_line":"                    self.get_client(), \u0027policy\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_bba339ff","line":260,"updated":"2015-07-16 10:17:04.000000000","message":"Jakub noted to me privately that we should probably not send None on create since it\u0027s default. I agree with him.","commit_id":"a1ce10eb0d289dcff712b98a29c234c5c47e611e"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"58235fef2e57dcb41ee77a3c23b85f5234a96bce","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                                 jsonutils.loads(parsed_args.binding_profile)})"},{"line_number":258,"context_line":"        if parsed_args.qos_policy:"},{"line_number":259,"context_line":"            if parsed_args.qos_policy \u003d\u003d \u0027None\u0027:"},{"line_number":260,"context_line":"                _qospolicy_id \u003d None"},{"line_number":261,"context_line":"            else:"},{"line_number":262,"context_line":"                _qospolicy_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":263,"context_line":"                    self.get_client(), \u0027policy\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_54fc37b7","line":260,"in_reply_to":"9a41bdd9_44b32e4d","updated":"2015-07-16 12:38:17.000000000","message":"removed the if condition and keep the find_resourceid_by_name_or_id to update specific port/network","commit_id":"a1ce10eb0d289dcff712b98a29c234c5c47e611e"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"a4e721bec1eb0acc1a0b29a1dd8ab60e48e55678","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                                 jsonutils.loads(parsed_args.binding_profile)})"},{"line_number":258,"context_line":"        if parsed_args.qos_policy:"},{"line_number":259,"context_line":"            if parsed_args.qos_policy \u003d\u003d \u0027None\u0027:"},{"line_number":260,"context_line":"                _qospolicy_id \u003d None"},{"line_number":261,"context_line":"            else:"},{"line_number":262,"context_line":"                _qospolicy_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":263,"context_line":"                    self.get_client(), \u0027policy\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_44b32e4d","line":260,"in_reply_to":"9a41bdd9_bba339ff","updated":"2015-07-16 11:10:55.000000000","message":"@Ihar: We will correct it! Thanks Jakub for catching this!","commit_id":"a1ce10eb0d289dcff712b98a29c234c5c47e611e"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"4c0a23ef1140c8e09f97689194935a382a4008a4","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            choices\u003d[\u0027True\u0027, \u0027False\u0027],"},{"line_number":294,"context_line":"            help\u003dargparse.SUPPRESS)"},{"line_number":295,"context_line":"        parser.add_argument("},{"line_number":296,"context_line":"            \u0027--qos-policy\u0027,"},{"line_number":297,"context_line":"            help\u003d_(\u0027Attach QoS policy ID or name to the port.\u0027))"},{"line_number":298,"context_line":"        parser.add_argument("},{"line_number":299,"context_line":"            \u0027--no-qos-policy\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_b23daac5","line":296,"updated":"2015-07-16 04:41:47.000000000","message":"--qos-policy and --no-qos-policy are mutually exclusive. It is better to use parser.add_mutually_exclusive_group. For reference refer to \"https://github.com/openstack/python-neutronclient/blob/master/neutronclient/neutron/v2_0/subnetpool.py#L110\"","commit_id":"a1ce10eb0d289dcff712b98a29c234c5c47e611e"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"77c7a7e68d18a156125071be4778745ed6498f7c","unresolved":false,"context_lines":[{"line_number":256,"context_line":"            body[\u0027port\u0027].update({\u0027binding:profile\u0027:"},{"line_number":257,"context_line":"                                 jsonutils.loads(parsed_args.binding_profile)})"},{"line_number":258,"context_line":"        if parsed_args.qos_policy:"},{"line_number":259,"context_line":"            _qospolicy_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":260,"context_line":"                self.get_client(), \u0027qos_policy\u0027,"},{"line_number":261,"context_line":"                parsed_args.qos_policy)"},{"line_number":262,"context_line":"            body[\u0027port\u0027].update({\u0027qos_policy_id\u0027: _qospolicy_id})"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a50d1a3_05aced9e","line":259,"updated":"2015-07-21 06:18:26.000000000","message":"How about calling \"get_qos_policy_id\" API instead?","commit_id":"efeb57fc05e042fa89ddabc6c74f97f30bc0ea3b"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"77c7a7e68d18a156125071be4778745ed6498f7c","unresolved":false,"context_lines":[{"line_number":308,"context_line":"            body[\u0027port\u0027].update({\u0027admin_state_up\u0027:"},{"line_number":309,"context_line":"                                parsed_args.admin_state_up})"},{"line_number":310,"context_line":"        if parsed_args.qos_policy:"},{"line_number":311,"context_line":"            _qospolicy_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":312,"context_line":"                self.get_client(), \u0027qos_policy\u0027,"},{"line_number":313,"context_line":"                parsed_args.qos_policy)"},{"line_number":314,"context_line":"            body[\u0027port\u0027].update({\u0027qos_policy_id\u0027: _qospolicy_id})"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a50d1a3_25e1e9fe","line":311,"updated":"2015-07-21 06:18:26.000000000","message":"How about calling \"get_qos_policy_id\" API instead?","commit_id":"efeb57fc05e042fa89ddabc6c74f97f30bc0ea3b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0cb7c2e6139fe9b08067208bd2ed84e2e88cc5d6","unresolved":false,"context_lines":[{"line_number":311,"context_line":"            _qospolicy_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":312,"context_line":"                self.get_client(), \u0027qos_policy\u0027,"},{"line_number":313,"context_line":"                parsed_args.qos_policy)"},{"line_number":314,"context_line":"            body[\u0027port\u0027].update({\u0027qos_policy_id\u0027: _qospolicy_id})"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        if parsed_args.no_qos_policy:"},{"line_number":317,"context_line":"            body[\u0027port\u0027].update({\u0027qos_policy_id\u0027: None})"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a41bdd9_82227c00","line":314,"updated":"2015-07-16 14:28:30.000000000","message":"I don\u0027t understand why do we use update() here. If we have a single value to update it\u0027s better to use:\n\n body[\u0027port\u0027][\u0027qos_policy_id\u0027] \u003d qospolicy_id\n\nOr am I missing something?","commit_id":"efeb57fc05e042fa89ddabc6c74f97f30bc0ea3b"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"19ae9023355ca1c22f1b1c530ff263b8534885a3","unresolved":false,"context_lines":[{"line_number":311,"context_line":"            _qospolicy_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":312,"context_line":"                self.get_client(), \u0027qos_policy\u0027,"},{"line_number":313,"context_line":"                parsed_args.qos_policy)"},{"line_number":314,"context_line":"            body[\u0027port\u0027].update({\u0027qos_policy_id\u0027: _qospolicy_id})"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        if parsed_args.no_qos_policy:"},{"line_number":317,"context_line":"            body[\u0027port\u0027].update({\u0027qos_policy_id\u0027: None})"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a50d1a3_2c6311de","line":314,"in_reply_to":"3a50d1a3_0584edd1","updated":"2015-07-21 07:45:12.000000000","message":"I was also thinking in the same line.. How much we should take performance into consideration for the client code?","commit_id":"efeb57fc05e042fa89ddabc6c74f97f30bc0ea3b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"d43848af232d6d9b425b44a210326a2e32ff7af7","unresolved":false,"context_lines":[{"line_number":311,"context_line":"            _qospolicy_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":312,"context_line":"                self.get_client(), \u0027qos_policy\u0027,"},{"line_number":313,"context_line":"                parsed_args.qos_policy)"},{"line_number":314,"context_line":"            body[\u0027port\u0027].update({\u0027qos_policy_id\u0027: _qospolicy_id})"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        if parsed_args.no_qos_policy:"},{"line_number":317,"context_line":"            body[\u0027port\u0027].update({\u0027qos_policy_id\u0027: None})"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a50d1a3_0584edd1","line":314,"in_reply_to":"3a50d1a3_9154c321","updated":"2015-07-21 06:24:27.000000000","message":"I mean you don\u0027t need to change it here as it\u0027s all around the code. And also given that this is a client it doesn\u0027t have almost no impact. I was just wondering whether there is a reason or it\u0027s just a habit that we keep. :)","commit_id":"efeb57fc05e042fa89ddabc6c74f97f30bc0ea3b"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"4b2fe19da653986842bf7e9e61302d8edfa8c798","unresolved":false,"context_lines":[{"line_number":311,"context_line":"            _qospolicy_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":312,"context_line":"                self.get_client(), \u0027qos_policy\u0027,"},{"line_number":313,"context_line":"                parsed_args.qos_policy)"},{"line_number":314,"context_line":"            body[\u0027port\u0027].update({\u0027qos_policy_id\u0027: _qospolicy_id})"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        if parsed_args.no_qos_policy:"},{"line_number":317,"context_line":"            body[\u0027port\u0027].update({\u0027qos_policy_id\u0027: None})"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a41bdd9_8d811ffe","line":314,"in_reply_to":"9a41bdd9_82227c00","updated":"2015-07-17 10:31:00.000000000","message":"there is no difference, both is same.","commit_id":"efeb57fc05e042fa89ddabc6c74f97f30bc0ea3b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"1e229a5e6fd4b3c7e783130ade72049779d54576","unresolved":false,"context_lines":[{"line_number":311,"context_line":"            _qospolicy_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":312,"context_line":"                self.get_client(), \u0027qos_policy\u0027,"},{"line_number":313,"context_line":"                parsed_args.qos_policy)"},{"line_number":314,"context_line":"            body[\u0027port\u0027].update({\u0027qos_policy_id\u0027: _qospolicy_id})"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        if parsed_args.no_qos_policy:"},{"line_number":317,"context_line":"            body[\u0027port\u0027].update({\u0027qos_policy_id\u0027: None})"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a41bdd9_d3b586d0","line":314,"in_reply_to":"9a41bdd9_8d811ffe","updated":"2015-07-17 11:18:31.000000000","message":"There is significant difference in performance","commit_id":"efeb57fc05e042fa89ddabc6c74f97f30bc0ea3b"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"2ece87519317342d2eaad9fff737dddd9514607a","unresolved":false,"context_lines":[{"line_number":311,"context_line":"            _qospolicy_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":312,"context_line":"                self.get_client(), \u0027qos_policy\u0027,"},{"line_number":313,"context_line":"                parsed_args.qos_policy)"},{"line_number":314,"context_line":"            body[\u0027port\u0027].update({\u0027qos_policy_id\u0027: _qospolicy_id})"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        if parsed_args.no_qos_policy:"},{"line_number":317,"context_line":"            body[\u0027port\u0027].update({\u0027qos_policy_id\u0027: None})"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a50d1a3_9154c321","line":314,"in_reply_to":"9a41bdd9_d3b586d0","updated":"2015-07-21 04:05:15.000000000","message":"good catch","commit_id":"efeb57fc05e042fa89ddabc6c74f97f30bc0ea3b"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"2ece87519317342d2eaad9fff737dddd9514607a","unresolved":false,"context_lines":[{"line_number":314,"context_line":"            body[\u0027port\u0027].update({\u0027qos_policy_id\u0027: _qospolicy_id})"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        if parsed_args.no_qos_policy:"},{"line_number":317,"context_line":"            body[\u0027port\u0027].update({\u0027qos_policy_id\u0027: None})"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"        self.args2body_secgroup(parsed_args, body[\u0027port\u0027])"},{"line_number":320,"context_line":"        self.args2body_extradhcpopt(parsed_args, body[\u0027port\u0027])"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a50d1a3_5135dbf4","line":317,"updated":"2015-07-21 04:05:15.000000000","message":"ditto","commit_id":"efeb57fc05e042fa89ddabc6c74f97f30bc0ea3b"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"59ef8fb96bd670d358dfbaf40652fecc09b18f7d","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        if parsed_args.binding_profile:"},{"line_number":257,"context_line":"            body[\u0027port\u0027].update({\u0027binding:profile\u0027:"},{"line_number":258,"context_line":"                                 jsonutils.loads(parsed_args.binding_profile)})"},{"line_number":259,"context_line":"        if parsed_args.qos_policy:"},{"line_number":260,"context_line":"            _policy_id \u003d qos_policy.get_qos_policy_id(self.get_client(),"},{"line_number":261,"context_line":"                                                      parsed_args.qos_policy)"},{"line_number":262,"context_line":"            body[\u0027port\u0027][\u0027qos_policy_id\u0027] \u003d _policy_id"}],"source_content_type":"text/x-python","patch_set":24,"id":"1a4dcd0f_1be392a5","line":259,"updated":"2015-08-06 08:11:37.000000000","message":"sorry to be an ashhole and come with this now, but I believe for this we may use a mixin (a\u0027la UpdatePortSecGroupMixin) here.\n\nEven if I\u0027m not a lover of mixins, it\u0027s what we have here, and for a reduced scope it can work to isolate the feature to a different class.","commit_id":"ebbe1d0159e10a5655dd8e2549dc811e423413c3"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"4417898791b770af1dcb673f60a51a824996383c","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        if parsed_args.binding_profile:"},{"line_number":257,"context_line":"            body[\u0027port\u0027].update({\u0027binding:profile\u0027:"},{"line_number":258,"context_line":"                                 jsonutils.loads(parsed_args.binding_profile)})"},{"line_number":259,"context_line":"        if parsed_args.qos_policy:"},{"line_number":260,"context_line":"            _policy_id \u003d qos_policy.get_qos_policy_id(self.get_client(),"},{"line_number":261,"context_line":"                                                      parsed_args.qos_policy)"},{"line_number":262,"context_line":"            body[\u0027port\u0027][\u0027qos_policy_id\u0027] \u003d _policy_id"}],"source_content_type":"text/x-python","patch_set":24,"id":"1a4dcd0f_2c18961d","line":259,"in_reply_to":"1a4dcd0f_1be392a5","updated":"2015-08-06 08:49:09.000000000","message":"Not an asshole at all :)","commit_id":"ebbe1d0159e10a5655dd8e2549dc811e423413c3"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"53c63a665a9ccf32e1e648305d5ecad983391e40","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"class CreatePort(neutronV20.CreateCommand, UpdatePortSecGroupMixin,"},{"line_number":197,"context_line":"                 UpdateExtraDhcpOptMixin, qos_policy.CreateQosPolicyMixin):"},{"line_number":198,"context_line":"    \"\"\"Create a port for a given tenant.\"\"\""},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    resource \u003d \u0027port\u0027"}],"source_content_type":"text/x-python","patch_set":28,"id":"1a4dcd0f_6c9d2209","line":197,"updated":"2015-08-13 08:32:09.000000000","message":"Ah, now I get where the idea of mixins come :) I think we shouldn\u0027t continue with this bad habit.","commit_id":"f893f05ccbd15767bd2e4b14e4dacabbde78800c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"53c63a665a9ccf32e1e648305d5ecad983391e40","unresolved":false,"context_lines":[{"line_number":268,"context_line":""},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"class UpdatePort(neutronV20.UpdateCommand, UpdatePortSecGroupMixin,"},{"line_number":271,"context_line":"                 UpdateExtraDhcpOptMixin, qos_policy.UpdateQosPolicyMixin):"},{"line_number":272,"context_line":"    \"\"\"Update port\u0027s information.\"\"\""},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    resource \u003d \u0027port\u0027"}],"source_content_type":"text/x-python","patch_set":28,"id":"1a4dcd0f_2cb39a99","line":271,"updated":"2015-08-13 08:32:09.000000000","message":"Ditto","commit_id":"f893f05ccbd15767bd2e4b14e4dacabbde78800c"}],"neutronclient/neutron/v2_0/qos/policy.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"83f53db1ba3741e570d2fe8bd31d7f2ec63ca7f4","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":43,"context_line":"        parser.add_argument("},{"line_number":44,"context_line":"            \u0027--name\u0027,"},{"line_number":45,"context_line":"            help\u003d_(\u0027QoS policy name.\u0027))"},{"line_number":46,"context_line":"        parser.add_argument("},{"line_number":47,"context_line":"            \u0027--description\u0027,"},{"line_number":48,"context_line":"            help\u003d_(\u0027Description of the QoS policy.\u0027))"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba3cc151_0d5c7d7b","line":45,"updated":"2015-07-03 03:06:41.000000000","message":"Please check the help is consistent as other CLI\u0027s.","commit_id":"d8a8623b579819b3b5e175b7ce539b72c2ed7cbe"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"092794aaf2d190eaea16078d5c050cddee505755","unresolved":false,"context_lines":[{"line_number":21,"context_line":"class ListQoSPolicy(neutronv20.ListCommand):"},{"line_number":22,"context_line":"    \"\"\"List QoS policies that belong to a given tenant connection.\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    resource \u003d \u0027policy\u0027"},{"line_number":25,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027name\u0027]"},{"line_number":26,"context_line":"    _formatters \u003d {}"},{"line_number":27,"context_line":"    pagination_support \u003d True"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba3cc151_e754a2ff","line":24,"updated":"2015-07-10 11:40:52.000000000","message":"shadow_resource \u003d \u0027qos_policy\u0027\n\nI think would fix the \"Client\" naming issue.","commit_id":"3d69523e6c9d812616be89c0af0c93bb7d73d3c3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"1ca3a9c4f7a2617fd73bb1fa6e0e46c2e66b15f1","unresolved":false,"context_lines":[{"line_number":21,"context_line":"class ListQoSPolicy(neutronv20.ListCommand):"},{"line_number":22,"context_line":"    \"\"\"List QoS policies that belong to a given tenant connection.\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    resource \u003d \u0027policy\u0027"},{"line_number":25,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027name\u0027]"},{"line_number":26,"context_line":"    _formatters \u003d {}"},{"line_number":27,"context_line":"    pagination_support \u003d True"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a41bdd9_b9256f5d","line":24,"in_reply_to":"ba3cc151_e754a2ff","updated":"2015-07-11 04:50:33.000000000","message":"Or we can overload the \"run\" function to call the required API\u0027s directly. Needs to be done for all the below classes.","commit_id":"3d69523e6c9d812616be89c0af0c93bb7d73d3c3"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"092794aaf2d190eaea16078d5c050cddee505755","unresolved":false,"context_lines":[{"line_number":31,"context_line":"class ShowQoSPolicy(neutronv20.ShowCommand):"},{"line_number":32,"context_line":"    \"\"\"Show information of a given qos policy.\"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    resource \u003d \u0027policy\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class CreateQoSPolicy(neutronv20.CreateCommand):"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba3cc151_67497260","line":34,"updated":"2015-07-10 11:40:52.000000000","message":"ditto.","commit_id":"3d69523e6c9d812616be89c0af0c93bb7d73d3c3"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"092794aaf2d190eaea16078d5c050cddee505755","unresolved":false,"context_lines":[{"line_number":37,"context_line":"class CreateQoSPolicy(neutronv20.CreateCommand):"},{"line_number":38,"context_line":"    \"\"\"Create a qos policy.\"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    resource \u003d \u0027policy\u0027"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":43,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":17,"id":"ba3cc151_8746f64d","line":40,"updated":"2015-07-10 11:40:52.000000000","message":"ditto.","commit_id":"3d69523e6c9d812616be89c0af0c93bb7d73d3c3"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"092794aaf2d190eaea16078d5c050cddee505755","unresolved":false,"context_lines":[{"line_number":66,"context_line":"class UpdateQoSPolicy(neutronv20.UpdateCommand):"},{"line_number":67,"context_line":"    \"\"\"Update a given qos policy.\"\"\""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    resource \u003d \u0027policy\u0027"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":72,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":17,"id":"ba3cc151_077186a8","line":69,"updated":"2015-07-10 11:40:52.000000000","message":"ditto.","commit_id":"3d69523e6c9d812616be89c0af0c93bb7d73d3c3"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"092794aaf2d190eaea16078d5c050cddee505755","unresolved":false,"context_lines":[{"line_number":84,"context_line":"class DeleteQoSPolicy(neutronv20.DeleteCommand):"},{"line_number":85,"context_line":"    \"\"\"Delete a given qos policy.\"\"\""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    resource \u003d \u0027policy\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba3cc151_a7669aec","line":87,"updated":"2015-07-10 11:40:52.000000000","message":"ditto.","commit_id":"3d69523e6c9d812616be89c0af0c93bb7d73d3c3"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0e11927bd035317e945308e973e89a8202f635b3","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        body \u003d {self.resource: {\u0027name\u0027: parsed_args.name}, }"},{"line_number":60,"context_line":"        if parsed_args.description:"},{"line_number":61,"context_line":"            body[self.resource].update("},{"line_number":62,"context_line":"                {\u0027description\u0027: parsed_args.description})"},{"line_number":63,"context_line":"        if parsed_args.shared:"},{"line_number":64,"context_line":"            body[self.resource].update("},{"line_number":65,"context_line":"                {\u0027shared\u0027: parsed_args.shared})"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a50d1a3_87eee920","line":62,"updated":"2015-07-20 14:18:44.000000000","message":"tenant_id is missing? I had to specify it when using this patch and had keystone disabled.","commit_id":"efeb57fc05e042fa89ddabc6c74f97f30bc0ea3b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"f03dc4b1e66ff150706f2cd2ccb4f007348ae703","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def get_qos_policy_id(client, policy_id_or_name):"},{"line_number":22,"context_line":"    _policy_id \u003d (neutronv20.find_resourceid_by_name_or_id(client,"},{"line_number":23,"context_line":"                                                           \u0027qos_policy\u0027,"},{"line_number":24,"context_line":"                                                           policy_id_or_name))"},{"line_number":25,"context_line":"    return _policy_id"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_c0766905","line":22,"updated":"2015-07-23 09:18:32.000000000","message":"nit: not sure why we need those brackets","commit_id":"ca54b2d915036bf18098e66c394f6743a99c47ad"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"f03dc4b1e66ff150706f2cd2ccb4f007348ae703","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                   \u0027Set shared to True (default is False).\u0027))"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def args2body(self, parsed_args):"},{"line_number":66,"context_line":"        body \u003d {self.resource: {\u0027name\u0027: parsed_args.name}, }"},{"line_number":67,"context_line":"        if parsed_args.description:"},{"line_number":68,"context_line":"            body[self.resource].update("},{"line_number":69,"context_line":"                {\u0027description\u0027: parsed_args.description})"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_336d25cc","line":66,"updated":"2015-07-23 09:18:32.000000000","message":"here, we assume name is always passed. do we enforce the argument somehow to be present in the passed command?","commit_id":"ca54b2d915036bf18098e66c394f6743a99c47ad"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"7d07b8643edde79a04cbae4f8e3531c109af105e","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                   \u0027Set shared to True (default is False).\u0027))"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def args2body(self, parsed_args):"},{"line_number":66,"context_line":"        body \u003d {self.resource: {\u0027name\u0027: parsed_args.name}, }"},{"line_number":67,"context_line":"        if parsed_args.description:"},{"line_number":68,"context_line":"            body[self.resource].update("},{"line_number":69,"context_line":"                {\u0027description\u0027: parsed_args.description})"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_68664cbc","line":66,"in_reply_to":"3a50d1a3_336d25cc","updated":"2015-07-23 14:18:56.000000000","message":"Yes. it is mandatory argument, else command can not work through an error","commit_id":"ca54b2d915036bf18098e66c394f6743a99c47ad"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"55475ce8944e6fb5a8d3d7a4a7d3bcb7f7c8ed6c","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                {\u0027description\u0027: parsed_args.description})"},{"line_number":70,"context_line":"        if parsed_args.shared:"},{"line_number":71,"context_line":"            body[self.resource].update("},{"line_number":72,"context_line":"                {\u0027shared\u0027: parsed_args.shared})"},{"line_number":73,"context_line":"        return body"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_e224be0d","line":72,"updated":"2015-07-23 12:40:52.000000000","message":"Still missing tenant-id like I pointed out in previous PS.","commit_id":"ca54b2d915036bf18098e66c394f6743a99c47ad"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"7d07b8643edde79a04cbae4f8e3531c109af105e","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                {\u0027description\u0027: parsed_args.description})"},{"line_number":70,"context_line":"        if parsed_args.shared:"},{"line_number":71,"context_line":"            body[self.resource].update("},{"line_number":72,"context_line":"                {\u0027shared\u0027: parsed_args.shared})"},{"line_number":73,"context_line":"        return body"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_68fdecaf","line":72,"in_reply_to":"3a50d1a3_e224be0d","updated":"2015-07-23 14:18:56.000000000","message":"Will do the same","commit_id":"ca54b2d915036bf18098e66c394f6743a99c47ad"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"f03dc4b1e66ff150706f2cd2ccb4f007348ae703","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    shadow_resource \u003d \u0027qos_policy\u0027"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":83,"context_line":"        parser.add_argument("},{"line_number":84,"context_line":"            \u0027--description\u0027,"},{"line_number":85,"context_line":"            help\u003d_(\u0027Description of the QoS policy.\u0027))"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_b3b8552b","line":83,"updated":"2015-07-23 09:18:32.000000000","message":"No way to share an existing policy?","commit_id":"ca54b2d915036bf18098e66c394f6743a99c47ad"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"362ec7dc83706b0451b22621e329559d011ec62e","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    shadow_resource \u003d \u0027qos_policy\u0027"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":83,"context_line":"        parser.add_argument("},{"line_number":84,"context_line":"            \u0027--description\u0027,"},{"line_number":85,"context_line":"            help\u003d_(\u0027Description of the QoS policy.\u0027))"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_7ed5a2e2","line":83,"in_reply_to":"3a50d1a3_489ef063","updated":"2015-07-23 14:23:03.000000000","message":"Yes.","commit_id":"ca54b2d915036bf18098e66c394f6743a99c47ad"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"7d07b8643edde79a04cbae4f8e3531c109af105e","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    shadow_resource \u003d \u0027qos_policy\u0027"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":83,"context_line":"        parser.add_argument("},{"line_number":84,"context_line":"            \u0027--description\u0027,"},{"line_number":85,"context_line":"            help\u003d_(\u0027Description of the QoS policy.\u0027))"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_489ef063","line":83,"in_reply_to":"3a50d1a3_b3b8552b","updated":"2015-07-23 14:18:56.000000000","message":"Do you mean update shared parameter as well?","commit_id":"ca54b2d915036bf18098e66c394f6743a99c47ad"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"59ef8fb96bd670d358dfbaf40652fecc09b18f7d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"class ListQoSPolicy(neutronv20.ListCommand):"},{"line_number":29,"context_line":"    \"\"\"List QoS policies that belong to a given tenant connection.\"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    resource \u003d \u0027policy\u0027"},{"line_number":32,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027name\u0027]"},{"line_number":33,"context_line":"    pagination_support \u003d True"},{"line_number":34,"context_line":"    sorting_support \u003d True"}],"source_content_type":"text/x-python","patch_set":24,"id":"1a4dcd0f_4e439a42","line":31,"updated":"2015-08-06 08:11:37.000000000","message":"resource\u003d\u0027qos_policy\u0027\nshadow_resource \u003d \u0027policy\u0027\n\nThat makes you request qos_policy_* from client.","commit_id":"ebbe1d0159e10a5655dd8e2549dc811e423413c3"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"4417898791b770af1dcb673f60a51a824996383c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"class ListQoSPolicy(neutronv20.ListCommand):"},{"line_number":29,"context_line":"    \"\"\"List QoS policies that belong to a given tenant connection.\"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    resource \u003d \u0027policy\u0027"},{"line_number":32,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027name\u0027]"},{"line_number":33,"context_line":"    pagination_support \u003d True"},{"line_number":34,"context_line":"    sorting_support \u003d True"}],"source_content_type":"text/x-python","patch_set":24,"id":"1a4dcd0f_d1642b23","line":31,"in_reply_to":"1a4dcd0f_4e439a42","updated":"2015-08-06 08:49:09.000000000","message":"Actually it\u0027s supposed to be the other way around.\n\nDone.","commit_id":"ebbe1d0159e10a5655dd8e2549dc811e423413c3"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"f5d26629cde8bef61dc96fab8edf92110818dd43","unresolved":false,"context_lines":[{"line_number":28,"context_line":"class ListQoSPolicy(neutronv20.ListCommand):"},{"line_number":29,"context_line":"    \"\"\"List QoS policies that belong to a given tenant connection.\"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    resource \u003d \u0027policy\u0027"},{"line_number":32,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027name\u0027]"},{"line_number":33,"context_line":"    pagination_support \u003d True"},{"line_number":34,"context_line":"    sorting_support \u003d True"}],"source_content_type":"text/x-python","patch_set":24,"id":"1a4dcd0f_0e56f229","line":31,"in_reply_to":"1a4dcd0f_4e439a42","updated":"2015-08-06 08:41:57.000000000","message":"sorry,\n\nIt\u0027s the opposite:\n\nresource\u003d\u0027policy\u0027\n\nshadow_resource\u003d\u0027qos_policy\u0027","commit_id":"ebbe1d0159e10a5655dd8e2549dc811e423413c3"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4cbf9756c4b86503588308367598b3793ea97c56","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        qospolicy_args.add_argument("},{"line_number":34,"context_line":"            \u0027--no-qos-policy\u0027,"},{"line_number":35,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":36,"context_line":"            help\u003d_(\u0027Detach QoS policy from the resource.\u0027))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def args2body_qos_policy(self, parsed_args, resource):"},{"line_number":39,"context_line":"        if parsed_args.no_qos_policy:"}],"source_content_type":"text/x-python","patch_set":26,"id":"1a4dcd0f_3c92bff6","line":36,"updated":"2015-08-07 13:13:16.000000000","message":"My understanding is that now create operations will also have the --no-qos-policy. Is it what we want?","commit_id":"d923172173464c68fcfde81c7ef375e9e9478ce7"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"a539ef09fc41ac6c62960d304db115489db8bde4","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        qospolicy_args.add_argument("},{"line_number":34,"context_line":"            \u0027--no-qos-policy\u0027,"},{"line_number":35,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":36,"context_line":"            help\u003d_(\u0027Detach QoS policy from the resource.\u0027))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def args2body_qos_policy(self, parsed_args, resource):"},{"line_number":39,"context_line":"        if parsed_args.no_qos_policy:"}],"source_content_type":"text/x-python","patch_set":26,"id":"1a4dcd0f_792a7080","line":36,"in_reply_to":"1a4dcd0f_1b9ee062","updated":"2015-08-08 16:05:56.000000000","message":"I still feel that --no-qos-policy won\u0027t make sense during create as one can\u0027t remove a policy which had never been attached to the network before. It might create confusion\u0027s.","commit_id":"d923172173464c68fcfde81c7ef375e9e9478ce7"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"64ecf7b3d7ec8d386155a77f873cd5aa10e333e6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        qospolicy_args.add_argument("},{"line_number":34,"context_line":"            \u0027--no-qos-policy\u0027,"},{"line_number":35,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":36,"context_line":"            help\u003d_(\u0027Detach QoS policy from the resource.\u0027))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def args2body_qos_policy(self, parsed_args, resource):"},{"line_number":39,"context_line":"        if parsed_args.no_qos_policy:"}],"source_content_type":"text/x-python","patch_set":26,"id":"1a4dcd0f_1b9ee062","line":36,"in_reply_to":"1a4dcd0f_3c92bff6","updated":"2015-08-07 15:44:37.000000000","message":"Yes, this is intentional. I think it\u0027s more consistent and the code is easier to manage this way. Thoughts?","commit_id":"d923172173464c68fcfde81c7ef375e9e9478ce7"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"183eee9d98a37c832e5c2e585a68c1689323a403","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        qospolicy_args.add_argument("},{"line_number":34,"context_line":"            \u0027--no-qos-policy\u0027,"},{"line_number":35,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":36,"context_line":"            help\u003d_(\u0027Detach QoS policy from the resource.\u0027))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def args2body_qos_policy(self, parsed_args, resource):"},{"line_number":39,"context_line":"        if parsed_args.no_qos_policy:"}],"source_content_type":"text/x-python","patch_set":26,"id":"1a4dcd0f_e09fa14e","line":36,"in_reply_to":"1a4dcd0f_792a7080","updated":"2015-08-09 06:59:08.000000000","message":"Done","commit_id":"d923172173464c68fcfde81c7ef375e9e9478ce7"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"ef78e1acac02296bdb553509e1c1e357067692ba","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def args2body(self, parsed_args):"},{"line_number":96,"context_line":"        body \u003d {self.resource: {\u0027name\u0027: parsed_args.name}, }"},{"line_number":97,"context_line":"        if parsed_args.description:"},{"line_number":98,"context_line":"            body[self.resource].update("},{"line_number":99,"context_line":"                {\u0027description\u0027: parsed_args.description})"},{"line_number":100,"context_line":"        if parsed_args.shared:"},{"line_number":101,"context_line":"            body[self.resource].update("}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_88fce672","line":98,"updated":"2015-08-21 15:36:06.000000000","message":"use:\n\n  body[self.resource][\u0027description\u0027] \u003d ...","commit_id":"0e4eaa26f9ee829fccce343058906909a91a1e72"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"6ac6cb419f4cd040c7986ab99ca1ef24dd64e225","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def args2body(self, parsed_args):"},{"line_number":96,"context_line":"        body \u003d {self.resource: {\u0027name\u0027: parsed_args.name}, }"},{"line_number":97,"context_line":"        if parsed_args.description:"},{"line_number":98,"context_line":"            body[self.resource].update("},{"line_number":99,"context_line":"                {\u0027description\u0027: parsed_args.description})"},{"line_number":100,"context_line":"        if parsed_args.shared:"},{"line_number":101,"context_line":"            body[self.resource].update("}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_e5648fe6","line":98,"in_reply_to":"fa1b9901_08fbf647","updated":"2015-08-22 09:46:46.000000000","message":"@Cedric: Current python-neutronclient code is very inconsistent. I feel we can document some strict coding guidelines in this regard. Anyways, did you feel this deserve -1, if so then we must communicate the same to the community and avoid last minute rework before the code actually get accepted. \n\nAs a newcomer this becomes really frustrating as sometimes people got to rework after referring existing approved code.","commit_id":"0e4eaa26f9ee829fccce343058906909a91a1e72"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"6872f04ea5f489284d2c9a78762f6325be223e7a","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def args2body(self, parsed_args):"},{"line_number":96,"context_line":"        body \u003d {self.resource: {\u0027name\u0027: parsed_args.name}, }"},{"line_number":97,"context_line":"        if parsed_args.description:"},{"line_number":98,"context_line":"            body[self.resource].update("},{"line_number":99,"context_line":"                {\u0027description\u0027: parsed_args.description})"},{"line_number":100,"context_line":"        if parsed_args.shared:"},{"line_number":101,"context_line":"            body[self.resource].update("}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_be78cff9","line":98,"in_reply_to":"fa1b9901_3ef91fc9","updated":"2015-08-24 08:09:46.000000000","message":"Done","commit_id":"0e4eaa26f9ee829fccce343058906909a91a1e72"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"629580c4daaffab0f1676d8ea287080802e8433c","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def args2body(self, parsed_args):"},{"line_number":96,"context_line":"        body \u003d {self.resource: {\u0027name\u0027: parsed_args.name}, }"},{"line_number":97,"context_line":"        if parsed_args.description:"},{"line_number":98,"context_line":"            body[self.resource].update("},{"line_number":99,"context_line":"                {\u0027description\u0027: parsed_args.description})"},{"line_number":100,"context_line":"        if parsed_args.shared:"},{"line_number":101,"context_line":"            body[self.resource].update("}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_3ef91fc9","line":98,"in_reply_to":"fa1b9901_59ba06c2","updated":"2015-08-24 07:58:07.000000000","message":"Ok. Thanks","commit_id":"0e4eaa26f9ee829fccce343058906909a91a1e72"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"7777bc82efb88a49b691364c73ed8bf315518a5a","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def args2body(self, parsed_args):"},{"line_number":96,"context_line":"        body \u003d {self.resource: {\u0027name\u0027: parsed_args.name}, }"},{"line_number":97,"context_line":"        if parsed_args.description:"},{"line_number":98,"context_line":"            body[self.resource].update("},{"line_number":99,"context_line":"                {\u0027description\u0027: parsed_args.description})"},{"line_number":100,"context_line":"        if parsed_args.shared:"},{"line_number":101,"context_line":"            body[self.resource].update("}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_08fbf647","line":98,"in_reply_to":"fa1b9901_88fce672","updated":"2015-08-21 15:38:41.000000000","message":"deja vu from https://review.openstack.org/#/c/189655/19/neutronclient/neutron/v2_0/port.py :)","commit_id":"0e4eaa26f9ee829fccce343058906909a91a1e72"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"a31978d28f948d92a155579aed78b82f3c79c967","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def args2body(self, parsed_args):"},{"line_number":96,"context_line":"        body \u003d {self.resource: {\u0027name\u0027: parsed_args.name}, }"},{"line_number":97,"context_line":"        if parsed_args.description:"},{"line_number":98,"context_line":"            body[self.resource].update("},{"line_number":99,"context_line":"                {\u0027description\u0027: parsed_args.description})"},{"line_number":100,"context_line":"        if parsed_args.shared:"},{"line_number":101,"context_line":"            body[self.resource].update("}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_bf2a067d","line":98,"in_reply_to":"fa1b9901_be78cff9","updated":"2015-08-24 10:23:53.000000000","message":"Good catch.","commit_id":"0e4eaa26f9ee829fccce343058906909a91a1e72"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"b6381638a2728a51aef38acddec210664df96adb","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def args2body(self, parsed_args):"},{"line_number":96,"context_line":"        body \u003d {self.resource: {\u0027name\u0027: parsed_args.name}, }"},{"line_number":97,"context_line":"        if parsed_args.description:"},{"line_number":98,"context_line":"            body[self.resource].update("},{"line_number":99,"context_line":"                {\u0027description\u0027: parsed_args.description})"},{"line_number":100,"context_line":"        if parsed_args.shared:"},{"line_number":101,"context_line":"            body[self.resource].update("}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_59ba06c2","line":98,"in_reply_to":"fa1b9901_e5648fe6","updated":"2015-08-22 16:38:20.000000000","message":"Yes, imo, dict.update is miss-used in neutronclient code because of the quick and dirty copy/paste/adapt pattern. It should be avoided for the sake of readability/maintainability BUT it doesn\u0027t mean we should  add it in our coding guidelines because imo, it\u0027s obvious to prefer:\n\n  dictionary[key] \u003d value\n\nover:\n\n dictionary.update({key: value})\n\n\n\"last minute\"? Such remark has been done in PS19 by Jakub + the code must be rebased.","commit_id":"0e4eaa26f9ee829fccce343058906909a91a1e72"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"ef78e1acac02296bdb553509e1c1e357067692ba","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    def args2body(self, parsed_args):"},{"line_number":126,"context_line":"        body \u003d {self.resource: {}, }"},{"line_number":127,"context_line":"        if parsed_args.description:"},{"line_number":128,"context_line":"            body[self.resource].update("},{"line_number":129,"context_line":"                {\u0027description\u0027: parsed_args.description})"},{"line_number":130,"context_line":"        if parsed_args.shared:"},{"line_number":131,"context_line":"            body[self.resource].update("}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_28ecbab9","line":128,"updated":"2015-08-21 15:36:06.000000000","message":"ittos","commit_id":"0e4eaa26f9ee829fccce343058906909a91a1e72"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"6872f04ea5f489284d2c9a78762f6325be223e7a","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    def args2body(self, parsed_args):"},{"line_number":126,"context_line":"        body \u003d {self.resource: {}, }"},{"line_number":127,"context_line":"        if parsed_args.description:"},{"line_number":128,"context_line":"            body[self.resource].update("},{"line_number":129,"context_line":"                {\u0027description\u0027: parsed_args.description})"},{"line_number":130,"context_line":"        if parsed_args.shared:"},{"line_number":131,"context_line":"            body[self.resource].update("}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_de7d83e8","line":128,"in_reply_to":"fa1b9901_28ecbab9","updated":"2015-08-24 08:09:46.000000000","message":"Done","commit_id":"0e4eaa26f9ee829fccce343058906909a91a1e72"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57025e3ffe8b46e4a3cb437ef775bf2d28b5846c","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            \u0027--shared\u0027,"},{"line_number":118,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":119,"context_line":"            help\u003d_(\u0027Accessible by other tenants. \u0027"},{"line_number":120,"context_line":"                   \u0027Set shared to True (default is False).\u0027))"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def args2body(self, parsed_args):"},{"line_number":123,"context_line":"        body \u003d {self.resource: {}, }"}],"source_content_type":"text/x-python","patch_set":31,"id":"fa1b9901_dc88b624","line":120,"updated":"2015-08-26 11:57:33.000000000","message":"Can\u0027t we update \"name\"?","commit_id":"d357577cdc0445ead0a11d7e5fde9a67709a237c"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"d38be73eda19fd61a057990c8c8b1e02e8cdcec1","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            \u0027--shared\u0027,"},{"line_number":118,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":119,"context_line":"            help\u003d_(\u0027Accessible by other tenants. \u0027"},{"line_number":120,"context_line":"                   \u0027Set shared to True (default is False).\u0027))"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def args2body(self, parsed_args):"},{"line_number":123,"context_line":"        body \u003d {self.resource: {}, }"}],"source_content_type":"text/x-python","patch_set":31,"id":"fa1b9901_34053b10","line":120,"in_reply_to":"fa1b9901_dc88b624","updated":"2015-08-26 13:22:25.000000000","message":"Done","commit_id":"d357577cdc0445ead0a11d7e5fde9a67709a237c"}],"neutronclient/neutron/v2_0/qos/qospolicy.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"4f750340f47227394cb26f816efdc68fed84c12e","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            body[self.resource].update("},{"line_number":67,"context_line":"                {\u0027description\u0027: parsed_args.description}"},{"line_number":68,"context_line":"            )"},{"line_number":69,"context_line":"        if parsed_args.tenant_id:"},{"line_number":70,"context_line":"            # this way can be used to check if the attribute has"},{"line_number":71,"context_line":"            # been specified in the CLI. Default values need not"},{"line_number":72,"context_line":"            # be given here if user has not specified the attribute"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_7c30c09e","line":69,"updated":"2015-07-01 10:11:44.000000000","message":"As per the spec \"tenant_id\" is not taken from the user. please remove.","commit_id":"626edc64c3be83f3fb753544e1c045670da69164"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"4f750340f47227394cb26f816efdc68fed84c12e","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"class UpdateQosPolicy(neutronv20.UpdateCommand):"},{"line_number":81,"context_line":"    \"\"\"Update a given qos policy.\"\"\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    resource \u003d \u0027qos_policy\u0027"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_3c86b813","line":82,"updated":"2015-07-01 10:11:44.000000000","message":"Need to implement update as per the spec.\nneutron qos-policy-update  \u003cpolicy-name-or-id\u003e [--description ....]\n                            [--name ...]","commit_id":"626edc64c3be83f3fb753544e1c045670da69164"}],"neutronclient/neutron/v2_0/qos/qosrule.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"cabc1cf6786b2ade66ee48b28013f5a38835485f","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            \u0027--type\u0027,"},{"line_number":48,"context_line":"            help\u003d_(\u0027Type of QoS rule.\u0027))"},{"line_number":49,"context_line":"        parser.add_argument("},{"line_number":50,"context_line":"            \u0027--max_kbps\u0027,"},{"line_number":51,"context_line":"            help\u003d_(\u0027Description of the QoS policy.\u0027))"},{"line_number":52,"context_line":"        parser.add_argument("},{"line_number":53,"context_line":"            \u0027--max_burst_kbps\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_046e082f","line":50,"updated":"2015-06-23 07:15:11.000000000","message":"I think it is worth to split the general rule part from specific rule type part, to make it easily extendable for  future coming rule types","commit_id":"1c436522aea083b4f40ef0c0e1c3e1cdd65ad84b"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"36cde83cddda7dbb629a630496cff91fdde37108","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            \u0027--type\u0027,"},{"line_number":48,"context_line":"            help\u003d_(\u0027Type of QoS rule.\u0027))"},{"line_number":49,"context_line":"        parser.add_argument("},{"line_number":50,"context_line":"            \u0027--max_kbps\u0027,"},{"line_number":51,"context_line":"            help\u003d_(\u0027Description of the QoS policy.\u0027))"},{"line_number":52,"context_line":"        parser.add_argument("},{"line_number":53,"context_line":"            \u0027--max_burst_kbps\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_5a12a0b5","line":50,"in_reply_to":"fa32b979_046e082f","updated":"2015-06-23 11:38:08.000000000","message":"I think that we should certainly separate by type of rules, not only from the code perspective, but also, from the UX perspective, as the user may want to get help for specific --type\u0027s of rules.\n\nThe parser needs investigation to see how can we do such thing.","commit_id":"1c436522aea083b4f40ef0c0e1c3e1cdd65ad84b"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"cabc1cf6786b2ade66ee48b28013f5a38835485f","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            help\u003d_(\u0027Type of QoS rule.\u0027))"},{"line_number":49,"context_line":"        parser.add_argument("},{"line_number":50,"context_line":"            \u0027--max_kbps\u0027,"},{"line_number":51,"context_line":"            help\u003d_(\u0027Description of the QoS policy.\u0027))"},{"line_number":52,"context_line":"        parser.add_argument("},{"line_number":53,"context_line":"            \u0027--max_burst_kbps\u0027,"},{"line_number":54,"context_line":"            help\u003d_(\u0027Description of the QoS policy.\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_7a2fa188","line":51,"updated":"2015-06-23 07:15:11.000000000","message":"copy-paste?","commit_id":"1c436522aea083b4f40ef0c0e1c3e1cdd65ad84b"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"cabc1cf6786b2ade66ee48b28013f5a38835485f","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            help\u003d_(\u0027Description of the QoS policy.\u0027))"},{"line_number":52,"context_line":"        parser.add_argument("},{"line_number":53,"context_line":"            \u0027--max_burst_kbps\u0027,"},{"line_number":54,"context_line":"            help\u003d_(\u0027Description of the QoS policy.\u0027))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def args2body(self, parsed_args):"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_fa7091a6","line":54,"updated":"2015-06-23 07:15:11.000000000","message":"ditto","commit_id":"1c436522aea083b4f40ef0c0e1c3e1cdd65ad84b"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"146d05f42b8a36f51fdf1d870fdfe6bbb8aa6d4b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"class CreateQosRule(neutronv20.CreateCommand):"},{"line_number":38,"context_line":"    \"\"\"Create an qos rule.\"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    resource \u003d \u0027qos_rule\u0027"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":43,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_2edec26d","line":40,"updated":"2015-06-30 06:35:16.000000000","message":"The content is specific for qos_rate_limit_rule. Maybe what can be done is pluggable (from code perspective) arguments per rule_type. What do you think?","commit_id":"739653c31b199ad5f353c81f8fca529120f27dee"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"146d05f42b8a36f51fdf1d870fdfe6bbb8aa6d4b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            help\u003d_(\u0027Type of QoS rule.\u0027))"},{"line_number":49,"context_line":"        parser.add_argument("},{"line_number":50,"context_line":"            \u0027--max_kbps\u0027,"},{"line_number":51,"context_line":"            help\u003d_(\u0027Description of the QoS policy.\u0027))"},{"line_number":52,"context_line":"        parser.add_argument("},{"line_number":53,"context_line":"            \u0027--max_burst_kbps\u0027,"},{"line_number":54,"context_line":"            help\u003d_(\u0027Description of the QoS policy.\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_6bd11ccd","line":51,"updated":"2015-06-30 06:35:16.000000000","message":"please update the help string","commit_id":"739653c31b199ad5f353c81f8fca529120f27dee"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"146d05f42b8a36f51fdf1d870fdfe6bbb8aa6d4b","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            help\u003d_(\u0027Description of the QoS policy.\u0027))"},{"line_number":52,"context_line":"        parser.add_argument("},{"line_number":53,"context_line":"            \u0027--max_burst_kbps\u0027,"},{"line_number":54,"context_line":"            help\u003d_(\u0027Description of the QoS policy.\u0027))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def args2body(self, parsed_args):"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_4bd9b8f2","line":54,"updated":"2015-06-30 06:35:16.000000000","message":"ditto","commit_id":"739653c31b199ad5f353c81f8fca529120f27dee"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"3178f9e7e8f473c557c0fc9a8928ec95099dba7a","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            body[self.resource].update("},{"line_number":66,"context_line":"                {\u0027policy_name\u0027: parsed_args.policy_name}"},{"line_number":67,"context_line":"            )"},{"line_number":68,"context_line":"        if parsed_args.description:"},{"line_number":69,"context_line":"            body[self.resource].update("},{"line_number":70,"context_line":"                {\u0027type\u0027: parsed_args.type}"},{"line_number":71,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_4e5c664b","line":68,"updated":"2015-06-30 07:43:35.000000000","message":"The next following \u0027if\u0027 blocks can be merged to one.","commit_id":"739653c31b199ad5f353c81f8fca529120f27dee"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"3178f9e7e8f473c557c0fc9a8928ec95099dba7a","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            body[self.resource].update("},{"line_number":120,"context_line":"                {\u0027policy_name\u0027: parsed_args.policy_name}"},{"line_number":121,"context_line":"            )"},{"line_number":122,"context_line":"        if parsed_args.description:"},{"line_number":123,"context_line":"            body[self.resource].update("},{"line_number":124,"context_line":"                {\u0027type\u0027: parsed_args.type}"},{"line_number":125,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_ae31720d","line":122,"updated":"2015-06-30 07:43:35.000000000","message":"The next following \u0027if\u0027 blocks can be merged to one.","commit_id":"739653c31b199ad5f353c81f8fca529120f27dee"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"e336788ec95dde3eb71d9abf0fd9b844c2384e9b","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        body \u003d {self.resource: {}}"},{"line_number":78,"context_line":"        updatable_key_args2body(parsed_args, body)"},{"line_number":79,"context_line":"        if parsed_args.type \u003d\u003d \u0027bandwidth_limit\u0027:"},{"line_number":80,"context_line":"            updatable_bandwidth_limit_args2body(parsed_args, body)"},{"line_number":81,"context_line":"        else:"},{"line_number":82,"context_line":"            raise exceptions.CommandError(_(\"Invalid QoS rule type.\"))"},{"line_number":83,"context_line":"        return body"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_ee91a853","line":80,"updated":"2015-06-30 14:06:05.000000000","message":"Please check more on validation. What if the user choose this type and doesn\u0027t specify either max_kbps or max_burst_kbps?","commit_id":"be0fa3c6f8045025f35f738a0657e8736f64a31c"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"69fb6749499c94d14dbfd6c7b74764d7b634c091","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        body \u003d {self.resource: {}}"},{"line_number":78,"context_line":"        updatable_key_args2body(parsed_args, body)"},{"line_number":79,"context_line":"        if parsed_args.type \u003d\u003d \u0027bandwidth_limit\u0027:"},{"line_number":80,"context_line":"            updatable_bandwidth_limit_args2body(parsed_args, body)"},{"line_number":81,"context_line":"        else:"},{"line_number":82,"context_line":"            raise exceptions.CommandError(_(\"Invalid QoS rule type.\"))"},{"line_number":83,"context_line":"        return body"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_6ca9fdde","line":80,"in_reply_to":"ba3cc151_ee91a853","updated":"2015-07-01 04:30:40.000000000","message":"I am not sure if its common or not for validations to be applied here, but either way maybe it makes more sense to add validations on the API level so we have one place where they are checked.\n\nOf course, i guess for informative error printing its important to be here, so maybe its a good point","commit_id":"be0fa3c6f8045025f35f738a0657e8736f64a31c"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"4f750340f47227394cb26f816efdc68fed84c12e","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    resource_bandwidth_limit \u003d \u0027qos_bandwidth_limit_rules\u0027"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":93,"context_line":"        add_key_arguments(parser)"},{"line_number":94,"context_line":"        add_bandwidth_limit_arguments(parser)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def args2body(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_57def511","line":93,"updated":"2015-07-01 10:11:44.000000000","message":"no need to take policy-name. plz remove the key arguments from here.","commit_id":"626edc64c3be83f3fb753544e1c045670da69164"}],"neutronclient/shell.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"83f53db1ba3741e570d2fe8bd31d7f2ec63ca7f4","unresolved":false,"context_lines":[{"line_number":368,"context_line":"    \u0027qos-policy-create\u0027: qos_policy.CreatePolicy,"},{"line_number":369,"context_line":"    \u0027qos-policy-update\u0027: qos_policy.UpdatePolicy,"},{"line_number":370,"context_line":"    \u0027qos-policy-delete\u0027: qos_policy.DeletePolicy,"},{"line_number":371,"context_line":"    \u0027qos-rule-list\u0027: qos_bwrule.ListBandwidthLimitRule,"},{"line_number":372,"context_line":"    \u0027qos-rule-show\u0027: qos_bwrule.ShowBandwidthLimitRule,"},{"line_number":373,"context_line":"    \u0027qos-rule-create\u0027: qos_bwrule.CreateBandwidthLimitRule,"},{"line_number":374,"context_line":"    \u0027qos-rule-update\u0027: qos_bwrule.UpdateBandwidthLimitRule,"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba3cc151_0dd31dd6","line":371,"updated":"2015-07-03 03:06:41.000000000","message":"I don\u0027t feel this is the best way doing it. This leaves no room for other types in futrure.","commit_id":"d8a8623b579819b3b5e175b7ce539b72c2ed7cbe"}],"neutronclient/tests/unit/qos/test_cli20_policy.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"5c5028cd85f66d5f35174b1083c076749b0420f9","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        super(CLITestV20QoSPolicyJSON, self).setUp()"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def test_create_policy_with_only_keyattributes(self):"},{"line_number":29,"context_line":"        \"\"\"Create qos policy: abc.\"\"\""},{"line_number":30,"context_line":"        resource \u003d \u0027policy\u0027"},{"line_number":31,"context_line":"        cmd_resource \u003d \u0027qos_policy\u0027"},{"line_number":32,"context_line":"        cmd \u003d policy.CreateQoSPolicy(test_cli20.MyApp(sys.stdout),"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_28ac41ec","line":29,"updated":"2015-07-14 08:44:34.000000000","message":"in case you have another patch, both resource and cmd_resource can be defined in setUp and used by each method below","commit_id":"a1ce10eb0d289dcff712b98a29c234c5c47e611e"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"58235fef2e57dcb41ee77a3c23b85f5234a96bce","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        super(CLITestV20QoSPolicyJSON, self).setUp()"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def test_create_policy_with_only_keyattributes(self):"},{"line_number":29,"context_line":"        \"\"\"Create qos policy: abc.\"\"\""},{"line_number":30,"context_line":"        resource \u003d \u0027policy\u0027"},{"line_number":31,"context_line":"        cmd_resource \u003d \u0027qos_policy\u0027"},{"line_number":32,"context_line":"        cmd \u003d policy.CreateQoSPolicy(test_cli20.MyApp(sys.stdout),"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a41bdd9_d4a367b0","line":29,"in_reply_to":"9a41bdd9_28ac41ec","updated":"2015-07-16 12:38:17.000000000","message":"Done","commit_id":"a1ce10eb0d289dcff712b98a29c234c5c47e611e"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"f03dc4b1e66ff150706f2cd2ccb4f007348ae703","unresolved":false,"context_lines":[{"line_number":15,"context_line":"#"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import sys"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutronclient.neutron.v2_0.qos import policy as policy"},{"line_number":21,"context_line":"from neutronclient.tests.unit import test_cli20"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_134a6926","line":18,"updated":"2015-07-23 09:18:32.000000000","message":"nit: one empty newline between import sections is enough.","commit_id":"ca54b2d915036bf18098e66c394f6743a99c47ad"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"f03dc4b1e66ff150706f2cd2ccb4f007348ae703","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.ress \u003d \"policies\""},{"line_number":30,"context_line":"        self.cmd_ress \u003d \u0027qos_policies\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def test_create_policy_with_only_keyattributes(self):"},{"line_number":33,"context_line":"        \"\"\"Create qos policy: abc.\"\"\""},{"line_number":34,"context_line":"        cmd \u003d policy.CreateQoSPolicy(test_cli20.MyApp(sys.stdout),"},{"line_number":35,"context_line":"                                     None)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_3325255b","line":32,"updated":"2015-07-23 09:18:32.000000000","message":"you mean: key attributes \u003d\u003d mandatory attributes?","commit_id":"ca54b2d915036bf18098e66c394f6743a99c47ad"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"f03dc4b1e66ff150706f2cd2ccb4f007348ae703","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                                   cmd_resource\u003dself.cmd_res)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_create_policy_with_description(self):"},{"line_number":46,"context_line":"        \"\"\"Create qos policy: abc.\"\"\""},{"line_number":47,"context_line":"        cmd \u003d policy.CreateQoSPolicy(test_cli20.MyApp(sys.stdout),"},{"line_number":48,"context_line":"                                     None)"},{"line_number":49,"context_line":"        myid \u003d \u0027myid\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_b36b7584","line":46,"updated":"2015-07-23 09:18:32.000000000","message":"why are docstrings here and above identical?","commit_id":"ca54b2d915036bf18098e66c394f6743a99c47ad"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"f03dc4b1e66ff150706f2cd2ccb4f007348ae703","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                                   cmd_resource\u003dself.cmd_res)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def test_create_policy_with_unicode(self):"},{"line_number":74,"context_line":"        \"\"\"Create qos policy: u\u0027\\u7f51\\u7edc\u0027.\"\"\""},{"line_number":75,"context_line":"        cmd \u003d policy.CreateQoSPolicy(test_cli20.MyApp(sys.stdout),"},{"line_number":76,"context_line":"                                     None)"},{"line_number":77,"context_line":"        myid \u003d \u0027myid\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_f3ea5dda","line":74,"updated":"2015-07-23 09:18:32.000000000","message":"lol: I didn\u0027t know we support it. :)","commit_id":"ca54b2d915036bf18098e66c394f6743a99c47ad"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"f03dc4b1e66ff150706f2cd2ccb4f007348ae703","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                                   cmd_resource\u003dself.cmd_res)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_update_policy_description(self):"},{"line_number":97,"context_line":"        \"\"\"policy-update myid --name newname. --description newdesc\"\"\""},{"line_number":98,"context_line":"        cmd \u003d policy.UpdateQoSPolicy(test_cli20.MyApp(sys.stdout),"},{"line_number":99,"context_line":"                                     None)"},{"line_number":100,"context_line":"        self._test_update_resource(self.res, cmd, \u0027myid\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_73bdedd6","line":97,"updated":"2015-07-23 09:18:32.000000000","message":"redundant dot?","commit_id":"ca54b2d915036bf18098e66c394f6743a99c47ad"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"f03dc4b1e66ff150706f2cd2ccb4f007348ae703","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                                  cmd_resources\u003dself.cmd_ress)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def test_list_policies_pagination(self):"},{"line_number":113,"context_line":"        \"\"\"qos-policy-list.\"\"\""},{"line_number":114,"context_line":"        cmd \u003d policy.ListQoSPolicy(test_cli20.MyApp(sys.stdout),"},{"line_number":115,"context_line":"                                   None)"},{"line_number":116,"context_line":"        self._test_list_resources_with_pagination(self.ress, cmd,"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_d399617a","line":113,"updated":"2015-07-23 09:18:32.000000000","message":"duplicate docstring here and above","commit_id":"ca54b2d915036bf18098e66c394f6743a99c47ad"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"f03dc4b1e66ff150706f2cd2ccb4f007348ae703","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        self._test_show_resource(self.res, cmd, self.test_id, args,"},{"line_number":143,"context_line":"                                 [\u0027id\u0027], cmd_resource\u003dself.cmd_res)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def test_show_policy_id_name(self):"},{"line_number":146,"context_line":"        \"\"\"qos-policy-show.\"\"\""},{"line_number":147,"context_line":"        cmd \u003d policy.ShowQoSPolicy(test_cli20.MyApp(sys.stdout),"},{"line_number":148,"context_line":"                                   None)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_b375b532","line":145,"updated":"2015-07-23 09:18:32.000000000","message":"test_show_policy_name?","commit_id":"ca54b2d915036bf18098e66c394f6743a99c47ad"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"7f7108acad4f585ee88bb02d402e00d752447e3e","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                                   cmd_resource\u003dself.cmd_res)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_update_policy_description(self):"},{"line_number":96,"context_line":"        \"\"\"policy-update myid --name newname --description abc\"\"\""},{"line_number":97,"context_line":"        cmd \u003d policy.UpdateQoSPolicy(test_cli20.MyApp(sys.stdout),"},{"line_number":98,"context_line":"                                     None)"},{"line_number":99,"context_line":"        self._test_update_resource(self.res, cmd, \u0027myid\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"3a50d1a3_0458a189","line":96,"updated":"2015-07-30 12:52:02.000000000","message":"it\u0027s newdesc","commit_id":"d9118e88e6ad223f456357c84393d9489b8beaa8"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"73b7980cfe4f973329f8aa27077051be9f9dee0e","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                                   cmd_resource\u003dself.cmd_res)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_update_policy_description(self):"},{"line_number":96,"context_line":"        \"\"\"policy-update myid --name newname --description abc\"\"\""},{"line_number":97,"context_line":"        cmd \u003d policy.UpdateQoSPolicy(test_cli20.MyApp(sys.stdout),"},{"line_number":98,"context_line":"                                     None)"},{"line_number":99,"context_line":"        self._test_update_resource(self.res, cmd, \u0027myid\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"3a50d1a3_8686f214","line":96,"in_reply_to":"3a50d1a3_0458a189","updated":"2015-07-30 14:25:41.000000000","message":"Done","commit_id":"d9118e88e6ad223f456357c84393d9489b8beaa8"}],"neutronclient/tests/unit/test_cli20_network.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0cb7c2e6139fe9b08067208bd2ed84e2e88cc5d6","unresolved":false,"context_lines":[{"line_number":513,"context_line":"        cmd \u003d network.UpdateNetwork(test_cli20.MyApp(sys.stdout), None)"},{"line_number":514,"context_line":"        self._test_update_resource(resource, cmd, \u0027myid\u0027,"},{"line_number":515,"context_line":"                                   [\u0027myid\u0027, \u0027--no-qos-policy\u0027],"},{"line_number":516,"context_line":"                                   {\u0027qos_policy_id\u0027: None, })"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    def test_show_network(self):"},{"line_number":519,"context_line":"        \"\"\"Show net: --fields id --fields name myid.\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"9a41bdd9_42e1d499","line":516,"updated":"2015-07-16 14:28:30.000000000","message":"Maybe a test with \"--qos-policy \u0027foo\u0027 --no-qos-policy\" ?","commit_id":"efeb57fc05e042fa89ddabc6c74f97f30bc0ea3b"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"4b2fe19da653986842bf7e9e61302d8edfa8c798","unresolved":false,"context_lines":[{"line_number":513,"context_line":"        cmd \u003d network.UpdateNetwork(test_cli20.MyApp(sys.stdout), None)"},{"line_number":514,"context_line":"        self._test_update_resource(resource, cmd, \u0027myid\u0027,"},{"line_number":515,"context_line":"                                   [\u0027myid\u0027, \u0027--no-qos-policy\u0027],"},{"line_number":516,"context_line":"                                   {\u0027qos_policy_id\u0027: None, })"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    def test_show_network(self):"},{"line_number":519,"context_line":"        \"\"\"Show net: --fields id --fields name myid.\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"9a41bdd9_ad9d035b","line":516,"in_reply_to":"9a41bdd9_42e1d499","updated":"2015-07-17 10:31:00.000000000","message":"both are mutual exclusive, can not have test case with both.","commit_id":"efeb57fc05e042fa89ddabc6c74f97f30bc0ea3b"}],"neutronclient/v2_0/client.py":[{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"522ee059f59a2a6f4af222f61dc0d9ed6b5c9153","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/qos_policies\""},{"line_number":431,"context_line":"    qos_policy_path \u003d \"/qos/qos_policies/%s\""},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    # API has no way to report plurals, so we have to hard code them"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_5fe204a1","line":430,"updated":"2015-06-13 10:04:46.000000000","message":"I see this is not only to QoS and all the examples above use the same syntax, but i dont understand why the path need to have \"qos\" twice, for example why couldnt it be \"/qos/policy\"  or \"/qos/policies\"\n\nI think its implictly shows that these are qos policies..","commit_id":"7b94e121d81787fc31d5a73823ee64a383d7a00d"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"0cbcd5a301954878535569d6c11c3a9f57396a50","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/qos_policies\""},{"line_number":431,"context_line":"    qos_policy_path \u003d \"/qos/qos_policies/%s\""},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    # API has no way to report plurals, so we have to hard code them"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_d357ebc8","line":430,"in_reply_to":"fa32b979_5fe204a1","updated":"2015-06-15 10:48:11.000000000","message":"Yes, I totally agree, I guess if we did put that on the spec, we may amend it, I will check.\n\nThanks Gal for noting this!","commit_id":"7b94e121d81787fc31d5a73823ee64a383d7a00d"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"3178f9e7e8f473c557c0fc9a8928ec95099dba7a","unresolved":false,"context_lines":[{"line_number":1616,"context_line":""},{"line_number":1617,"context_line":"    @APIParamsCall"},{"line_number":1618,"context_line":"    def show_qos_policy(self, qos_policy, **_params):"},{"line_number":1619,"context_line":"        \"\"\"Fetches information of a certain qos policy.\"\"\""},{"line_number":1620,"context_line":"        return self.get(self.qos_policy_path % (qos_policy),"},{"line_number":1621,"context_line":"                        params\u003d_params)"},{"line_number":1622,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_6e6daa03","line":1619,"updated":"2015-06-30 07:43:35.000000000","message":"No need for the brackets when using a single string formatting argument. In other words, it is enough to do:\n\n return self.get(self.qos_policy_path % qos_policy,\n     params\u003d_params)","commit_id":"739653c31b199ad5f353c81f8fca529120f27dee"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"e336788ec95dde3eb71d9abf0fd9b844c2384e9b","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/qos_policies\""},{"line_number":431,"context_line":"    qos_policy_path \u003d \"/qos/qos_policies/%s\""},{"line_number":432,"context_line":"    qos_rules_path \u003d \"/qos/qos_rules\""},{"line_number":433,"context_line":"    qos_rule_path \u003d \"/qos/qos_rules/%s\""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_4eb774d8","line":430,"updated":"2015-06-30 14:06:05.000000000","message":"check the neutron-server patch for correct resource path.","commit_id":"be0fa3c6f8045025f35f738a0657e8736f64a31c"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"fb03b6ef0efd54d67d08e81d3ac0c040cb2e712c","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/qos_policies\""},{"line_number":431,"context_line":"    qos_policy_path \u003d \"/qos/qos_policies/%s\""},{"line_number":432,"context_line":"    qos_rules_path \u003d \"/qos/qos_rules\""},{"line_number":433,"context_line":"    qos_rule_path \u003d \"/qos/qos_rules/%s\""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba3cc151_6bd46abc","line":430,"updated":"2015-07-01 14:27:16.000000000","message":"\u0027/qos/qos_policies\u0027 -\u003e \u0027/qos/policies\u0027 to make most of the policy-related stuff interact in a good way with neutron.","commit_id":"773ec8a5f86a5d93ff19eb80ca16279afe7ebb57"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"fb03b6ef0efd54d67d08e81d3ac0c040cb2e712c","unresolved":false,"context_lines":[{"line_number":429,"context_line":"    net_partition_path \u003d \"/net-partitions/%s\""},{"line_number":430,"context_line":"    qos_policies_path \u003d \"/qos/qos_policies\""},{"line_number":431,"context_line":"    qos_policy_path \u003d \"/qos/qos_policies/%s\""},{"line_number":432,"context_line":"    qos_rules_path \u003d \"/qos/qos_rules\""},{"line_number":433,"context_line":"    qos_rule_path \u003d \"/qos/qos_rules/%s\""},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"    # API has no way to report plurals, so we have to hard code them"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba3cc151_ab511238","line":432,"updated":"2015-07-01 14:27:16.000000000","message":"Rules are more difficult. According to [1], the exact path to retrieve a rule belonging to a policy is: \"/v2.0/qos/policies/\u003cpolicy_id\u003e/bandwidth-limit-rules/\" (the bandwidth limit rules is a bit specifically used since that\u0027s the only one we have right now, but future rules will look the same.\n\nHow can we make this work according to this API?\n\n[1]: https://review.openstack.org/#/c/197004/8/specs/liberty/qos-api-extension.rst","commit_id":"773ec8a5f86a5d93ff19eb80ca16279afe7ebb57"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"02df643618020c59dad50b6fa152498b768c979c","unresolved":false,"context_lines":[{"line_number":429,"context_line":"    net_partition_path \u003d \"/net-partitions/%s\""},{"line_number":430,"context_line":"    qos_policies_path \u003d \"/qos/qos_policies\""},{"line_number":431,"context_line":"    qos_policy_path \u003d \"/qos/qos_policies/%s\""},{"line_number":432,"context_line":"    qos_rules_path \u003d \"/qos/qos_rules\""},{"line_number":433,"context_line":"    qos_rule_path \u003d \"/qos/qos_rules/%s\""},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"    # API has no way to report plurals, so we have to hard code them"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba3cc151_a27fe564","line":432,"in_reply_to":"ba3cc151_ab511238","updated":"2015-07-01 18:39:58.000000000","message":"The path we want is:\n\n qos_rule_path \u003d \"/qos/policies/%s/bandwidth-limit-rules\"\n\nWhere %s is the policy id. If we want to update/delete a rule, we want to do:\n\n qos_rule_path \u003d \"/qos/policies/%s/bandwidth-limit-rules/%s\"\n\nWhere the second %s is the rule id and the first is the policy id.\n\nDoing this will require small changes to the functions below that were changed, but will still work IMO. If you don\u0027t do another revision by tomorrow morning I\u0027ll see if I can save you some work here :)","commit_id":"773ec8a5f86a5d93ff19eb80ca16279afe7ebb57"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"186ba034fe85817436271ddf044b683c1acf26f1","unresolved":false,"context_lines":[{"line_number":1616,"context_line":"        return self.list(\u0027policies\u0027, self.qos_policies_path,"},{"line_number":1617,"context_line":"                         retrieve_all, **_params)"},{"line_number":1618,"context_line":""},{"line_number":1619,"context_line":"    #TODO(QoS): "},{"line_number":1620,"context_line":"    @APIParamsCall"},{"line_number":1621,"context_line":"    def show_policy(self, qos_policy, **_params):"},{"line_number":1622,"context_line":"        \"\"\"Fetches information of a certain qos policy.\"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"ba3cc151_15b3f4ea","line":1619,"updated":"2015-07-10 09:51:28.000000000","message":"run pep8?","commit_id":"72b954ccd4eee15cb291d9305088d87bc68bb125"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"a035a79e264b538007e8d39e93b9e07b0771122d","unresolved":false,"context_lines":[{"line_number":1535,"context_line":"                        (metering_label), params\u003d_params)"},{"line_number":1536,"context_line":""},{"line_number":1537,"context_line":"    @APIParamsCall"},{"line_number":1538,"context_line":"                                   "},{"line_number":1539,"context_line":"    def create_metering_label_rule(self, body\u003dNone):"},{"line_number":1540,"context_line":"        \"\"\"Creates a metering label rule.\"\"\""},{"line_number":1541,"context_line":"        return self.post(self.metering_label_rules_path, body\u003dbody)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a41bdd9_50ce115b","line":1538,"updated":"2015-07-14 06:35:24.000000000","message":"alignment not proper..?","commit_id":"3d69523e6c9d812616be89c0af0c93bb7d73d3c3"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"7f7108acad4f585ee88bb02d402e00d752447e3e","unresolved":false,"context_lines":[{"line_number":1605,"context_line":"        return self.delete(self.packet_filter_path % packet_filter_id)"},{"line_number":1606,"context_line":""},{"line_number":1607,"context_line":"    @APIParamsCall"},{"line_number":1608,"context_line":"    def list_policies(self, retrieve_all\u003dTrue, **_params):"},{"line_number":1609,"context_line":"        \"\"\"Fetches a list of all qos policies for a tenant.\"\"\""},{"line_number":1610,"context_line":"        # Pass filters in \"params\" argument to do_request"},{"line_number":1611,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"3a50d1a3_a4f76d58","line":1608,"updated":"2015-07-30 12:52:02.000000000","message":"Is it a concern that we don\u0027t have qos prefix here?","commit_id":"d9118e88e6ad223f456357c84393d9489b8beaa8"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"9dbe7df177aee5a951d9af4e275d872348335399","unresolved":false,"context_lines":[{"line_number":1605,"context_line":"        return self.delete(self.packet_filter_path % packet_filter_id)"},{"line_number":1606,"context_line":""},{"line_number":1607,"context_line":"    @APIParamsCall"},{"line_number":1608,"context_line":"    def list_policies(self, retrieve_all\u003dTrue, **_params):"},{"line_number":1609,"context_line":"        \"\"\"Fetches a list of all qos policies for a tenant.\"\"\""},{"line_number":1610,"context_line":"        # Pass filters in \"params\" argument to do_request"},{"line_number":1611,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"3a50d1a3_e018fe77","line":1608,"in_reply_to":"3a50d1a3_a4f76d58","updated":"2015-07-30 13:38:07.000000000","message":"I think it\u0027s always better to have the module prefix otherwise it\u0027s difficult to isolate the function as per their functionality.","commit_id":"d9118e88e6ad223f456357c84393d9489b8beaa8"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"73b7980cfe4f973329f8aa27077051be9f9dee0e","unresolved":false,"context_lines":[{"line_number":1605,"context_line":"        return self.delete(self.packet_filter_path % packet_filter_id)"},{"line_number":1606,"context_line":""},{"line_number":1607,"context_line":"    @APIParamsCall"},{"line_number":1608,"context_line":"    def list_policies(self, retrieve_all\u003dTrue, **_params):"},{"line_number":1609,"context_line":"        \"\"\"Fetches a list of all qos policies for a tenant.\"\"\""},{"line_number":1610,"context_line":"        # Pass filters in \"params\" argument to do_request"},{"line_number":1611,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"3a50d1a3_26911e53","line":1608,"in_reply_to":"3a50d1a3_e018fe77","updated":"2015-07-30 14:25:41.000000000","message":"Normally I would agree. However, this complicates things greatly once we start dealing with qos rules. The real reason is really complicated and has to do with the fact that the rules expect a resource named \u0027policies\u0027, so it looks for that resource by executing \u0027list_policies\u0027, etc. If we change this to be \u0027list_qos_policies\u0027, the resource will need to be \u0027qos_policies\u0027, meaning we have to change the API server for that.\n\nLong story short, I\u0027m leaving this as is and I\u0027ll add a comment explaining that this is actually qos\u0027 policies we\u0027re dealing with.","commit_id":"d9118e88e6ad223f456357c84393d9489b8beaa8"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"59ef8fb96bd670d358dfbaf40652fecc09b18f7d","unresolved":false,"context_lines":[{"line_number":1607,"context_line":"    # NOTE: The next 5 methods are for Neutron\u0027s QoS. The naming is not"},{"line_number":1608,"context_line":"    #       \u0027list_qos_policies\u0027 because of plurals discrepancies."},{"line_number":1609,"context_line":"    @APIParamsCall"},{"line_number":1610,"context_line":"    def list_policies(self, retrieve_all\u003dTrue, **_params):"},{"line_number":1611,"context_line":"        \"\"\"Fetches a list of all qos policies for a tenant.\"\"\""},{"line_number":1612,"context_line":"        # Pass filters in \"params\" argument to do_request"},{"line_number":1613,"context_line":"        return self.list(\u0027policies\u0027, self.qos_policies_path,"}],"source_content_type":"text/x-python","patch_set":24,"id":"1a4dcd0f_6e39b6d6","line":1610,"updated":"2015-08-06 08:11:37.000000000","message":"you can use the shadow_resource field (in addition to resource) in the other classes to force here list_qos_policies, show_qos_policies, etc...\n\notherwise the \"Client\" class, which is something others use programatically not via CLI, becomes very confusing.\n\n\nhttps://github.com/openstack/python-neutronclient/blob/master/neutronclient/neutron/v2_0/lb/v2/member.py#L44","commit_id":"ebbe1d0159e10a5655dd8e2549dc811e423413c3"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"4417898791b770af1dcb673f60a51a824996383c","unresolved":false,"context_lines":[{"line_number":1607,"context_line":"    # NOTE: The next 5 methods are for Neutron\u0027s QoS. The naming is not"},{"line_number":1608,"context_line":"    #       \u0027list_qos_policies\u0027 because of plurals discrepancies."},{"line_number":1609,"context_line":"    @APIParamsCall"},{"line_number":1610,"context_line":"    def list_policies(self, retrieve_all\u003dTrue, **_params):"},{"line_number":1611,"context_line":"        \"\"\"Fetches a list of all qos policies for a tenant.\"\"\""},{"line_number":1612,"context_line":"        # Pass filters in \"params\" argument to do_request"},{"line_number":1613,"context_line":"        return self.list(\u0027policies\u0027, self.qos_policies_path,"}],"source_content_type":"text/x-python","patch_set":24,"id":"1a4dcd0f_d1bd0b69","line":1610,"in_reply_to":"1a4dcd0f_6e39b6d6","updated":"2015-08-06 08:49:09.000000000","message":"Done","commit_id":"ebbe1d0159e10a5655dd8e2549dc811e423413c3"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"5da93fec9553800dfd6cba51c2991b5067d8aa4c","unresolved":false,"context_lines":[{"line_number":461,"context_line":"                     \u0027lbaas_members\u0027: \u0027lbaas_member\u0027,"},{"line_number":462,"context_line":"                     \u0027healthmonitors\u0027: \u0027healthmonitor\u0027,"},{"line_number":463,"context_line":"                     \u0027qos_policies\u0027: \u0027qos_policy\u0027,"},{"line_number":464,"context_line":"                     \u0027policies\u0027: \u0027policy\u0027,"},{"line_number":465,"context_line":"                     }"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    @APIParamsCall"}],"source_content_type":"text/x-python","patch_set":25,"id":"1a4dcd0f_0cc35aee","line":464,"updated":"2015-08-06 09:02:19.000000000","message":"Do we need this final entry anymore? (I\u0027m not sure).","commit_id":"461b74cccf9c9f142556804144021fc05f89d8c2"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"865e4f0b7016ad46d140ab0c7e4c2bb7cf4ad419","unresolved":false,"context_lines":[{"line_number":461,"context_line":"                     \u0027lbaas_members\u0027: \u0027lbaas_member\u0027,"},{"line_number":462,"context_line":"                     \u0027healthmonitors\u0027: \u0027healthmonitor\u0027,"},{"line_number":463,"context_line":"                     \u0027qos_policies\u0027: \u0027qos_policy\u0027,"},{"line_number":464,"context_line":"                     \u0027policies\u0027: \u0027policy\u0027,"},{"line_number":465,"context_line":"                     }"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    @APIParamsCall"}],"source_content_type":"text/x-python","patch_set":25,"id":"1a4dcd0f_a7792184","line":464,"in_reply_to":"1a4dcd0f_0cc35aee","updated":"2015-08-06 09:05:18.000000000","message":"We do, because the JSON key we are getting is \u0027policies\u0027 and we pass the singular \u0027policy\u0027 (need to know to pluralize it).","commit_id":"461b74cccf9c9f142556804144021fc05f89d8c2"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"5da93fec9553800dfd6cba51c2991b5067d8aa4c","unresolved":false,"context_lines":[{"line_number":1605,"context_line":"        return self.delete(self.packet_filter_path % packet_filter_id)"},{"line_number":1606,"context_line":""},{"line_number":1607,"context_line":"    # NOTE: The next 5 methods are for Neutron\u0027s QoS. The naming is not"},{"line_number":1608,"context_line":"    #       \u0027list_qos_policies\u0027 because of plurals discrepancies."},{"line_number":1609,"context_line":"    @APIParamsCall"},{"line_number":1610,"context_line":"    def list_qos_policies(self, retrieve_all\u003dTrue, **_params):"},{"line_number":1611,"context_line":"        \"\"\"Fetches a list of all qos policies for a tenant.\"\"\""}],"source_content_type":"text/x-python","patch_set":25,"id":"1a4dcd0f_cca1f247","line":1608,"updated":"2015-08-06 09:02:19.000000000","message":"Isn\u0027t the note obsolete?\n\nI see list_qos_policies    :-? :) and note say it\u0027s not.","commit_id":"461b74cccf9c9f142556804144021fc05f89d8c2"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"865e4f0b7016ad46d140ab0c7e4c2bb7cf4ad419","unresolved":false,"context_lines":[{"line_number":1605,"context_line":"        return self.delete(self.packet_filter_path % packet_filter_id)"},{"line_number":1606,"context_line":""},{"line_number":1607,"context_line":"    # NOTE: The next 5 methods are for Neutron\u0027s QoS. The naming is not"},{"line_number":1608,"context_line":"    #       \u0027list_qos_policies\u0027 because of plurals discrepancies."},{"line_number":1609,"context_line":"    @APIParamsCall"},{"line_number":1610,"context_line":"    def list_qos_policies(self, retrieve_all\u003dTrue, **_params):"},{"line_number":1611,"context_line":"        \"\"\"Fetches a list of all qos policies for a tenant.\"\"\""}],"source_content_type":"text/x-python","patch_set":25,"id":"1a4dcd0f_c77ead69","line":1608,"in_reply_to":"1a4dcd0f_cca1f247","updated":"2015-08-06 09:05:18.000000000","message":"Yes it is, removed :)","commit_id":"461b74cccf9c9f142556804144021fc05f89d8c2"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"d03390c34daee42bb61e8020756688ad43764bf0","unresolved":false,"context_lines":[{"line_number":467,"context_line":"                     \u0027rbac_policies\u0027: \u0027rbac_policy\u0027,"},{"line_number":468,"context_line":"                     \u0027address_scopes\u0027: \u0027address_scope\u0027,"},{"line_number":469,"context_line":"                     \u0027qos_policies\u0027: \u0027qos_policy\u0027,"},{"line_number":470,"context_line":"                     \u0027policies\u0027: \u0027policy\u0027,"},{"line_number":471,"context_line":"                     }"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"    @APIParamsCall"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_9b4a4b25","line":470,"updated":"2015-08-20 07:55:56.000000000","message":"O crap, hate me: do we still need this one?.","commit_id":"0e4eaa26f9ee829fccce343058906909a91a1e72"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"f98ccf7f2653d270cfa7f68bab82e3b8d0ca10d1","unresolved":false,"context_lines":[{"line_number":467,"context_line":"                     \u0027rbac_policies\u0027: \u0027rbac_policy\u0027,"},{"line_number":468,"context_line":"                     \u0027address_scopes\u0027: \u0027address_scope\u0027,"},{"line_number":469,"context_line":"                     \u0027qos_policies\u0027: \u0027qos_policy\u0027,"},{"line_number":470,"context_line":"                     \u0027policies\u0027: \u0027policy\u0027,"},{"line_number":471,"context_line":"                     }"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"    @APIParamsCall"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_dbad239c","line":470,"in_reply_to":"fa1b9901_9b4a4b25","updated":"2015-08-20 07:58:55.000000000","message":"Yes, since the API server returns the resource as \u0027policies\u0027 (and not \u0027qos_policies\u0027), we need to define the resource explicitly, and also have the ability to convert it from singular to plural.","commit_id":"0e4eaa26f9ee829fccce343058906909a91a1e72"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"ed6197ff9569975f6a3cebcd243fef6f544d020b","unresolved":false,"context_lines":[{"line_number":467,"context_line":"                     \u0027rbac_policies\u0027: \u0027rbac_policy\u0027,"},{"line_number":468,"context_line":"                     \u0027address_scopes\u0027: \u0027address_scope\u0027,"},{"line_number":469,"context_line":"                     \u0027qos_policies\u0027: \u0027qos_policy\u0027,"},{"line_number":470,"context_line":"                     \u0027policies\u0027: \u0027policy\u0027,"},{"line_number":471,"context_line":"                     }"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"    @APIParamsCall"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_c1b8cd77","line":470,"in_reply_to":"fa1b9901_dbad239c","updated":"2015-08-20 10:00:02.000000000","message":"thanks :)","commit_id":"0e4eaa26f9ee829fccce343058906909a91a1e72"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57025e3ffe8b46e4a3cb437ef775bf2d28b5846c","unresolved":false,"context_lines":[{"line_number":466,"context_line":"                     \u0027healthmonitors\u0027: \u0027healthmonitor\u0027,"},{"line_number":467,"context_line":"                     \u0027rbac_policies\u0027: \u0027rbac_policy\u0027,"},{"line_number":468,"context_line":"                     \u0027address_scopes\u0027: \u0027address_scope\u0027,"},{"line_number":469,"context_line":"                     \u0027qos_policies\u0027: \u0027qos_policy\u0027,"},{"line_number":470,"context_line":"                     \u0027policies\u0027: \u0027policy\u0027,"},{"line_number":471,"context_line":"                     }"},{"line_number":472,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"fa1b9901_0e37c94d","line":469,"updated":"2015-08-26 11:57:33.000000000","message":"question: Who refers to \"qos_policy\"?\nIn the method below, \"policies\" (policy) is used, so I just wonder qos_policies is necessary or not.","commit_id":"d357577cdc0445ead0a11d7e5fde9a67709a237c"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"d38be73eda19fd61a057990c8c8b1e02e8cdcec1","unresolved":false,"context_lines":[{"line_number":466,"context_line":"                     \u0027healthmonitors\u0027: \u0027healthmonitor\u0027,"},{"line_number":467,"context_line":"                     \u0027rbac_policies\u0027: \u0027rbac_policy\u0027,"},{"line_number":468,"context_line":"                     \u0027address_scopes\u0027: \u0027address_scope\u0027,"},{"line_number":469,"context_line":"                     \u0027qos_policies\u0027: \u0027qos_policy\u0027,"},{"line_number":470,"context_line":"                     \u0027policies\u0027: \u0027policy\u0027,"},{"line_number":471,"context_line":"                     }"},{"line_number":472,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"fa1b9901_f1a03544","line":469,"in_reply_to":"fa1b9901_0e37c94d","updated":"2015-08-26 13:22:25.000000000","message":"This is needed for a correct function-name-translation. For example without this, list_qos_policys is searched for (instead of the proper list_qos_policies).","commit_id":"d357577cdc0445ead0a11d7e5fde9a67709a237c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b9ea338102807501d90e430ac91c99175bb0a8e9","unresolved":false,"context_lines":[{"line_number":466,"context_line":"                     \u0027healthmonitors\u0027: \u0027healthmonitor\u0027,"},{"line_number":467,"context_line":"                     \u0027rbac_policies\u0027: \u0027rbac_policy\u0027,"},{"line_number":468,"context_line":"                     \u0027address_scopes\u0027: \u0027address_scope\u0027,"},{"line_number":469,"context_line":"                     \u0027qos_policies\u0027: \u0027qos_policy\u0027,"},{"line_number":470,"context_line":"                     \u0027policies\u0027: \u0027policy\u0027,"},{"line_number":471,"context_line":"                     }"},{"line_number":472,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"fa1b9901_74fdf3af","line":469,"in_reply_to":"fa1b9901_f1a03544","updated":"2015-08-26 13:25:50.000000000","message":"I see. Thanks.","commit_id":"d357577cdc0445ead0a11d7e5fde9a67709a237c"}]}
