)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ce10b4a2a62114654dd138cded43580650f2feba","unresolved":false,"context_lines":[{"line_number":14,"context_line":"LBaaS is merged, and not before."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The Neutron LBaaS patch is here:"},{"line_number":17,"context_line":"https://review.openstack.org/#/c/218560/"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Ib72d743ff0d6ca7f0fde034a8c73029308ca01a1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a8ffd7b_2421da9f","line":17,"updated":"2015-11-26 05:44:54.000000000","message":"Please add  Depends-On , similar to the git commit message in https://review.openstack.org/#/c/246077/\nThat ways, zuul will also be happy .","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"4bc4a1ab559d721225bfdd6816646c68da37f616","unresolved":false,"context_lines":[{"line_number":14,"context_line":"LBaaS is merged, and not before."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The Neutron LBaaS patch is here:"},{"line_number":17,"context_line":"https://review.openstack.org/#/c/218560/"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Ib72d743ff0d6ca7f0fde034a8c73029308ca01a1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba63e191_e693de4d","line":17,"in_reply_to":"9a8ffd7b_2421da9f","updated":"2016-01-20 07:39:59.000000000","message":"Will do.","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"}],"neutronclient/neutron/v2_0/lb/v2/listener.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5e12875480412e4fe323b6c435d5cc69f38df6ef","unresolved":false,"context_lines":[{"line_number":39,"context_line":"def _validate_default_pool_lb(client, pool_id, loadbalancer_id):"},{"line_number":40,"context_line":"    \"\"\"Listener loadbalancer and pool loadbalancer must match\"\"\""},{"line_number":41,"context_line":"    if pool_id:"},{"line_number":42,"context_line":"        lb_id \u003d neutronV20.find_resource_by_name_or_id("},{"line_number":43,"context_line":"            client,"},{"line_number":44,"context_line":"            \u0027pool\u0027,"},{"line_number":45,"context_line":"            pool_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_4632aa5f","line":42,"range":{"start_line":42,"start_character":16,"end_line":42,"end_character":54},"updated":"2015-09-04 07:15:49.000000000","message":"How about using _get_pool_id define just above instead?","commit_id":"382187a53b13b490620aeb02a2662735529e92d9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"0ec0c303525f4abaf9457e5bcd8598976834238f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"def _validate_default_pool_lb(client, pool_id, loadbalancer_id):"},{"line_number":40,"context_line":"    \"\"\"Listener loadbalancer and pool loadbalancer must match\"\"\""},{"line_number":41,"context_line":"    if pool_id:"},{"line_number":42,"context_line":"        lb_id \u003d neutronV20.find_resource_by_name_or_id("},{"line_number":43,"context_line":"            client,"},{"line_number":44,"context_line":"            \u0027pool\u0027,"},{"line_number":45,"context_line":"            pool_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_f1fdbab1","line":42,"in_reply_to":"da20952f_4632aa5f","updated":"2015-09-04 08:12:33.000000000","message":"_get_pool_id is getting just the resource ID, not the full resource.","commit_id":"382187a53b13b490620aeb02a2662735529e92d9"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5e12875480412e4fe323b6c435d5cc69f38df6ef","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        lb_id \u003d neutronV20.find_resource_by_name_or_id("},{"line_number":43,"context_line":"            client,"},{"line_number":44,"context_line":"            \u0027pool\u0027,"},{"line_number":45,"context_line":"            pool_id,"},{"line_number":46,"context_line":"            cmd_resource\u003d\u0027lbaas_pool\u0027)[\u0027loadbalancers\u0027][0][\u0027id\u0027]"},{"line_number":47,"context_line":"        if lb_id !\u003d loadbalancer_id:"},{"line_number":48,"context_line":"            message \u003d \"Listener loadbalancer and pool loadbalancer must match\""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_c6ef9aaf","line":45,"range":{"start_line":45,"start_character":12,"end_line":45,"end_character":19},"updated":"2015-09-04 07:15:49.000000000","message":"Isn\u0027t it better to use \"pool_id_or_name\"?\nIf it should be pool_id, using find_resource_by_name_or_id looks inconsistent.","commit_id":"382187a53b13b490620aeb02a2662735529e92d9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"0ec0c303525f4abaf9457e5bcd8598976834238f","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        lb_id \u003d neutronV20.find_resource_by_name_or_id("},{"line_number":43,"context_line":"            client,"},{"line_number":44,"context_line":"            \u0027pool\u0027,"},{"line_number":45,"context_line":"            pool_id,"},{"line_number":46,"context_line":"            cmd_resource\u003d\u0027lbaas_pool\u0027)[\u0027loadbalancers\u0027][0][\u0027id\u0027]"},{"line_number":47,"context_line":"        if lb_id !\u003d loadbalancer_id:"},{"line_number":48,"context_line":"            message \u003d \"Listener loadbalancer and pool loadbalancer must match\""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_91d47e20","line":45,"in_reply_to":"da20952f_c6ef9aaf","updated":"2015-09-04 08:12:33.000000000","message":"Done","commit_id":"382187a53b13b490620aeb02a2662735529e92d9"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5e12875480412e4fe323b6c435d5cc69f38df6ef","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            pool_id,"},{"line_number":46,"context_line":"            cmd_resource\u003d\u0027lbaas_pool\u0027)[\u0027loadbalancers\u0027][0][\u0027id\u0027]"},{"line_number":47,"context_line":"        if lb_id !\u003d loadbalancer_id:"},{"line_number":48,"context_line":"            message \u003d \"Listener loadbalancer and pool loadbalancer must match\""},{"line_number":49,"context_line":"            raise exceptions.CommandError(message)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_6637ae4d","line":48,"range":{"start_line":48,"start_character":22,"end_line":48,"end_character":78},"updated":"2015-09-04 07:15:49.000000000","message":"Wrap with \"_()\"","commit_id":"382187a53b13b490620aeb02a2662735529e92d9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"0ec0c303525f4abaf9457e5bcd8598976834238f","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            pool_id,"},{"line_number":46,"context_line":"            cmd_resource\u003d\u0027lbaas_pool\u0027)[\u0027loadbalancers\u0027][0][\u0027id\u0027]"},{"line_number":47,"context_line":"        if lb_id !\u003d loadbalancer_id:"},{"line_number":48,"context_line":"            message \u003d \"Listener loadbalancer and pool loadbalancer must match\""},{"line_number":49,"context_line":"            raise exceptions.CommandError(message)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_31cd7285","line":48,"in_reply_to":"da20952f_6637ae4d","updated":"2015-09-04 08:12:33.000000000","message":"Done","commit_id":"382187a53b13b490620aeb02a2662735529e92d9"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5e12875480412e4fe323b6c435d5cc69f38df6ef","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def args2body(self, parsed_args):"},{"line_number":117,"context_line":"        if parsed_args.loadbalancer:"},{"line_number":118,"context_line":"            parsed_args.loadbalancer_id \u003d _get_loadbalancer_id("},{"line_number":119,"context_line":"                self.get_client(), parsed_args.loadbalancer)"},{"line_number":120,"context_line":"        if parsed_args.default_pool:"},{"line_number":121,"context_line":"            parsed_args.default_pool_id \u003d _get_pool_id("}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_a6f4e65a","line":118,"range":{"start_line":118,"start_character":11,"end_line":118,"end_character":39},"updated":"2015-09-04 07:15:49.000000000","message":"It is not a good idea to update parsed_args.\nparsed_args should be kept as returned by parse_args().\n\nDefine body (below) first and then:\n\n  if parsed_args.loadbalancer:\n      resource[\u0027loadbalancer_id\u0027] \u003d _get_loadbalancer_id(...)\n  if parsed_args.default_pool:\n      resource[\u0027default_pool_id\u0027] \u003d _get_pool_id(...)","commit_id":"382187a53b13b490620aeb02a2662735529e92d9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"0ec0c303525f4abaf9457e5bcd8598976834238f","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def args2body(self, parsed_args):"},{"line_number":117,"context_line":"        if parsed_args.loadbalancer:"},{"line_number":118,"context_line":"            parsed_args.loadbalancer_id \u003d _get_loadbalancer_id("},{"line_number":119,"context_line":"                self.get_client(), parsed_args.loadbalancer)"},{"line_number":120,"context_line":"        if parsed_args.default_pool:"},{"line_number":121,"context_line":"            parsed_args.default_pool_id \u003d _get_pool_id("}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_b13742fe","line":118,"in_reply_to":"da20952f_a6f4e65a","updated":"2015-09-04 08:12:33.000000000","message":"Done","commit_id":"382187a53b13b490620aeb02a2662735529e92d9"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5e12875480412e4fe323b6c435d5cc69f38df6ef","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            message \u003d (\u0027Either --default-pool or --loadbalancer must be \u0027"},{"line_number":129,"context_line":"                       \u0027specified.\u0027)"},{"line_number":130,"context_line":"            raise exceptions.CommandError(message)"},{"line_number":131,"context_line":"        body \u003d {"},{"line_number":132,"context_line":"            self.resource: {"},{"line_number":133,"context_line":"                \u0027protocol\u0027: parsed_args.protocol,"},{"line_number":134,"context_line":"                \u0027protocol_port\u0027: parsed_args.protocol_port,"},{"line_number":135,"context_line":"                \u0027admin_state_up\u0027: parsed_args.admin_state,"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_068b52c4","line":132,"range":{"start_line":131,"start_character":8,"end_line":132,"end_character":28},"updated":"2015-09-04 07:15:49.000000000","message":"We only access body[self.resource].\nHow about defining it as follows:\n\n  resource \u003d {\n    \u0027protocol\u0027: ....,\n\n  }\n\nand at the bottom:\n\n  return {self.resource: resource}\n\nI think the code would be simpler.","commit_id":"382187a53b13b490620aeb02a2662735529e92d9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"0ec0c303525f4abaf9457e5bcd8598976834238f","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                       \u0027specified.\u0027)"},{"line_number":130,"context_line":"            raise exceptions.CommandError(message)"},{"line_number":131,"context_line":"        body \u003d {"},{"line_number":132,"context_line":"            self.resource: {"},{"line_number":133,"context_line":"                \u0027protocol\u0027: parsed_args.protocol,"},{"line_number":134,"context_line":"                \u0027protocol_port\u0027: parsed_args.protocol_port,"},{"line_number":135,"context_line":"                \u0027admin_state_up\u0027: parsed_args.admin_state,"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_b1950234","line":132,"in_reply_to":"da20952f_068b52c4","updated":"2015-09-04 08:12:33.000000000","message":"Note that what you\u0027re suggesting is inconsistent with the rest of the files in this directory (they all use the style I\u0027ve written here). However, as what you\u0027re suggesting makes the code a lot clearer...  I\u0027mma go with that.\n\nIf we want to fix the style in the other files in this directory, that should probably be done in another commit.","commit_id":"382187a53b13b490620aeb02a2662735529e92d9"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ce10b4a2a62114654dd138cded43580650f2feba","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        elif not parsed_args.loadbalancer and not parsed_args.default_pool:"},{"line_number":135,"context_line":"            message \u003d _(\u0027Either --default-pool or --loadbalancer must be \u0027"},{"line_number":136,"context_line":"                        \u0027specified.\u0027)"},{"line_number":137,"context_line":"            raise exceptions.CommandError(message)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        neutronV20.update_dict(parsed_args, resource,"},{"line_number":140,"context_line":"                               [\u0027connection-limit\u0027, \u0027description\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_64de0213","line":137,"updated":"2015-11-26 05:44:54.000000000","message":"I think this can be reformatted??\n\n\n\n        if not parsed_args.loadbalancer and not parsed_args.default_pool:\n            message \u003d _(\u0027Either --default-pool or --loadbalancer must be \u0027\n                        \u0027specified.\u0027)\n            raise exceptions.CommandError(message)\n        else:\n            if parsed_args.loadbalancer:\n                loadbalancer_id \u003d _get_loadbalancer_id(\n                    self.get_client(), parsed_args.loadbalancer)\n                resource[\u0027loadbalancer_id\u0027] \u003d loadbalancer_id\n            if parsed_args.default_pool:\n                default_pool_id \u003d _get_pool_id(\n                    self.get_client(), parsed_args.default_pool)\n                resource[\u0027default_pool_id\u0027] \u003d default_pool_id\n            if parsed_args.loadbalancer and parsed_args.default_pool:\n                _validate_default_pool_lb(self.get_client(), default_pool_id,\n                                          loadbalancer_id)","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"23ceccf43520aeea24c949523ec30fb032898a71","unresolved":false,"context_lines":[{"line_number":40,"context_line":"def _validate_default_pool_lb(client, pool_id_or_name, loadbalancer_id):"},{"line_number":41,"context_line":"    \"\"\"Listener loadbalancer and pool loadbalancer must match\"\"\""},{"line_number":42,"context_line":"    if pool_id_or_name:"},{"line_number":43,"context_line":"        lb_id \u003d neutronV20.find_resource_by_name_or_id("},{"line_number":44,"context_line":"            client,"},{"line_number":45,"context_line":"            \u0027pool\u0027,"},{"line_number":46,"context_line":"            pool_id_or_name,"},{"line_number":47,"context_line":"            cmd_resource\u003d\u0027lbaas_pool\u0027)[\u0027loadbalancers\u0027][0][\u0027id\u0027]"},{"line_number":48,"context_line":"        if lb_id !\u003d loadbalancer_id:"},{"line_number":49,"context_line":"            message \u003d _(\u0027Listener loadbalancer and pool loadbalancer must \u0027"},{"line_number":50,"context_line":"                        \u0027match\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_fdcc74bc","line":47,"range":{"start_line":43,"start_character":16,"end_line":47,"end_character":64},"updated":"2016-01-24 16:22:27.000000000","message":"How about defining a method?\n_get_pool_id and _get_loadbalancer_id above are used once, so there seems no reason not to define this as a method.","commit_id":"a26a7a8ab994de7252b658b58382feb7289f3c92"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"8fbf781d7980a521436f920829dbe9d017ee5370","unresolved":false,"context_lines":[{"line_number":40,"context_line":"def _validate_default_pool_lb(client, pool_id_or_name, loadbalancer_id):"},{"line_number":41,"context_line":"    \"\"\"Listener loadbalancer and pool loadbalancer must match\"\"\""},{"line_number":42,"context_line":"    if pool_id_or_name:"},{"line_number":43,"context_line":"        lb_id \u003d neutronV20.find_resource_by_name_or_id("},{"line_number":44,"context_line":"            client,"},{"line_number":45,"context_line":"            \u0027pool\u0027,"},{"line_number":46,"context_line":"            pool_id_or_name,"},{"line_number":47,"context_line":"            cmd_resource\u003d\u0027lbaas_pool\u0027)[\u0027loadbalancers\u0027][0][\u0027id\u0027]"},{"line_number":48,"context_line":"        if lb_id !\u003d loadbalancer_id:"},{"line_number":49,"context_line":"            message \u003d _(\u0027Listener loadbalancer and pool loadbalancer must \u0027"},{"line_number":50,"context_line":"                        \u0027match\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_d37117aa","line":47,"range":{"start_line":43,"start_character":16,"end_line":47,"end_character":64},"in_reply_to":"9a68dd71_fdcc74bc","updated":"2016-01-26 11:00:56.000000000","message":"Done","commit_id":"a26a7a8ab994de7252b658b58382feb7289f3c92"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"23ceccf43520aeea24c949523ec30fb032898a71","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        if parsed_args.loadbalancer and parsed_args.default_pool:"},{"line_number":135,"context_line":"            _validate_default_pool_lb(self.get_client(), default_pool_id,"},{"line_number":136,"context_line":"                                      loadbalancer_id)"},{"line_number":137,"context_line":"        elif not parsed_args.loadbalancer and not parsed_args.default_pool:"},{"line_number":138,"context_line":"            message \u003d _(\u0027Either --default-pool or --loadbalancer must be \u0027"},{"line_number":139,"context_line":"                        \u0027specified.\u0027)"},{"line_number":140,"context_line":"            raise exceptions.CommandError(message)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_dda2d0fb","line":137,"updated":"2016-01-24 16:22:27.000000000","message":"It is better to move L.137-140 before L.130.\nWe can avoid REST API calls in a case of error.","commit_id":"a26a7a8ab994de7252b658b58382feb7289f3c92"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"8fbf781d7980a521436f920829dbe9d017ee5370","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        if parsed_args.loadbalancer and parsed_args.default_pool:"},{"line_number":135,"context_line":"            _validate_default_pool_lb(self.get_client(), default_pool_id,"},{"line_number":136,"context_line":"                                      loadbalancer_id)"},{"line_number":137,"context_line":"        elif not parsed_args.loadbalancer and not parsed_args.default_pool:"},{"line_number":138,"context_line":"            message \u003d _(\u0027Either --default-pool or --loadbalancer must be \u0027"},{"line_number":139,"context_line":"                        \u0027specified.\u0027)"},{"line_number":140,"context_line":"            raise exceptions.CommandError(message)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_737b8b2a","line":137,"in_reply_to":"9a68dd71_dda2d0fb","updated":"2016-01-26 11:00:56.000000000","message":"Done","commit_id":"a26a7a8ab994de7252b658b58382feb7289f3c92"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"23ceccf43520aeea24c949523ec30fb032898a71","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                                \u0027loadbalancer_id\u0027, \u0027name\u0027,"},{"line_number":145,"context_line":"                                \u0027default_tls_container_ref\u0027,"},{"line_number":146,"context_line":"                                \u0027sni_container_refs\u0027,"},{"line_number":147,"context_line":"                                \u0027tenant_id\u0027, \u0027default_pool_id\u0027])"},{"line_number":148,"context_line":"        return {self.resource: resource}"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_7db40434","line":147,"updated":"2016-01-24 16:22:27.000000000","message":"There is no need to include loadbalancer_id and default_pool_id in this list. They are already assigned above.","commit_id":"a26a7a8ab994de7252b658b58382feb7289f3c92"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"8fbf781d7980a521436f920829dbe9d017ee5370","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                                \u0027loadbalancer_id\u0027, \u0027name\u0027,"},{"line_number":145,"context_line":"                                \u0027default_tls_container_ref\u0027,"},{"line_number":146,"context_line":"                                \u0027sni_container_refs\u0027,"},{"line_number":147,"context_line":"                                \u0027tenant_id\u0027, \u0027default_pool_id\u0027])"},{"line_number":148,"context_line":"        return {self.resource: resource}"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_936e3f95","line":147,"in_reply_to":"9a68dd71_7db40434","updated":"2016-01-26 11:00:56.000000000","message":"Done","commit_id":"a26a7a8ab994de7252b658b58382feb7289f3c92"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"d3d0984e80ff4422ff43360800f2062b216e909f","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            help\u003d_(\u0027Description of the listener.\u0027))"},{"line_number":74,"context_line":"        parser.add_argument("},{"line_number":75,"context_line":"            \u0027--name\u0027,"},{"line_number":76,"context_line":"            help\u003d_(\u0027The name of the listener.\u0027))"},{"line_number":77,"context_line":"        parser.add_argument("},{"line_number":78,"context_line":"            \u0027--default-tls-container-ref\u0027,"},{"line_number":79,"context_line":"            dest\u003d\u0027default_tls_container_ref\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_07d7b1ed","line":76,"updated":"2016-02-29 09:44:13.000000000","message":"Better to mention about the restriction in the help as well.. \"Either --default-pool or --loadbalancer must be specified\"","commit_id":"2ac2de6f78642f56f5d8502b5ede662ed962a115"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5e56fb39bccc44170b7b79662e2b18320f01bdf2","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            help\u003d_(\u0027Description of the listener.\u0027))"},{"line_number":74,"context_line":"        parser.add_argument("},{"line_number":75,"context_line":"            \u0027--name\u0027,"},{"line_number":76,"context_line":"            help\u003d_(\u0027The name of the listener.\u0027))"},{"line_number":77,"context_line":"        parser.add_argument("},{"line_number":78,"context_line":"            \u0027--default-tls-container-ref\u0027,"},{"line_number":79,"context_line":"            dest\u003d\u0027default_tls_container_ref\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_207a8477","line":76,"in_reply_to":"9aed3d3a_07d7b1ed","updated":"2016-02-29 17:07:29.000000000","message":"Done","commit_id":"2ac2de6f78642f56f5d8502b5ede662ed962a115"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ccdeb659ee56af9c3a31fd84c53f999190cceeb9","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            \u0027--sni-container-refs\u0027,"},{"line_number":84,"context_line":"            dest\u003d\u0027sni_container_refs\u0027,"},{"line_number":85,"context_line":"            nargs\u003d\u0027+\u0027,"},{"line_number":86,"context_line":"            help\u003d_(\u0027List of TLS container references for SNI.\u0027))"},{"line_number":87,"context_line":"        parser.add_argument("},{"line_number":88,"context_line":"            \u0027--default-pool\u0027,"},{"line_number":89,"context_line":"            help\u003d_(\u0027Default pool for the listener.\u0027))"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_71f63bfa","line":86,"updated":"2016-02-29 08:51:56.000000000","message":"Neutronclient uses various method to describe Lists.\na)Syntax 1: https://github.com/openstack/python-neutronclient/blob/master/neutronclient/neutron/v2_0/lb/healthmonitor.py#L51-L56\n\nb) Syntax 2:https://github.com/openstack/python-neutronclient/blob/master/neutronclient/neutron/v2_0/fw/firewallpolicy.py#L41-L42\n\n\n\nOPTION#1:\nNow the Firewall methodology is not very useful, but what I am feeling here is that you are also following a \"space delimited\" method of mentioning more than 1 sni-container-reference.\nI would suggest that you mention that the List of TLS container references for SNI be provided as a white-space delimited list . ( may be a bit more user-understandable)\n\nOPTION#2:\nIf I were to consider  http://docs.openstack.org/developer/python-neutronclient/devref/cli_option_guideline.html#options-for-list-value, then I would state that you may remove nargs\u003d\u0027+\u0027 and add action\u003d\"append\"\n\nThat ways, user can specify --sni-container-refs more than once and it can be appended to a list","commit_id":"2ac2de6f78642f56f5d8502b5ede662ed962a115"},{"author":{"_account_id":8446,"name":"Evgeny Fedoruk","email":"evgenyf@radware.com","username":"evgenyfedoruk"},"change_message_id":"483f0395710bc748056b43acd76d067b6b393057","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            \u0027--sni-container-refs\u0027,"},{"line_number":84,"context_line":"            dest\u003d\u0027sni_container_refs\u0027,"},{"line_number":85,"context_line":"            nargs\u003d\u0027+\u0027,"},{"line_number":86,"context_line":"            help\u003d_(\u0027List of TLS container references for SNI.\u0027))"},{"line_number":87,"context_line":"        parser.add_argument("},{"line_number":88,"context_line":"            \u0027--default-pool\u0027,"},{"line_number":89,"context_line":"            help\u003d_(\u0027Default pool for the listener.\u0027))"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_4dfedcae","line":86,"in_reply_to":"9aed3d3a_05479277","updated":"2016-02-29 17:24:52.000000000","message":"+1","commit_id":"2ac2de6f78642f56f5d8502b5ede662ed962a115"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5dcd0ec8d656b7ac6336b7c441dec7809be27903","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            \u0027--sni-container-refs\u0027,"},{"line_number":84,"context_line":"            dest\u003d\u0027sni_container_refs\u0027,"},{"line_number":85,"context_line":"            nargs\u003d\u0027+\u0027,"},{"line_number":86,"context_line":"            help\u003d_(\u0027List of TLS container references for SNI.\u0027))"},{"line_number":87,"context_line":"        parser.add_argument("},{"line_number":88,"context_line":"            \u0027--default-pool\u0027,"},{"line_number":89,"context_line":"            help\u003d_(\u0027Default pool for the listener.\u0027))"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_a6150241","line":86,"in_reply_to":"9aed3d3a_05479277","updated":"2016-02-29 19:23:45.000000000","message":"Agree with Stephen. Finding this kind of things through reviews is good, but it is not a reason to block merging this patch. It can be fixed later.","commit_id":"2ac2de6f78642f56f5d8502b5ede662ed962a115"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5e56fb39bccc44170b7b79662e2b18320f01bdf2","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            \u0027--sni-container-refs\u0027,"},{"line_number":84,"context_line":"            dest\u003d\u0027sni_container_refs\u0027,"},{"line_number":85,"context_line":"            nargs\u003d\u0027+\u0027,"},{"line_number":86,"context_line":"            help\u003d_(\u0027List of TLS container references for SNI.\u0027))"},{"line_number":87,"context_line":"        parser.add_argument("},{"line_number":88,"context_line":"            \u0027--default-pool\u0027,"},{"line_number":89,"context_line":"            help\u003d_(\u0027Default pool for the listener.\u0027))"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_05479277","line":86,"in_reply_to":"9aed3d3a_71f63bfa","updated":"2016-02-29 17:07:29.000000000","message":"Reedip:  This update concerns itself with shared-pools support only. You\u0027ll notice that my update doesn\u0027t actually touch the SNI-related code here.\n\nIf this is something that needs changing, I think it\u0027s more appropriate to do it in a separate bugfix patchset.","commit_id":"2ac2de6f78642f56f5d8502b5ede662ed962a115"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"d3d0984e80ff4422ff43360800f2062b216e909f","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        return {self.resource: resource}"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"class UpdateListener(neutronV20.UpdateCommand):"},{"line_number":133,"context_line":"    \"\"\"LBaaS v2 Update a given listener.\"\"\""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    resource \u003d \u0027listener\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_8712a107","line":132,"updated":"2016-02-29 09:44:13.000000000","message":"From \"https://review.openstack.org/#/c/218560/21/neutron_lbaas/extensions/sharedpools.py (L53)\", I can find \u0027default_pool_id\u0027 is an updatable param.. Not planning to implement that support in the neutronclient?","commit_id":"2ac2de6f78642f56f5d8502b5ede662ed962a115"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"37699a1c9f505310f8e84f561fe4c9007e4a584e","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        return {self.resource: resource}"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"class UpdateListener(neutronV20.UpdateCommand):"},{"line_number":133,"context_line":"    \"\"\"LBaaS v2 Update a given listener.\"\"\""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    resource \u003d \u0027listener\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_30063620","line":132,"in_reply_to":"9aed3d3a_4a1eab70","updated":"2016-03-01 02:01:38.000000000","message":"Moved!!!","commit_id":"2ac2de6f78642f56f5d8502b5ede662ed962a115"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5e56fb39bccc44170b7b79662e2b18320f01bdf2","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        return {self.resource: resource}"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"class UpdateListener(neutronV20.UpdateCommand):"},{"line_number":133,"context_line":"    \"\"\"LBaaS v2 Update a given listener.\"\"\""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    resource \u003d \u0027listener\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_f79cdf0f","line":132,"in_reply_to":"9aed3d3a_825a8f28","updated":"2016-02-29 17:07:29.000000000","message":"Vikram: Updating the default_pool_id is no more broken than the other update-able items like name, description, connection-limit, etc. It looks like the update code here could use a lot of work to make it more user-friendly, as is the case with most of the lbaas-v2 update commands.\n\nSeeing as how this code is no more broken than the code that came previously, and since time is of the essence for getting the shared-pools feature in, and since you waited until the *day* of the M-3 deadline to point this out, could we instead merge this code as is, and open a bug report to overhaul the \u0027-update\u0027 commands for all the lbaasv2 entities to be more user-friendly?","commit_id":"2ac2de6f78642f56f5d8502b5ede662ed962a115"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"218113ccd10cee3a9c9dd0aa07ceeee5c25c7550","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        return {self.resource: resource}"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"class UpdateListener(neutronV20.UpdateCommand):"},{"line_number":133,"context_line":"    \"\"\"LBaaS v2 Update a given listener.\"\"\""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    resource \u003d \u0027listener\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_825a8f28","line":132,"in_reply_to":"9aed3d3a_8712a107","updated":"2016-02-29 09:51:55.000000000","message":"+1","commit_id":"2ac2de6f78642f56f5d8502b5ede662ed962a115"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ac7625a4a0946f4e70b49021c7e86885c8ac9755","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        return {self.resource: resource}"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"class UpdateListener(neutronV20.UpdateCommand):"},{"line_number":133,"context_line":"    \"\"\"LBaaS v2 Update a given listener.\"\"\""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    resource \u003d \u0027listener\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_4a1eab70","line":132,"in_reply_to":"9aed3d3a_c6b48636","updated":"2016-03-01 00:58:38.000000000","message":"Can be moved to this patch: https://review.openstack.org/#/c/255093/","commit_id":"2ac2de6f78642f56f5d8502b5ede662ed962a115"},{"author":{"_account_id":8446,"name":"Evgeny Fedoruk","email":"evgenyf@radware.com","username":"evgenyfedoruk"},"change_message_id":"483f0395710bc748056b43acd76d067b6b393057","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        return {self.resource: resource}"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"class UpdateListener(neutronV20.UpdateCommand):"},{"line_number":133,"context_line":"    \"\"\"LBaaS v2 Update a given listener.\"\"\""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    resource \u003d \u0027listener\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_6d6ac082","line":132,"in_reply_to":"9aed3d3a_f79cdf0f","updated":"2016-02-29 17:24:52.000000000","message":"+1","commit_id":"2ac2de6f78642f56f5d8502b5ede662ed962a115"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5dcd0ec8d656b7ac6336b7c441dec7809be27903","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        return {self.resource: resource}"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"class UpdateListener(neutronV20.UpdateCommand):"},{"line_number":133,"context_line":"    \"\"\"LBaaS v2 Update a given listener.\"\"\""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    resource \u003d \u0027listener\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_c6b48636","line":132,"in_reply_to":"9aed3d3a_f79cdf0f","updated":"2016-02-29 19:23:45.000000000","message":"Adding the help message for xxx-update commands is just on-going effort. It is not a requirement of this patch\nI agree with Stephen. We can add all update-able options at once later for more user-friendly support.","commit_id":"2ac2de6f78642f56f5d8502b5ede662ed962a115"}],"neutronclient/neutron/v2_0/lb/v2/pool.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5e12875480412e4fe323b6c435d5cc69f38df6ef","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        cmd_resource\u003d\u0027lbaas_loadbalancer\u0027)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def _validate_pool_lb(client, listener_id, loadbalancer_id):"},{"line_number":42,"context_line":"    \"\"\"Pools must belong to exactly one loadbalancer.\"\"\""},{"line_number":43,"context_line":"    if listener_id:"},{"line_number":44,"context_line":"        lb_id \u003d neutronV20.find_resource_by_name_or_id("}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_46b38a9a","line":41,"range":{"start_line":41,"start_character":29,"end_line":41,"end_character":41},"updated":"2015-09-04 07:15:49.000000000","message":"if you use find_resource_by_name_or_id below,\nit is better to use \"listener_id_or_name\" instead of listener_id.","commit_id":"382187a53b13b490620aeb02a2662735529e92d9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"0ec0c303525f4abaf9457e5bcd8598976834238f","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        cmd_resource\u003d\u0027lbaas_loadbalancer\u0027)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def _validate_pool_lb(client, listener_id, loadbalancer_id):"},{"line_number":42,"context_line":"    \"\"\"Pools must belong to exactly one loadbalancer.\"\"\""},{"line_number":43,"context_line":"    if listener_id:"},{"line_number":44,"context_line":"        lb_id \u003d neutronV20.find_resource_by_name_or_id("}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_9119de8a","line":41,"in_reply_to":"da20952f_46b38a9a","updated":"2015-09-04 08:12:33.000000000","message":"Done","commit_id":"382187a53b13b490620aeb02a2662735529e92d9"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5e12875480412e4fe323b6c435d5cc69f38df6ef","unresolved":false,"context_lines":[{"line_number":41,"context_line":"def _validate_pool_lb(client, listener_id, loadbalancer_id):"},{"line_number":42,"context_line":"    \"\"\"Pools must belong to exactly one loadbalancer.\"\"\""},{"line_number":43,"context_line":"    if listener_id:"},{"line_number":44,"context_line":"        lb_id \u003d neutronV20.find_resource_by_name_or_id("},{"line_number":45,"context_line":"            client,"},{"line_number":46,"context_line":"            \u0027listener\u0027,"},{"line_number":47,"context_line":"            listener_id)[\u0027loadbalancers\u0027][0][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_c6a79a4e","line":44,"range":{"start_line":44,"start_character":16,"end_line":44,"end_character":54},"updated":"2015-09-04 07:15:49.000000000","message":"Consider using _get_listener_id instead?","commit_id":"382187a53b13b490620aeb02a2662735529e92d9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"0ec0c303525f4abaf9457e5bcd8598976834238f","unresolved":false,"context_lines":[{"line_number":41,"context_line":"def _validate_pool_lb(client, listener_id, loadbalancer_id):"},{"line_number":42,"context_line":"    \"\"\"Pools must belong to exactly one loadbalancer.\"\"\""},{"line_number":43,"context_line":"    if listener_id:"},{"line_number":44,"context_line":"        lb_id \u003d neutronV20.find_resource_by_name_or_id("},{"line_number":45,"context_line":"            client,"},{"line_number":46,"context_line":"            \u0027listener\u0027,"},{"line_number":47,"context_line":"            listener_id)[\u0027loadbalancers\u0027][0][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_510fc638","line":44,"in_reply_to":"da20952f_c6a79a4e","updated":"2015-09-04 08:12:33.000000000","message":"Again, we need the whole resource, not just the ID.","commit_id":"382187a53b13b490620aeb02a2662735529e92d9"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5e12875480412e4fe323b6c435d5cc69f38df6ef","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            parsed_args.session_persistence \u003d utils.str2dict("},{"line_number":122,"context_line":"                parsed_args.session_persistence)"},{"line_number":123,"context_line":"        if parsed_args.listener:"},{"line_number":124,"context_line":"            parsed_args.listener_id \u003d _get_listener_id("},{"line_number":125,"context_line":"                self.get_client(),"},{"line_number":126,"context_line":"                parsed_args.listener)"},{"line_number":127,"context_line":"        if parsed_args.loadbalancer:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_a66946fb","line":124,"range":{"start_line":124,"start_character":11,"end_line":124,"end_character":35},"updated":"2015-09-04 07:15:49.000000000","message":"Same as my comment for neutronclient/neutron/v2_0/lb/v2/listener.py","commit_id":"382187a53b13b490620aeb02a2662735529e92d9"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"0ec0c303525f4abaf9457e5bcd8598976834238f","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            parsed_args.session_persistence \u003d utils.str2dict("},{"line_number":122,"context_line":"                parsed_args.session_persistence)"},{"line_number":123,"context_line":"        if parsed_args.listener:"},{"line_number":124,"context_line":"            parsed_args.listener_id \u003d _get_listener_id("},{"line_number":125,"context_line":"                self.get_client(),"},{"line_number":126,"context_line":"                parsed_args.listener)"},{"line_number":127,"context_line":"        if parsed_args.loadbalancer:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_6cdf8d3a","line":124,"in_reply_to":"da20952f_a66946fb","updated":"2015-09-04 08:12:33.000000000","message":"Done","commit_id":"382187a53b13b490620aeb02a2662735529e92d9"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ce10b4a2a62114654dd138cded43580650f2feba","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        parser.add_argument("},{"line_number":101,"context_line":"            \u0027--listener\u0027,"},{"line_number":102,"context_line":"            help\u003d_(\u0027Listener whose default_pool should be set to this pool. \u0027"},{"line_number":103,"context_line":"                   \u0027Either --listener or --loadbalancer must be specified.\u0027))"},{"line_number":104,"context_line":"        parser.add_argument("},{"line_number":105,"context_line":"            \u0027--loadbalancer\u0027,"},{"line_number":106,"context_line":"            help\u003d_(\u0027Loadbalancer with which this pool should be associated.\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_04fff634","line":103,"updated":"2015-11-26 05:44:54.000000000","message":"Are --listener and --loadbalancer option Mutually exclusive?\nIf yes, then please use the mutually _exclusive attribute of parser.add_arguments (https://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.add_mutually_exclusive_group)\n\nIf not, then rewording of the help text is required.","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"27b79ea9e00a76547bcc6095a534855b3cda86fc","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        parser.add_argument("},{"line_number":101,"context_line":"            \u0027--listener\u0027,"},{"line_number":102,"context_line":"            help\u003d_(\u0027Listener whose default_pool should be set to this pool. \u0027"},{"line_number":103,"context_line":"                   \u0027Either --listener or --loadbalancer must be specified.\u0027))"},{"line_number":104,"context_line":"        parser.add_argument("},{"line_number":105,"context_line":"            \u0027--loadbalancer\u0027,"},{"line_number":106,"context_line":"            help\u003d_(\u0027Loadbalancer with which this pool should be associated.\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a5ae5dd_a6fa6d73","line":103,"in_reply_to":"7a5de9d1_f4e856e4","updated":"2016-02-06 10:12:34.000000000","message":"Done","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"4bc4a1ab559d721225bfdd6816646c68da37f616","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        parser.add_argument("},{"line_number":101,"context_line":"            \u0027--listener\u0027,"},{"line_number":102,"context_line":"            help\u003d_(\u0027Listener whose default_pool should be set to this pool. \u0027"},{"line_number":103,"context_line":"                   \u0027Either --listener or --loadbalancer must be specified.\u0027))"},{"line_number":104,"context_line":"        parser.add_argument("},{"line_number":105,"context_line":"            \u0027--loadbalancer\u0027,"},{"line_number":106,"context_line":"            help\u003d_(\u0027Loadbalancer with which this pool should be associated.\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba63e191_06c0727a","line":103,"in_reply_to":"9a8ffd7b_04fff634","updated":"2016-01-20 07:39:59.000000000","message":"They are not necessarily mutually exclusive. If the listener given matches the loadbalancer given, then that\u0027s actually OK. In practice I expect tenants to list either one or the other, but there shouldn\u0027t be a problem listing both if the listener is on the loadbalancer listed.\n\nGiven this, I don\u0027t think the help text needs to be reworded. If I were to change it, what would you suggest?","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"7b69ed68a7f484659cf0f3a6470e1699960991ec","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        parser.add_argument("},{"line_number":101,"context_line":"            \u0027--listener\u0027,"},{"line_number":102,"context_line":"            help\u003d_(\u0027Listener whose default_pool should be set to this pool. \u0027"},{"line_number":103,"context_line":"                   \u0027Either --listener or --loadbalancer must be specified.\u0027))"},{"line_number":104,"context_line":"        parser.add_argument("},{"line_number":105,"context_line":"            \u0027--loadbalancer\u0027,"},{"line_number":106,"context_line":"            help\u003d_(\u0027Loadbalancer with which this pool should be associated.\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_f4e856e4","line":103,"in_reply_to":"ba63e191_06c0727a","updated":"2016-01-29 06:28:18.000000000","message":"Can we change Either to Atleast ?\nEither sounds more like an X-OR\nAtleast sounds more like OR ( thats what I feel , how about you?)","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ce10b4a2a62114654dd138cded43580650f2feba","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            _validate_pool_lb(self.get_client(),"},{"line_number":140,"context_line":"                              listener_id,"},{"line_number":141,"context_line":"                              loadbalancer_id)"},{"line_number":142,"context_line":"        elif not parsed_args.listener and not parsed_args.loadbalancer:"},{"line_number":143,"context_line":"            message \u003d _(\u0027Either --listener or --loadbalancer must be \u0027"},{"line_number":144,"context_line":"                        \u0027specified.\u0027)"},{"line_number":145,"context_line":"            raise exceptions.CommandError(message)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_443f3ed6","line":142,"updated":"2015-11-26 05:44:54.000000000","message":"Same reformatting as the earlier comment.\nWould reduce the check at the end,","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"4bc4a1ab559d721225bfdd6816646c68da37f616","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            _validate_pool_lb(self.get_client(),"},{"line_number":140,"context_line":"                              listener_id,"},{"line_number":141,"context_line":"                              loadbalancer_id)"},{"line_number":142,"context_line":"        elif not parsed_args.listener and not parsed_args.loadbalancer:"},{"line_number":143,"context_line":"            message \u003d _(\u0027Either --listener or --loadbalancer must be \u0027"},{"line_number":144,"context_line":"                        \u0027specified.\u0027)"},{"line_number":145,"context_line":"            raise exceptions.CommandError(message)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba63e191_86278263","line":142,"in_reply_to":"9a8ffd7b_443f3ed6","updated":"2016-01-20 07:39:59.000000000","message":"Same comment as above.","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ce10b4a2a62114654dd138cded43580650f2feba","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        neutronV20.update_dict(parsed_args, resource,"},{"line_number":147,"context_line":"                               [\u0027description\u0027, \u0027name\u0027,"},{"line_number":148,"context_line":"                                \u0027session_persistence\u0027, \u0027tenant_id\u0027,"},{"line_number":149,"context_line":"                                \u0027listener_id\u0027, \u0027loadbalancer_id\u0027])"},{"line_number":150,"context_line":"        return {self.resource: resource}"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_04093631","line":149,"updated":"2015-11-26 05:44:54.000000000","message":"You are already updating listener_id and loadbalancer_id in Line#137 and Line #132.\nNo need to do it again here.","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"4bc4a1ab559d721225bfdd6816646c68da37f616","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        neutronV20.update_dict(parsed_args, resource,"},{"line_number":147,"context_line":"                               [\u0027description\u0027, \u0027name\u0027,"},{"line_number":148,"context_line":"                                \u0027session_persistence\u0027, \u0027tenant_id\u0027,"},{"line_number":149,"context_line":"                                \u0027listener_id\u0027, \u0027loadbalancer_id\u0027])"},{"line_number":150,"context_line":"        return {self.resource: resource}"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba63e191_c6a25aae","line":149,"in_reply_to":"9a8ffd7b_04093631","updated":"2016-01-20 07:39:59.000000000","message":"I understand the update_dict method here needs a list of the keys from the \"resource\" dict that will be updated into the \u0027parsed_args\u0027 dict, right? If that\u0027s the case, then I do need to list these here.","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"fe8103e94c390cfaaf33eb391d1d8c7470903dfa","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        neutronV20.update_dict(parsed_args, resource,"},{"line_number":147,"context_line":"                               [\u0027description\u0027, \u0027name\u0027,"},{"line_number":148,"context_line":"                                \u0027session_persistence\u0027, \u0027tenant_id\u0027,"},{"line_number":149,"context_line":"                                \u0027listener_id\u0027, \u0027loadbalancer_id\u0027])"},{"line_number":150,"context_line":"        return {self.resource: resource}"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba63e191_215fa00f","line":149,"in_reply_to":"ba63e191_c6a25aae","updated":"2016-01-20 07:51:58.000000000","message":"Actually--  sorry, it\u0027s been a couple months since I looked at this. But yes, these need to be listed here: You\u0027ll notice that the above setting of these parameters happens in conditional statements. Whichever of these parameters isn\u0027t set in a conditional should be set to \u0027None\u0027 (which is what happens here, as code elsewhere depends on this.","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"23ceccf43520aeea24c949523ec30fb032898a71","unresolved":false,"context_lines":[{"line_number":41,"context_line":"def _validate_pool_lb(client, listener_id_or_name, loadbalancer_id):"},{"line_number":42,"context_line":"    \"\"\"Pools must belong to exactly one loadbalancer.\"\"\""},{"line_number":43,"context_line":"    if listener_id_or_name:"},{"line_number":44,"context_line":"        lb_id \u003d neutronV20.find_resource_by_name_or_id("},{"line_number":45,"context_line":"            client,"},{"line_number":46,"context_line":"            \u0027listener\u0027,"},{"line_number":47,"context_line":"            listener_id_or_name)[\u0027loadbalancers\u0027][0][\u0027id\u0027]"},{"line_number":48,"context_line":"        if loadbalancer_id and lb_id !\u003d loadbalancer_id:"},{"line_number":49,"context_line":"            message \u003d _(\u0027Pool must be on same loadbalancer as listener\u0027)"},{"line_number":50,"context_line":"            raise exceptions.CommandError(message)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_bdc35c88","line":47,"range":{"start_line":44,"start_character":16,"end_line":47,"end_character":58},"updated":"2016-01-24 16:22:27.000000000","message":"How about defining a method?\n_get_listener_id and _get_loadbalancer_id above are used once, so there seems no reason not to define this as a method.","commit_id":"a26a7a8ab994de7252b658b58382feb7289f3c92"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"8fbf781d7980a521436f920829dbe9d017ee5370","unresolved":false,"context_lines":[{"line_number":41,"context_line":"def _validate_pool_lb(client, listener_id_or_name, loadbalancer_id):"},{"line_number":42,"context_line":"    \"\"\"Pools must belong to exactly one loadbalancer.\"\"\""},{"line_number":43,"context_line":"    if listener_id_or_name:"},{"line_number":44,"context_line":"        lb_id \u003d neutronV20.find_resource_by_name_or_id("},{"line_number":45,"context_line":"            client,"},{"line_number":46,"context_line":"            \u0027listener\u0027,"},{"line_number":47,"context_line":"            listener_id_or_name)[\u0027loadbalancers\u0027][0][\u0027id\u0027]"},{"line_number":48,"context_line":"        if loadbalancer_id and lb_id !\u003d loadbalancer_id:"},{"line_number":49,"context_line":"            message \u003d _(\u0027Pool must be on same loadbalancer as listener\u0027)"},{"line_number":50,"context_line":"            raise exceptions.CommandError(message)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_d3ea77ac","line":47,"range":{"start_line":44,"start_character":16,"end_line":47,"end_character":58},"in_reply_to":"9a68dd71_bdc35c88","updated":"2016-01-26 11:00:56.000000000","message":"Done","commit_id":"a26a7a8ab994de7252b658b58382feb7289f3c92"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"23ceccf43520aeea24c949523ec30fb032898a71","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            _validate_pool_lb(self.get_client(),"},{"line_number":141,"context_line":"                              listener_id,"},{"line_number":142,"context_line":"                              loadbalancer_id)"},{"line_number":143,"context_line":"        elif not parsed_args.listener and not parsed_args.loadbalancer:"},{"line_number":144,"context_line":"            message \u003d _(\u0027Either --listener or --loadbalancer must be \u0027"},{"line_number":145,"context_line":"                        \u0027specified.\u0027)"},{"line_number":146,"context_line":"            raise exceptions.CommandError(message)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_7db96414","line":143,"updated":"2016-01-24 16:22:27.000000000","message":"How about moving this elif-clause before L.129?\nIt can avoid unnecessary REST API calls in an error case.","commit_id":"a26a7a8ab994de7252b658b58382feb7289f3c92"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"8fbf781d7980a521436f920829dbe9d017ee5370","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            _validate_pool_lb(self.get_client(),"},{"line_number":141,"context_line":"                              listener_id,"},{"line_number":142,"context_line":"                              loadbalancer_id)"},{"line_number":143,"context_line":"        elif not parsed_args.listener and not parsed_args.loadbalancer:"},{"line_number":144,"context_line":"            message \u003d _(\u0027Either --listener or --loadbalancer must be \u0027"},{"line_number":145,"context_line":"                        \u0027specified.\u0027)"},{"line_number":146,"context_line":"            raise exceptions.CommandError(message)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_132faff7","line":143,"in_reply_to":"9a68dd71_7db96414","updated":"2016-01-26 11:00:56.000000000","message":"Done","commit_id":"a26a7a8ab994de7252b658b58382feb7289f3c92"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"d3d0984e80ff4422ff43360800f2062b216e909f","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            \u0027--name\u0027, help\u003d_(\u0027The name of the pool.\u0027))"},{"line_number":89,"context_line":"        parser.add_argument("},{"line_number":90,"context_line":"            \u0027--listener\u0027,"},{"line_number":91,"context_line":"            help\u003d_(\u0027Listener whose default_pool should be set to this pool. \u0027"},{"line_number":92,"context_line":"                   \u0027At least one of --listener or --loadbalancer must be \u0027"},{"line_number":93,"context_line":"                   \u0027specified.\u0027))"},{"line_number":94,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_079b3173","line":91,"updated":"2016-02-29 09:44:13.000000000","message":"nit: plz change \u0027default_pool\u0027 to \u0027default-pool\u0027, same as the parameter option name","commit_id":"2ac2de6f78642f56f5d8502b5ede662ed962a115"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5e56fb39bccc44170b7b79662e2b18320f01bdf2","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            \u0027--name\u0027, help\u003d_(\u0027The name of the pool.\u0027))"},{"line_number":89,"context_line":"        parser.add_argument("},{"line_number":90,"context_line":"            \u0027--listener\u0027,"},{"line_number":91,"context_line":"            help\u003d_(\u0027Listener whose default_pool should be set to this pool. \u0027"},{"line_number":92,"context_line":"                   \u0027At least one of --listener or --loadbalancer must be \u0027"},{"line_number":93,"context_line":"                   \u0027specified.\u0027))"},{"line_number":94,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_40122858","line":91,"in_reply_to":"9aed3d3a_079b3173","updated":"2016-02-29 17:07:29.000000000","message":"Done","commit_id":"2ac2de6f78642f56f5d8502b5ede662ed962a115"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"d3d0984e80ff4422ff43360800f2062b216e909f","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                   \u0027specified.\u0027))"},{"line_number":94,"context_line":"        parser.add_argument("},{"line_number":95,"context_line":"            \u0027--loadbalancer\u0027,"},{"line_number":96,"context_line":"            help\u003d_(\u0027Loadbalancer with which this pool should be associated.\u0027))"},{"line_number":97,"context_line":"        parser.add_argument("},{"line_number":98,"context_line":"            \u0027--lb-algorithm\u0027,"},{"line_number":99,"context_line":"            required\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_8701016d","line":96,"updated":"2016-02-29 09:44:13.000000000","message":"Let\u0027s add \"At least one of --listener or --loadbalancer must be specified\" here as well.","commit_id":"2ac2de6f78642f56f5d8502b5ede662ed962a115"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"5e56fb39bccc44170b7b79662e2b18320f01bdf2","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                   \u0027specified.\u0027))"},{"line_number":94,"context_line":"        parser.add_argument("},{"line_number":95,"context_line":"            \u0027--loadbalancer\u0027,"},{"line_number":96,"context_line":"            help\u003d_(\u0027Loadbalancer with which this pool should be associated.\u0027))"},{"line_number":97,"context_line":"        parser.add_argument("},{"line_number":98,"context_line":"            \u0027--lb-algorithm\u0027,"},{"line_number":99,"context_line":"            required\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aed3d3a_e04edc6d","line":96,"in_reply_to":"9aed3d3a_8701016d","updated":"2016-02-29 17:07:29.000000000","message":"Done","commit_id":"2ac2de6f78642f56f5d8502b5ede662ed962a115"}],"neutronclient/tests/unit/lb/v2/test_cli20_listener.py":[{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ce10b4a2a62114654dd138cded43580650f2feba","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class CLITestV20LbListenerJSON(test_cli20.CLITestV20Base):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def test_create_listener_with_mandatory_params(self):"},{"line_number":27,"context_line":"        \"\"\"lbaas-listener-create with mandatory params only.\"\"\""},{"line_number":28,"context_line":"        resource \u003d \u0027listener\u0027"},{"line_number":29,"context_line":"        cmd_resource \u003d \u0027lbaas_listener\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_2f21b39f","line":26,"updated":"2015-11-26 05:44:54.000000000","message":"LoadBalancer is not a Mandatory Parameter anymore, so it needs to be removed from this function","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"27b79ea9e00a76547bcc6095a534855b3cda86fc","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class CLITestV20LbListenerJSON(test_cli20.CLITestV20Base):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def test_create_listener_with_mandatory_params(self):"},{"line_number":27,"context_line":"        \"\"\"lbaas-listener-create with mandatory params only.\"\"\""},{"line_number":28,"context_line":"        resource \u003d \u0027listener\u0027"},{"line_number":29,"context_line":"        cmd_resource \u003d \u0027lbaas_listener\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a5ae5dd_a6790dca","line":26,"in_reply_to":"7a5de9d1_1479722f","updated":"2016-02-06 10:12:34.000000000","message":"Done","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"4bc4a1ab559d721225bfdd6816646c68da37f616","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class CLITestV20LbListenerJSON(test_cli20.CLITestV20Base):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def test_create_listener_with_mandatory_params(self):"},{"line_number":27,"context_line":"        \"\"\"lbaas-listener-create with mandatory params only.\"\"\""},{"line_number":28,"context_line":"        resource \u003d \u0027listener\u0027"},{"line_number":29,"context_line":"        cmd_resource \u003d \u0027lbaas_listener\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba63e191_06f4f283","line":26,"in_reply_to":"9a8ffd7b_2f21b39f","updated":"2016-01-20 07:39:59.000000000","message":"Either loadbalancer or default_pool must be specified. This method tests creating a listener with a loadbalancer. Should I just rename the method?","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"7b69ed68a7f484659cf0f3a6470e1699960991ec","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class CLITestV20LbListenerJSON(test_cli20.CLITestV20Base):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def test_create_listener_with_mandatory_params(self):"},{"line_number":27,"context_line":"        \"\"\"lbaas-listener-create with mandatory params only.\"\"\""},{"line_number":28,"context_line":"        resource \u003d \u0027listener\u0027"},{"line_number":29,"context_line":"        cmd_resource \u003d \u0027lbaas_listener\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_1479722f","line":26,"in_reply_to":"ba63e191_06f4f283","updated":"2016-01-29 06:28:18.000000000","message":"I would suggest either renaming it.\n\nLoadbalancer is not THE manadatory parameter.\nNow the mandatory parameter should be a subset of {listener, loadbalancer}","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ce10b4a2a62114654dd138cded43580650f2feba","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                                   position_names, position_values,"},{"line_number":42,"context_line":"                                   cmd_resource\u003dcmd_resource)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_create_listener_with_default_pool_no_loadbalancer(self):"},{"line_number":45,"context_line":"        \"\"\"lbaas-listener-create with --default-pool and no --loadbalancer.\"\"\""},{"line_number":46,"context_line":"        resource \u003d \u0027listener\u0027"},{"line_number":47,"context_line":"        cmd_resource \u003d \u0027lbaas_listener\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_8fed3f27","line":44,"updated":"2015-11-26 05:44:54.000000000","message":"Same code is reused.\nCan this be reformatted to use a single function?","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"4bc4a1ab559d721225bfdd6816646c68da37f616","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                                   position_names, position_values,"},{"line_number":42,"context_line":"                                   cmd_resource\u003dcmd_resource)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_create_listener_with_default_pool_no_loadbalancer(self):"},{"line_number":45,"context_line":"        \"\"\"lbaas-listener-create with --default-pool and no --loadbalancer.\"\"\""},{"line_number":46,"context_line":"        resource \u003d \u0027listener\u0027"},{"line_number":47,"context_line":"        cmd_resource \u003d \u0027lbaas_listener\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba63e191_2646d6bf","line":44,"in_reply_to":"9a8ffd7b_8fed3f27","updated":"2016-01-20 07:39:59.000000000","message":"There are a whole bunch of test methods here that essentially repeat a lot of the same code (as is often the case with tests). I was going with an established pattern in this file, which I think is proper. If someone wants to refactor all these afterward, that\u0027s up to them-- but it\u0027s beyond the scope of this patch set. (ie. it should be part of a \u0027test refactor\u0027 patch set, if someone wants to do that.)","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"7b69ed68a7f484659cf0f3a6470e1699960991ec","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                                   position_names, position_values,"},{"line_number":42,"context_line":"                                   cmd_resource\u003dcmd_resource)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_create_listener_with_default_pool_no_loadbalancer(self):"},{"line_number":45,"context_line":"        \"\"\"lbaas-listener-create with --default-pool and no --loadbalancer.\"\"\""},{"line_number":46,"context_line":"        resource \u003d \u0027listener\u0027"},{"line_number":47,"context_line":"        cmd_resource \u003d \u0027lbaas_listener\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_f4a4d6a6","line":44,"in_reply_to":"ba63e191_2646d6bf","updated":"2016-01-29 06:28:18.000000000","message":"Actually I have been doing some code refactor for the new cases which I encounter.\nIt helps to reduce the base code , while maintaining the functionality, which I guess you would agree with.\nHowever, this is not a deal-breaker for me, but it would be appreciated  :)","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"23ceccf43520aeea24c949523ec30fb032898a71","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                                   cmd_resource\u003dcmd_resource)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_create_listener_with_default_pool_no_loadbalancer(self):"},{"line_number":45,"context_line":"        \"\"\"lbaas-listener-create with --default-pool and no --loadbalancer.\"\"\""},{"line_number":46,"context_line":"        resource \u003d \u0027listener\u0027"},{"line_number":47,"context_line":"        cmd_resource \u003d \u0027lbaas_listener\u0027"},{"line_number":48,"context_line":"        cmd \u003d listener.CreateListener(test_cli20.MyApp(sys.stdout), None)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_9d4d3840","line":45,"updated":"2016-01-24 16:22:27.000000000","message":"We are now using \u0027# xxxx\u0027 comment to explain a test.\n\n  # lbaas-listener-create with ....","commit_id":"a26a7a8ab994de7252b658b58382feb7289f3c92"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"8fbf781d7980a521436f920829dbe9d017ee5370","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                                   cmd_resource\u003dcmd_resource)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_create_listener_with_default_pool_no_loadbalancer(self):"},{"line_number":45,"context_line":"        \"\"\"lbaas-listener-create with --default-pool and no --loadbalancer.\"\"\""},{"line_number":46,"context_line":"        resource \u003d \u0027listener\u0027"},{"line_number":47,"context_line":"        cmd_resource \u003d \u0027lbaas_listener\u0027"},{"line_number":48,"context_line":"        cmd \u003d listener.CreateListener(test_cli20.MyApp(sys.stdout), None)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_d30fd786","line":45,"in_reply_to":"9a68dd71_9d4d3840","updated":"2016-01-26 11:00:56.000000000","message":"Done","commit_id":"a26a7a8ab994de7252b658b58382feb7289f3c92"},{"author":{"_account_id":8446,"name":"Evgeny Fedoruk","email":"evgenyf@radware.com","username":"evgenyfedoruk"},"change_message_id":"e7a86fd6bd7f58b23c138cf1d7604c2ddd20078a","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                                   no_api_call\u003dTrue,"},{"line_number":77,"context_line":"                                   expected_exception\u003dexceptions.CommandError)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test_create_listener_with_all_params(self):"},{"line_number":80,"context_line":"        # lbaas-listener-create with all params set."},{"line_number":81,"context_line":"        resource \u003d \u0027listener\u0027"},{"line_number":82,"context_line":"        cmd_resource \u003d \u0027lbaas_listener\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a5de9d1_31029c0c","line":79,"range":{"start_line":79,"start_character":4,"end_line":79,"end_character":7},"updated":"2016-01-28 17:22:40.000000000","message":"I miss the test case when both, listener and loadbalancer  are specified. This will actually cover _validate_pool_lb function.\nThen, unfortunately, the test will fail on unexpected rest call. That\u0027s at least what happened in similar case in my L7 patch here https://review.openstack.org/#/c/217276 when I tried to validate pool consistency between listener and l7 policy.\n\nActually, CLI unit test framework is not happy with this kind of validations. I tried to fix this but gave up because, In my opinion, those validations of hierarchical entities consistency should not be done in CLI level because they are taking place in API. Maybe that\u0027s the reason why it\u0027s not supported here, in CLI unit tests.","commit_id":"169027afc43220f3cabb993faec51c95893da2aa"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"4262cba0399661a5c09c6e99bd55195613515f9a","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                                   no_api_call\u003dTrue,"},{"line_number":77,"context_line":"                                   expected_exception\u003dexceptions.CommandError)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test_create_listener_with_all_params(self):"},{"line_number":80,"context_line":"        # lbaas-listener-create with all params set."},{"line_number":81,"context_line":"        resource \u003d \u0027listener\u0027"},{"line_number":82,"context_line":"        cmd_resource \u003d \u0027lbaas_listener\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a5de9d1_741306b9","line":79,"range":{"start_line":79,"start_character":4,"end_line":79,"end_character":7},"in_reply_to":"7a5de9d1_31029c0c","updated":"2016-01-29 06:28:32.000000000","message":"@Evgeny:\nI think you mean to say --default-pool and --loadbalancer for this test case","commit_id":"169027afc43220f3cabb993faec51c95893da2aa"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"740193e56f59d90826395b024096a0ce79027db5","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                                   no_api_call\u003dTrue,"},{"line_number":77,"context_line":"                                   expected_exception\u003dexceptions.CommandError)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test_create_listener_with_all_params(self):"},{"line_number":80,"context_line":"        # lbaas-listener-create with all params set."},{"line_number":81,"context_line":"        resource \u003d \u0027listener\u0027"},{"line_number":82,"context_line":"        cmd_resource \u003d \u0027lbaas_listener\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a5ae5dd_461ff96b","line":79,"range":{"start_line":79,"start_character":4,"end_line":79,"end_character":7},"in_reply_to":"7a5de9d1_741306b9","updated":"2016-02-06 10:12:54.000000000","message":"The more I think about this, the more I think that Evgeny is correct: The neutronclient testing framework isn\u0027t set up well for tests which involve making queries to neutron-- and in any case validations which require queries to neutron should be frowned upon because it unnecessarily increases the number of calls we have to make to the neutron API and database (and load thereon).\n\nThe CLI should rely on the API returning an error in cases like these if there\u0027s improper user input.\n\nSo... I\u0027ve removed the validation methods in the pool and listener CLI changes I made, and added the case where --default-pool and --loadbalaner are both specified.","commit_id":"169027afc43220f3cabb993faec51c95893da2aa"}],"neutronclient/tests/unit/lb/v2/test_cli20_pool.py":[{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ce10b4a2a62114654dd138cded43580650f2feba","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        cmd_resource \u003d \u0027lbaas_pool\u0027"},{"line_number":30,"context_line":"        cmd \u003d pool.CreatePool(test_cli20.MyApp(sys.stdout), None)"},{"line_number":31,"context_line":"        my_id \u003d \u0027my-id\u0027"},{"line_number":32,"context_line":"        lb_algorithm \u003d \u0027ROUND_ROBIN\u0027"},{"line_number":33,"context_line":"        listener \u003d \u0027listener\u0027"},{"line_number":34,"context_line":"        protocol \u003d \u0027TCP\u0027"},{"line_number":35,"context_line":"        args \u003d [\u0027--lb-algorithm\u0027, lb_algorithm, \u0027--protocol\u0027, protocol,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_afe84311","line":32,"updated":"2015-11-26 05:44:54.000000000","message":"Listener is not a Mandatory Parameter anymore, so please remove it from here.","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"27b79ea9e00a76547bcc6095a534855b3cda86fc","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        cmd_resource \u003d \u0027lbaas_pool\u0027"},{"line_number":30,"context_line":"        cmd \u003d pool.CreatePool(test_cli20.MyApp(sys.stdout), None)"},{"line_number":31,"context_line":"        my_id \u003d \u0027my-id\u0027"},{"line_number":32,"context_line":"        lb_algorithm \u003d \u0027ROUND_ROBIN\u0027"},{"line_number":33,"context_line":"        listener \u003d \u0027listener\u0027"},{"line_number":34,"context_line":"        protocol \u003d \u0027TCP\u0027"},{"line_number":35,"context_line":"        args \u003d [\u0027--lb-algorithm\u0027, lb_algorithm, \u0027--protocol\u0027, protocol,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a5ae5dd_e906f61a","line":32,"in_reply_to":"7a5de9d1_54028a70","updated":"2016-02-06 10:12:34.000000000","message":"Done","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"4bc4a1ab559d721225bfdd6816646c68da37f616","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        cmd_resource \u003d \u0027lbaas_pool\u0027"},{"line_number":30,"context_line":"        cmd \u003d pool.CreatePool(test_cli20.MyApp(sys.stdout), None)"},{"line_number":31,"context_line":"        my_id \u003d \u0027my-id\u0027"},{"line_number":32,"context_line":"        lb_algorithm \u003d \u0027ROUND_ROBIN\u0027"},{"line_number":33,"context_line":"        listener \u003d \u0027listener\u0027"},{"line_number":34,"context_line":"        protocol \u003d \u0027TCP\u0027"},{"line_number":35,"context_line":"        args \u003d [\u0027--lb-algorithm\u0027, lb_algorithm, \u0027--protocol\u0027, protocol,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba63e191_267496fb","line":32,"in_reply_to":"9a8ffd7b_afe84311","updated":"2016-01-20 07:39:59.000000000","message":"Again, similar comment to the previous:  Either listener or loadbalancer (or both) must be specified. This test tests the creation of a pool while specifying a listener. Should I just rename the method?","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"7b69ed68a7f484659cf0f3a6470e1699960991ec","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        cmd_resource \u003d \u0027lbaas_pool\u0027"},{"line_number":30,"context_line":"        cmd \u003d pool.CreatePool(test_cli20.MyApp(sys.stdout), None)"},{"line_number":31,"context_line":"        my_id \u003d \u0027my-id\u0027"},{"line_number":32,"context_line":"        lb_algorithm \u003d \u0027ROUND_ROBIN\u0027"},{"line_number":33,"context_line":"        listener \u003d \u0027listener\u0027"},{"line_number":34,"context_line":"        protocol \u003d \u0027TCP\u0027"},{"line_number":35,"context_line":"        args \u003d [\u0027--lb-algorithm\u0027, lb_algorithm, \u0027--protocol\u0027, protocol,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_54028a70","line":32,"in_reply_to":"ba63e191_267496fb","updated":"2016-01-29 06:28:18.000000000","message":"Yup, as previously mentioned :)","commit_id":"77ca4ce520c512c710b52186359e0aae8f1bbcec"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"4262cba0399661a5c09c6e99bd55195613515f9a","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class CLITestV20LbPoolJSON(test_cli20.CLITestV20Base):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def test_create_pool_with_mandatory_params(self):"},{"line_number":27,"context_line":"        # lbaas-pool-create with mandatory params only."},{"line_number":28,"context_line":"        resource \u003d \u0027pool\u0027"},{"line_number":29,"context_line":"        cmd_resource \u003d \u0027lbaas_pool\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a5de9d1_1423b206","line":26,"updated":"2016-01-29 06:28:32.000000000","message":"Like @Evgeny pointed out, --listener and --loadbalancer can be specified in the test case for all params.","commit_id":"169027afc43220f3cabb993faec51c95893da2aa"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"740193e56f59d90826395b024096a0ce79027db5","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class CLITestV20LbPoolJSON(test_cli20.CLITestV20Base):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def test_create_pool_with_mandatory_params(self):"},{"line_number":27,"context_line":"        # lbaas-pool-create with mandatory params only."},{"line_number":28,"context_line":"        resource \u003d \u0027pool\u0027"},{"line_number":29,"context_line":"        cmd_resource \u003d \u0027lbaas_pool\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a5ae5dd_86017108","line":26,"in_reply_to":"7a5de9d1_1423b206","updated":"2016-02-06 10:12:54.000000000","message":"Done","commit_id":"169027afc43220f3cabb993faec51c95893da2aa"}],"releasenotes/notes/add-shared-pools-support-6f79b565afad3e47.yaml":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"bf726b916d75b9c902baea07136008a1dba2baea","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    * Listeners can share the same default_pool."},{"line_number":8,"context_line":"    * Makes Layer 7 switching support much more useful."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"upgrade:"},{"line_number":11,"context_line":"  - |"},{"line_number":12,"context_line":"    Database migration is required for this feature."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    * lbaas_pools table has a loadbalancer_id column added,"},{"line_number":15,"context_line":"      and the migration has ETL to populate this new column"},{"line_number":16,"context_line":"      with appropriate data from the pool\u0027s listener."},{"line_number":17,"context_line":"    * LBaaS v1 is unaffected by this upgrade."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":13,"id":"9aed3d3a_1176a6a3","line":17,"range":{"start_line":10,"start_character":0,"end_line":17,"end_character":45},"updated":"2016-02-29 19:39:56.000000000","message":"Seems unrelated to neutronclient.","commit_id":"d7b26443c900e74f08990487e657a8870d129b56"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"a2c3d0bd94c3a677070e0a6ab61a6c887229f8f0","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    * Listeners can share the same default_pool."},{"line_number":8,"context_line":"    * Makes Layer 7 switching support much more useful."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"upgrade:"},{"line_number":11,"context_line":"  - |"},{"line_number":12,"context_line":"    Database migration is required for this feature."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    * lbaas_pools table has a loadbalancer_id column added,"},{"line_number":15,"context_line":"      and the migration has ETL to populate this new column"},{"line_number":16,"context_line":"      with appropriate data from the pool\u0027s listener."},{"line_number":17,"context_line":"    * LBaaS v1 is unaffected by this upgrade."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":13,"id":"9aed3d3a_710bb22a","line":17,"range":{"start_line":10,"start_character":0,"end_line":17,"end_character":45},"in_reply_to":"9aed3d3a_1176a6a3","updated":"2016-02-29 19:57:27.000000000","message":"Aah, ok-- I\u0027ll remove them.","commit_id":"d7b26443c900e74f08990487e657a8870d129b56"}]}
