)]}'
{"neutron/tests/tempest/scenario/test_floatingip.py":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"91849d2832bafca18c65f2d05d5a47c03dafa7e2","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import netaddr"},{"line_number":17,"context_line":"import testscenarios"},{"line_number":18,"context_line":"from testscenarios.scenarios import multiply_scenarios"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from tempest.common import waiters"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_a94f1669","line":18,"range":{"start_line":16,"start_character":0,"end_line":18,"end_character":54},"updated":"2017-01-24 16:28:30.000000000","message":"These import libraries are third party library so please line up them with tempest library.","commit_id":"8b9ad5d437e6abc2318943d39e90fe919ab31b88"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"472e0fa2fa38dd794aa927326942d3390989d78c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import netaddr"},{"line_number":17,"context_line":"import testscenarios"},{"line_number":18,"context_line":"from testscenarios.scenarios import multiply_scenarios"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from tempest.common import waiters"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_7b6162d3","line":18,"range":{"start_line":16,"start_character":0,"end_line":18,"end_character":54},"in_reply_to":"5a3905b3_a94f1669","updated":"2017-01-24 22:36:54.000000000","message":"Done","commit_id":"8b9ad5d437e6abc2318943d39e90fe919ab31b88"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"91849d2832bafca18c65f2d05d5a47c03dafa7e2","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from testscenarios.scenarios import multiply_scenarios"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from tempest.common import waiters"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from tempest.lib.common import ssh"},{"line_number":23,"context_line":"from tempest.lib.common.utils import data_utils"},{"line_number":24,"context_line":"from tempest import test"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_46aea12e","line":21,"updated":"2017-01-24 16:28:30.000000000","message":"This new line is unnecessary.","commit_id":"8b9ad5d437e6abc2318943d39e90fe919ab31b88"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"472e0fa2fa38dd794aa927326942d3390989d78c","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from testscenarios.scenarios import multiply_scenarios"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from tempest.common import waiters"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from tempest.lib.common import ssh"},{"line_number":23,"context_line":"from tempest.lib.common.utils import data_utils"},{"line_number":24,"context_line":"from tempest import test"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_db9ed6b7","line":21,"in_reply_to":"5a3905b3_46aea12e","updated":"2017-01-24 22:36:54.000000000","message":"Done","commit_id":"8b9ad5d437e6abc2318943d39e90fe919ab31b88"},{"author":{"_account_id":19307,"name":"Antonio Ojea","email":"antonio.ojea.garcia@gmail.com","username":"itsuugo"},"change_message_id":"115f8d2923155166cd999f32c194d85720662f42","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class FloatingIp(base.BaseTempestTestCase):"},{"line_number":38,"context_line":"    # REVISIT(yamamoto): \u0027SRC without FIP\u0027 case is possible?"},{"line_number":39,"context_line":"    scenarios \u003d multiply_scenarios(["},{"line_number":40,"context_line":"        (\u0027DEST with FIP\u0027, dict(dest_has_fip\u003dTrue)),"},{"line_number":41,"context_line":"        (\u0027DEST without FIP\u0027, dict(dest_has_fip\u003dFalse)),"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_5c85adcc","line":38,"range":{"start_line":38,"start_character":0,"end_line":38,"end_character":60},"updated":"2017-01-24 08:41:19.000000000","message":"Source without FIP is common in large scenarios with lots of VMs because you can\u0027t use FIPs in all instances (AWS charge per FIP so it\u0027s understandable that users use the less number of FIPS possible)\nOther possibles scenarios are with Lbaas (you don\u0027t need to put FIPs in all the pool members and they communicate with the FIP+VIP) and Vpnaas (if you want to communicate internal subnets it\u0027s typical that you don\u0027t want to use FIPs in the internal VMs)","commit_id":"8b9ad5d437e6abc2318943d39e90fe919ab31b88"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"d617db6959367bcffa0513fdd89b5ecdf19aaa06","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class FloatingIp(base.BaseTempestTestCase):"},{"line_number":38,"context_line":"    # REVISIT(yamamoto): \u0027SRC without FIP\u0027 case is possible?"},{"line_number":39,"context_line":"    scenarios \u003d multiply_scenarios(["},{"line_number":40,"context_line":"        (\u0027DEST with FIP\u0027, dict(dest_has_fip\u003dTrue)),"},{"line_number":41,"context_line":"        (\u0027DEST without FIP\u0027, dict(dest_has_fip\u003dFalse)),"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_9f38e7d4","line":38,"range":{"start_line":38,"start_character":0,"end_line":38,"end_character":60},"in_reply_to":"5a3905b3_5c85adcc","updated":"2017-01-24 08:48:03.000000000","message":"i just meant it\u0027s difficult to write a test because we use ssh via floating-ip to control VMs.","commit_id":"8b9ad5d437e6abc2318943d39e90fe919ab31b88"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"91849d2832bafca18c65f2d05d5a47c03dafa7e2","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        cls.create_loginable_secgroup_rule(secgroup_id\u003dcls.secgroup[\u0027id\u0027])"},{"line_number":63,"context_line":"        cls.create_pingable_secgroup_rule(secgroup_id\u003dcls.secgroup[\u0027id\u0027])"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        cls._extra_network \u003d cls._create_extra_network()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @classmethod"},{"line_number":68,"context_line":"    def _create_extra_network(cls):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_24cd0d66","line":65,"range":{"start_line":65,"start_character":8,"end_line":65,"end_character":56},"updated":"2017-01-24 16:28:30.000000000","message":"Is there possibility of our using the variable in any tests? If the variable is used in test_east_west only, we don\u0027t need prepare it in setup. What do you think?","commit_id":"8b9ad5d437e6abc2318943d39e90fe919ab31b88"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"472e0fa2fa38dd794aa927326942d3390989d78c","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        cls.create_loginable_secgroup_rule(secgroup_id\u003dcls.secgroup[\u0027id\u0027])"},{"line_number":63,"context_line":"        cls.create_pingable_secgroup_rule(secgroup_id\u003dcls.secgroup[\u0027id\u0027])"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        cls._extra_network \u003d cls._create_extra_network()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @classmethod"},{"line_number":68,"context_line":"    def _create_extra_network(cls):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_9b8c4e81","line":65,"range":{"start_line":65,"start_character":8,"end_line":65,"end_character":56},"in_reply_to":"5a3905b3_24cd0d66","updated":"2017-01-24 22:36:54.000000000","message":"it doesn\u0027t matter as far as there\u0027s only a single test in this class. right?","commit_id":"8b9ad5d437e6abc2318943d39e90fe919ab31b88"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"91849d2832bafca18c65f2d05d5a47c03dafa7e2","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        cls.create_router_interface(cls.router[\u0027id\u0027], subnet[\u0027id\u0027])"},{"line_number":73,"context_line":"        return network"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _create_server(self, floating_ip\u003dTrue, network\u003dNone):"},{"line_number":76,"context_line":"        if network is None:"},{"line_number":77,"context_line":"            network \u003d self.network"},{"line_number":78,"context_line":"        port \u003d self.create_port(network, security_groups\u003d[self.secgroup[\u0027id\u0027]])"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_c94f0290","line":75,"range":{"start_line":75,"start_character":29,"end_line":75,"end_character":59},"updated":"2017-01-24 16:28:30.000000000","message":"These variable name might confuse developers because the \"floating_ip\" is boolean and \"network\" is a resource of network. How about \"create_floating_ip\u003dTrue\"?","commit_id":"8b9ad5d437e6abc2318943d39e90fe919ab31b88"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"472e0fa2fa38dd794aa927326942d3390989d78c","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        cls.create_router_interface(cls.router[\u0027id\u0027], subnet[\u0027id\u0027])"},{"line_number":73,"context_line":"        return network"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _create_server(self, floating_ip\u003dTrue, network\u003dNone):"},{"line_number":76,"context_line":"        if network is None:"},{"line_number":77,"context_line":"            network \u003d self.network"},{"line_number":78,"context_line":"        port \u003d self.create_port(network, security_groups\u003d[self.secgroup[\u0027id\u0027]])"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_5b47461d","line":75,"range":{"start_line":75,"start_character":29,"end_line":75,"end_character":59},"in_reply_to":"5a3905b3_c94f0290","updated":"2017-01-24 22:36:54.000000000","message":"Done","commit_id":"8b9ad5d437e6abc2318943d39e90fe919ab31b88"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"2df52083456dfd6932fdeb60f9e48b8336a37d00","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        (\u0027DEST with FIP\u0027, dict(dest_has_fip\u003dTrue)),"},{"line_number":39,"context_line":"        (\u0027DEST without FIP\u0027, dict(dest_has_fip\u003dFalse)),"},{"line_number":40,"context_line":"    ], ["},{"line_number":41,"context_line":"        (\u0027Same network\u0027, dict(same_network\u003dTrue)),"},{"line_number":42,"context_line":"        (\u0027Separate network\u0027, dict(same_network\u003dFalse)),"},{"line_number":43,"context_line":"    ])"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_b4e74b3f","line":42,"range":{"start_line":41,"start_character":0,"end_line":42,"end_character":55},"updated":"2017-01-25 22:46:56.000000000","message":"Do you need this scenario?","commit_id":"2817f9fe54063ab1a3df6a0c3b653d14cace07b5"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"5c643b46c9552cd6047d1ca3fb8693c0901ee291","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        (\u0027DEST with FIP\u0027, dict(dest_has_fip\u003dTrue)),"},{"line_number":39,"context_line":"        (\u0027DEST without FIP\u0027, dict(dest_has_fip\u003dFalse)),"},{"line_number":40,"context_line":"    ], ["},{"line_number":41,"context_line":"        (\u0027Same network\u0027, dict(same_network\u003dTrue)),"},{"line_number":42,"context_line":"        (\u0027Separate network\u0027, dict(same_network\u003dFalse)),"},{"line_number":43,"context_line":"    ])"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_af58d857","line":42,"range":{"start_line":41,"start_character":0,"end_line":42,"end_character":55},"in_reply_to":"3a461143_2fddc842","updated":"2017-01-25 23:40:49.000000000","message":"ah, i see.\ni guess i mistakenly removed while refactoring.\nit\u0027s a mistake. :-)","commit_id":"2817f9fe54063ab1a3df6a0c3b653d14cace07b5"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"e96201000daecedd18305de41a83fbbdb54acde5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        (\u0027DEST with FIP\u0027, dict(dest_has_fip\u003dTrue)),"},{"line_number":39,"context_line":"        (\u0027DEST without FIP\u0027, dict(dest_has_fip\u003dFalse)),"},{"line_number":40,"context_line":"    ], ["},{"line_number":41,"context_line":"        (\u0027Same network\u0027, dict(same_network\u003dTrue)),"},{"line_number":42,"context_line":"        (\u0027Separate network\u0027, dict(same_network\u003dFalse)),"},{"line_number":43,"context_line":"    ])"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_2fddc842","line":42,"range":{"start_line":41,"start_character":0,"end_line":42,"end_character":55},"in_reply_to":"3a461143_94cb2f72","updated":"2017-01-25 23:29:11.000000000","message":"I don\u0027t see that you refer same_network anywhere. That is why I am asking","commit_id":"2817f9fe54063ab1a3df6a0c3b653d14cace07b5"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"a69ddc2dfec21d2a1827f86edf189fd7775b0405","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        (\u0027DEST with FIP\u0027, dict(dest_has_fip\u003dTrue)),"},{"line_number":39,"context_line":"        (\u0027DEST without FIP\u0027, dict(dest_has_fip\u003dFalse)),"},{"line_number":40,"context_line":"    ], ["},{"line_number":41,"context_line":"        (\u0027Same network\u0027, dict(same_network\u003dTrue)),"},{"line_number":42,"context_line":"        (\u0027Separate network\u0027, dict(same_network\u003dFalse)),"},{"line_number":43,"context_line":"    ])"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_94cb2f72","line":42,"range":{"start_line":41,"start_character":0,"end_line":42,"end_character":55},"in_reply_to":"3a461143_b4e74b3f","updated":"2017-01-25 22:59:52.000000000","message":"yes.\nwhy not?","commit_id":"2817f9fe54063ab1a3df6a0c3b653d14cace07b5"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"2df52083456dfd6932fdeb60f9e48b8336a37d00","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        cls._src_server \u003d cls._create_server()"},{"line_number":64,"context_line":"        cls._dest_network \u003d cls._create_dest_network()"},{"line_number":65,"context_line":"        cls._dest_server_with_fip \u003d cls._create_server("},{"line_number":66,"context_line":"            network\u003dcls._dest_network)"},{"line_number":67,"context_line":"        cls._dest_server_without_fip \u003d cls._create_server("},{"line_number":68,"context_line":"            create_floating_ip\u003dFalse, network\u003dcls._dest_network)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    @classmethod"},{"line_number":71,"context_line":"    def _create_dest_network(cls):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_7ed144fb","line":68,"range":{"start_line":65,"start_character":0,"end_line":68,"end_character":64},"updated":"2017-01-25 22:46:56.000000000","message":"Wouldn\u0027t it be better if you just create one server, depending on the scenario you are running?:\n\ncls.dest_server \u003d cls._create_server(create_floating_ip\u003dcls.dest_has_fip,\n                   network\u003dcls._dest_network)\n\nCreating servers is relatively expensive. This way your test classes will run faster and you simplify your logic","commit_id":"2817f9fe54063ab1a3df6a0c3b653d14cace07b5"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"a69ddc2dfec21d2a1827f86edf189fd7775b0405","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        cls._src_server \u003d cls._create_server()"},{"line_number":64,"context_line":"        cls._dest_network \u003d cls._create_dest_network()"},{"line_number":65,"context_line":"        cls._dest_server_with_fip \u003d cls._create_server("},{"line_number":66,"context_line":"            network\u003dcls._dest_network)"},{"line_number":67,"context_line":"        cls._dest_server_without_fip \u003d cls._create_server("},{"line_number":68,"context_line":"            create_floating_ip\u003dFalse, network\u003dcls._dest_network)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    @classmethod"},{"line_number":71,"context_line":"    def _create_dest_network(cls):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_94796f32","line":68,"range":{"start_line":65,"start_character":0,"end_line":68,"end_character":64},"in_reply_to":"3a461143_7ed144fb","updated":"2017-01-25 22:59:52.000000000","message":"i made it this way so that scenarios can use these same servers. (rather than create and destroy for every scenarios)","commit_id":"2817f9fe54063ab1a3df6a0c3b653d14cace07b5"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"e96201000daecedd18305de41a83fbbdb54acde5","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        cls._src_server \u003d cls._create_server()"},{"line_number":64,"context_line":"        cls._dest_network \u003d cls._create_dest_network()"},{"line_number":65,"context_line":"        cls._dest_server_with_fip \u003d cls._create_server("},{"line_number":66,"context_line":"            network\u003dcls._dest_network)"},{"line_number":67,"context_line":"        cls._dest_server_without_fip \u003d cls._create_server("},{"line_number":68,"context_line":"            create_floating_ip\u003dFalse, network\u003dcls._dest_network)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    @classmethod"},{"line_number":71,"context_line":"    def _create_dest_network(cls):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_efb900ee","line":68,"range":{"start_line":65,"start_character":0,"end_line":68,"end_character":64},"in_reply_to":"3a461143_94796f32","updated":"2017-01-25 23:29:11.000000000","message":"Maybe I don\u0027t understand how testscenarios work. Maybe it makes the different scenarios share resources. But as far as I can tell looking at the tempest code, in L87 you call create_server (https://github.com/openstack/neutron/blob/master/neutron/tests/tempest/scenario/base.py#L53) which adds the newly created server to the cls.servers list. This list is used by resource_cleanup to delete all the servers: https://github.com/openstack/neutron/blob/master/neutron/tests/tempest/scenario/base.py#L41 at the end of the execution. What you are saying is that with testscenarios resource_setup and resource_cleanup are executed once for all the scenarios?","commit_id":"2817f9fe54063ab1a3df6a0c3b653d14cace07b5"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"5c643b46c9552cd6047d1ca3fb8693c0901ee291","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        cls._src_server \u003d cls._create_server()"},{"line_number":64,"context_line":"        cls._dest_network \u003d cls._create_dest_network()"},{"line_number":65,"context_line":"        cls._dest_server_with_fip \u003d cls._create_server("},{"line_number":66,"context_line":"            network\u003dcls._dest_network)"},{"line_number":67,"context_line":"        cls._dest_server_without_fip \u003d cls._create_server("},{"line_number":68,"context_line":"            create_floating_ip\u003dFalse, network\u003dcls._dest_network)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    @classmethod"},{"line_number":71,"context_line":"    def _create_dest_network(cls):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_8f223cb8","line":68,"range":{"start_line":65,"start_character":0,"end_line":68,"end_character":64},"in_reply_to":"3a461143_efb900ee","updated":"2017-01-25 23:40:49.000000000","message":"yes, it\u0027s my understanding.","commit_id":"2817f9fe54063ab1a3df6a0c3b653d14cace07b5"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"2df52083456dfd6932fdeb60f9e48b8336a37d00","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    def _create_dest_network(cls):"},{"line_number":72,"context_line":"        network \u003d cls.create_network()"},{"line_number":73,"context_line":"        subnet \u003d cls.create_subnet(network,"},{"line_number":74,"context_line":"            cidr\u003dnetaddr.IPNetwork(\u002710.10.0.0/24\u0027))"},{"line_number":75,"context_line":"        cls.create_router_interface(cls.router[\u0027id\u0027], subnet[\u0027id\u0027])"},{"line_number":76,"context_line":"        return network"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_f47393b2","line":74,"range":{"start_line":74,"start_character":35,"end_line":74,"end_character":49},"updated":"2017-01-25 22:46:56.000000000","message":"Why hard code this? The create_subnet method can assign you a slice of what is configured in project_network_cidr: https://github.com/openstack/tempest/blob/master/tempest/config.py#L539. The size of that slice is controlled by project_network_mask_bits (look at line 543 in tempest\u0027s config.py). If you don\u0027t like that size, you can pass argument mask_bits to create_subnet.\n\nThis was, your test is portable, regardless of how tempest is configured by the operator","commit_id":"2817f9fe54063ab1a3df6a0c3b653d14cace07b5"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"5c643b46c9552cd6047d1ca3fb8693c0901ee291","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    def _create_dest_network(cls):"},{"line_number":72,"context_line":"        network \u003d cls.create_network()"},{"line_number":73,"context_line":"        subnet \u003d cls.create_subnet(network,"},{"line_number":74,"context_line":"            cidr\u003dnetaddr.IPNetwork(\u002710.10.0.0/24\u0027))"},{"line_number":75,"context_line":"        cls.create_router_interface(cls.router[\u0027id\u0027], subnet[\u0027id\u0027])"},{"line_number":76,"context_line":"        return network"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_0f1d6c73","line":74,"range":{"start_line":74,"start_character":35,"end_line":74,"end_character":49},"in_reply_to":"3a461143_6f26f017","updated":"2017-01-25 23:40:49.000000000","message":"ok, i\u0027ll re-try.","commit_id":"2817f9fe54063ab1a3df6a0c3b653d14cace07b5"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"e96201000daecedd18305de41a83fbbdb54acde5","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    def _create_dest_network(cls):"},{"line_number":72,"context_line":"        network \u003d cls.create_network()"},{"line_number":73,"context_line":"        subnet \u003d cls.create_subnet(network,"},{"line_number":74,"context_line":"            cidr\u003dnetaddr.IPNetwork(\u002710.10.0.0/24\u0027))"},{"line_number":75,"context_line":"        cls.create_router_interface(cls.router[\u0027id\u0027], subnet[\u0027id\u0027])"},{"line_number":76,"context_line":"        return network"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_6f26f017","line":74,"range":{"start_line":74,"start_character":35,"end_line":74,"end_character":49},"in_reply_to":"3a461143_d44697be","updated":"2017-01-25 23:29:11.000000000","message":"Just call create_subnet without specifying he cidr","commit_id":"2817f9fe54063ab1a3df6a0c3b653d14cace07b5"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"a69ddc2dfec21d2a1827f86edf189fd7775b0405","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    def _create_dest_network(cls):"},{"line_number":72,"context_line":"        network \u003d cls.create_network()"},{"line_number":73,"context_line":"        subnet \u003d cls.create_subnet(network,"},{"line_number":74,"context_line":"            cidr\u003dnetaddr.IPNetwork(\u002710.10.0.0/24\u0027))"},{"line_number":75,"context_line":"        cls.create_router_interface(cls.router[\u0027id\u0027], subnet[\u0027id\u0027])"},{"line_number":76,"context_line":"        return network"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_d44697be","line":74,"range":{"start_line":74,"start_character":35,"end_line":74,"end_character":49},"in_reply_to":"3a461143_f47393b2","updated":"2017-01-25 22:59:52.000000000","message":"i\u0027m not sure how it can work.  can you explain?\n\ncreate subnets with overlapping cidr would be fine,\nso create_subnet() won\u0027t detect it.\nan error would happen at the following router interface creation time. (L75)","commit_id":"2817f9fe54063ab1a3df6a0c3b653d14cace07b5"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"2df52083456dfd6932fdeb60f9e48b8336a37d00","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                                pkey\u003dself.keypair[\u0027private_key\u0027])"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        # Destination VM"},{"line_number":107,"context_line":"        if self.dest_has_fip:"},{"line_number":108,"context_line":"            dest_server \u003d self._dest_server_with_fip"},{"line_number":109,"context_line":"        else:"},{"line_number":110,"context_line":"            dest_server \u003d self._dest_server_without_fip"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        # Check connectivity"},{"line_number":113,"context_line":"        self.check_remote_connectivity(ssh_client,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_94932fa3","line":110,"range":{"start_line":107,"start_character":0,"end_line":110,"end_character":55},"updated":"2017-01-25 22:46:56.000000000","message":"See my comments to L65-68. If you agree, you don\u0027t need this logic here","commit_id":"2817f9fe54063ab1a3df6a0c3b653d14cace07b5"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"9b1ecfcf90ba9e93d327490f3d76ede8b98c239a","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    def _create_dest_network(cls):"},{"line_number":65,"context_line":"        network \u003d cls.create_network()"},{"line_number":66,"context_line":"        subnet \u003d cls.create_subnet(network,"},{"line_number":67,"context_line":"            cidr\u003dnetaddr.IPNetwork(\u002710.10.0.0/24\u0027))"},{"line_number":68,"context_line":"        cls.create_router_interface(cls.router[\u0027id\u0027], subnet[\u0027id\u0027])"},{"line_number":69,"context_line":"        return network"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_1ce9161b","line":67,"range":{"start_line":67,"start_character":12,"end_line":67,"end_character":51},"updated":"2017-01-26 09:49:12.000000000","message":"I tested your script in my local environment. You were right. We need to specify the cidr. If it is not specified, the subnet returned overlaps with the one created in L42. The functionality to come up with non overlapping cidr\u0027s applies when you are creating more subnets on the same network","commit_id":"095612ba733edd45f25a21ed7440a491e348b044"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"4dc388a364696f9de09e3c2be71eaa6f090c732d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    def _create_dest_network(cls):"},{"line_number":65,"context_line":"        network \u003d cls.create_network()"},{"line_number":66,"context_line":"        subnet \u003d cls.create_subnet(network,"},{"line_number":67,"context_line":"            cidr\u003dnetaddr.IPNetwork(\u002710.10.0.0/24\u0027))"},{"line_number":68,"context_line":"        cls.create_router_interface(cls.router[\u0027id\u0027], subnet[\u0027id\u0027])"},{"line_number":69,"context_line":"        return network"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_25913253","line":67,"range":{"start_line":67,"start_character":12,"end_line":67,"end_character":51},"in_reply_to":"3a461143_1ce9161b","updated":"2017-01-26 22:30:20.000000000","message":"thank you for confirming!\n\ndo you have any suggestion how should this be instead?","commit_id":"095612ba733edd45f25a21ed7440a491e348b044"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"c71840bfa61eda4dfd9455c6956ebddc295e08d5","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    def _create_dest_network(cls):"},{"line_number":65,"context_line":"        network \u003d cls.create_network()"},{"line_number":66,"context_line":"        subnet \u003d cls.create_subnet(network,"},{"line_number":67,"context_line":"            cidr\u003dnetaddr.IPNetwork(\u002710.10.0.0/24\u0027))"},{"line_number":68,"context_line":"        cls.create_router_interface(cls.router[\u0027id\u0027], subnet[\u0027id\u0027])"},{"line_number":69,"context_line":"        return network"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_48337c14","line":67,"range":{"start_line":67,"start_character":12,"end_line":67,"end_character":51},"in_reply_to":"3a461143_25913253","updated":"2017-01-29 00:49:20.000000000","message":"I think this is the right way to do it","commit_id":"095612ba733edd45f25a21ed7440a491e348b044"}]}
