)]}'
{"neutronclient/neutron/v2_0/__init__.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"be3a2f98f0a6b6a6c53260a884528ca99b83a2a6","unresolved":false,"context_lines":[{"line_number":568,"context_line":"    api \u003d \u0027network\u0027"},{"line_number":569,"context_line":"    log \u003d None"},{"line_number":570,"context_line":"    allow_names \u003d True"},{"line_number":571,"context_line":"    bulk_delete \u003d False"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    def get_parser(self, prog_name):"},{"line_number":574,"context_line":"        parser \u003d super(DeleteCommand, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_a44ca942","line":571,"updated":"2016-01-11 18:00:19.000000000","message":"In what cases do we need to set bulk_delete to False?\n\nAPI delete operation will be issued per resource, so I think all resources support bulk_delete. Why do we need bulk_delete\u003dfalse?","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"de819770f53d97f1d605de19d5c88f754552b858","unresolved":false,"context_lines":[{"line_number":568,"context_line":"    api \u003d \u0027network\u0027"},{"line_number":569,"context_line":"    log \u003d None"},{"line_number":570,"context_line":"    allow_names \u003d True"},{"line_number":571,"context_line":"    bulk_delete \u003d False"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    def get_parser(self, prog_name):"},{"line_number":574,"context_line":"        parser \u003d super(DeleteCommand, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6ed579_9ba32db2","line":571,"in_reply_to":"da6ed579_9702a63d","updated":"2016-01-14 09:28:02.000000000","message":"Done","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"411094ebcbc712107f0fb7e2b9bc493820239389","unresolved":false,"context_lines":[{"line_number":568,"context_line":"    api \u003d \u0027network\u0027"},{"line_number":569,"context_line":"    log \u003d None"},{"line_number":570,"context_line":"    allow_names \u003d True"},{"line_number":571,"context_line":"    bulk_delete \u003d False"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    def get_parser(self, prog_name):"},{"line_number":574,"context_line":"        parser \u003d super(DeleteCommand, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6ed579_9702a63d","line":571,"in_reply_to":"fa69d971_a44ca942","updated":"2016-01-12 07:41:17.000000000","message":"I considered that we can enable it per extension /CLI basis, thus modifying the neutron core to support bulk delete while allowing other extensions to take up their own call ( if they want to support it or not).\nI can set it to True and allow individual extensions to disable Bulk Delete if they dont want it.","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"94ca65fef86ca80c5cf0d71e980080cfe4c398a4","unresolved":false,"context_lines":[{"line_number":598,"context_line":"        not_existence \u003d \"\""},{"line_number":599,"context_line":"        multiple_ids \u003d \"\""},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"        if self.bulk_delete:"},{"line_number":602,"context_line":"            for item_id in parsed_args.id:"},{"line_number":603,"context_line":"                try:"},{"line_number":604,"context_line":"                    self.delete_item(obj_deleter, neutron_client, item_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_8741cb3b","line":601,"updated":"2016-01-08 11:16:08.000000000","message":"Could you add a new method for bulk_delete?\nThe method is now long.","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"de819770f53d97f1d605de19d5c88f754552b858","unresolved":false,"context_lines":[{"line_number":598,"context_line":"        not_existence \u003d \"\""},{"line_number":599,"context_line":"        multiple_ids \u003d \"\""},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"        if self.bulk_delete:"},{"line_number":602,"context_line":"            for item_id in parsed_args.id:"},{"line_number":603,"context_line":"                try:"},{"line_number":604,"context_line":"                    self.delete_item(obj_deleter, neutron_client, item_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6ed579_bba8718e","line":601,"in_reply_to":"fa69d971_8741cb3b","updated":"2016-01-14 09:28:02.000000000","message":"Done","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"24cc1e506890f9c763d4a74322d5b3bc40d01323","unresolved":false,"context_lines":[{"line_number":598,"context_line":"        not_existence \u003d \"\""},{"line_number":599,"context_line":"        multiple_ids \u003d \"\""},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"        if self.bulk_delete:"},{"line_number":602,"context_line":"            for item_id in parsed_args.id:"},{"line_number":603,"context_line":"                try:"},{"line_number":604,"context_line":"                    self.delete_item(obj_deleter, neutron_client, item_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_97bd406a","line":601,"in_reply_to":"fa69d971_8741cb3b","updated":"2016-01-11 05:26:21.000000000","message":"Yeah Sure, I will do it in my next PS","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"94ca65fef86ca80c5cf0d71e980080cfe4c398a4","unresolved":false,"context_lines":[{"line_number":604,"context_line":"                    self.delete_item(obj_deleter, neutron_client, item_id)"},{"line_number":605,"context_line":"                    successful_delete +\u003d item_id + \", \""},{"line_number":606,"context_line":"                except exceptions.NeutronClientException:"},{"line_number":607,"context_line":"                    not_existence +\u003d item_id + \", \""},{"line_number":608,"context_line":"                except exceptions.NeutronClientNoUniqueMatch:"},{"line_number":609,"context_line":"                    multiple_ids +\u003d item_id + \", \""},{"line_number":610,"context_line":"            if successful_delete:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_a7464f1f","line":607,"updated":"2016-01-08 11:16:08.000000000","message":"Consider the following:\n\n  not_existence \u003d []\n  ...\n  try:\n  \n  except ....:\n    not_existence.append(item_id)\n\n  ...\n  \u0027, \u0027.join(not_existence) (if needed)","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"24cc1e506890f9c763d4a74322d5b3bc40d01323","unresolved":false,"context_lines":[{"line_number":604,"context_line":"                    self.delete_item(obj_deleter, neutron_client, item_id)"},{"line_number":605,"context_line":"                    successful_delete +\u003d item_id + \", \""},{"line_number":606,"context_line":"                except exceptions.NeutronClientException:"},{"line_number":607,"context_line":"                    not_existence +\u003d item_id + \", \""},{"line_number":608,"context_line":"                except exceptions.NeutronClientNoUniqueMatch:"},{"line_number":609,"context_line":"                    multiple_ids +\u003d item_id + \", \""},{"line_number":610,"context_line":"            if successful_delete:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_d7a7384e","line":607,"in_reply_to":"fa69d971_a7464f1f","updated":"2016-01-11 05:26:21.000000000","message":"Ok, I will look into it and if required, make these changes in the next PS","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"de819770f53d97f1d605de19d5c88f754552b858","unresolved":false,"context_lines":[{"line_number":604,"context_line":"                    self.delete_item(obj_deleter, neutron_client, item_id)"},{"line_number":605,"context_line":"                    successful_delete +\u003d item_id + \", \""},{"line_number":606,"context_line":"                except exceptions.NeutronClientException:"},{"line_number":607,"context_line":"                    not_existence +\u003d item_id + \", \""},{"line_number":608,"context_line":"                except exceptions.NeutronClientNoUniqueMatch:"},{"line_number":609,"context_line":"                    multiple_ids +\u003d item_id + \", \""},{"line_number":610,"context_line":"            if successful_delete:"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6ed579_c601c506","line":607,"in_reply_to":"fa69d971_d7a7384e","updated":"2016-01-14 09:28:02.000000000","message":"Done","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"94ca65fef86ca80c5cf0d71e980080cfe4c398a4","unresolved":false,"context_lines":[{"line_number":606,"context_line":"                except exceptions.NeutronClientException:"},{"line_number":607,"context_line":"                    not_existence +\u003d item_id + \", \""},{"line_number":608,"context_line":"                except exceptions.NeutronClientNoUniqueMatch:"},{"line_number":609,"context_line":"                    multiple_ids +\u003d item_id + \", \""},{"line_number":610,"context_line":"            if successful_delete:"},{"line_number":611,"context_line":"                print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"},{"line_number":612,"context_line":"                      % {\u0027id\u0027: successful_delete[:-2],"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_67c37758","line":609,"updated":"2016-01-08 11:16:08.000000000","message":"I think the existence check and the uniqueness check are done before deleting resources actually.","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d228ba47de90b7b5d82157c82d00e7fe101056e8","unresolved":false,"context_lines":[{"line_number":606,"context_line":"                except exceptions.NeutronClientException:"},{"line_number":607,"context_line":"                    not_existence +\u003d item_id + \", \""},{"line_number":608,"context_line":"                except exceptions.NeutronClientNoUniqueMatch:"},{"line_number":609,"context_line":"                    multiple_ids +\u003d item_id + \", \""},{"line_number":610,"context_line":"            if successful_delete:"},{"line_number":611,"context_line":"                print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"},{"line_number":612,"context_line":"                      % {\u0027id\u0027: successful_delete[:-2],"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6ed579_84e505dd","line":609,"in_reply_to":"da6ed579_976dc634","updated":"2016-01-14 09:56:03.000000000","message":"I know delete_item is called per resource. This is the reason I wrote \u0027as much as possible\u0027. At least we can do it in the layer of CLIs.\n\nHow does \u0027nova delete\u0027 behave? I think it is reasonable to have a similar behavior. I am okay with any.","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"24cc1e506890f9c763d4a74322d5b3bc40d01323","unresolved":false,"context_lines":[{"line_number":606,"context_line":"                except exceptions.NeutronClientException:"},{"line_number":607,"context_line":"                    not_existence +\u003d item_id + \", \""},{"line_number":608,"context_line":"                except exceptions.NeutronClientNoUniqueMatch:"},{"line_number":609,"context_line":"                    multiple_ids +\u003d item_id + \", \""},{"line_number":610,"context_line":"            if successful_delete:"},{"line_number":611,"context_line":"                print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"},{"line_number":612,"context_line":"                      % {\u0027id\u0027: successful_delete[:-2],"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_77a1ac45","line":609,"in_reply_to":"fa69d971_67c37758","updated":"2016-01-11 05:26:21.000000000","message":"Actually, the check is done \u0027during\u0027 the delete process.\nIf the Name/ID doesnt exist , or if the name exists in multiple locations, then it raises the NeutronCLientException/NoUniqueMatchException.","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"be3a2f98f0a6b6a6c53260a884528ca99b83a2a6","unresolved":false,"context_lines":[{"line_number":606,"context_line":"                except exceptions.NeutronClientException:"},{"line_number":607,"context_line":"                    not_existence +\u003d item_id + \", \""},{"line_number":608,"context_line":"                except exceptions.NeutronClientNoUniqueMatch:"},{"line_number":609,"context_line":"                    multiple_ids +\u003d item_id + \", \""},{"line_number":610,"context_line":"            if successful_delete:"},{"line_number":611,"context_line":"                print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"},{"line_number":612,"context_line":"                      % {\u0027id\u0027: successful_delete[:-2],"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_a497c98e","line":609,"in_reply_to":"fa69d971_77a1ac45","updated":"2016-01-11 18:00:19.000000000","message":"IMO it is better that bulk_delete should act as an atomic operation as much as possible. This is the reason I suggested to check uniqueness and existence in advance,","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"411094ebcbc712107f0fb7e2b9bc493820239389","unresolved":false,"context_lines":[{"line_number":606,"context_line":"                except exceptions.NeutronClientException:"},{"line_number":607,"context_line":"                    not_existence +\u003d item_id + \", \""},{"line_number":608,"context_line":"                except exceptions.NeutronClientNoUniqueMatch:"},{"line_number":609,"context_line":"                    multiple_ids +\u003d item_id + \", \""},{"line_number":610,"context_line":"            if successful_delete:"},{"line_number":611,"context_line":"                print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"},{"line_number":612,"context_line":"                      % {\u0027id\u0027: successful_delete[:-2],"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6ed579_976dc634","line":609,"in_reply_to":"fa69d971_a497c98e","updated":"2016-01-12 07:41:17.000000000","message":"However, in the current code, I am extending the single delete_item() and executing it repeatedly.\nI understand that I can keep the Existence/NonUnique check at the beginning, but as the underlying layer of delete_item() is already taking care of the code, I consider that it is not required here.","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"94ca65fef86ca80c5cf0d71e980080cfe4c398a4","unresolved":false,"context_lines":[{"line_number":609,"context_line":"                    multiple_ids +\u003d item_id + \", \""},{"line_number":610,"context_line":"            if successful_delete:"},{"line_number":611,"context_line":"                print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"},{"line_number":612,"context_line":"                      % {\u0027id\u0027: successful_delete[:-2],"},{"line_number":613,"context_line":"                         \u0027resource\u0027: self.cmd_resource}),"},{"line_number":614,"context_line":"                      file\u003dself.app.stdout)"},{"line_number":615,"context_line":"            if not_existence:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_c725835c","line":612,"updated":"2016-01-08 11:16:08.000000000","message":"Wrong indent level.\n\nBTW, there is no need to use double parentheses ((.","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"411094ebcbc712107f0fb7e2b9bc493820239389","unresolved":false,"context_lines":[{"line_number":609,"context_line":"                    multiple_ids +\u003d item_id + \", \""},{"line_number":610,"context_line":"            if successful_delete:"},{"line_number":611,"context_line":"                print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"},{"line_number":612,"context_line":"                      % {\u0027id\u0027: successful_delete[:-2],"},{"line_number":613,"context_line":"                         \u0027resource\u0027: self.cmd_resource}),"},{"line_number":614,"context_line":"                      file\u003dself.app.stdout)"},{"line_number":615,"context_line":"            if not_existence:"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6ed579_d7d01ecc","line":612,"in_reply_to":"fa69d971_8ba738a6","updated":"2016-01-12 07:41:17.000000000","message":"Yes, it was supposed to be in the second parenthesis.\n\nThe signature of the print function being used here is:\nprint((_(STRING) % Variable), file\u003dSTDOUT)\n\nIs it wrong to keep the % inside the second parenthesis which is being used for wrapping strings in i18n format?","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"24cc1e506890f9c763d4a74322d5b3bc40d01323","unresolved":false,"context_lines":[{"line_number":609,"context_line":"                    multiple_ids +\u003d item_id + \", \""},{"line_number":610,"context_line":"            if successful_delete:"},{"line_number":611,"context_line":"                print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"},{"line_number":612,"context_line":"                      % {\u0027id\u0027: successful_delete[:-2],"},{"line_number":613,"context_line":"                         \u0027resource\u0027: self.cmd_resource}),"},{"line_number":614,"context_line":"                      file\u003dself.app.stdout)"},{"line_number":615,"context_line":"            if not_existence:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_d79098ef","line":612,"in_reply_to":"fa69d971_c725835c","updated":"2016-01-11 05:26:21.000000000","message":"I am not sure why you feel the indent is wrong?\nI think it is correct here.","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"be3a2f98f0a6b6a6c53260a884528ca99b83a2a6","unresolved":false,"context_lines":[{"line_number":609,"context_line":"                    multiple_ids +\u003d item_id + \", \""},{"line_number":610,"context_line":"            if successful_delete:"},{"line_number":611,"context_line":"                print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"},{"line_number":612,"context_line":"                      % {\u0027id\u0027: successful_delete[:-2],"},{"line_number":613,"context_line":"                         \u0027resource\u0027: self.cmd_resource}),"},{"line_number":614,"context_line":"                      file\u003dself.app.stdout)"},{"line_number":615,"context_line":"            if not_existence:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_8ba738a6","line":612,"in_reply_to":"fa69d971_d79098ef","updated":"2016-01-11 18:00:19.000000000","message":"% is inside of the second parentheses.\n\n  print((_(\u0027Deleted %(resource)s: %(id)s\u0027)\n         % {\u0027id\u0027: successful_delete[:-2],","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"94ca65fef86ca80c5cf0d71e980080cfe4c398a4","unresolved":false,"context_lines":[{"line_number":616,"context_line":"                print((_(\"Unable to find %(resource)s with id(s) \""},{"line_number":617,"context_line":"                         \"\u0027%(id)s\u0027\") %"},{"line_number":618,"context_line":"                      {\u0027resource\u0027: self.cmd_resource,"},{"line_number":619,"context_line":"                       \u0027id\u0027: not_existence[:-2]}),"},{"line_number":620,"context_line":"                      file\u003dself.app.stdout)"},{"line_number":621,"context_line":"            if multiple_ids:"},{"line_number":622,"context_line":"                print((_(\"Multiple %(resource)s matches found for name(s)\""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_87e78b11","line":619,"updated":"2016-01-08 11:16:08.000000000","message":"If you use join, there is no need to use [:-2]","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"24cc1e506890f9c763d4a74322d5b3bc40d01323","unresolved":false,"context_lines":[{"line_number":616,"context_line":"                print((_(\"Unable to find %(resource)s with id(s) \""},{"line_number":617,"context_line":"                         \"\u0027%(id)s\u0027\") %"},{"line_number":618,"context_line":"                      {\u0027resource\u0027: self.cmd_resource,"},{"line_number":619,"context_line":"                       \u0027id\u0027: not_existence[:-2]}),"},{"line_number":620,"context_line":"                      file\u003dself.app.stdout)"},{"line_number":621,"context_line":"            if multiple_ids:"},{"line_number":622,"context_line":"                print((_(\"Multiple %(resource)s matches found for name(s)\""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_77ea0c76","line":619,"in_reply_to":"fa69d971_87e78b11","updated":"2016-01-11 05:26:21.000000000","message":"There is a use, as I need to remove the trailing \" ,\" from the output","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"94ca65fef86ca80c5cf0d71e980080cfe4c398a4","unresolved":false,"context_lines":[{"line_number":622,"context_line":"                print((_(\"Multiple %(resource)s matches found for name(s)\""},{"line_number":623,"context_line":"                         \" \u0027%(id)s\u0027.Please use an ID to be more specific.\") %"},{"line_number":624,"context_line":"                      {\u0027resource\u0027: self.cmd_resource,"},{"line_number":625,"context_line":"                       \u0027id\u0027: multiple_ids[:-2]}),"},{"line_number":626,"context_line":"                      file\u003dself.app.stdout)"},{"line_number":627,"context_line":"        else:"},{"line_number":628,"context_line":"            self.delete_item(obj_deleter, neutron_client, parsed_args.id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_a7e2cfff","line":625,"range":{"start_line":625,"start_character":24,"end_line":625,"end_character":26},"updated":"2016-01-08 11:16:08.000000000","message":"id -\u003e ids or resource_ids","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"24cc1e506890f9c763d4a74322d5b3bc40d01323","unresolved":false,"context_lines":[{"line_number":622,"context_line":"                print((_(\"Multiple %(resource)s matches found for name(s)\""},{"line_number":623,"context_line":"                         \" \u0027%(id)s\u0027.Please use an ID to be more specific.\") %"},{"line_number":624,"context_line":"                      {\u0027resource\u0027: self.cmd_resource,"},{"line_number":625,"context_line":"                       \u0027id\u0027: multiple_ids[:-2]}),"},{"line_number":626,"context_line":"                      file\u003dself.app.stdout)"},{"line_number":627,"context_line":"        else:"},{"line_number":628,"context_line":"            self.delete_item(obj_deleter, neutron_client, parsed_args.id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_b76964fb","line":625,"range":{"start_line":625,"start_character":24,"end_line":625,"end_character":26},"in_reply_to":"fa69d971_a7e2cfff","updated":"2016-01-11 05:26:21.000000000","message":"Will change in the next PS","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"de819770f53d97f1d605de19d5c88f754552b858","unresolved":false,"context_lines":[{"line_number":622,"context_line":"                print((_(\"Multiple %(resource)s matches found for name(s)\""},{"line_number":623,"context_line":"                         \" \u0027%(id)s\u0027.Please use an ID to be more specific.\") %"},{"line_number":624,"context_line":"                      {\u0027resource\u0027: self.cmd_resource,"},{"line_number":625,"context_line":"                       \u0027id\u0027: multiple_ids[:-2]}),"},{"line_number":626,"context_line":"                      file\u003dself.app.stdout)"},{"line_number":627,"context_line":"        else:"},{"line_number":628,"context_line":"            self.delete_item(obj_deleter, neutron_client, parsed_args.id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6ed579_9b2ecd41","line":625,"range":{"start_line":625,"start_character":24,"end_line":625,"end_character":26},"in_reply_to":"fa69d971_b76964fb","updated":"2016-01-14 09:28:02.000000000","message":"I think this is not required.\nThe plural has been covered by name(s)\n\nThe logic behind this is that , first we check the ID, and then the name. This has been the existing behavior.\n\nIf while deleting a element, the Name/ID does not exist, then the error message reports that the Name does not exist.The same has been implemented here.","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6066567be98f6509115a64fdee0501e7385f0c0a","unresolved":false,"context_lines":[{"line_number":616,"context_line":"            except exceptions.NeutronClientException:"},{"line_number":617,"context_line":"                not_existence.append(item_id)"},{"line_number":618,"context_line":"            except exceptions.NeutronClientNoUniqueMatch:"},{"line_number":619,"context_line":"                multiple_ids.append(item_id)"},{"line_number":620,"context_line":"        if successful_delete:"},{"line_number":621,"context_line":"            print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"},{"line_number":622,"context_line":"                  % {\u0027id\u0027: \", \".join(successful_delete),"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_041fd5b7","line":619,"updated":"2016-01-14 09:59:04.000000000","message":"If delete_item raises an failure other than the above two exception, what happens?","commit_id":"84d41034332f1fca6e09241d7e63283d52999ded"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"5ba5d52d21b3b43a3fcac90910731d5a76ebbe4c","unresolved":false,"context_lines":[{"line_number":616,"context_line":"            except exceptions.NeutronClientException:"},{"line_number":617,"context_line":"                not_existence.append(item_id)"},{"line_number":618,"context_line":"            except exceptions.NeutronClientNoUniqueMatch:"},{"line_number":619,"context_line":"                multiple_ids.append(item_id)"},{"line_number":620,"context_line":"        if successful_delete:"},{"line_number":621,"context_line":"            print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"},{"line_number":622,"context_line":"                  % {\u0027id\u0027: \", \".join(successful_delete),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a68dd71_113b03ed","line":619,"in_reply_to":"da6ed579_041fd5b7","updated":"2016-01-21 03:50:58.000000000","message":"It will be handled by the neutron/shell.py\n\n\nThe following function run() will be called for each resource , by https://github.com/openstack/python-neutronclient/blob/master/neutronclient/shell.py#L105\n\nAnd the run command in shell.py is inside the try-catch block called from https://github.com/openstack/python-neutronclient/blob/master/neutronclient/shell.py#L822\n\nSo if there is any other error, it will be reported directly on stderr ( Previous Delete functionality also raised the errors out to shell.py to be handled)","commit_id":"84d41034332f1fca6e09241d7e63283d52999ded"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"37ceb48653dd5018230d1f84149bef5dd6e44793","unresolved":false,"context_lines":[{"line_number":564,"context_line":"            self.help_resource \u003d self.resource"},{"line_number":565,"context_line":"        if self.bulk_delete:"},{"line_number":566,"context_line":"            parser.add_argument("},{"line_number":567,"context_line":"                \u0027id\u0027, metavar\u003dself.resource.upper(),"},{"line_number":568,"context_line":"                nargs\u003d\u0027+\u0027,"},{"line_number":569,"context_line":"                help\u003dhelp_str % self.help_resource)"},{"line_number":570,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_fc500c34","line":567,"updated":"2016-01-23 04:10:19.000000000","message":"IMO, we can add some help to indicate that bulk delete is supported.\n\nhelp_str \u003d _(\u0027ID\u0027s or names of %s to delete.\u0027).\n\nL560 and L562 can be clubbed over here.","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"94199840cdcc5e991e476667c69bc3b9a9db0933","unresolved":false,"context_lines":[{"line_number":564,"context_line":"            self.help_resource \u003d self.resource"},{"line_number":565,"context_line":"        if self.bulk_delete:"},{"line_number":566,"context_line":"            parser.add_argument("},{"line_number":567,"context_line":"                \u0027id\u0027, metavar\u003dself.resource.upper(),"},{"line_number":568,"context_line":"                nargs\u003d\u0027+\u0027,"},{"line_number":569,"context_line":"                help\u003dhelp_str % self.help_resource)"},{"line_number":570,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_d283b154","line":567,"in_reply_to":"9a68dd71_fc500c34","updated":"2016-01-23 05:05:00.000000000","message":"Okay, will fix it in the next PS","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"37ceb48653dd5018230d1f84149bef5dd6e44793","unresolved":false,"context_lines":[{"line_number":582,"context_line":"                              \"delete_%s\" % self.cmd_resource)"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"        if self.bulk_delete:"},{"line_number":585,"context_line":"            self._bulk_delete(parsed_args, obj_deleter, neutron_client)"},{"line_number":586,"context_line":"        else:"},{"line_number":587,"context_line":"            self.delete_item(obj_deleter, neutron_client, parsed_args.id)"},{"line_number":588,"context_line":"            print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_3c53043b","line":585,"updated":"2016-01-23 04:10:19.000000000","message":"Let\u0027s re-arrange the parameter order. Make it consistent with L587.\n\nself._bulk_delete(obj_deleter, neutron_client, parsed_args)","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"94199840cdcc5e991e476667c69bc3b9a9db0933","unresolved":false,"context_lines":[{"line_number":582,"context_line":"                              \"delete_%s\" % self.cmd_resource)"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"        if self.bulk_delete:"},{"line_number":585,"context_line":"            self._bulk_delete(parsed_args, obj_deleter, neutron_client)"},{"line_number":586,"context_line":"        else:"},{"line_number":587,"context_line":"            self.delete_item(obj_deleter, neutron_client, parsed_args.id)"},{"line_number":588,"context_line":"            print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_b27e3d68","line":585,"in_reply_to":"9a68dd71_3c53043b","updated":"2016-01-23 05:05:00.000000000","message":"I dont think its too necessary, but okay, if it makes more sense","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"72f09b2438cc520fea33adbf0773e2be837f2274","unresolved":false,"context_lines":[{"line_number":582,"context_line":"                              \"delete_%s\" % self.cmd_resource)"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"        if self.bulk_delete:"},{"line_number":585,"context_line":"            self._bulk_delete(parsed_args, obj_deleter, neutron_client)"},{"line_number":586,"context_line":"        else:"},{"line_number":587,"context_line":"            self.delete_item(obj_deleter, neutron_client, parsed_args.id)"},{"line_number":588,"context_line":"            print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_a474ad67","line":585,"in_reply_to":"9a68dd71_b27e3d68","updated":"2016-01-25 00:08:56.000000000","message":"Done","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f817c3fffb4963b169d8b5f0ff81bd3c70f0b24a","unresolved":false,"context_lines":[{"line_number":591,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":592,"context_line":"        return"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def _bulk_delete(self, parsed_args, obj_deleter, neutron_client):"},{"line_number":595,"context_line":"        successful_delete \u003d []"},{"line_number":596,"context_line":"        not_existence \u003d []"},{"line_number":597,"context_line":"        multiple_ids \u003d []"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_22974ded","line":594,"range":{"start_line":594,"start_character":27,"end_line":594,"end_character":38},"updated":"2016-01-24 15:40:44.000000000","message":"Rather than passing parsed_args, I think it is better to pass IDs (for example, resource_ids/item_ids/ids).","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"37ceb48653dd5018230d1f84149bef5dd6e44793","unresolved":false,"context_lines":[{"line_number":591,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":592,"context_line":"        return"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def _bulk_delete(self, parsed_args, obj_deleter, neutron_client):"},{"line_number":595,"context_line":"        successful_delete \u003d []"},{"line_number":596,"context_line":"        not_existence \u003d []"},{"line_number":597,"context_line":"        multiple_ids \u003d []"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_fc37acfc","line":594,"updated":"2016-01-23 04:10:19.000000000","message":"ditto","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"72f09b2438cc520fea33adbf0773e2be837f2274","unresolved":false,"context_lines":[{"line_number":591,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":592,"context_line":"        return"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def _bulk_delete(self, parsed_args, obj_deleter, neutron_client):"},{"line_number":595,"context_line":"        successful_delete \u003d []"},{"line_number":596,"context_line":"        not_existence \u003d []"},{"line_number":597,"context_line":"        multiple_ids \u003d []"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_045b39f7","line":594,"in_reply_to":"9a68dd71_fc37acfc","updated":"2016-01-25 00:08:56.000000000","message":"Done","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"37ceb48653dd5018230d1f84149bef5dd6e44793","unresolved":false,"context_lines":[{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def _bulk_delete(self, parsed_args, obj_deleter, neutron_client):"},{"line_number":595,"context_line":"        successful_delete \u003d []"},{"line_number":596,"context_line":"        not_existence \u003d []"},{"line_number":597,"context_line":"        multiple_ids \u003d []"},{"line_number":598,"context_line":"        for item_id in parsed_args.id:"},{"line_number":599,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_1c2de0a7","line":596,"updated":"2016-01-23 04:10:19.000000000","message":"nit: %s/not_existence/non_existing/g","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"94199840cdcc5e991e476667c69bc3b9a9db0933","unresolved":false,"context_lines":[{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def _bulk_delete(self, parsed_args, obj_deleter, neutron_client):"},{"line_number":595,"context_line":"        successful_delete \u003d []"},{"line_number":596,"context_line":"        not_existence \u003d []"},{"line_number":597,"context_line":"        multiple_ids \u003d []"},{"line_number":598,"context_line":"        for item_id in parsed_args.id:"},{"line_number":599,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_52b10146","line":596,"in_reply_to":"9a68dd71_1c2de0a7","updated":"2016-01-23 05:05:00.000000000","message":"Variable name, shouldnt make much of a difference.\nWould have agreed if it was a help message.\nBut can change it to non_existent","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"37ceb48653dd5018230d1f84149bef5dd6e44793","unresolved":false,"context_lines":[{"line_number":595,"context_line":"        successful_delete \u003d []"},{"line_number":596,"context_line":"        not_existence \u003d []"},{"line_number":597,"context_line":"        multiple_ids \u003d []"},{"line_number":598,"context_line":"        for item_id in parsed_args.id:"},{"line_number":599,"context_line":"            try:"},{"line_number":600,"context_line":"                self.delete_item(obj_deleter, neutron_client, item_id)"},{"line_number":601,"context_line":"                successful_delete.append(item_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_9fa222fb","line":598,"updated":"2016-01-23 04:10:19.000000000","message":"Could not find code for name to id conversion if the user has entered name instead of id.\n\n_id \u003d find_resourceid_by_name_or_id(neutron_client,                                 self.resource,\n                                                parsed_args.id,\n                                                **params)","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"94199840cdcc5e991e476667c69bc3b9a9db0933","unresolved":false,"context_lines":[{"line_number":595,"context_line":"        successful_delete \u003d []"},{"line_number":596,"context_line":"        not_existence \u003d []"},{"line_number":597,"context_line":"        multiple_ids \u003d []"},{"line_number":598,"context_line":"        for item_id in parsed_args.id:"},{"line_number":599,"context_line":"            try:"},{"line_number":600,"context_line":"                self.delete_item(obj_deleter, neutron_client, item_id)"},{"line_number":601,"context_line":"                successful_delete.append(item_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_d29c11c2","line":598,"in_reply_to":"9a68dd71_9fa222fb","updated":"2016-01-23 05:05:00.000000000","message":"Taken care in the delete_item()","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"04f086991e4849a29bac0a6be7b96092eaa3fa72","unresolved":false,"context_lines":[{"line_number":595,"context_line":"        successful_delete \u003d []"},{"line_number":596,"context_line":"        not_existence \u003d []"},{"line_number":597,"context_line":"        multiple_ids \u003d []"},{"line_number":598,"context_line":"        for item_id in parsed_args.id:"},{"line_number":599,"context_line":"            try:"},{"line_number":600,"context_line":"                self.delete_item(obj_deleter, neutron_client, item_id)"},{"line_number":601,"context_line":"                successful_delete.append(item_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_12c62968","line":598,"in_reply_to":"9a68dd71_d29c11c2","updated":"2016-01-23 05:27:04.000000000","message":"Agreed!","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f817c3fffb4963b169d8b5f0ff81bd3c70f0b24a","unresolved":false,"context_lines":[{"line_number":605,"context_line":"                multiple_ids.append(item_id)"},{"line_number":606,"context_line":"        if successful_delete:"},{"line_number":607,"context_line":"            print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"},{"line_number":608,"context_line":"                  % {\u0027id\u0027: \", \".join(successful_delete),"},{"line_number":609,"context_line":"                     \u0027resource\u0027: self.cmd_resource}),"},{"line_number":610,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":611,"context_line":"        if not_existence:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_a28b3dc2","line":608,"range":{"start_line":608,"start_character":18,"end_line":608,"end_character":19},"updated":"2016-01-24 15:40:44.000000000","message":"The indent level is wrong.\n% is inside of the second parentheses.","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f817c3fffb4963b169d8b5f0ff81bd3c70f0b24a","unresolved":false,"context_lines":[{"line_number":606,"context_line":"        if successful_delete:"},{"line_number":607,"context_line":"            print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"},{"line_number":608,"context_line":"                  % {\u0027id\u0027: \", \".join(successful_delete),"},{"line_number":609,"context_line":"                     \u0027resource\u0027: self.cmd_resource}),"},{"line_number":610,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":611,"context_line":"        if not_existence:"},{"line_number":612,"context_line":"            print((_(\"Unable to find %(resource)s with id(s) \""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_6291c5f0","line":609,"range":{"start_line":609,"start_character":33,"end_line":609,"end_character":50},"updated":"2016-01-24 15:40:44.000000000","message":"Needs to be plural case?","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f817c3fffb4963b169d8b5f0ff81bd3c70f0b24a","unresolved":false,"context_lines":[{"line_number":611,"context_line":"        if not_existence:"},{"line_number":612,"context_line":"            print((_(\"Unable to find %(resource)s with id(s) \""},{"line_number":613,"context_line":"                     \"\u0027%(id)s\u0027\") %"},{"line_number":614,"context_line":"                  {\u0027resource\u0027: self.cmd_resource,"},{"line_number":615,"context_line":"                   \u0027id\u0027: \", \".join(not_existence)}),"},{"line_number":616,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":617,"context_line":"        if multiple_ids:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_c288b1c7","line":614,"updated":"2016-01-24 15:40:44.000000000","message":"The indent level is wrong. This is inside of the second parentheses.","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f817c3fffb4963b169d8b5f0ff81bd3c70f0b24a","unresolved":false,"context_lines":[{"line_number":615,"context_line":"                   \u0027id\u0027: \", \".join(not_existence)}),"},{"line_number":616,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":617,"context_line":"        if multiple_ids:"},{"line_number":618,"context_line":"            print((_(\"Multiple %(resource)s matches found for name(s)\""},{"line_number":619,"context_line":"                     \" \u0027%(id)s\u0027.Please use an ID to be more specific.\") %"},{"line_number":620,"context_line":"                  {\u0027resource\u0027: self.cmd_resource,"},{"line_number":621,"context_line":"                   \u0027id\u0027: \", \".join(multiple_ids)}),"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_02b9e978","line":618,"range":{"start_line":618,"start_character":31,"end_line":618,"end_character":43},"updated":"2016-01-24 15:40:44.000000000","message":"it needs to be plural case?","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f817c3fffb4963b169d8b5f0ff81bd3c70f0b24a","unresolved":false,"context_lines":[{"line_number":616,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":617,"context_line":"        if multiple_ids:"},{"line_number":618,"context_line":"            print((_(\"Multiple %(resource)s matches found for name(s)\""},{"line_number":619,"context_line":"                     \" \u0027%(id)s\u0027.Please use an ID to be more specific.\") %"},{"line_number":620,"context_line":"                  {\u0027resource\u0027: self.cmd_resource,"},{"line_number":621,"context_line":"                   \u0027id\u0027: \", \".join(multiple_ids)}),"},{"line_number":622,"context_line":"                  file\u003dself.app.stdout)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_a2b25d92","line":619,"updated":"2016-01-24 15:40:44.000000000","message":"A space before \u0027Please\u0027.","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"76708ea1dde7eb0f570f28187f29c956094de9b7","unresolved":false,"context_lines":[{"line_number":560,"context_line":"            self.help_resource \u003d self.resource"},{"line_number":561,"context_line":"        if self.bulk_delete:"},{"line_number":562,"context_line":"            if self.allow_names:"},{"line_number":563,"context_line":"                help_str \u003d _(\u0027ID(s) or name(s) of %s to delete.\u0027)"},{"line_number":564,"context_line":"            else:"},{"line_number":565,"context_line":"                help_str \u003d _(\u0027ID(s) of %s to delete.\u0027)"},{"line_number":566,"context_line":"            parser.add_argument("}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_a2601d02","line":563,"updated":"2016-01-24 15:43:56.000000000","message":"It will be \"ID(s) or name(s) of network to delete\"?\nDon\u0027t we want to use a plural case?","commit_id":"6fb35db5a63d377babb43f30be01d638d654429f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"57d744f58358963534c7fb2152c5a0f4fbcd7bd2","unresolved":false,"context_lines":[{"line_number":560,"context_line":"            self.help_resource \u003d self.resource"},{"line_number":561,"context_line":"        if self.bulk_delete:"},{"line_number":562,"context_line":"            if self.allow_names:"},{"line_number":563,"context_line":"                help_str \u003d _(\u0027ID(s) or name(s) of %s to delete.\u0027)"},{"line_number":564,"context_line":"            else:"},{"line_number":565,"context_line":"                help_str \u003d _(\u0027ID(s) of %s to delete.\u0027)"},{"line_number":566,"context_line":"            parser.add_argument("}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_855abef0","line":563,"in_reply_to":"9a68dd71_a2601d02","updated":"2016-01-25 00:09:01.000000000","message":"@Akihiro:\nID(s) or name(s) means that user can provide One or ¨More than One¨ ID/Name.\n\nI wanted to cover both the situations in Bulk Delete.\n\nLet me know your opinion","commit_id":"6fb35db5a63d377babb43f30be01d638d654429f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"57d744f58358963534c7fb2152c5a0f4fbcd7bd2","unresolved":false,"context_lines":[{"line_number":560,"context_line":"            self.help_resource \u003d self.resource"},{"line_number":561,"context_line":"        if self.bulk_delete:"},{"line_number":562,"context_line":"            if self.allow_names:"},{"line_number":563,"context_line":"                help_str \u003d _(\u0027ID(s) or name(s) of %s to delete.\u0027)"},{"line_number":564,"context_line":"            else:"},{"line_number":565,"context_line":"                help_str \u003d _(\u0027ID(s) of %s to delete.\u0027)"},{"line_number":566,"context_line":"            parser.add_argument("}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_e5bdba02","line":563,"in_reply_to":"9a68dd71_a2601d02","updated":"2016-01-25 00:09:01.000000000","message":"ID(s) / names(s) means that user can provide One or More resource ID/Name\n\nThat is why I used ID(s) , to denote to the user that one or more items can be passed.","commit_id":"6fb35db5a63d377babb43f30be01d638d654429f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"76708ea1dde7eb0f570f28187f29c956094de9b7","unresolved":false,"context_lines":[{"line_number":595,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":596,"context_line":"        return"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"    def _bulk_delete(self, obj_deleter, neutron_client, parsed_args):"},{"line_number":599,"context_line":"        successful_delete \u003d []"},{"line_number":600,"context_line":"        non_existent \u003d []"},{"line_number":601,"context_line":"        multiple_ids \u003d []"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_6256a52b","line":598,"updated":"2016-01-24 15:43:56.000000000","message":"Rather than passing parsed_args, I think it is better to pass IDs (for example, resource_ids/item_ids/ids).","commit_id":"6fb35db5a63d377babb43f30be01d638d654429f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"57d744f58358963534c7fb2152c5a0f4fbcd7bd2","unresolved":false,"context_lines":[{"line_number":595,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":596,"context_line":"        return"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"    def _bulk_delete(self, obj_deleter, neutron_client, parsed_args):"},{"line_number":599,"context_line":"        successful_delete \u003d []"},{"line_number":600,"context_line":"        non_existent \u003d []"},{"line_number":601,"context_line":"        multiple_ids \u003d []"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_c50bd6d4","line":598,"in_reply_to":"9a68dd71_6256a52b","updated":"2016-01-25 00:09:01.000000000","message":"I guess I am using parsed_args for ID only in the _bulk_delete function in Line number 602.\nSo I can directly pass parsed_args.id","commit_id":"6fb35db5a63d377babb43f30be01d638d654429f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"76708ea1dde7eb0f570f28187f29c956094de9b7","unresolved":false,"context_lines":[{"line_number":609,"context_line":"                multiple_ids.append(item_id)"},{"line_number":610,"context_line":"        if successful_delete:"},{"line_number":611,"context_line":"            print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"},{"line_number":612,"context_line":"                  % {\u0027id\u0027: \", \".join(successful_delete),"},{"line_number":613,"context_line":"                     \u0027resource\u0027: self.cmd_resource}),"},{"line_number":614,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":615,"context_line":"        if non_existent:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_82539938","line":612,"updated":"2016-01-24 15:43:56.000000000","message":"The indent level is wrong.\n% is inside of the second parentheses.","commit_id":"6fb35db5a63d377babb43f30be01d638d654429f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"79836c4b4268b5f481244edfb7e3fb0d13b57544","unresolved":false,"context_lines":[{"line_number":609,"context_line":"                multiple_ids.append(item_id)"},{"line_number":610,"context_line":"        if successful_delete:"},{"line_number":611,"context_line":"            print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"},{"line_number":612,"context_line":"                  % {\u0027id\u0027: \", \".join(successful_delete),"},{"line_number":613,"context_line":"                     \u0027resource\u0027: self.cmd_resource}),"},{"line_number":614,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":615,"context_line":"        if non_existent:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_65aa2a87","line":612,"in_reply_to":"9a68dd71_82539938","updated":"2016-01-25 00:22:02.000000000","message":"Done","commit_id":"6fb35db5a63d377babb43f30be01d638d654429f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"76708ea1dde7eb0f570f28187f29c956094de9b7","unresolved":false,"context_lines":[{"line_number":610,"context_line":"        if successful_delete:"},{"line_number":611,"context_line":"            print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"},{"line_number":612,"context_line":"                  % {\u0027id\u0027: \", \".join(successful_delete),"},{"line_number":613,"context_line":"                     \u0027resource\u0027: self.cmd_resource}),"},{"line_number":614,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":615,"context_line":"        if non_existent:"},{"line_number":616,"context_line":"            print((_(\"Unable to find %(resource)s with id(s) \""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_2233cd15","line":613,"updated":"2016-01-24 15:43:56.000000000","message":"Needs to be plural case?","commit_id":"6fb35db5a63d377babb43f30be01d638d654429f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"79836c4b4268b5f481244edfb7e3fb0d13b57544","unresolved":false,"context_lines":[{"line_number":610,"context_line":"        if successful_delete:"},{"line_number":611,"context_line":"            print((_(\u0027Deleted %(resource)s: %(id)s\u0027)"},{"line_number":612,"context_line":"                  % {\u0027id\u0027: \", \".join(successful_delete),"},{"line_number":613,"context_line":"                     \u0027resource\u0027: self.cmd_resource}),"},{"line_number":614,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":615,"context_line":"        if non_existent:"},{"line_number":616,"context_line":"            print((_(\"Unable to find %(resource)s with id(s) \""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_a5a4a2b9","line":613,"in_reply_to":"9a68dd71_2233cd15","updated":"2016-01-25 00:22:02.000000000","message":"As Bulk Delete handles deletion of One or More resources, I think the current message will work.\nI have changed it a bit in my next patch set.","commit_id":"6fb35db5a63d377babb43f30be01d638d654429f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"76708ea1dde7eb0f570f28187f29c956094de9b7","unresolved":false,"context_lines":[{"line_number":615,"context_line":"        if non_existent:"},{"line_number":616,"context_line":"            print((_(\"Unable to find %(resource)s with id(s) \""},{"line_number":617,"context_line":"                     \"\u0027%(id)s\u0027\") %"},{"line_number":618,"context_line":"                  {\u0027resource\u0027: self.cmd_resource,"},{"line_number":619,"context_line":"                   \u0027id\u0027: \", \".join(non_existent)}),"},{"line_number":620,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":621,"context_line":"        if multiple_ids:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_423841ef","line":618,"updated":"2016-01-24 15:43:56.000000000","message":"The indent level is wrong. This is inside of the second parentheses.","commit_id":"6fb35db5a63d377babb43f30be01d638d654429f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"79836c4b4268b5f481244edfb7e3fb0d13b57544","unresolved":false,"context_lines":[{"line_number":615,"context_line":"        if non_existent:"},{"line_number":616,"context_line":"            print((_(\"Unable to find %(resource)s with id(s) \""},{"line_number":617,"context_line":"                     \"\u0027%(id)s\u0027\") %"},{"line_number":618,"context_line":"                  {\u0027resource\u0027: self.cmd_resource,"},{"line_number":619,"context_line":"                   \u0027id\u0027: \", \".join(non_existent)}),"},{"line_number":620,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":621,"context_line":"        if multiple_ids:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_2599927c","line":618,"in_reply_to":"9a68dd71_423841ef","updated":"2016-01-25 00:22:02.000000000","message":"Done","commit_id":"6fb35db5a63d377babb43f30be01d638d654429f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"76708ea1dde7eb0f570f28187f29c956094de9b7","unresolved":false,"context_lines":[{"line_number":619,"context_line":"                   \u0027id\u0027: \", \".join(non_existent)}),"},{"line_number":620,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":621,"context_line":"        if multiple_ids:"},{"line_number":622,"context_line":"            print((_(\"Multiple %(resource)s matches found for name(s)\""},{"line_number":623,"context_line":"                     \" \u0027%(id)s\u0027.Please use an ID to be more specific.\") %"},{"line_number":624,"context_line":"                  {\u0027resource\u0027: self.cmd_resource,"},{"line_number":625,"context_line":"                   \u0027id\u0027: \", \".join(multiple_ids)}),"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_023ec9d9","line":622,"range":{"start_line":622,"start_character":31,"end_line":622,"end_character":43},"updated":"2016-01-24 15:43:56.000000000","message":"it needs to be plural case?","commit_id":"6fb35db5a63d377babb43f30be01d638d654429f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"79836c4b4268b5f481244edfb7e3fb0d13b57544","unresolved":false,"context_lines":[{"line_number":619,"context_line":"                   \u0027id\u0027: \", \".join(non_existent)}),"},{"line_number":620,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":621,"context_line":"        if multiple_ids:"},{"line_number":622,"context_line":"            print((_(\"Multiple %(resource)s matches found for name(s)\""},{"line_number":623,"context_line":"                     \" \u0027%(id)s\u0027.Please use an ID to be more specific.\") %"},{"line_number":624,"context_line":"                  {\u0027resource\u0027: self.cmd_resource,"},{"line_number":625,"context_line":"                   \u0027id\u0027: \", \".join(multiple_ids)}),"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_4594c641","line":622,"range":{"start_line":622,"start_character":31,"end_line":622,"end_character":43},"in_reply_to":"9a68dd71_023ec9d9","updated":"2016-01-25 00:22:02.000000000","message":"Please see my next Patch set ( PS #12 ).\nI have handled it in a way to manage both single and multiple resource IDs in Bulk Delete","commit_id":"6fb35db5a63d377babb43f30be01d638d654429f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"76708ea1dde7eb0f570f28187f29c956094de9b7","unresolved":false,"context_lines":[{"line_number":620,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":621,"context_line":"        if multiple_ids:"},{"line_number":622,"context_line":"            print((_(\"Multiple %(resource)s matches found for name(s)\""},{"line_number":623,"context_line":"                     \" \u0027%(id)s\u0027.Please use an ID to be more specific.\") %"},{"line_number":624,"context_line":"                  {\u0027resource\u0027: self.cmd_resource,"},{"line_number":625,"context_line":"                   \u0027id\u0027: \", \".join(multiple_ids)}),"},{"line_number":626,"context_line":"                  file\u003dself.app.stdout)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_622d45a7","line":623,"updated":"2016-01-24 15:43:56.000000000","message":"if self.allow_names:","commit_id":"6fb35db5a63d377babb43f30be01d638d654429f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"168557e6fd938e028cde03a32eae35d7af6efa6f","unresolved":false,"context_lines":[{"line_number":620,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":621,"context_line":"        if multiple_ids:"},{"line_number":622,"context_line":"            print((_(\"Multiple %(resource)s matches found for name(s)\""},{"line_number":623,"context_line":"                     \" \u0027%(id)s\u0027.Please use an ID to be more specific.\") %"},{"line_number":624,"context_line":"                  {\u0027resource\u0027: self.cmd_resource,"},{"line_number":625,"context_line":"                   \u0027id\u0027: \", \".join(multiple_ids)}),"},{"line_number":626,"context_line":"                  file\u003dself.app.stdout)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_45a2869a","line":623,"in_reply_to":"9a68dd71_0571ee43","updated":"2016-01-25 00:29:31.000000000","message":"Oh ok , updated in the next PS","commit_id":"6fb35db5a63d377babb43f30be01d638d654429f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a301a60b8cc77af087f7f93dfdb6107ddad7e14d","unresolved":false,"context_lines":[{"line_number":620,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":621,"context_line":"        if multiple_ids:"},{"line_number":622,"context_line":"            print((_(\"Multiple %(resource)s matches found for name(s)\""},{"line_number":623,"context_line":"                     \" \u0027%(id)s\u0027.Please use an ID to be more specific.\") %"},{"line_number":624,"context_line":"                  {\u0027resource\u0027: self.cmd_resource,"},{"line_number":625,"context_line":"                   \u0027id\u0027: \", \".join(multiple_ids)}),"},{"line_number":626,"context_line":"                  file\u003dself.app.stdout)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_0571ee43","line":623,"in_reply_to":"9a68dd71_45e60616","updated":"2016-01-25 00:27:08.000000000","message":"Mistake in copy-and-paste from the previous patch set.\n\nI wanted to comment \u0027A space before Please\u0027.","commit_id":"6fb35db5a63d377babb43f30be01d638d654429f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"79836c4b4268b5f481244edfb7e3fb0d13b57544","unresolved":false,"context_lines":[{"line_number":620,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":621,"context_line":"        if multiple_ids:"},{"line_number":622,"context_line":"            print((_(\"Multiple %(resource)s matches found for name(s)\""},{"line_number":623,"context_line":"                     \" \u0027%(id)s\u0027.Please use an ID to be more specific.\") %"},{"line_number":624,"context_line":"                  {\u0027resource\u0027: self.cmd_resource,"},{"line_number":625,"context_line":"                   \u0027id\u0027: \", \".join(multiple_ids)}),"},{"line_number":626,"context_line":"                  file\u003dself.app.stdout)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_45e60616","line":623,"in_reply_to":"9a68dd71_622d45a7","updated":"2016-01-25 00:22:02.000000000","message":"@Akihiro:\nAny reason why we would need this??","commit_id":"6fb35db5a63d377babb43f30be01d638d654429f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6199a384dad66e97f42849de420b17767ef2c984","unresolved":false,"context_lines":[{"line_number":595,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":596,"context_line":"        return"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"    def _bulk_delete(self, obj_deleter, neutron_client, parsed_args_id):"},{"line_number":599,"context_line":"        successful_delete \u003d []"},{"line_number":600,"context_line":"        non_existent \u003d []"},{"line_number":601,"context_line":"        multiple_ids \u003d []"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_6cfc1cb8","line":598,"range":{"start_line":598,"start_character":56,"end_line":598,"end_character":70},"updated":"2016-01-26 01:02:13.000000000","message":"I think it is better to be a name indicating a plural form.","commit_id":"30e28102a6a21bec118a7b52e2a9837adfd3b133"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"a38c6f1c84cb5a210e8d35e58fe5ae3bea4ba8c5","unresolved":false,"context_lines":[{"line_number":595,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":596,"context_line":"        return"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"    def _bulk_delete(self, obj_deleter, neutron_client, parsed_args_id):"},{"line_number":599,"context_line":"        successful_delete \u003d []"},{"line_number":600,"context_line":"        non_existent \u003d []"},{"line_number":601,"context_line":"        multiple_ids \u003d []"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_f2289e35","line":598,"range":{"start_line":598,"start_character":56,"end_line":598,"end_character":70},"in_reply_to":"9a68dd71_6cfc1cb8","updated":"2016-01-27 08:25:56.000000000","message":"Will fix in the next PS, though I am not sure it is required","commit_id":"30e28102a6a21bec118a7b52e2a9837adfd3b133"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"0c66671aafdfab7cd85c21b8533690221697e677","unresolved":false,"context_lines":[{"line_number":595,"context_line":"                  file\u003dself.app.stdout)"},{"line_number":596,"context_line":"        return"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"    def _bulk_delete(self, obj_deleter, neutron_client, parsed_args_id):"},{"line_number":599,"context_line":"        successful_delete \u003d []"},{"line_number":600,"context_line":"        non_existent \u003d []"},{"line_number":601,"context_line":"        multiple_ids \u003d []"}],"source_content_type":"text/x-python","patch_set":13,"id":"bae84128_250dbf90","line":598,"range":{"start_line":598,"start_character":56,"end_line":598,"end_character":70},"in_reply_to":"9a68dd71_f2289e35","updated":"2016-02-22 06:16:55.000000000","message":"Done","commit_id":"30e28102a6a21bec118a7b52e2a9837adfd3b133"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6199a384dad66e97f42849de420b17767ef2c984","unresolved":false,"context_lines":[{"line_number":603,"context_line":"            try:"},{"line_number":604,"context_line":"                self.delete_item(obj_deleter, neutron_client, item_id)"},{"line_number":605,"context_line":"                successful_delete.append(item_id)"},{"line_number":606,"context_line":"            except exceptions.NeutronClientException:"},{"line_number":607,"context_line":"                non_existent.append(item_id)"},{"line_number":608,"context_line":"            except exceptions.NeutronClientNoUniqueMatch:"},{"line_number":609,"context_line":"                multiple_ids.append(item_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_ac0d34e9","line":606,"range":{"start_line":606,"start_character":11,"end_line":606,"end_character":53},"updated":"2016-01-26 01:02:13.000000000","message":"This catches broader exceptions than NotFound.\nIt should be NotFoundClientException instead, and you need to deal with a generic exception from neutron server separately.","commit_id":"30e28102a6a21bec118a7b52e2a9837adfd3b133"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"0c66671aafdfab7cd85c21b8533690221697e677","unresolved":false,"context_lines":[{"line_number":603,"context_line":"            try:"},{"line_number":604,"context_line":"                self.delete_item(obj_deleter, neutron_client, item_id)"},{"line_number":605,"context_line":"                successful_delete.append(item_id)"},{"line_number":606,"context_line":"            except exceptions.NeutronClientException:"},{"line_number":607,"context_line":"                non_existent.append(item_id)"},{"line_number":608,"context_line":"            except exceptions.NeutronClientNoUniqueMatch:"},{"line_number":609,"context_line":"                multiple_ids.append(item_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"bae84128_8545abb4","line":606,"range":{"start_line":606,"start_character":11,"end_line":606,"end_character":53},"in_reply_to":"7a5de9d1_8d39de43","updated":"2016-02-22 06:16:55.000000000","message":"Done","commit_id":"30e28102a6a21bec118a7b52e2a9837adfd3b133"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"91dc9ffa2990c3106891e73f0620a7c8289f9b72","unresolved":false,"context_lines":[{"line_number":603,"context_line":"            try:"},{"line_number":604,"context_line":"                self.delete_item(obj_deleter, neutron_client, item_id)"},{"line_number":605,"context_line":"                successful_delete.append(item_id)"},{"line_number":606,"context_line":"            except exceptions.NeutronClientException:"},{"line_number":607,"context_line":"                non_existent.append(item_id)"},{"line_number":608,"context_line":"            except exceptions.NeutronClientNoUniqueMatch:"},{"line_number":609,"context_line":"                multiple_ids.append(item_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a5de9d1_8d39de43","line":606,"range":{"start_line":606,"start_character":11,"end_line":606,"end_character":53},"in_reply_to":"9a68dd71_322f1640","updated":"2016-01-29 00:58:33.000000000","message":"@Akihiro: Added the dependency for more clarity.","commit_id":"30e28102a6a21bec118a7b52e2a9837adfd3b133"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"a38c6f1c84cb5a210e8d35e58fe5ae3bea4ba8c5","unresolved":false,"context_lines":[{"line_number":603,"context_line":"            try:"},{"line_number":604,"context_line":"                self.delete_item(obj_deleter, neutron_client, item_id)"},{"line_number":605,"context_line":"                successful_delete.append(item_id)"},{"line_number":606,"context_line":"            except exceptions.NeutronClientException:"},{"line_number":607,"context_line":"                non_existent.append(item_id)"},{"line_number":608,"context_line":"            except exceptions.NeutronClientNoUniqueMatch:"},{"line_number":609,"context_line":"                multiple_ids.append(item_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_322f1640","line":606,"range":{"start_line":606,"start_character":11,"end_line":606,"end_character":53},"in_reply_to":"9a68dd71_ac0d34e9","updated":"2016-01-27 08:25:56.000000000","message":"Problem is, this is the exception being raised RIGHT now....\nReference: https://github.com/openstack/python-neutronclient/blob/master/neutronclient/neutron/v2_0/__init__.py#L109\n\n\nI have proposed this patch (https://review.openstack.org/#/c/272940/) to correct it.\nPlease let me know if it is ok?\nIf yes, then we can move forward.","commit_id":"30e28102a6a21bec118a7b52e2a9837adfd3b133"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"336572625f892af97a7518b969995f0283f25d6f","unresolved":false,"context_lines":[{"line_number":603,"context_line":"            try:"},{"line_number":604,"context_line":"                self.delete_item(obj_deleter, neutron_client, item_id)"},{"line_number":605,"context_line":"                successful_delete.append(item_id)"},{"line_number":606,"context_line":"            except exceptions.NeutronClientException:"},{"line_number":607,"context_line":"                non_existent.append(item_id)"},{"line_number":608,"context_line":"            except exceptions.NeutronClientNoUniqueMatch:"},{"line_number":609,"context_line":"                multiple_ids.append(item_id)"}],"source_content_type":"text/x-python","patch_set":15,"id":"dae33548_5b5d9b47","line":606,"range":{"start_line":606,"start_character":30,"end_line":606,"end_character":52},"updated":"2016-02-19 02:59:04.000000000","message":"NotFound?","commit_id":"9acfa59184346a4cbf78847a88e03606c5b6d63c"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"c41d6c3e6b5099b5651568dbd76124ab204ed0bb","unresolved":false,"context_lines":[{"line_number":584,"context_line":"        obj_deleter \u003d getattr(neutron_client,"},{"line_number":585,"context_line":"                              \"delete_%s\" % self.cmd_resource)"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"        if self.bulk_delete:"},{"line_number":588,"context_line":"            self._bulk_delete(obj_deleter, neutron_client, parsed_args.id)"},{"line_number":589,"context_line":"        else:"},{"line_number":590,"context_line":"            self.delete_item(obj_deleter, neutron_client, parsed_args.id)"}],"source_content_type":"text/x-python","patch_set":18,"id":"bae84128_1754f41e","line":587,"updated":"2016-02-23 07:53:44.000000000","message":"As, self._bulk_delete can handle single id delete as well so I feel it\u0027s better to call one function which does the delete functionality.","commit_id":"4359f7f19ac47c2e7ba64075ee8551b32a0b7a69"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"e9da17cfd43acce537b847ff2bc2d48760b89d64","unresolved":false,"context_lines":[{"line_number":563,"context_line":"        parser \u003d super(DeleteCommand, self).get_parser(prog_name)"},{"line_number":564,"context_line":"        if not self.help_resource:"},{"line_number":565,"context_line":"            self.help_resource \u003d self.resource"},{"line_number":566,"context_line":"        if self.bulk_delete:"},{"line_number":567,"context_line":"            if self.allow_names:"},{"line_number":568,"context_line":"                help_str \u003d _(\u0027ID(s) or name(s) of %s to delete.\u0027)"},{"line_number":569,"context_line":"            else:"},{"line_number":570,"context_line":"                help_str \u003d _(\u0027ID(s) of %s to delete.\u0027)"},{"line_number":571,"context_line":"            parser.add_argument("},{"line_number":572,"context_line":"                \u0027id\u0027, metavar\u003dself.resource.upper(),"},{"line_number":573,"context_line":"                nargs\u003d\u0027+\u0027,"},{"line_number":574,"context_line":"                help\u003dhelp_str % self.help_resource)"},{"line_number":575,"context_line":"        else:"},{"line_number":576,"context_line":"            if self.allow_names:"},{"line_number":577,"context_line":"                help_str \u003d _(\u0027ID or name of %s to delete.\u0027)"},{"line_number":578,"context_line":"            else:"},{"line_number":579,"context_line":"                help_str \u003d _(\u0027ID of %s to delete.\u0027)"},{"line_number":580,"context_line":"            parser.add_argument("},{"line_number":581,"context_line":"                \u0027id\u0027, metavar\u003dself.resource.upper(),"},{"line_number":582,"context_line":"                help\u003dhelp_str % self.help_resource)"},{"line_number":583,"context_line":"        self.add_known_arguments(parser)"},{"line_number":584,"context_line":"        return parser"},{"line_number":585,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"bab6814e_bef71e58","line":582,"range":{"start_line":566,"start_character":0,"end_line":582,"end_character":51},"updated":"2016-05-25 03:23:04.000000000","message":"I know I\u0027m pretty late to this party, but it can be written much simpler.\nBy default nargs is ``None``[1] so we can simplify this block of code by creating \n\n[1] https://github.com/ThomasWaldmann/argparse/blob/67f3ce3c9ad8442d1d4c43724ced5b9ac65faf77/argparse.py#L793\n\n  if self.allow_names:\n      help_str \u003d _(\u0027ID(s) or name(s) of %s to delete.\u0027)\n  else:\n      help_str \u003d _(\u0027ID(s) of %s to delete.\u0027)\n  \n  parser.add_argument(\n      \u0027id\u0027, metavar\u003dself.resource.upper(),\n      nargs\u003d(\u0027+\u0027 if self.bulk_delete else None),\n      help\u003dhelp_str % self.help_resource)\n\n\nWe can skip brackets assigned to ``nargs``.","commit_id":"26e5889dac4a996a617ea30fc7cfdaa6b87cd0cc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"77e51d6503601c636774db985149491ed2ac131c","unresolved":false,"context_lines":[{"line_number":490,"context_line":"            help_str \u003d _(\u0027ID(s) of %s to delete.\u0027)"},{"line_number":491,"context_line":"        parser.add_argument("},{"line_number":492,"context_line":"            \u0027id\u0027, metavar\u003dself.resource.upper(),"},{"line_number":493,"context_line":"            nargs\u003d\u0027+\u0027 if self.bulk_delete else None,"},{"line_number":494,"context_line":"            help\u003dhelp_str % self.help_resource)"},{"line_number":495,"context_line":"        self.add_known_arguments(parser)"},{"line_number":496,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":28,"id":"bacf61ea_ef7f7264","line":493,"range":{"start_line":493,"start_character":47,"end_line":493,"end_character":51},"updated":"2016-08-02 14:02:20.000000000","message":"What does \u0027None\u0027 mean? It is not documented in https://docs.python.org/2.7/library/argparse.html#nargs . Is nargs\u003d1 better?","commit_id":"6f60a63d46be4057186a91a404d7648ea73c724a"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"8f6aeea0bd031320e0229ba57ef95593a22167d8","unresolved":false,"context_lines":[{"line_number":490,"context_line":"            help_str \u003d _(\u0027ID(s) of %s to delete.\u0027)"},{"line_number":491,"context_line":"        parser.add_argument("},{"line_number":492,"context_line":"            \u0027id\u0027, metavar\u003dself.resource.upper(),"},{"line_number":493,"context_line":"            nargs\u003d\u0027+\u0027 if self.bulk_delete else None,"},{"line_number":494,"context_line":"            help\u003dhelp_str % self.help_resource)"},{"line_number":495,"context_line":"        self.add_known_arguments(parser)"},{"line_number":496,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":28,"id":"bacf61ea_161c3dc0","line":493,"range":{"start_line":493,"start_character":47,"end_line":493,"end_character":51},"in_reply_to":"bacf61ea_ef7f7264","updated":"2016-08-04 04:26:38.000000000","message":"nargs\u003dNone if self.bulk_delete is False","commit_id":"6f60a63d46be4057186a91a404d7648ea73c724a"}],"neutronclient/tests/unit/test_cli20.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"77e51d6503601c636774db985149491ed2ac131c","unresolved":false,"context_lines":[{"line_number":516,"context_line":"                \u0027X-Auth-Token\u0027, TOKEN)).AndReturn((MyResp(204), None))"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    def _test_delete_resource(self, resource, cmd, myid, args,"},{"line_number":519,"context_line":"                              cmd_resource\u003dNone, parent_id\u003dNone, add_id\u003dNone):"},{"line_number":520,"context_line":"        self.mox.StubOutWithMock(cmd, \"get_client\")"},{"line_number":521,"context_line":"        self.mox.StubOutWithMock(self.client.httpclient, \"request\")"},{"line_number":522,"context_line":"        cmd.get_client().MultipleTimes().AndReturn(self.client)"}],"source_content_type":"text/x-python","patch_set":28,"id":"bacf61ea_cf9f0e64","line":519,"range":{"start_line":519,"start_character":65,"end_line":519,"end_character":71},"updated":"2016-08-02 14:02:20.000000000","message":"I think \u0027add\u0027 is a bit confusing. How about \u0027extra_ids\u0027.","commit_id":"6f60a63d46be4057186a91a404d7648ea73c724a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"77e51d6503601c636774db985149491ed2ac131c","unresolved":false,"context_lines":[{"line_number":524,"context_line":"            cmd_resource \u003d resource"},{"line_number":525,"context_line":"        path \u003d getattr(self.client, cmd_resource + \"_path\")"},{"line_number":526,"context_line":"        self._test_set_path_and_delete(path, parent_id, myid)"},{"line_number":527,"context_line":"        # add_id is used to test for bulk_delete"},{"line_number":528,"context_line":"        if add_id:"},{"line_number":529,"context_line":"            self._test_set_path_and_delete(path, parent_id, add_id)"},{"line_number":530,"context_line":"        self.mox.ReplayAll()"},{"line_number":531,"context_line":"        cmd_parser \u003d cmd.get_parser(\"delete_\" + cmd_resource)"},{"line_number":532,"context_line":"        shell.run_command(cmd, cmd_parser, args)"}],"source_content_type":"text/x-python","patch_set":28,"id":"bacf61ea_4f7b1e2a","line":529,"range":{"start_line":527,"start_character":8,"end_line":529,"end_character":67},"updated":"2016-08-02 14:02:20.000000000","message":"How about:\n\n  if extra_ids:\n     for _id in extra_ids:\n         self._test_set_path_and_delete(path, parent_id, _id)","commit_id":"6f60a63d46be4057186a91a404d7648ea73c724a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"118557b7a816fff6b0d1a5105a1cf18d43e03bdd","unresolved":false,"context_lines":[{"line_number":526,"context_line":"        path \u003d getattr(self.client, cmd_resource + \"_path\")"},{"line_number":527,"context_line":"        self._test_set_path_and_delete(path, parent_id, myid)"},{"line_number":528,"context_line":"        # extra_ids is used to test for bulk_delete"},{"line_number":529,"context_line":"        if extra_ids:"},{"line_number":530,"context_line":"            self._test_set_path_and_delete(path, parent_id, extra_ids)"},{"line_number":531,"context_line":"        self.mox.ReplayAll()"},{"line_number":532,"context_line":"        cmd_parser \u003d cmd.get_parser(\"delete_\" + cmd_resource)"},{"line_number":533,"context_line":"        shell.run_command(cmd, cmd_parser, args)"}],"source_content_type":"text/x-python","patch_set":31,"id":"9ad45d7e_043db08e","line":530,"range":{"start_line":529,"start_character":8,"end_line":530,"end_character":70},"updated":"2016-08-11 19:33:58.000000000","message":"The point of using \u0027extra_ids\u0027 is that it is a plural form, but the third argument of _test_set_path_and_delete accepts only a single ID.\nYou need to either change \u0027extra_ids\u0027 to \u0027extra_id\u0027 or use for-loop here.\nYou can clean this up in a follow-up patch.","commit_id":"b16c9a8d3d70fe2ec69ab44b740011dc2b2bc097"}],"neutronclient/tests/unit/test_cli20_network.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"94ca65fef86ca80c5cf0d71e980080cfe4c398a4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"fa69d971_e784470c","updated":"2016-01-08 11:16:08.000000000","message":"Unit test to cover bulk delete is required.","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"be3a2f98f0a6b6a6c53260a884528ca99b83a2a6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"fa69d971_2132eb10","in_reply_to":"fa69d971_17ddd0df","updated":"2016-01-11 18:00:19.000000000","message":"It deletes two resources, but the way of the test looks tricky.\nIf you want to test bulk delete, you need to pass more than one ID as args and to check delete APIs called both for myid and myid1.","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"411094ebcbc712107f0fb7e2b9bc493820239389","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"da6ed579_977706d4","in_reply_to":"fa69d971_2132eb10","updated":"2016-01-12 07:41:17.000000000","message":"But is that not what is happening in Line number 546 and 547?\nThe IDs myid and myid1 are being passed to the args list, and the delete for the resource is being called.\n\nHow do you recommend it to be modified further?\nI do agree that I can change myid, myid1 to myid1,myid2 as mentioned in your below comment.\n\nBut it would also give me the same results, isnt it?","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"24cc1e506890f9c763d4a74322d5b3bc40d01323","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"fa69d971_17ddd0df","in_reply_to":"fa69d971_e784470c","updated":"2016-01-11 05:26:21.000000000","message":"The Test case added in Line 544 was intended as a Unit test for Bulk Delete.\nIt deletes two resources, isnt it?","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"be3a2f98f0a6b6a6c53260a884528ca99b83a2a6","unresolved":false,"context_lines":[{"line_number":543,"context_line":"        self._test_delete_resource(resource, cmd, myid, args)"},{"line_number":544,"context_line":"        # Delete net: myid myid1."},{"line_number":545,"context_line":"        myid1 \u003d \u0027myid1\u0027"},{"line_number":546,"context_line":"        args \u003d [myid, myid1]"},{"line_number":547,"context_line":"        self._test_delete_resource(resource, cmd, myid, args)"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"    def _test_extend_list(self, mox_calls):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_244e796f","line":546,"updated":"2016-01-11 18:00:19.000000000","message":"I think \u0027myid1\u0027 and \u0027myid2\u0027 sounds better.","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"94ca65fef86ca80c5cf0d71e980080cfe4c398a4","unresolved":false,"context_lines":[{"line_number":544,"context_line":"        # Delete net: myid myid1."},{"line_number":545,"context_line":"        myid1 \u003d \u0027myid1\u0027"},{"line_number":546,"context_line":"        args \u003d [myid, myid1]"},{"line_number":547,"context_line":"        self._test_delete_resource(resource, cmd, myid, args)"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"    def _test_extend_list(self, mox_calls):"},{"line_number":550,"context_line":"        data \u003d [{\u0027id\u0027: \u0027netid%d\u0027 % i, \u0027name\u0027: \u0027net%d\u0027 % i,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_87a30b9e","line":547,"updated":"2016-01-08 11:16:08.000000000","message":"Why is it necessary?\n\nThis just adds another single delete test.","commit_id":"189f13168c1663bc5779b7b8c15d5888b6524e37"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"968750d0f8f141b4c2cfd8236bff265de0016fd0","unresolved":false,"context_lines":[{"line_number":540,"context_line":"        cmd \u003d network.DeleteNetwork(test_cli20.MyApp(sys.stdout), None)"},{"line_number":541,"context_line":"        myid \u003d \u0027myid\u0027"},{"line_number":542,"context_line":"        args \u003d [myid]"},{"line_number":543,"context_line":"        self._test_delete_resource(resource, cmd, myid, args)"},{"line_number":544,"context_line":"        # Delete net: myid1 myid2."},{"line_number":545,"context_line":"        myid1 \u003d \u0027myid1\u0027"},{"line_number":546,"context_line":"        myid2 \u003d \u0027myid2\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_a4d4c9bc","line":543,"updated":"2016-01-14 09:59:52.000000000","message":"It is better to be a separate test: test_bulk_delete_network.","commit_id":"84d41034332f1fca6e09241d7e63283d52999ded"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"5ba5d52d21b3b43a3fcac90910731d5a76ebbe4c","unresolved":false,"context_lines":[{"line_number":540,"context_line":"        cmd \u003d network.DeleteNetwork(test_cli20.MyApp(sys.stdout), None)"},{"line_number":541,"context_line":"        myid \u003d \u0027myid\u0027"},{"line_number":542,"context_line":"        args \u003d [myid]"},{"line_number":543,"context_line":"        self._test_delete_resource(resource, cmd, myid, args)"},{"line_number":544,"context_line":"        # Delete net: myid1 myid2."},{"line_number":545,"context_line":"        myid1 \u003d \u0027myid1\u0027"},{"line_number":546,"context_line":"        myid2 \u003d \u0027myid2\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a68dd71_f122efb8","line":543,"in_reply_to":"da6ed579_a4d4c9bc","updated":"2016-01-21 03:50:58.000000000","message":"Umm, Ok.\nWill do it in the next Patchset","commit_id":"84d41034332f1fca6e09241d7e63283d52999ded"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6199a384dad66e97f42849de420b17767ef2c984","unresolved":false,"context_lines":[{"line_number":549,"context_line":"        myid1 \u003d \u0027myid1\u0027"},{"line_number":550,"context_line":"        myid2 \u003d \u0027myid2\u0027"},{"line_number":551,"context_line":"        args \u003d [myid1, myid2]"},{"line_number":552,"context_line":"        self._test_delete_resource(resource, cmd, myid1, args)"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    def _test_extend_list(self, mox_calls):"},{"line_number":555,"context_line":"        data \u003d [{\u0027id\u0027: \u0027netid%d\u0027 % i, \u0027name\u0027: \u0027net%d\u0027 % i,"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_8c1e300a","line":552,"updated":"2016-01-26 01:02:13.000000000","message":"Does this check if deletion of myid2 is done?","commit_id":"30e28102a6a21bec118a7b52e2a9837adfd3b133"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"a38c6f1c84cb5a210e8d35e58fe5ae3bea4ba8c5","unresolved":false,"context_lines":[{"line_number":549,"context_line":"        myid1 \u003d \u0027myid1\u0027"},{"line_number":550,"context_line":"        myid2 \u003d \u0027myid2\u0027"},{"line_number":551,"context_line":"        args \u003d [myid1, myid2]"},{"line_number":552,"context_line":"        self._test_delete_resource(resource, cmd, myid1, args)"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    def _test_extend_list(self, mox_calls):"},{"line_number":555,"context_line":"        data \u003d [{\u0027id\u0027: \u0027netid%d\u0027 % i, \u0027name\u0027: \u0027net%d\u0027 % i,"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a68dd71_12a1b2a9","line":552,"in_reply_to":"9a68dd71_8c1e300a","updated":"2016-01-27 08:25:56.000000000","message":"Umm, no.\nI went across the _test_delete_resource function, and seems it will check only for the deletion of myid1\n\nI am not sure how to do this, unless modifying the _test_delete_resource function itself.... \nAny suggestions?","commit_id":"30e28102a6a21bec118a7b52e2a9837adfd3b133"}],"releasenotes/notes/bulk-delete-support-94a353db08efec8d.yaml":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f817c3fffb4963b169d8b5f0ff81bd3c70f0b24a","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    CLI support for bulk delete."},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    * Now, python-neutronclient provides the support of"},{"line_number":7,"context_line":"      bulk delete. By using this feature, multiple resource"},{"line_number":8,"context_line":"      can be deleted using a single command."},{"line_number":9,"context_line":"    * Example: ``neutron router-delete router_a router_b``"},{"line_number":10,"context_line":"      deletes both router_a and router_b."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"9a68dd71_a279fdc9","line":7,"range":{"start_line":6,"start_character":6,"end_line":7,"end_character":18},"updated":"2016-01-24 15:40:44.000000000","message":"This says the same as L.4. It looks unnecessary.","commit_id":"c83e15c34b5b8a8b7489d8ee994de75a2ce9975f"}]}
