)]}'
{"tempest/api/compute/servers/test_attach_interfaces.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"2982b74a7090fe872979cac0908000d19ae2e8f2","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    @classmethod"},{"line_number":54,"context_line":"    def resource_setup(cls):"},{"line_number":55,"context_line":"        super(AttachInterfacesTestJSON, cls).resource_setup()"},{"line_number":56,"context_line":"        cls.cidr \u003d CONF.compute.network_for_attach"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def wait_for_interface_status(self, server, port_id, status):"},{"line_number":59,"context_line":"        \"\"\"Waits for an interface to reach a given status.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_f349afb8","line":56,"updated":"2016-03-15 09:43:08.000000000","message":"You don\"t need a class variable here.","commit_id":"eb0c0bda161b3d3a23bf2169d3d7053bc18d6ac4"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"83fcd49c01ae344b214850f8dcae6e09e42a2afe","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    @classmethod"},{"line_number":54,"context_line":"    def resource_setup(cls):"},{"line_number":55,"context_line":"        super(AttachInterfacesTestJSON, cls).resource_setup()"},{"line_number":56,"context_line":"        cls.cidr \u003d CONF.compute.network_for_attach"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def wait_for_interface_status(self, server, port_id, status):"},{"line_number":59,"context_line":"        \"\"\"Waits for an interface to reach a given status.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa0719c6_41f2049b","line":56,"in_reply_to":"3afc51ec_f349afb8","updated":"2016-03-24 05:33:11.000000000","message":"I moved it to _test_create_interface_by_fixed_ips.","commit_id":"eb0c0bda161b3d3a23bf2169d3d7053bc18d6ac4"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"96158b01a6e24852c82f3b938fe89457b2ae4142","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        self._check_interface(iface, port_id\u003dport_id)"},{"line_number":125,"context_line":"        return iface"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def _test_create_interface_by_fixed_ips(self, server, ifs):"},{"line_number":128,"context_line":"        name \u003d data_utils.rand_name(\u0027network-\u0027)"},{"line_number":129,"context_line":"        network \u003d self.networks_client.create_network(name\u003dname)"},{"line_number":130,"context_line":"        network_id \u003d network[\u0027network\u0027][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa0719c6_43d67e28","line":127,"updated":"2016-03-24 10:49:53.000000000","message":"Where is this \"ifs\" variable used ?","commit_id":"d76644fb84cf900a9a0f6c3e407a6ea73312d296"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"710326d14bc8e98be91c7f636dd6a31b64fc48b4","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        self._check_interface(iface, port_id\u003dport_id)"},{"line_number":125,"context_line":"        return iface"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def _test_create_interface_by_fixed_ips(self, server, ifs):"},{"line_number":128,"context_line":"        name \u003d data_utils.rand_name(\u0027network-\u0027)"},{"line_number":129,"context_line":"        network \u003d self.networks_client.create_network(name\u003dname)"},{"line_number":130,"context_line":"        network_id \u003d network[\u0027network\u0027][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"da0c15f0_d0f96f4f","line":127,"in_reply_to":"fa0719c6_43d67e28","updated":"2016-03-25 09:14:53.000000000","message":"It was unnecessary, but it is used in a new PatchSet.","commit_id":"d76644fb84cf900a9a0f6c3e407a6ea73312d296"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"96158b01a6e24852c82f3b938fe89457b2ae4142","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def _test_create_interface_by_fixed_ips(self, server, ifs):"},{"line_number":128,"context_line":"        name \u003d data_utils.rand_name(\u0027network-\u0027)"},{"line_number":129,"context_line":"        network \u003d self.networks_client.create_network(name\u003dname)"},{"line_number":130,"context_line":"        network_id \u003d network[\u0027network\u0027][\u0027id\u0027]"},{"line_number":131,"context_line":"        self.addCleanup(self.networks_client.delete_network, network_id)"},{"line_number":132,"context_line":"        cidr \u003d CONF.compute.network_for_attach"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa0719c6_43631e42","line":129,"updated":"2016-03-24 10:49:53.000000000","message":"Why do you need to create this network ? Why don\"t use reuse the \"ifs[0][\u0027net_id\u0027]\" one ?","commit_id":"d76644fb84cf900a9a0f6c3e407a6ea73312d296"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"710326d14bc8e98be91c7f636dd6a31b64fc48b4","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def _test_create_interface_by_fixed_ips(self, server, ifs):"},{"line_number":128,"context_line":"        name \u003d data_utils.rand_name(\u0027network-\u0027)"},{"line_number":129,"context_line":"        network \u003d self.networks_client.create_network(name\u003dname)"},{"line_number":130,"context_line":"        network_id \u003d network[\u0027network\u0027][\u0027id\u0027]"},{"line_number":131,"context_line":"        self.addCleanup(self.networks_client.delete_network, network_id)"},{"line_number":132,"context_line":"        cidr \u003d CONF.compute.network_for_attach"}],"source_content_type":"text/x-python","patch_set":6,"id":"da0c15f0_c4008dad","line":129,"in_reply_to":"fa0719c6_43631e42","updated":"2016-03-25 09:14:53.000000000","message":"I just created a new network at the same time create a new subnet. I have no special reason. I reuse the \"ifs[0][\u0027net_id\u0027]\".","commit_id":"d76644fb84cf900a9a0f6c3e407a6ea73312d296"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"96158b01a6e24852c82f3b938fe89457b2ae4142","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        ip_list \u003d [i for i in netaddr.IPNetwork(cidr)]"},{"line_number":141,"context_line":"        # avoid ranges of dhcp port"},{"line_number":142,"context_line":"        del ip_list[0:3]"},{"line_number":143,"context_line":"        ip \u003d str(ip_list[0])"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        fixed_ips \u003d [{\u0027ip_address\u0027: ip}]"},{"line_number":146,"context_line":"        iface \u003d self.client.create_interface("}],"source_content_type":"text/x-python","patch_set":6,"id":"fa0719c6_c3fbae77","line":143,"updated":"2016-03-24 10:49:53.000000000","message":"Just do:\n  ip \u003d netaddr.IPNetwork(cidr)[3]\n\nand remove the 3 previous line","commit_id":"d76644fb84cf900a9a0f6c3e407a6ea73312d296"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"710326d14bc8e98be91c7f636dd6a31b64fc48b4","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        ip_list \u003d [i for i in netaddr.IPNetwork(cidr)]"},{"line_number":141,"context_line":"        # avoid ranges of dhcp port"},{"line_number":142,"context_line":"        del ip_list[0:3]"},{"line_number":143,"context_line":"        ip \u003d str(ip_list[0])"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        fixed_ips \u003d [{\u0027ip_address\u0027: ip}]"},{"line_number":146,"context_line":"        iface \u003d self.client.create_interface("}],"source_content_type":"text/x-python","patch_set":6,"id":"da0c15f0_5049df8a","line":143,"in_reply_to":"fa0719c6_c3fbae77","updated":"2016-03-25 09:14:53.000000000","message":"I fixed it, and converted from IPAddress to str.","commit_id":"d76644fb84cf900a9a0f6c3e407a6ea73312d296"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"87698336d3960149f4d59e8c7ccaa81331392452","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        network_id \u003d ifs[0][\u0027net_id\u0027]"},{"line_number":128,"context_line":"        ip_list \u003d ["},{"line_number":129,"context_line":"            ifs[n][\u0027fixed_ips\u0027][0][\u0027ip_address\u0027] for n in range(0, len(ifs))]"},{"line_number":130,"context_line":"        ip \u003d str(netaddr.IPAddress(sorted(ip_list)[-1]) + 1)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        fixed_ips \u003d [{\u0027ip_address\u0027: ip}]"},{"line_number":133,"context_line":"        iface \u003d self.client.create_interface("}],"source_content_type":"text/x-python","patch_set":8,"id":"1a122d0e_bb196624","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":60},"updated":"2016-04-21 01:33:26.000000000","message":"I had a small concern about this logic if the existing address is maximum like \u0027192.168.0.255\u0027 or something.\nBut this kind of logic has already existed on the other places. So it is nice to make this out of scope from this patch.","commit_id":"455854cc136f0a77aa6572b6c48c647930fdd68c"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"1b6f72565964cf8600a11c193af593cd8d811a9f","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        iface \u003d self.wait_for_interface_status("},{"line_number":137,"context_line":"            server[\u0027id\u0027], iface[\u0027port_id\u0027], \u0027ACTIVE\u0027)"},{"line_number":138,"context_line":"        self._check_interface(iface, fixed_ip\u003dip)"},{"line_number":139,"context_line":"        self.addCleanup(self.ports_client.delete_port, iface[\u0027port_id\u0027])"},{"line_number":140,"context_line":"        return iface"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def _test_show_interface(self, server, ifs):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a122d0e_f1013f06","line":139,"updated":"2016-04-21 02:41:48.000000000","message":"This needs to swap with L138 otherwise if one of the checks in _check_interface() fail for whatever reason we leak a port. \n\nI actually think it might make more sense to put it above the wait loop right after the create_interface() call so we don\u0027t have a port stuck in an error state or dangling (in the case the wait timesout)\n\nSo this block would become something like:\n\n  iface \u003d self.client.create_interface(\n      server[\u0027id\u0027], net_id\u003dnetwork_id,\n      fixed_ips\u003dfixed_ips)[\u0027interfaceAttachment\u0027]\n  self.addCleanup(self.ports_client.delete_port, iface[\u0027port_id\u0027])\n  iface \u003d self.wait_for_interface_status(\n      server[\u0027id\u0027], iface[\u0027port_id\u0027], \u0027ACTIVE\u0027)\n  self._check_interface(iface, fixed_ip\u003dip)","commit_id":"455854cc136f0a77aa6572b6c48c647930fdd68c"}],"tempest/config.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"2f321d8400432ffe3800f6260249e937e8824241","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                     \u0027be utilized by some multinode specific tests to ensure \u0027"},{"line_number":283,"context_line":"                     \u0027that requests match the expected size of the cluster \u0027"},{"line_number":284,"context_line":"                     \u0027you are testing with.\u0027)),"},{"line_number":285,"context_line":"    cfg.StrOpt(\u0027network_for_attach\u0027,"},{"line_number":286,"context_line":"               default\u003d\u002710.110.0.0/16\u0027,"},{"line_number":287,"context_line":"               help\u003d\u0027The network cidr of which will be used to \u0027"},{"line_number":288,"context_line":"                    \u0027attach interfaces to the VM.\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a061dce_9c5b17f6","line":285,"updated":"2016-04-06 14:02:45.000000000","message":"How does this config option differ from CONF.network.tenant_network_cidr. From what I can tell the use case for these is the same. I\u0027d rather not see us add a new config option to pass a cidr in for subnet creation if we already have one.","commit_id":"bed4ce9b9958cc32943faae76a61bbe3e0df86e6"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"c132cb9c78c8c8e5e3e0cc5fd3fb7787b469dcf0","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                     \u0027be utilized by some multinode specific tests to ensure \u0027"},{"line_number":283,"context_line":"                     \u0027that requests match the expected size of the cluster \u0027"},{"line_number":284,"context_line":"                     \u0027you are testing with.\u0027)),"},{"line_number":285,"context_line":"    cfg.StrOpt(\u0027network_for_attach\u0027,"},{"line_number":286,"context_line":"               default\u003d\u002710.110.0.0/16\u0027,"},{"line_number":287,"context_line":"               help\u003d\u0027The network cidr of which will be used to \u0027"},{"line_number":288,"context_line":"                    \u0027attach interfaces to the VM.\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a1b2928_1de794e5","line":285,"in_reply_to":"9a061dce_9c5b17f6","updated":"2016-04-11 05:40:49.000000000","message":"This test will need to look for the ip_address no one is using, unlike _test_create_interface_by_port_id.\nIf we run the other tests in multiple, I considered there is a possibility that overlap with ip_address where other tests are used.\nTo avoid this, and as a way of easy to coding, I provided a new subnet.\nHowever, as you say, it was not reasonable.","commit_id":"bed4ce9b9958cc32943faae76a61bbe3e0df86e6"}]}
