)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16986,"name":"Shuquan Huang","email":"shuquan.huang@live.com","username":"shuquan"},"change_message_id":"bc65cdb4cb26d9dc8d66e06572082ff6016c9845","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-11-09 15:14:19 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added +4 IPs for test_create_port_in_allowed_allocation_pools function. "},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Closes-Bug: 1514457"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Id523c54037518ea199cd88d553b4cdfef59a186b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da85f559_28277fcb","line":8,"updated":"2015-11-10 09:17:50.000000000","message":"There is a space in the end. Please remove it. And you can add more description in the message.","commit_id":"7806848347e43f70a5d7f97c1ab4e67aba9c9aa0"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"8d55cd31cb554b2b0e9a4fc9784b0386738b358b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Guillaume Chenuet \u003cgchenuet@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-11-24 13:54:11 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"As discussed with Shuquan, I applied some changes:"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* Retrieved subnet \u0026 mask bits (IPv4 \u0026 IPv6) from a new value in tempest conf file"},{"line_number":10,"context_line":"* Check if the mask bits is not too small"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a8ffd7b_3be72242","line":7,"updated":"2015-11-24 13:27:49.000000000","message":"I think it is not best title for the commit message. Please, describe the idea of the patch in this line. http://docs.openstack.org/infra/manual/developers.html#committing-a-change","commit_id":"7395df69a053374f2bbe150d89b8fa3fd3b99288"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"4102cdcd047bf7060492358e1358c824686abf60","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Guillaume Chenuet \u003cgchenuet@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-11-25 11:05:02 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"When running Tempest test test_create_port_in_allowed_allocation_pools"},{"line_number":8,"context_line":"on a 3 controllers infra, we have this error: No more IP addresses available"},{"line_number":9,"context_line":"on network UUID."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9a8ffd7b_d33792ae","line":7,"updated":"2015-11-25 15:48:58.000000000","message":"This title is too long. It should be something like this:\n\n    Fixing test_create_port_in_allowed_allocation_pools when 3 (or more) controllers","commit_id":"66a5fb549c88a51f75c0f042cc73f230a486c22e"}],"tempest/api/network/test_ports.py":[{"author":{"_account_id":16986,"name":"Shuquan Huang","email":"shuquan.huang@live.com","username":"shuquan"},"change_message_id":"bc65cdb4cb26d9dc8d66e06572082ff6016c9845","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        net_id \u003d network[\u0027id\u0027]"},{"line_number":105,"context_line":"        address \u003d self._get_ipaddress_from_tempest_conf()"},{"line_number":106,"context_line":"        allocation_pools \u003d {\u0027allocation_pools\u0027: [{\u0027start\u0027: str(address + 4),"},{"line_number":107,"context_line":"                                                  \u0027end\u0027: str(address + 10)}]}"},{"line_number":108,"context_line":"        subnet \u003d self.create_subnet(network, **allocation_pools)"},{"line_number":109,"context_line":"        self.addCleanup(self.subnets_client.delete_subnet, subnet[\u0027id\u0027])"},{"line_number":110,"context_line":"        body \u003d self.client.create_port(network_id\u003dnet_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_485be354","line":107,"updated":"2015-11-10 09:17:50.000000000","message":"I think we can move the number of available IPs to config rather than still hard coding here.","commit_id":"7806848347e43f70a5d7f97c1ab4e67aba9c9aa0"},{"author":{"_account_id":16986,"name":"Shuquan Huang","email":"shuquan.huang@live.com","username":"shuquan"},"change_message_id":"c9c57b2ee9b903f61d29ab12a3e964294dcffa1d","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        net_id \u003d network[\u0027id\u0027]"},{"line_number":107,"context_line":"        cidr \u003d self._get_cidr_from_tempest_conf()"},{"line_number":108,"context_line":"        allocation_pools \u003d {\u0027allocation_pools\u0027: [{\u0027start\u0027: str(cidr[2]),"},{"line_number":109,"context_line":"                                                  \u0027end\u0027: str(cidr[-2])}]}"},{"line_number":110,"context_line":"        subnet \u003d self.create_subnet(network, **allocation_pools)"},{"line_number":111,"context_line":"        self.addCleanup(self.subnets_client.delete_subnet, subnet[\u0027id\u0027])"},{"line_number":112,"context_line":"        body \u003d self.client.create_port(network_id\u003dnet_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da85f559_516c87cd","line":109,"updated":"2015-11-12 02:32:50.000000000","message":"I still think we should add a config option about the size of allocation pools.","commit_id":"169be6905eadc90ca6bc0bb0722a0b66d7237f6d"},{"author":{"_account_id":16986,"name":"Shuquan Huang","email":"shuquan.huang@live.com","username":"shuquan"},"change_message_id":"7c005902895ddb1dfb6796f455788c0f1f631f85","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        net_id \u003d network[\u0027id\u0027]"},{"line_number":107,"context_line":"        cidr \u003d self._get_cidr_from_tempest_conf()"},{"line_number":108,"context_line":"        allocation_pools \u003d {\u0027allocation_pools\u0027: [{\u0027start\u0027: str(cidr[2]),"},{"line_number":109,"context_line":"                                                  \u0027end\u0027: str(cidr[-2])}]}"},{"line_number":110,"context_line":"        subnet \u003d self.create_subnet(network, **allocation_pools)"},{"line_number":111,"context_line":"        self.addCleanup(self.subnets_client.delete_subnet, subnet[\u0027id\u0027])"},{"line_number":112,"context_line":"        body \u003d self.client.create_port(network_id\u003dnet_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_c6b5db7e","line":109,"in_reply_to":"ba8a016a_3f1ab36f","updated":"2015-11-16 13:44:51.000000000","message":"I don\u0027t think it\u0027s a good way. Although we can calculate the size of the allocation pools according to the mask bits, i prefer to a explicit config item. And other problem is str(cidr[2]), which may have index error when the prefixlen \u003d 31.","commit_id":"169be6905eadc90ca6bc0bb0722a0b66d7237f6d"},{"author":{"_account_id":16706,"name":"Guillaume Chenuet","email":"guillaume.chenuet@schibsted.com","username":"gchenuet"},"change_message_id":"d0d5b4873ecb45c9a130341ba0fa556a45cf7e7b","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        net_id \u003d network[\u0027id\u0027]"},{"line_number":107,"context_line":"        cidr \u003d self._get_cidr_from_tempest_conf()"},{"line_number":108,"context_line":"        allocation_pools \u003d {\u0027allocation_pools\u0027: [{\u0027start\u0027: str(cidr[2]),"},{"line_number":109,"context_line":"                                                  \u0027end\u0027: str(cidr[-2])}]}"},{"line_number":110,"context_line":"        subnet \u003d self.create_subnet(network, **allocation_pools)"},{"line_number":111,"context_line":"        self.addCleanup(self.subnets_client.delete_subnet, subnet[\u0027id\u0027])"},{"line_number":112,"context_line":"        body \u003d self.client.create_port(network_id\u003dnet_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_62e73841","line":109,"in_reply_to":"ba8a016a_c6b5db7e","updated":"2015-11-16 14:22:56.000000000","message":"I\u0027m agree with you for str(cidr[2]) problem, I\u0027ll fix it. But for the parameter, as we used \u0027network.tenant_network_cidr\u0027 for the subnet, i think is more relevant to use \u0027network.tenant_network_mask_bits\u0027 for mask bits. However, we could add a new dedicated parameter (xxx.xxx.xxx.xxx/XX). WDYT ?","commit_id":"169be6905eadc90ca6bc0bb0722a0b66d7237f6d"},{"author":{"_account_id":16706,"name":"Guillaume Chenuet","email":"guillaume.chenuet@schibsted.com","username":"gchenuet"},"change_message_id":"8a7f96f25363fc372fe0713b55677227efe0e16c","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        net_id \u003d network[\u0027id\u0027]"},{"line_number":107,"context_line":"        cidr \u003d self._get_cidr_from_tempest_conf()"},{"line_number":108,"context_line":"        allocation_pools \u003d {\u0027allocation_pools\u0027: [{\u0027start\u0027: str(cidr[2]),"},{"line_number":109,"context_line":"                                                  \u0027end\u0027: str(cidr[-2])}]}"},{"line_number":110,"context_line":"        subnet \u003d self.create_subnet(network, **allocation_pools)"},{"line_number":111,"context_line":"        self.addCleanup(self.subnets_client.delete_subnet, subnet[\u0027id\u0027])"},{"line_number":112,"context_line":"        body \u003d self.client.create_port(network_id\u003dnet_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_3f1ab36f","line":109,"in_reply_to":"da85f559_516c87cd","updated":"2015-11-16 10:41:08.000000000","message":"I\u0027m already using the config option network.tenant_network_mask_bits for calculating the size of allocation pools for the subnet. This parameter should be overwrite if needed.","commit_id":"169be6905eadc90ca6bc0bb0722a0b66d7237f6d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"175a163100bab546826dc8ab349ad91cf78f75c5","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                                 .format(cidr.cidr))"},{"line_number":109,"context_line":"        allocation_pools \u003d {\u0027allocation_pools\u0027: [{\u0027start\u0027: str(cidr[2]),"},{"line_number":110,"context_line":"                                                  \u0027end\u0027: str(cidr[-2])}]}"},{"line_number":111,"context_line":"        subnet \u003d self.create_subnet(network, cidr\u003dcidr,"},{"line_number":112,"context_line":"                                    mask_bits\u003dcidr.prefixlen,"},{"line_number":113,"context_line":"                                    **allocation_pools)"},{"line_number":114,"context_line":"        self.addCleanup(self.subnets_client.delete_subnet, subnet[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a8ffd7b_909597e5","line":111,"updated":"2015-11-25 10:17:43.000000000","message":"I looked at the definition of \"create_subnet\" in tempest/api/network/base.py and it seems there\u0027s already a config flag named \"tenant_network_mask_bits\" that you can change to suits your need.","commit_id":"66a5fb549c88a51f75c0f042cc73f230a486c22e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"4143d287ed5ad7c0dc8b6b324cb56bf159162824","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                                 .format(cidr.cidr))"},{"line_number":109,"context_line":"        allocation_pools \u003d {\u0027allocation_pools\u0027: [{\u0027start\u0027: str(cidr[2]),"},{"line_number":110,"context_line":"                                                  \u0027end\u0027: str(cidr[-2])}]}"},{"line_number":111,"context_line":"        subnet \u003d self.create_subnet(network, cidr\u003dcidr,"},{"line_number":112,"context_line":"                                    mask_bits\u003dcidr.prefixlen,"},{"line_number":113,"context_line":"                                    **allocation_pools)"},{"line_number":114,"context_line":"        self.addCleanup(self.subnets_client.delete_subnet, subnet[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a8ffd7b_229fa9b5","line":111,"in_reply_to":"9a8ffd7b_077acef1","updated":"2015-11-25 16:12:39.000000000","message":"We have plenty of config option already to let you do what you want. Adding more config option when not strictly required will confuse Tempest users and make it harder to configure.\n\nI suggest that you revert to patch set 1 but add a check that \"str(address + 4)\" and \"str(address + 10)\" are not out of \"bound\".","commit_id":"66a5fb549c88a51f75c0f042cc73f230a486c22e"},{"author":{"_account_id":16706,"name":"Guillaume Chenuet","email":"guillaume.chenuet@schibsted.com","username":"gchenuet"},"change_message_id":"5f7e04b7094bc50a0aad14a56cd3e8c3970212b3","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                                 .format(cidr.cidr))"},{"line_number":109,"context_line":"        allocation_pools \u003d {\u0027allocation_pools\u0027: [{\u0027start\u0027: str(cidr[2]),"},{"line_number":110,"context_line":"                                                  \u0027end\u0027: str(cidr[-2])}]}"},{"line_number":111,"context_line":"        subnet \u003d self.create_subnet(network, cidr\u003dcidr,"},{"line_number":112,"context_line":"                                    mask_bits\u003dcidr.prefixlen,"},{"line_number":113,"context_line":"                                    **allocation_pools)"},{"line_number":114,"context_line":"        self.addCleanup(self.subnets_client.delete_subnet, subnet[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a8ffd7b_077acef1","line":111,"in_reply_to":"9a8ffd7b_909597e5","updated":"2015-11-25 10:53:26.000000000","message":"Hello, thanks for you comment. My first patch used default params: \u0027tenant_network_subnet\u0027 and \u0027tenant_network_mask_bits\u0027 but Shuquan Huang asked me to add a dedicated parameter for this test. So ... what\u0027s the best option ?","commit_id":"66a5fb549c88a51f75c0f042cc73f230a486c22e"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"46b4765cbb19771257747af4d0e83e7175617cf7","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        net_id \u003d network[\u0027id\u0027]"},{"line_number":107,"context_line":"        address \u003d self._get_ipaddress_from_tempest_conf()"},{"line_number":108,"context_line":"        if address.prefixlen \u003e\u003d \u002730\u0027:"},{"line_number":109,"context_line":"            raise AttributeError(\"Subnet {} isn\u0027t large enough for the test\""},{"line_number":110,"context_line":"                                 .format(address.cidr))"},{"line_number":111,"context_line":"        allocation_pools \u003d {\u0027allocation_pools\u0027: [{\u0027start\u0027: str(address[2]),"},{"line_number":112,"context_line":"                                                  \u0027end\u0027: str(address[-2])}]}"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a7e1126_becd015f","line":109,"updated":"2015-12-17 14:45:35.000000000","message":"It sounds like an \u0027InvalidConfiguration\u0027 error.","commit_id":"f28b580aec9e53c1705e4f1a452d662a8ae49ba6"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"f2856303825aec0badc221cb3a7ebb59c6f70252","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        network \u003d self.create_network()"},{"line_number":107,"context_line":"        net_id \u003d network[\u0027id\u0027]"},{"line_number":108,"context_line":"        address \u003d self._get_ipaddress_from_tempest_conf()"},{"line_number":109,"context_line":"        if address.prefixlen \u003e\u003d \u002730\u0027:"},{"line_number":110,"context_line":"            msg \u003d (\"Subnet %s isn\u0027t large enough for the test\" % address.cidr)"},{"line_number":111,"context_line":"            raise exceptions.InvalidConfiguration(message\u003dmsg)"},{"line_number":112,"context_line":"        allocation_pools \u003d {\u0027allocation_pools\u0027: [{\u0027start\u0027: str(address[2]),"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_9429b339","line":109,"updated":"2016-01-05 13:46:47.000000000","message":"Are you comparing an int to a string here ?","commit_id":"ea2c85520be8960ea6d94a6373ee0c270c21668e"},{"author":{"_account_id":14743,"name":"Viktor Tikkanen","email":"viktor.tikkanen@nokia.com","username":"vitikkan"},"change_message_id":"9c5a68334428384082323bb4bdd11ca91a4df3d3","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        network \u003d self.create_network()"},{"line_number":107,"context_line":"        net_id \u003d network[\u0027id\u0027]"},{"line_number":108,"context_line":"        address \u003d self._get_ipaddress_from_tempest_conf()"},{"line_number":109,"context_line":"        if address.prefixlen \u003e\u003d 30:"},{"line_number":110,"context_line":"            msg \u003d (\"Subnet %s isn\u0027t large enough for the test\" % address.cidr)"},{"line_number":111,"context_line":"            raise exceptions.InvalidConfiguration(message\u003dmsg)"},{"line_number":112,"context_line":"        allocation_pools \u003d {\u0027allocation_pools\u0027: [{\u0027start\u0027: str(address[2]),"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_c2953433","line":109,"updated":"2016-01-11 06:02:59.000000000","message":"How about ipv6 case? (default value of tenant_network_v6_cidr seems to be 64)","commit_id":"6e88ef7c0987ea1a8129005067026c25bb7b53bb"},{"author":{"_account_id":16706,"name":"Guillaume Chenuet","email":"guillaume.chenuet@schibsted.com","username":"gchenuet"},"change_message_id":"21c9be767fb4f3d2ea95ec31e27b2f3222d943db","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        network \u003d self.create_network()"},{"line_number":107,"context_line":"        net_id \u003d network[\u0027id\u0027]"},{"line_number":108,"context_line":"        address \u003d self._get_ipaddress_from_tempest_conf()"},{"line_number":109,"context_line":"        if address.prefixlen \u003e\u003d 30:"},{"line_number":110,"context_line":"            msg \u003d (\"Subnet %s isn\u0027t large enough for the test\" % address.cidr)"},{"line_number":111,"context_line":"            raise exceptions.InvalidConfiguration(message\u003dmsg)"},{"line_number":112,"context_line":"        allocation_pools \u003d {\u0027allocation_pools\u0027: [{\u0027start\u0027: str(address[2]),"}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_7f91c999","line":109,"in_reply_to":"fa69d971_c2953433","updated":"2016-01-18 16:00:27.000000000","message":"Thanks for this point. I\u0027ll fix it.","commit_id":"6e88ef7c0987ea1a8129005067026c25bb7b53bb"},{"author":{"_account_id":14743,"name":"Viktor Tikkanen","email":"viktor.tikkanen@nokia.com","username":"vitikkan"},"change_message_id":"9c5a68334428384082323bb4bdd11ca91a4df3d3","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        subnet \u003d self.create_subnet(network, cidr\u003daddress,"},{"line_number":115,"context_line":"                                    mask_bits\u003daddress.prefixlen,"},{"line_number":116,"context_line":"                                    **allocation_pools)"},{"line_number":117,"context_line":"        self.addCleanup(self.subnets_client.delete_subnet, subnet[\u0027id\u0027])"},{"line_number":118,"context_line":"        body \u003d self.client.create_port(network_id\u003dnet_id)"},{"line_number":119,"context_line":"        self.addCleanup(self.client.delete_port, body[\u0027port\u0027][\u0027id\u0027])"},{"line_number":120,"context_line":"        port \u003d body[\u0027port\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_a2de000f","line":117,"updated":"2016-01-11 06:02:59.000000000","message":"Should it be self.client.delete_subnet instead of self.subnets_client.delete_subnet?...","commit_id":"6e88ef7c0987ea1a8129005067026c25bb7b53bb"},{"author":{"_account_id":16706,"name":"Guillaume Chenuet","email":"guillaume.chenuet@schibsted.com","username":"gchenuet"},"change_message_id":"21c9be767fb4f3d2ea95ec31e27b2f3222d943db","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        subnet \u003d self.create_subnet(network, cidr\u003daddress,"},{"line_number":115,"context_line":"                                    mask_bits\u003daddress.prefixlen,"},{"line_number":116,"context_line":"                                    **allocation_pools)"},{"line_number":117,"context_line":"        self.addCleanup(self.subnets_client.delete_subnet, subnet[\u0027id\u0027])"},{"line_number":118,"context_line":"        body \u003d self.client.create_port(network_id\u003dnet_id)"},{"line_number":119,"context_line":"        self.addCleanup(self.client.delete_port, body[\u0027port\u0027][\u0027id\u0027])"},{"line_number":120,"context_line":"        port \u003d body[\u0027port\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_ff6059a6","line":117,"in_reply_to":"fa69d971_a2de000f","updated":"2016-01-18 16:00:27.000000000","message":"I\u0027m think not because all subnet tools are in subnets_client class (for ex: delete_subnet) and not in client class.","commit_id":"6e88ef7c0987ea1a8129005067026c25bb7b53bb"}]}
