)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"4603f5fc96b74f61e12743e33f266672b3bbe989","unresolved":false,"context_lines":[{"line_number":12,"context_line":"It will cause:"},{"line_number":13,"context_line":"1) we cannot specify the gateway ip;"},{"line_number":14,"context_line":"2) we don\u0027t need gateway(--no-gateway), but neutron still create a"},{"line_number":15,"context_line":"subnet will gateway."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ia553933b183829e2d682ec2e8c2a76b34931a67c"},{"line_number":18,"context_line":"Closes-bug: 1716721"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7faddb67_3cff9e68","line":15,"range":{"start_line":15,"start_character":7,"end_line":15,"end_character":11},"updated":"2019-07-16 13:56:30.000000000","message":"with?","commit_id":"b29fb511df5680419e583c60fcbf6257510814e7"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"afa52fa4d929e6a3656a6902a805396436b04560","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     lizhouzhou \u003clizhouzhou@cmss.chinamobile.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-07-05 13:45:07 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Create a subnet with subnetpool could specify gateway_ip"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Creating a subnet with subnetpool whether specify the gateway ip or"},{"line_number":10,"context_line":"not(--no-gateway), the neutron always specify the first_ip as gateway."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7faddb67_8a8752d8","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":56},"updated":"2019-07-05 08:58:26.000000000","message":"By the bug:\nAvoid auto-allocated gw-ip in case subnet creation with subnet-pool.\n\nI know that this is longer than allowed, but please try to summarize the change in a way that is meaningful.","commit_id":"244469c0271c9fbe9359f110aa6071c7e8eae2bb"},{"author":{"_account_id":27295,"name":"Li Zhouzhou","email":"lizhouzhou_yewu@cmss.chinamobile.com","username":"LiZhouzhou"},"change_message_id":"c7ad8bd97ebd82c73392fa065469cd9a3e5c5663","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     lizhouzhou \u003clizhouzhou@cmss.chinamobile.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-07-05 13:45:07 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Create a subnet with subnetpool could specify gateway_ip"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Creating a subnet with subnetpool whether specify the gateway ip or"},{"line_number":10,"context_line":"not(--no-gateway), the neutron always specify the first_ip as gateway."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7faddb67_f6d7c122","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":56},"in_reply_to":"7faddb67_8a8752d8","updated":"2019-07-08 01:18:42.000000000","message":"OK.","commit_id":"244469c0271c9fbe9359f110aa6071c7e8eae2bb"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"afa52fa4d929e6a3656a6902a805396436b04560","unresolved":false,"context_lines":[{"line_number":12,"context_line":"It will cause:"},{"line_number":13,"context_line":"1) we cannot specify the gateway ip for subnet;"},{"line_number":14,"context_line":"2) we don\u0027t need gateway(--no-gateway), but neutron still creates a"},{"line_number":15,"context_line":"subnet with gateway."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ia553933b183829e2d682ec2e8c2a76b34931a67c"},{"line_number":18,"context_line":"Closes-bug: 1716721"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7faddb67_2a55fe50","line":15,"range":{"start_line":15,"start_character":12,"end_line":15,"end_character":20},"updated":"2019-07-05 08:58:26.000000000","message":"If I understand well this is an auto-allocated gateway-ip by neutron itself, if yes please add this information to the commit msg.","commit_id":"244469c0271c9fbe9359f110aa6071c7e8eae2bb"},{"author":{"_account_id":27295,"name":"Li Zhouzhou","email":"lizhouzhou_yewu@cmss.chinamobile.com","username":"LiZhouzhou"},"change_message_id":"c7ad8bd97ebd82c73392fa065469cd9a3e5c5663","unresolved":false,"context_lines":[{"line_number":12,"context_line":"It will cause:"},{"line_number":13,"context_line":"1) we cannot specify the gateway ip for subnet;"},{"line_number":14,"context_line":"2) we don\u0027t need gateway(--no-gateway), but neutron still creates a"},{"line_number":15,"context_line":"subnet with gateway."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ia553933b183829e2d682ec2e8c2a76b34931a67c"},{"line_number":18,"context_line":"Closes-bug: 1716721"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7faddb67_56e6d518","line":15,"range":{"start_line":15,"start_character":12,"end_line":15,"end_character":20},"in_reply_to":"7faddb67_2a55fe50","updated":"2019-07-08 01:18:42.000000000","message":"Done","commit_id":"244469c0271c9fbe9359f110aa6071c7e8eae2bb"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"7951649bfff7ede8379f9330fd95e5a93d8c3c21","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Avoid auto-allocated gateway_ip when creating subnet with subnetpool"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Creating a subnet with subnetpool, neutron will auto-allocate a gateway"},{"line_number":10,"context_line":"ip to it. Therefor, we couldn\u0027t specify or remove gateway ip when"},{"line_number":11,"context_line":"creating a subnet."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7faddb67_27067e88","line":10,"range":{"start_line":10,"start_character":10,"end_line":10,"end_character":18},"updated":"2019-07-08 11:31:07.000000000","message":"nit: therefore","commit_id":"20c9d1d117815b84ef17cce5631f5a096b96a1c5"}],"neutron/ipam/requests.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4627e552ad014270d8609f44cabdba5417a8ab9c","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        self._prefixlen \u003d prefixlen"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    @property"},{"line_number":151,"context_line":"    def gateway_has_specified(self):"},{"line_number":152,"context_line":"        return self._gateway_has_specified"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_43e94e7e","line":151,"range":{"start_line":151,"start_character":8,"end_line":151,"end_character":29},"updated":"2019-07-04 16:01:32.000000000","message":"I would change this to \"is_gateway_defined\"","commit_id":"b29fb511df5680419e583c60fcbf6257510814e7"},{"author":{"_account_id":27295,"name":"Li Zhouzhou","email":"lizhouzhou_yewu@cmss.chinamobile.com","username":"LiZhouzhou"},"change_message_id":"9b9d7f8affb4f69f942dc78b7e99fe09fdf1b831","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        self._prefixlen \u003d prefixlen"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    @property"},{"line_number":151,"context_line":"    def gateway_has_specified(self):"},{"line_number":152,"context_line":"        return self._gateway_has_specified"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_feab3072","line":151,"range":{"start_line":151,"start_character":8,"end_line":151,"end_character":29},"in_reply_to":"7faddb67_43e94e7e","updated":"2019-07-05 02:47:25.000000000","message":"Done","commit_id":"b29fb511df5680419e583c60fcbf6257510814e7"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4627e552ad014270d8609f44cabdba5417a8ab9c","unresolved":false,"context_lines":[{"line_number":315,"context_line":"            prefixlen \u003d subnet[\u0027prefixlen\u0027]"},{"line_number":316,"context_line":"            if not validators.is_attr_set(prefixlen):"},{"line_number":317,"context_line":"                prefixlen \u003d int(subnetpool[\u0027default_prefixlen\u0027])"},{"line_number":318,"context_line":"            gateway_has_specified \u003d False"},{"line_number":319,"context_line":"            gateway_ip \u003d None"},{"line_number":320,"context_line":"            # Note(jetlee): specify the gateway_ip for subnet"},{"line_number":321,"context_line":"            # when use subnetpool"},{"line_number":322,"context_line":"            if subnet.get(\u0027gateway_ip\u0027) is not constants.ATTR_NOT_SPECIFIED:"},{"line_number":323,"context_line":"                gateway_has_specified \u003d True"},{"line_number":324,"context_line":"                gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027)"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"            return AnySubnetRequest("},{"line_number":327,"context_line":"                subnet[\u0027tenant_id\u0027],"},{"line_number":328,"context_line":"                subnet_id,"},{"line_number":329,"context_line":"                common_utils.ip_version_from_int(subnetpool[\u0027ip_version\u0027]),"},{"line_number":330,"context_line":"                prefixlen,"},{"line_number":331,"context_line":"                gateway_ip\u003dgateway_ip,"},{"line_number":332,"context_line":"                gateway_has_specified\u003dgateway_has_specified)"},{"line_number":333,"context_line":"        else:"},{"line_number":334,"context_line":"            return SpecificSubnetRequest(subnet[\u0027tenant_id\u0027],"},{"line_number":335,"context_line":"                                         subnet_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_03da76e8","line":332,"range":{"start_line":318,"start_character":12,"end_line":332,"end_character":60},"updated":"2019-07-04 16:01:32.000000000","message":"You don\u0027t need this logic outside the AnySubnetRequest. You can implement the \"gateway_has_specified\" property based on \"AnySubnetRequest.gateway_ip\": if .gateway_ip \u003d\u003d constants.ATTR_NOT_SPECIFIED \u003d\u003d\u003e ._gateway_has_specified \u003d True","commit_id":"b29fb511df5680419e583c60fcbf6257510814e7"},{"author":{"_account_id":27295,"name":"Li Zhouzhou","email":"lizhouzhou_yewu@cmss.chinamobile.com","username":"LiZhouzhou"},"change_message_id":"9b9d7f8affb4f69f942dc78b7e99fe09fdf1b831","unresolved":false,"context_lines":[{"line_number":315,"context_line":"            prefixlen \u003d subnet[\u0027prefixlen\u0027]"},{"line_number":316,"context_line":"            if not validators.is_attr_set(prefixlen):"},{"line_number":317,"context_line":"                prefixlen \u003d int(subnetpool[\u0027default_prefixlen\u0027])"},{"line_number":318,"context_line":"            gateway_has_specified \u003d False"},{"line_number":319,"context_line":"            gateway_ip \u003d None"},{"line_number":320,"context_line":"            # Note(jetlee): specify the gateway_ip for subnet"},{"line_number":321,"context_line":"            # when use subnetpool"},{"line_number":322,"context_line":"            if subnet.get(\u0027gateway_ip\u0027) is not constants.ATTR_NOT_SPECIFIED:"},{"line_number":323,"context_line":"                gateway_has_specified \u003d True"},{"line_number":324,"context_line":"                gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027)"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"            return AnySubnetRequest("},{"line_number":327,"context_line":"                subnet[\u0027tenant_id\u0027],"},{"line_number":328,"context_line":"                subnet_id,"},{"line_number":329,"context_line":"                common_utils.ip_version_from_int(subnetpool[\u0027ip_version\u0027]),"},{"line_number":330,"context_line":"                prefixlen,"},{"line_number":331,"context_line":"                gateway_ip\u003dgateway_ip,"},{"line_number":332,"context_line":"                gateway_has_specified\u003dgateway_has_specified)"},{"line_number":333,"context_line":"        else:"},{"line_number":334,"context_line":"            return SpecificSubnetRequest(subnet[\u0027tenant_id\u0027],"},{"line_number":335,"context_line":"                                         subnet_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_3e88e8c4","line":332,"range":{"start_line":318,"start_character":12,"end_line":332,"end_character":60},"in_reply_to":"7faddb67_03da76e8","updated":"2019-07-05 02:47:25.000000000","message":"gateway_has_specified have to implement here. Because \u0027class SubnetRequest\u0027 will call \u0027netaddr\u0027 initial gateway_ip, if gatway_ip isn\u0027t specified, neutron will throw a error.","commit_id":"b29fb511df5680419e583c60fcbf6257510814e7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"bf2b6249a9a2e739e0fa7a916294af0327a0bbed","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        :param version: Either constants.IPv4 or constants.IPv6"},{"line_number":134,"context_line":"        :param prefixlen: The prefix len requested.  Must be within the min and"},{"line_number":135,"context_line":"            max allowed."},{"line_number":136,"context_line":"        :type prefixlen: int"},{"line_number":137,"context_line":"        \"\"\""},{"line_number":138,"context_line":"        super(AnySubnetRequest, self).__init__("},{"line_number":139,"context_line":"            tenant_id\u003dtenant_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_b07f9f13","line":136,"updated":"2019-07-15 08:08:35.000000000","message":"please add new parameter to the docstring too :)","commit_id":"52c34365c3d399051ea159ecb1c3ec2abbe14d8f"},{"author":{"_account_id":27295,"name":"Li Zhouzhou","email":"lizhouzhou_yewu@cmss.chinamobile.com","username":"LiZhouzhou"},"change_message_id":"52f4d621b2bb2b427ac758f3667ee336216b9954","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        :param version: Either constants.IPv4 or constants.IPv6"},{"line_number":134,"context_line":"        :param prefixlen: The prefix len requested.  Must be within the min and"},{"line_number":135,"context_line":"            max allowed."},{"line_number":136,"context_line":"        :type prefixlen: int"},{"line_number":137,"context_line":"        \"\"\""},{"line_number":138,"context_line":"        super(AnySubnetRequest, self).__init__("},{"line_number":139,"context_line":"            tenant_id\u003dtenant_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_9a31615d","line":136,"in_reply_to":"7faddb67_b07f9f13","updated":"2019-07-15 09:18:06.000000000","message":"Done","commit_id":"52c34365c3d399051ea159ecb1c3ec2abbe14d8f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"bf2b6249a9a2e739e0fa7a916294af0327a0bbed","unresolved":false,"context_lines":[{"line_number":319,"context_line":"            gateway_ip \u003d None"},{"line_number":320,"context_line":"            # Note(jetlee): specify the gateway_ip for subnet"},{"line_number":321,"context_line":"            # when use subnetpool"},{"line_number":322,"context_line":"            if subnet.get(\u0027gateway_ip\u0027) is not constants.ATTR_NOT_SPECIFIED:"},{"line_number":323,"context_line":"                is_gateway_defined \u003d True"},{"line_number":324,"context_line":"                gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027)"},{"line_number":325,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_90a703a8","line":322,"range":{"start_line":322,"start_character":15,"end_line":322,"end_character":39},"updated":"2019-07-15 08:08:35.000000000","message":"I think it should be:\n\n    subnet.get(\u0027gateway_ip\u0027, constants.ATTR_NOT_SPECIFIED)\n\nbecause now, if there is not gateway_ip, it will return None which is (probably) something different than  constants.ATTR_NOT_SPECIFIED\n\nAnd IMO this case should be covered by tests also.","commit_id":"52c34365c3d399051ea159ecb1c3ec2abbe14d8f"},{"author":{"_account_id":27295,"name":"Li Zhouzhou","email":"lizhouzhou_yewu@cmss.chinamobile.com","username":"LiZhouzhou"},"change_message_id":"52f4d621b2bb2b427ac758f3667ee336216b9954","unresolved":false,"context_lines":[{"line_number":319,"context_line":"            gateway_ip \u003d None"},{"line_number":320,"context_line":"            # Note(jetlee): specify the gateway_ip for subnet"},{"line_number":321,"context_line":"            # when use subnetpool"},{"line_number":322,"context_line":"            if subnet.get(\u0027gateway_ip\u0027) is not constants.ATTR_NOT_SPECIFIED:"},{"line_number":323,"context_line":"                is_gateway_defined \u003d True"},{"line_number":324,"context_line":"                gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027)"},{"line_number":325,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_3a0b8d7d","line":322,"range":{"start_line":322,"start_character":15,"end_line":322,"end_character":39},"in_reply_to":"7faddb67_90a703a8","updated":"2019-07-15 09:18:06.000000000","message":"Yeah. THX.","commit_id":"52c34365c3d399051ea159ecb1c3ec2abbe14d8f"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"4603f5fc96b74f61e12743e33f266672b3bbe989","unresolved":false,"context_lines":[{"line_number":317,"context_line":"            if not validators.is_attr_set(prefixlen):"},{"line_number":318,"context_line":"                prefixlen \u003d int(subnetpool[\u0027default_prefixlen\u0027])"},{"line_number":319,"context_line":"            is_gateway_defined \u003d False"},{"line_number":320,"context_line":"            gateway_ip \u003d None"},{"line_number":321,"context_line":"            # Note(jetlee): specify the gateway_ip for subnet"},{"line_number":322,"context_line":"            # when use subnetpool"},{"line_number":323,"context_line":"            if subnet.get(\u0027gateway_ip\u0027,"},{"line_number":324,"context_line":"                    constants.ATTR_NOT_SPECIFIED) is not \\"},{"line_number":325,"context_line":"                    constants.ATTR_NOT_SPECIFIED:"},{"line_number":326,"context_line":"                is_gateway_defined \u003d True"},{"line_number":327,"context_line":"                gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"            return AnySubnetRequest("},{"line_number":330,"context_line":"                subnet[\u0027tenant_id\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_8f37c84d","line":327,"range":{"start_line":320,"start_character":12,"end_line":327,"end_character":53},"updated":"2019-07-16 13:56:30.000000000","message":"The following style can work?\n\"\"\"\ngateway_ip \u003d subnet.get(\u0027gateway_ip\u0027)\nif gateway_ip not in (ATTR_NOT_SPECIFIED, None):\n    is_gateway_defined \u003d True\n\"\"\"","commit_id":"5c34c8f292b3584ae9cc79bc6239eb75d75b7501"},{"author":{"_account_id":27295,"name":"Li Zhouzhou","email":"lizhouzhou_yewu@cmss.chinamobile.com","username":"LiZhouzhou"},"change_message_id":"c32d90580a8827357a2a5fa2f3efd3e6c6497048","unresolved":false,"context_lines":[{"line_number":317,"context_line":"            if not validators.is_attr_set(prefixlen):"},{"line_number":318,"context_line":"                prefixlen \u003d int(subnetpool[\u0027default_prefixlen\u0027])"},{"line_number":319,"context_line":"            is_gateway_defined \u003d False"},{"line_number":320,"context_line":"            gateway_ip \u003d None"},{"line_number":321,"context_line":"            # Note(jetlee): specify the gateway_ip for subnet"},{"line_number":322,"context_line":"            # when use subnetpool"},{"line_number":323,"context_line":"            if subnet.get(\u0027gateway_ip\u0027,"},{"line_number":324,"context_line":"                    constants.ATTR_NOT_SPECIFIED) is not \\"},{"line_number":325,"context_line":"                    constants.ATTR_NOT_SPECIFIED:"},{"line_number":326,"context_line":"                is_gateway_defined \u003d True"},{"line_number":327,"context_line":"                gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"            return AnySubnetRequest("},{"line_number":330,"context_line":"                subnet[\u0027tenant_id\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_c4927a57","line":327,"range":{"start_line":320,"start_character":12,"end_line":327,"end_character":53},"in_reply_to":"7faddb67_8f37c84d","updated":"2019-07-17 01:23:56.000000000","message":"No, when gateway_ip is \u0027ATTR_NOT_SPECIFIED\u0027, the gateway_ip will pass to \u0027class AnySubnetRequest\u0027, the intialize gateway_ip will throw a ERROR, because gateway_ip isn\u0027t a valid IP.","commit_id":"5c34c8f292b3584ae9cc79bc6239eb75d75b7501"},{"author":{"_account_id":27295,"name":"Li Zhouzhou","email":"lizhouzhou_yewu@cmss.chinamobile.com","username":"LiZhouzhou"},"change_message_id":"59bc66854cd5a11b5743b3f86268e4581534a238","unresolved":false,"context_lines":[{"line_number":317,"context_line":"            if not validators.is_attr_set(prefixlen):"},{"line_number":318,"context_line":"                prefixlen \u003d int(subnetpool[\u0027default_prefixlen\u0027])"},{"line_number":319,"context_line":"            is_gateway_defined \u003d False"},{"line_number":320,"context_line":"            gateway_ip \u003d None"},{"line_number":321,"context_line":"            # Note(jetlee): specify the gateway_ip for subnet"},{"line_number":322,"context_line":"            # when use subnetpool"},{"line_number":323,"context_line":"            if subnet.get(\u0027gateway_ip\u0027,"},{"line_number":324,"context_line":"                    constants.ATTR_NOT_SPECIFIED) is not \\"},{"line_number":325,"context_line":"                    constants.ATTR_NOT_SPECIFIED:"},{"line_number":326,"context_line":"                is_gateway_defined \u003d True"},{"line_number":327,"context_line":"                gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"            return AnySubnetRequest("},{"line_number":330,"context_line":"                subnet[\u0027tenant_id\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_070bb423","line":327,"range":{"start_line":320,"start_character":12,"end_line":327,"end_character":53},"in_reply_to":"7faddb67_c4535a6a","updated":"2019-07-17 03:23:23.000000000","message":"It seems good. \"is_gateway_defined\" is needed for \u0027no-gateway\u0027.","commit_id":"5c34c8f292b3584ae9cc79bc6239eb75d75b7501"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"b1fafcaa80d34ca39b4213877b790ae9c52f042b","unresolved":false,"context_lines":[{"line_number":317,"context_line":"            if not validators.is_attr_set(prefixlen):"},{"line_number":318,"context_line":"                prefixlen \u003d int(subnetpool[\u0027default_prefixlen\u0027])"},{"line_number":319,"context_line":"            is_gateway_defined \u003d False"},{"line_number":320,"context_line":"            gateway_ip \u003d None"},{"line_number":321,"context_line":"            # Note(jetlee): specify the gateway_ip for subnet"},{"line_number":322,"context_line":"            # when use subnetpool"},{"line_number":323,"context_line":"            if subnet.get(\u0027gateway_ip\u0027,"},{"line_number":324,"context_line":"                    constants.ATTR_NOT_SPECIFIED) is not \\"},{"line_number":325,"context_line":"                    constants.ATTR_NOT_SPECIFIED:"},{"line_number":326,"context_line":"                is_gateway_defined \u003d True"},{"line_number":327,"context_line":"                gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"            return AnySubnetRequest("},{"line_number":330,"context_line":"                subnet[\u0027tenant_id\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_c4535a6a","line":327,"range":{"start_line":320,"start_character":12,"end_line":327,"end_character":53},"in_reply_to":"7faddb67_c4927a57","updated":"2019-07-17 02:26:11.000000000","message":"Thanks for the reply. Then how about this?\n\"\"\"\ngateway_ip \u003d subnet.get(\u0027gateway_ip\u0027)\nif gateway_ip not in (constants.ATTR_NOT_SPECIFIED, None):\n    is_gateway_defined \u003d True\nelse:\n    gateway_ip \u003dNone\n\"\"\"\n\nSo, if this can work, I may have another question that \n new param \"is_gateway_defined\" looks like unnecessary.","commit_id":"5c34c8f292b3584ae9cc79bc6239eb75d75b7501"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"adce39c9791b0b6cc71554c8a8a74e7f1cced3d4","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        :param prefixlen: The prefix len requested.  Must be within the min and"},{"line_number":135,"context_line":"            max allowed."},{"line_number":136,"context_line":"        :param is_gateway_defined: Ensure gateway ip was defined or not."},{"line_number":137,"context_line":"        :type prefixlen: int"},{"line_number":138,"context_line":"        \"\"\""},{"line_number":139,"context_line":"        super(AnySubnetRequest, self).__init__("},{"line_number":140,"context_line":"            tenant_id\u003dtenant_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_69b90813","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":28},"updated":"2019-07-18 09:13:21.000000000","message":"nit: This should be before l136 I think","commit_id":"1b97da42c76669a50e04794b4ec32483ac29cfce"},{"author":{"_account_id":27295,"name":"Li Zhouzhou","email":"lizhouzhou_yewu@cmss.chinamobile.com","username":"LiZhouzhou"},"change_message_id":"03c9aac3a98acee3bd29f14fc8316f5d3771ebba","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        :param prefixlen: The prefix len requested.  Must be within the min and"},{"line_number":135,"context_line":"            max allowed."},{"line_number":136,"context_line":"        :param is_gateway_defined: Ensure gateway ip was defined or not."},{"line_number":137,"context_line":"        :type prefixlen: int"},{"line_number":138,"context_line":"        \"\"\""},{"line_number":139,"context_line":"        super(AnySubnetRequest, self).__init__("},{"line_number":140,"context_line":"            tenant_id\u003dtenant_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_a925c00a","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":28},"in_reply_to":"7faddb67_69b90813","updated":"2019-07-18 09:37:48.000000000","message":"Done","commit_id":"1b97da42c76669a50e04794b4ec32483ac29cfce"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"adce39c9791b0b6cc71554c8a8a74e7f1cced3d4","unresolved":false,"context_lines":[{"line_number":318,"context_line":"                prefixlen \u003d int(subnetpool[\u0027default_prefixlen\u0027])"},{"line_number":319,"context_line":"            is_gateway_defined \u003d False"},{"line_number":320,"context_line":"            # Note(jetlee): specify the gateway_ip for subnet"},{"line_number":321,"context_line":"            # when use subnetpool"},{"line_number":322,"context_line":"            gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027)"},{"line_number":323,"context_line":"            if gateway_ip is not constants.ATTR_NOT_SPECIFIED:"},{"line_number":324,"context_line":"                is_gateway_defined \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_89fb24bf","line":321,"range":{"start_line":321,"start_character":19,"end_line":321,"end_character":33},"updated":"2019-07-18 09:13:21.000000000","message":"nit: when using subnetpool","commit_id":"1b97da42c76669a50e04794b4ec32483ac29cfce"},{"author":{"_account_id":27295,"name":"Li Zhouzhou","email":"lizhouzhou_yewu@cmss.chinamobile.com","username":"LiZhouzhou"},"change_message_id":"03c9aac3a98acee3bd29f14fc8316f5d3771ebba","unresolved":false,"context_lines":[{"line_number":318,"context_line":"                prefixlen \u003d int(subnetpool[\u0027default_prefixlen\u0027])"},{"line_number":319,"context_line":"            is_gateway_defined \u003d False"},{"line_number":320,"context_line":"            # Note(jetlee): specify the gateway_ip for subnet"},{"line_number":321,"context_line":"            # when use subnetpool"},{"line_number":322,"context_line":"            gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027)"},{"line_number":323,"context_line":"            if gateway_ip is not constants.ATTR_NOT_SPECIFIED:"},{"line_number":324,"context_line":"                is_gateway_defined \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_892a44d8","line":321,"range":{"start_line":321,"start_character":19,"end_line":321,"end_character":33},"in_reply_to":"7faddb67_89fb24bf","updated":"2019-07-18 09:37:48.000000000","message":"Done","commit_id":"1b97da42c76669a50e04794b4ec32483ac29cfce"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"80a36e0e83a21c885c44cc7b5f183ad5d096690b","unresolved":false,"context_lines":[{"line_number":319,"context_line":"            is_gateway_defined \u003d False"},{"line_number":320,"context_line":"            # Note(jetlee): specify the gateway_ip for subnet"},{"line_number":321,"context_line":"            # when using subnetpool"},{"line_number":322,"context_line":"            gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027)"},{"line_number":323,"context_line":"            if gateway_ip is not constants.ATTR_NOT_SPECIFIED:"},{"line_number":324,"context_line":"                is_gateway_defined \u003d True"},{"line_number":325,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_78822202","line":322,"updated":"2019-07-19 07:48:28.000000000","message":"IIUC this it works like:\n1. when subnet[\u0027gateway_ip\u0027] \u003d\u003d None then it means \"no gateway\"\n2. when subnet[\u0027gateway_ip\u0027] \u003d\u003d constants.ATTR_NOT_SPECIFIED than it means \"please pick gateway ip for me automatically\"\n\nAm I right?\nIf so, shouldn\u0027t it be something like:\n\n    gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027, constants.ATTR_NOT_SPECIFIED)\n\n?","commit_id":"84d268e858a6be6b92fa77a69a0d3b93249e2d6f"},{"author":{"_account_id":27295,"name":"Li Zhouzhou","email":"lizhouzhou_yewu@cmss.chinamobile.com","username":"LiZhouzhou"},"change_message_id":"1910fef26eb0a319242ac6c7d773762430761ede","unresolved":false,"context_lines":[{"line_number":319,"context_line":"            is_gateway_defined \u003d False"},{"line_number":320,"context_line":"            # Note(jetlee): specify the gateway_ip for subnet"},{"line_number":321,"context_line":"            # when using subnetpool"},{"line_number":322,"context_line":"            gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027)"},{"line_number":323,"context_line":"            if gateway_ip is not constants.ATTR_NOT_SPECIFIED:"},{"line_number":324,"context_line":"                is_gateway_defined \u003d True"},{"line_number":325,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_181beec9","line":322,"in_reply_to":"7faddb67_78822202","updated":"2019-07-19 08:12:10.000000000","message":"Yes. You\u0027ve mentioned things are right.","commit_id":"84d268e858a6be6b92fa77a69a0d3b93249e2d6f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a7f6d1dae0594b3f512df1a5509fb32a53870c20","unresolved":false,"context_lines":[{"line_number":319,"context_line":"            is_gateway_defined \u003d False"},{"line_number":320,"context_line":"            # Note(jetlee): specify the gateway_ip for subnet"},{"line_number":321,"context_line":"            # when using subnetpool"},{"line_number":322,"context_line":"            gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027,"},{"line_number":323,"context_line":"                                    constants.ATTR_NOT_SPECIFIED)"},{"line_number":324,"context_line":"            if gateway_ip is not constants.ATTR_NOT_SPECIFIED:"},{"line_number":325,"context_line":"                is_gateway_defined \u003d True"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_13eaefd6","line":322,"updated":"2019-07-19 09:34:31.000000000","message":"When a subnetpool is defined:\n- The gateway IP should be calculated from the subnet assigned (as it\u0027s done now)\n- Or at least we should check (not here but in [1]) if the gateway given is valid for this subnet.\n\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/ipam/subnet_alloc.py#L122-L144","commit_id":"794e9a9d3e30215ff40e17754bc55e50b5cb38f9"},{"author":{"_account_id":27295,"name":"Li Zhouzhou","email":"lizhouzhou_yewu@cmss.chinamobile.com","username":"LiZhouzhou"},"change_message_id":"3fa0066d218280fa65426375fce25079b23495d8","unresolved":false,"context_lines":[{"line_number":319,"context_line":"            is_gateway_defined \u003d False"},{"line_number":320,"context_line":"            # Note(jetlee): specify the gateway_ip for subnet"},{"line_number":321,"context_line":"            # when using subnetpool"},{"line_number":322,"context_line":"            gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027,"},{"line_number":323,"context_line":"                                    constants.ATTR_NOT_SPECIFIED)"},{"line_number":324,"context_line":"            if gateway_ip is not constants.ATTR_NOT_SPECIFIED:"},{"line_number":325,"context_line":"                is_gateway_defined \u003d True"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_b3167ba7","line":322,"in_reply_to":"7faddb67_13eaefd6","updated":"2019-07-19 09:54:00.000000000","message":"I don\u0027t know what is \u0027the valid of gatway_ip\u0027 that you said, gateway_ip in the range of subnetpool?","commit_id":"794e9a9d3e30215ff40e17754bc55e50b5cb38f9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d105dd3306badab71951bccf14963d083650bfe9","unresolved":false,"context_lines":[{"line_number":319,"context_line":"            is_gateway_defined \u003d False"},{"line_number":320,"context_line":"            # Note(jetlee): specify the gateway_ip for subnet"},{"line_number":321,"context_line":"            # when using subnetpool"},{"line_number":322,"context_line":"            gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027,"},{"line_number":323,"context_line":"                                    constants.ATTR_NOT_SPECIFIED)"},{"line_number":324,"context_line":"            if gateway_ip is not constants.ATTR_NOT_SPECIFIED:"},{"line_number":325,"context_line":"                is_gateway_defined \u003d True"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_53a38400","line":322,"in_reply_to":"7faddb67_b3167ba7","updated":"2019-07-19 12:42:40.000000000","message":"exactly, as commented in https://review.opendev.org/#/c/669107/11/neutron/ipam/subnet_alloc.py@131","commit_id":"794e9a9d3e30215ff40e17754bc55e50b5cb38f9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a7f6d1dae0594b3f512df1a5509fb32a53870c20","unresolved":false,"context_lines":[{"line_number":322,"context_line":"            gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027,"},{"line_number":323,"context_line":"                                    constants.ATTR_NOT_SPECIFIED)"},{"line_number":324,"context_line":"            if gateway_ip is not constants.ATTR_NOT_SPECIFIED:"},{"line_number":325,"context_line":"                is_gateway_defined \u003d True"},{"line_number":326,"context_line":"            else:"},{"line_number":327,"context_line":"                gateway_ip \u003d None"},{"line_number":328,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_73a9e38d","line":325,"range":{"start_line":325,"start_character":16,"end_line":325,"end_character":34},"updated":"2019-07-19 09:34:31.000000000","message":"nit (related to the bug, but not with this patch): How do you specify in the openstack CLI you need a subnet, retrieved from a pool, but without gateway. You should also implement a --no-gateway parameter in the \"subnet create\" command.","commit_id":"794e9a9d3e30215ff40e17754bc55e50b5cb38f9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d105dd3306badab71951bccf14963d083650bfe9","unresolved":false,"context_lines":[{"line_number":322,"context_line":"            gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027,"},{"line_number":323,"context_line":"                                    constants.ATTR_NOT_SPECIFIED)"},{"line_number":324,"context_line":"            if gateway_ip is not constants.ATTR_NOT_SPECIFIED:"},{"line_number":325,"context_line":"                is_gateway_defined \u003d True"},{"line_number":326,"context_line":"            else:"},{"line_number":327,"context_line":"                gateway_ip \u003d None"},{"line_number":328,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_939d7cbd","line":325,"range":{"start_line":325,"start_character":16,"end_line":325,"end_character":34},"in_reply_to":"7faddb67_5325c707","updated":"2019-07-19 12:42:40.000000000","message":"\"neutron\" CLI is deprecated, you should use \"openstack subnet create\" and we don\u0027t have this option there.","commit_id":"794e9a9d3e30215ff40e17754bc55e50b5cb38f9"},{"author":{"_account_id":27295,"name":"Li Zhouzhou","email":"lizhouzhou_yewu@cmss.chinamobile.com","username":"LiZhouzhou"},"change_message_id":"3fa0066d218280fa65426375fce25079b23495d8","unresolved":false,"context_lines":[{"line_number":322,"context_line":"            gateway_ip \u003d subnet.get(\u0027gateway_ip\u0027,"},{"line_number":323,"context_line":"                                    constants.ATTR_NOT_SPECIFIED)"},{"line_number":324,"context_line":"            if gateway_ip is not constants.ATTR_NOT_SPECIFIED:"},{"line_number":325,"context_line":"                is_gateway_defined \u003d True"},{"line_number":326,"context_line":"            else:"},{"line_number":327,"context_line":"                gateway_ip \u003d None"},{"line_number":328,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_5325c707","line":325,"range":{"start_line":325,"start_character":16,"end_line":325,"end_character":34},"in_reply_to":"7faddb67_73a9e38d","updated":"2019-07-19 09:54:00.000000000","message":"I use param \u0027--no-gateway\u0027 in \u0027neutron subnet-create\u0027.","commit_id":"794e9a9d3e30215ff40e17754bc55e50b5cb38f9"}],"neutron/ipam/subnet_alloc.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4627e552ad014270d8609f44cabdba5417a8ab9c","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                if request.prefixlen \u003e\u003d prefix.prefixlen:"},{"line_number":130,"context_line":"                    subnet \u003d next(prefix.subnet(request.prefixlen))"},{"line_number":131,"context_line":"                    gateway_ip \u003d request.gateway_ip"},{"line_number":132,"context_line":"                    if not gateway_ip and not request.gateway_has_specified:"},{"line_number":133,"context_line":"                        gateway_ip \u003d subnet.network + 1"},{"line_number":134,"context_line":"                    pools \u003d ipam_utils.generate_pools(subnet.cidr,"},{"line_number":135,"context_line":"                                                      gateway_ip)"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_238532ae","line":133,"range":{"start_line":132,"start_character":20,"end_line":133,"end_character":55},"updated":"2019-07-04 16:01:32.000000000","message":"I don\u0027t understand the logic here. What you need is to create a network without a gw, but with this logic you\u0027ll always have it, regardless of the request.gateway_ip passed.\n\nThis patch is not implementing the core request of the bug.","commit_id":"b29fb511df5680419e583c60fcbf6257510814e7"},{"author":{"_account_id":27295,"name":"Li Zhouzhou","email":"lizhouzhou_yewu@cmss.chinamobile.com","username":"LiZhouzhou"},"change_message_id":"9b9d7f8affb4f69f942dc78b7e99fe09fdf1b831","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                if request.prefixlen \u003e\u003d prefix.prefixlen:"},{"line_number":130,"context_line":"                    subnet \u003d next(prefix.subnet(request.prefixlen))"},{"line_number":131,"context_line":"                    gateway_ip \u003d request.gateway_ip"},{"line_number":132,"context_line":"                    if not gateway_ip and not request.gateway_has_specified:"},{"line_number":133,"context_line":"                        gateway_ip \u003d subnet.network + 1"},{"line_number":134,"context_line":"                    pools \u003d ipam_utils.generate_pools(subnet.cidr,"},{"line_number":135,"context_line":"                                                      gateway_ip)"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_de3514f9","line":133,"range":{"start_line":132,"start_character":20,"end_line":133,"end_character":55},"in_reply_to":"7faddb67_238532ae","updated":"2019-07-05 02:47:25.000000000","message":"You\u0027re right. But I don\u0027t know your mean \u0027This patch is not implementing the core request of bug\u0027.","commit_id":"b29fb511df5680419e583c60fcbf6257510814e7"},{"author":{"_account_id":25564,"name":"yanpuqing","email":"yanpq@awcloud.com","username":"ycx"},"change_message_id":"1509ad48d6ffd2dd500a7681a79fd1d601da736f","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                if request.prefixlen \u003e\u003d prefix.prefixlen:"},{"line_number":130,"context_line":"                    subnet \u003d next(prefix.subnet(request.prefixlen))"},{"line_number":131,"context_line":"                    gateway_ip \u003d request.gateway_ip"},{"line_number":132,"context_line":"                    if not gateway_ip and not request.gateway_has_specified:"},{"line_number":133,"context_line":"                        gateway_ip \u003d subnet.network + 1"},{"line_number":134,"context_line":"                    pools \u003d ipam_utils.generate_pools(subnet.cidr,"},{"line_number":135,"context_line":"                                                      gateway_ip)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_31e6d918","line":132,"range":{"start_line":132,"start_character":20,"end_line":132,"end_character":76},"updated":"2019-07-05 03:54:17.000000000","message":"I guess you need to add a parameter like \"no_gateway\" to indicate that subnet has no gateway, like yours \"gateway_has_specified\" parameter. Of course, this is just one of my idea, if you have better one you can submit it.","commit_id":"f7c6c2e49f92b24d81cc5f42aa50b05ed7bcab4d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a7f6d1dae0594b3f512df1a5509fb32a53870c20","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            for prefix in prefix_pool:"},{"line_number":129,"context_line":"                if request.prefixlen \u003e\u003d prefix.prefixlen:"},{"line_number":130,"context_line":"                    subnet \u003d next(prefix.subnet(request.prefixlen))"},{"line_number":131,"context_line":"                    gateway_ip \u003d request.gateway_ip"},{"line_number":132,"context_line":"                    if not gateway_ip and not request.is_gateway_defined:"},{"line_number":133,"context_line":"                        gateway_ip \u003d subnet.network + 1"},{"line_number":134,"context_line":"                    pools \u003d ipam_utils.generate_pools(subnet.cidr,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_b38c3b36","line":131,"range":{"start_line":131,"start_character":20,"end_line":131,"end_character":51},"updated":"2019-07-19 09:34:31.000000000","message":"As commented, because now you can force the GW IP when using pools (something not allowed before), you should check this IP belongs to the subnet CIDR.","commit_id":"794e9a9d3e30215ff40e17754bc55e50b5cb38f9"},{"author":{"_account_id":27295,"name":"Li Zhouzhou","email":"lizhouzhou_yewu@cmss.chinamobile.com","username":"LiZhouzhou"},"change_message_id":"3fa0066d218280fa65426375fce25079b23495d8","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            for prefix in prefix_pool:"},{"line_number":129,"context_line":"                if request.prefixlen \u003e\u003d prefix.prefixlen:"},{"line_number":130,"context_line":"                    subnet \u003d next(prefix.subnet(request.prefixlen))"},{"line_number":131,"context_line":"                    gateway_ip \u003d request.gateway_ip"},{"line_number":132,"context_line":"                    if not gateway_ip and not request.is_gateway_defined:"},{"line_number":133,"context_line":"                        gateway_ip \u003d subnet.network + 1"},{"line_number":134,"context_line":"                    pools \u003d ipam_utils.generate_pools(subnet.cidr,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_d37e97e2","line":131,"range":{"start_line":131,"start_character":20,"end_line":131,"end_character":51},"in_reply_to":"7faddb67_b38c3b36","updated":"2019-07-19 09:54:00.000000000","message":"OK","commit_id":"794e9a9d3e30215ff40e17754bc55e50b5cb38f9"}],"neutron/tests/unit/ipam/test_subnet_alloc.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"3deda2b4073c9e0e263d0c7c3422cfd709caf795","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            detail \u003d res.get_details()"},{"line_number":152,"context_line":"            self.assertEqual(detail.gateway_ip,"},{"line_number":153,"context_line":"                             netaddr.IPAddress(gateway_ip))"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_allocate_specific_subnet_specific_gateway(self):"},{"line_number":156,"context_line":"        sp \u003d self._create_subnet_pool(self.plugin, self.ctx, \u0027test-sp\u0027,"},{"line_number":157,"context_line":"                                      [\u002710.1.0.0/16\u0027, \u0027192.168.1.0/24\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_8aa3d24f","line":154,"updated":"2019-07-05 09:00:51.000000000","message":"I miss here a test that test the creation without gw-ip","commit_id":"244469c0271c9fbe9359f110aa6071c7e8eae2bb"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"7951649bfff7ede8379f9330fd95e5a93d8c3c21","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            detail \u003d res.get_details()"},{"line_number":152,"context_line":"            self.assertEqual(detail.gateway_ip,"},{"line_number":153,"context_line":"                             netaddr.IPAddress(gateway_ip))"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_allocate_specific_subnet_specific_gateway(self):"},{"line_number":156,"context_line":"        sp \u003d self._create_subnet_pool(self.plugin, self.ctx, \u0027test-sp\u0027,"},{"line_number":157,"context_line":"                                      [\u002710.1.0.0/16\u0027, \u0027192.168.1.0/24\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_a73eee26","line":154,"in_reply_to":"7faddb67_16f05dc9","updated":"2019-07-08 11:31:07.000000000","message":"I still miss the extra test :-)","commit_id":"244469c0271c9fbe9359f110aa6071c7e8eae2bb"},{"author":{"_account_id":27295,"name":"Li Zhouzhou","email":"lizhouzhou_yewu@cmss.chinamobile.com","username":"LiZhouzhou"},"change_message_id":"c7ad8bd97ebd82c73392fa065469cd9a3e5c5663","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            detail \u003d res.get_details()"},{"line_number":152,"context_line":"            self.assertEqual(detail.gateway_ip,"},{"line_number":153,"context_line":"                             netaddr.IPAddress(gateway_ip))"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_allocate_specific_subnet_specific_gateway(self):"},{"line_number":156,"context_line":"        sp \u003d self._create_subnet_pool(self.plugin, self.ctx, \u0027test-sp\u0027,"},{"line_number":157,"context_line":"                                      [\u002710.1.0.0/16\u0027, \u0027192.168.1.0/24\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_16f05dc9","line":154,"in_reply_to":"7faddb67_8aa3d24f","updated":"2019-07-08 01:18:42.000000000","message":"yeah.","commit_id":"244469c0271c9fbe9359f110aa6071c7e8eae2bb"},{"author":{"_account_id":27295,"name":"Li Zhouzhou","email":"lizhouzhou_yewu@cmss.chinamobile.com","username":"LiZhouzhou"},"change_message_id":"a6b438de81894a3958a32fcd387f179d2ba618b2","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            detail \u003d res.get_details()"},{"line_number":152,"context_line":"            self.assertEqual(detail.gateway_ip,"},{"line_number":153,"context_line":"                             netaddr.IPAddress(gateway_ip))"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_allocate_specific_subnet_specific_gateway(self):"},{"line_number":156,"context_line":"        sp \u003d self._create_subnet_pool(self.plugin, self.ctx, \u0027test-sp\u0027,"},{"line_number":157,"context_line":"                                      [\u002710.1.0.0/16\u0027, \u0027192.168.1.0/24\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_f771ea0d","line":154,"in_reply_to":"7faddb67_a73eee26","updated":"2019-07-09 01:28:53.000000000","message":"What\u0027s scenario? Let me try.","commit_id":"244469c0271c9fbe9359f110aa6071c7e8eae2bb"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"adce39c9791b0b6cc71554c8a8a74e7f1cced3d4","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                             netaddr.IPAddress(gateway_ip))"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_allocate_any_subnet_with_no_gateway(self):"},{"line_number":156,"context_line":"        sp \u003d self._create_subnet_pool(self.plugin, self.ctx, \u0027test-sp\u0027,"},{"line_number":157,"context_line":"                                      [\u002710.1.0.0/16\u0027, \u0027192.168.1.0/24\u0027],"},{"line_number":158,"context_line":"                                      21, 4)"},{"line_number":159,"context_line":"        sp \u003d self.plugin._get_subnetpool(self.ctx, sp[\u0027id\u0027])"},{"line_number":160,"context_line":"        with db_api.CONTEXT_WRITER.using(self.ctx):"},{"line_number":161,"context_line":"            sa \u003d subnet_alloc.SubnetAllocator(sp, self.ctx)"},{"line_number":162,"context_line":"            req \u003d ipam_req.AnySubnetRequest(self._tenant_id,"},{"line_number":163,"context_line":"                                        uuidutils.generate_uuid(),"},{"line_number":164,"context_line":"                                        constants.IPv4, 21,"},{"line_number":165,"context_line":"                                        gateway_ip\u003dNone,"},{"line_number":166,"context_line":"                                        is_gateway_defined\u003dTrue)"},{"line_number":167,"context_line":"            res \u003d sa.allocate_subnet(req)"},{"line_number":168,"context_line":"            detail \u003d res.get_details()"},{"line_number":169,"context_line":"            self.assertIsNone(detail.gateway_ip)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def test_allocate_specific_subnet_specific_gateway(self):"},{"line_number":172,"context_line":"        sp \u003d self._create_subnet_pool(self.plugin, self.ctx, \u0027test-sp\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_e9109802","line":169,"range":{"start_line":156,"start_character":8,"end_line":169,"end_character":48},"updated":"2019-07-18 09:13:21.000000000","message":"This should be in a helper method like:\ndef _test_allocate_any_subnet(gateway_ip\u003dNone):\n    ....\n    if gateway_ip:\n        self.assertEqual(detail.gateway_ip,....)\n    else:\n        self.assertIsNone(detail.gateway_ip)\n\nand call that one from the actual tests like:\ndef test_allocate_any_subnet_specify_gateway(self):\n    _test_allocate_any_subnet(gateway_ip\u003d\u0027192.168.1.1\u0027)\n\ndef test_allocate_any_subnet_with_no_gateway(self):\n    _test_allocate_any_subnet()","commit_id":"1b97da42c76669a50e04794b4ec32483ac29cfce"},{"author":{"_account_id":27295,"name":"Li Zhouzhou","email":"lizhouzhou_yewu@cmss.chinamobile.com","username":"LiZhouzhou"},"change_message_id":"03c9aac3a98acee3bd29f14fc8316f5d3771ebba","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                             netaddr.IPAddress(gateway_ip))"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_allocate_any_subnet_with_no_gateway(self):"},{"line_number":156,"context_line":"        sp \u003d self._create_subnet_pool(self.plugin, self.ctx, \u0027test-sp\u0027,"},{"line_number":157,"context_line":"                                      [\u002710.1.0.0/16\u0027, \u0027192.168.1.0/24\u0027],"},{"line_number":158,"context_line":"                                      21, 4)"},{"line_number":159,"context_line":"        sp \u003d self.plugin._get_subnetpool(self.ctx, sp[\u0027id\u0027])"},{"line_number":160,"context_line":"        with db_api.CONTEXT_WRITER.using(self.ctx):"},{"line_number":161,"context_line":"            sa \u003d subnet_alloc.SubnetAllocator(sp, self.ctx)"},{"line_number":162,"context_line":"            req \u003d ipam_req.AnySubnetRequest(self._tenant_id,"},{"line_number":163,"context_line":"                                        uuidutils.generate_uuid(),"},{"line_number":164,"context_line":"                                        constants.IPv4, 21,"},{"line_number":165,"context_line":"                                        gateway_ip\u003dNone,"},{"line_number":166,"context_line":"                                        is_gateway_defined\u003dTrue)"},{"line_number":167,"context_line":"            res \u003d sa.allocate_subnet(req)"},{"line_number":168,"context_line":"            detail \u003d res.get_details()"},{"line_number":169,"context_line":"            self.assertIsNone(detail.gateway_ip)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def test_allocate_specific_subnet_specific_gateway(self):"},{"line_number":172,"context_line":"        sp \u003d self._create_subnet_pool(self.plugin, self.ctx, \u0027test-sp\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_097c14ea","line":169,"range":{"start_line":156,"start_character":8,"end_line":169,"end_character":48},"in_reply_to":"7faddb67_e9109802","updated":"2019-07-18 09:37:48.000000000","message":"It seems good.","commit_id":"1b97da42c76669a50e04794b4ec32483ac29cfce"}]}
