)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"5b43178bdc1361373a97467e5fcbc3f88aa7ed23","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-11-22 00:11:17 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implementation of Scenario tests for"},{"line_number":8,"context_line":"port-security ML2 extension"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Test attach secure and insecure ports to server"},{"line_number":11,"context_line":"at the same time"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"ba8a016a_a02ff19f","line":8,"range":{"start_line":8,"start_character":14,"end_line":8,"end_character":17},"updated":"2015-11-24 03:47:28.000000000","message":"is this ML2-specific in any sense?  (it seems not)\n\nML2 is not the only plugin with the extension.","commit_id":"8c2446c1cfecc0fd652c1b87e0a956687e248a3c"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"989d61106866d4ff5ee9cd1de7f55fa3b9c72caa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"b911131d_575c18df","updated":"2022-02-14 02:34:38.000000000","message":"please rebase it on top of master code.","commit_id":"b455f422bce0827ec44518bc7f660ed62ca11595"}],"tempest/config.py":[{"author":{"_account_id":11017,"name":"Jerome Bertolino","email":"jeromebertolino@gmail.com","username":"jebertol"},"change_message_id":"1c132323dc7feda7399a53cd5b22a5e1f5c33a37","unresolved":false,"context_lines":[{"line_number":516,"context_line":"    cfg.BoolOpt(\u0027port_admin_state_change\u0027,"},{"line_number":517,"context_line":"                default\u003dTrue,"},{"line_number":518,"context_line":"                help\u003d\"Does the test environment support changing\""},{"line_number":519,"context_line":"                     \" port admin state\")"},{"line_number":520,"context_line":"]"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"messaging_group \u003d cfg.OptGroup(name\u003d\u0027messaging\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3afb71cf_2e2a96db","line":519,"updated":"2015-06-10 19:12:11.000000000","message":"Check the style guide for help strings:  http://docs.openstack.org/developer/oslo.config/styleguide.html\n\n\"For multi-line strings ... add the space at the end of a line and not at the beginning\"","commit_id":"dab6ded935237a0e7d79a94a1d80b9303dfa329a"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6be72d1ffc903dd4736db0ffbcd3766394277cd7","unresolved":false,"context_lines":[{"line_number":516,"context_line":"    cfg.BoolOpt(\u0027port_admin_state_change\u0027,"},{"line_number":517,"context_line":"                default\u003dTrue,"},{"line_number":518,"context_line":"                help\u003d\"Does the test environment support changing\""},{"line_number":519,"context_line":"                     \" port admin state\")"},{"line_number":520,"context_line":"]"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"messaging_group \u003d cfg.OptGroup(name\u003d\u0027messaging\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da20952f_996afbec","line":519,"in_reply_to":"3afb71cf_2e2a96db","updated":"2015-09-08 09:23:37.000000000","message":"unrelated change","commit_id":"dab6ded935237a0e7d79a94a1d80b9303dfa329a"}],"tempest/scenario/test_port_security.py":[{"author":{"_account_id":12024,"name":"Tong Liu","email":"tongl@vmware.com","username":"tong101"},"change_message_id":"7a99d5d5963b4b2780dc1219a6e19dbf4452926a","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    @classmethod"},{"line_number":30,"context_line":"    def skip_checks(cls):"},{"line_number":31,"context_line":"        super(TestPortSecurityExtension, cls).skip_checks()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @classmethod"},{"line_number":34,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ad0253b_3e904d95","line":31,"updated":"2015-04-28 16:47:51.000000000","message":"If neutron port security extension is not enabled, we should ship this test suite.","commit_id":"5fde4de21bc9a4e3cfdd5d0d54de0be229611aeb"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6be72d1ffc903dd4736db0ffbcd3766394277cd7","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @test.idempotent_id(\u0027f98df1d2-363b-47f1-a608-f89eab459ecc\u0027)"},{"line_number":101,"context_line":"    @test.services(\u0027compute\u0027, \u0027network\u0027)"},{"line_number":102,"context_line":"    def test_severs_connectivity_two_networks(self):"},{"line_number":103,"context_line":"        key_pair \u003d self.create_keypair()"},{"line_number":104,"context_line":"        private_key \u003d key_pair[\u0027private_key\u0027]"},{"line_number":105,"context_line":"        key_pair_name \u003d key_pair[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"da20952f_197fcbac","line":102,"updated":"2015-09-08 09:23:37.000000000","message":"should be skipped unless port-security is available.\n\ntest.is_extension_enabled(\u0027port-security\u0027, \u0027network\u0027)","commit_id":"dab6ded935237a0e7d79a94a1d80b9303dfa329a"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"fe107007c48ac4ef4ac7851a8c88be9e8ac5ab96","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    @classmethod"},{"line_number":34,"context_line":"    def skip_checks(cls):"},{"line_number":35,"context_line":"        super(TestPortSecurityExtension, cls).skip_checks()"},{"line_number":36,"context_line":"        if not test.is_extension_enabled(\u0027port-security\u0027, \u0027network\u0027):"},{"line_number":37,"context_line":"            msg \u003d \"port-security extension not enabled.\""},{"line_number":38,"context_line":"            raise cls.skipException(msg)"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9a8ffd7b_df837501","line":36,"updated":"2015-11-30 10:22:44.000000000","message":"security-group extension should be checked too","commit_id":"d3b2943d3fd2fc7f959367bd0283a6d25bbecb85"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"7ee09f6962f6ffa9cc8b98938cc024635ca9d128","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    @classmethod"},{"line_number":34,"context_line":"    def skip_checks(cls):"},{"line_number":35,"context_line":"        super(TestPortSecurityExtension, cls).skip_checks()"},{"line_number":36,"context_line":"        if not test.is_extension_enabled(\u0027port-security\u0027, \u0027network\u0027):"},{"line_number":37,"context_line":"            msg \u003d \"port-security extension not enabled.\""},{"line_number":38,"context_line":"            raise cls.skipException(msg)"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9a8ffd7b_a833a6f5","line":36,"in_reply_to":"9a8ffd7b_df837501","updated":"2015-12-01 06:25:05.000000000","message":"Done","commit_id":"d3b2943d3fd2fc7f959367bd0283a6d25bbecb85"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"fe107007c48ac4ef4ac7851a8c88be9e8ac5ab96","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @test.idempotent_id(\u0027f98df1d2-363b-47f1-a608-f89eab459ecc\u0027)"},{"line_number":111,"context_line":"    @test.services(\u0027compute\u0027, \u0027network\u0027)"},{"line_number":112,"context_line":"    def test_severs_connectivity_two_networks(self):"},{"line_number":113,"context_line":"        key_pair \u003d self.create_keypair()"},{"line_number":114,"context_line":"        private_key \u003d key_pair[\u0027private_key\u0027]"},{"line_number":115,"context_line":"        key_pair_name \u003d key_pair[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a8ffd7b_ff9759e9","line":112,"range":{"start_line":112,"start_character":13,"end_line":112,"end_character":19},"updated":"2015-11-30 10:22:44.000000000","message":"typo of servers?","commit_id":"d3b2943d3fd2fc7f959367bd0283a6d25bbecb85"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"7ee09f6962f6ffa9cc8b98938cc024635ca9d128","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @test.idempotent_id(\u0027f98df1d2-363b-47f1-a608-f89eab459ecc\u0027)"},{"line_number":111,"context_line":"    @test.services(\u0027compute\u0027, \u0027network\u0027)"},{"line_number":112,"context_line":"    def test_severs_connectivity_two_networks(self):"},{"line_number":113,"context_line":"        key_pair \u003d self.create_keypair()"},{"line_number":114,"context_line":"        private_key \u003d key_pair[\u0027private_key\u0027]"},{"line_number":115,"context_line":"        key_pair_name \u003d key_pair[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a8ffd7b_2dba686f","line":112,"range":{"start_line":112,"start_character":13,"end_line":112,"end_character":19},"in_reply_to":"9a8ffd7b_ff9759e9","updated":"2015-12-01 06:25:05.000000000","message":"Done","commit_id":"d3b2943d3fd2fc7f959367bd0283a6d25bbecb85"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"fe107007c48ac4ef4ac7851a8c88be9e8ac5ab96","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        result \u003d router_connection.exec_command(\u0027whereis iptables\u0027)"},{"line_number":137,"context_line":"        if result \u003d\u003d \u0027iptables:\\n\u0027:"},{"line_number":138,"context_line":"            LOG.warning(\u0027Iptables  is not available on router, skipping\u0027)"},{"line_number":139,"context_line":"            return"},{"line_number":140,"context_line":"        destination_network \u003d self._create_network("},{"line_number":141,"context_line":"            namestart\u003d\u0027destination_network\u0027"},{"line_number":142,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a8ffd7b_ff65191d","line":139,"updated":"2015-11-30 10:22:44.000000000","message":"please use skipException","commit_id":"d3b2943d3fd2fc7f959367bd0283a6d25bbecb85"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"7ee09f6962f6ffa9cc8b98938cc024635ca9d128","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        result \u003d router_connection.exec_command(\u0027whereis iptables\u0027)"},{"line_number":137,"context_line":"        if result \u003d\u003d \u0027iptables:\\n\u0027:"},{"line_number":138,"context_line":"            LOG.warning(\u0027Iptables  is not available on router, skipping\u0027)"},{"line_number":139,"context_line":"            return"},{"line_number":140,"context_line":"        destination_network \u003d self._create_network("},{"line_number":141,"context_line":"            namestart\u003d\u0027destination_network\u0027"},{"line_number":142,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a8ffd7b_0d6c4407","line":139,"in_reply_to":"9a8ffd7b_ff65191d","updated":"2015-12-01 06:25:05.000000000","message":"Done","commit_id":"d3b2943d3fd2fc7f959367bd0283a6d25bbecb85"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"fe107007c48ac4ef4ac7851a8c88be9e8ac5ab96","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            self.network_client.update_port(port[\u0027id\u0027],"},{"line_number":202,"context_line":"                                            security_groups\u003d[],"},{"line_number":203,"context_line":"                                            port_security_enabled\u003dFalse)"},{"line_number":204,"context_line":"        time.sleep(10)"},{"line_number":205,"context_line":"        source_connection.ping_host(destination_ip)"},{"line_number":206,"context_line":"        ping_me \u003d \u0027ping {} -c 1\u0027.format(source_ip.fixed_ip_address)"},{"line_number":207,"context_line":"        result \u003d source_connection.ssh_client.exec_command_on_remote_server("}],"source_content_type":"text/x-python","patch_set":18,"id":"9a8ffd7b_7f984978","line":204,"updated":"2015-11-30 10:22:44.000000000","message":"why is this necessary?","commit_id":"d3b2943d3fd2fc7f959367bd0283a6d25bbecb85"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"7ee09f6962f6ffa9cc8b98938cc024635ca9d128","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            self.network_client.update_port(port[\u0027id\u0027],"},{"line_number":202,"context_line":"                                            security_groups\u003d[],"},{"line_number":203,"context_line":"                                            port_security_enabled\u003dFalse)"},{"line_number":204,"context_line":"        time.sleep(10)"},{"line_number":205,"context_line":"        source_connection.ping_host(destination_ip)"},{"line_number":206,"context_line":"        ping_me \u003d \u0027ping {} -c 1\u0027.format(source_ip.fixed_ip_address)"},{"line_number":207,"context_line":"        result \u003d source_connection.ssh_client.exec_command_on_remote_server("}],"source_content_type":"text/x-python","patch_set":18,"id":"9a8ffd7b_4d624c18","line":204,"in_reply_to":"9a8ffd7b_7f984978","updated":"2015-12-01 06:25:05.000000000","message":"Done","commit_id":"d3b2943d3fd2fc7f959367bd0283a6d25bbecb85"},{"author":{"_account_id":13167,"name":"Yogesh","email":"ykshirsa@netapp.com","username":"yogi1"},"change_message_id":"9c9effbadec58772cd40bc38243463dcffc0c7e0","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @test.idempotent_id(\u0027f98df1d2-363b-47f1-a608-f89eab459ecc\u0027)"},{"line_number":111,"context_line":"    @test.services(\u0027compute\u0027, \u0027network\u0027)"},{"line_number":112,"context_line":"    def test_servers_connectivity_two_networks(self):"},{"line_number":113,"context_line":"        key_pair \u003d self.create_keypair()"},{"line_number":114,"context_line":"        private_key \u003d key_pair[\u0027private_key\u0027]"},{"line_number":115,"context_line":"        key_pair_name \u003d key_pair[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a5de9d1_ad774501","line":112,"updated":"2016-01-27 19:34:36.000000000","message":"Would like to see some docstring explaining what the test is intended to do.\nAlso, the test seems little long. Can you break it into couple of private methods which will make the test more readable.","commit_id":"20e965dd51ae443040b86d8b084a116fe54897c8"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"25e2e8a53c2495d0722a0cc29bcab86fef4cbc48","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @test.idempotent_id(\u0027f98df1d2-363b-47f1-a608-f89eab459ecc\u0027)"},{"line_number":111,"context_line":"    @test.services(\u0027compute\u0027, \u0027network\u0027)"},{"line_number":112,"context_line":"    def test_servers_connectivity_two_networks(self):"},{"line_number":113,"context_line":"        key_pair \u003d self.create_keypair()"},{"line_number":114,"context_line":"        private_key \u003d key_pair[\u0027private_key\u0027]"},{"line_number":115,"context_line":"        key_pair_name \u003d key_pair[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a5de9d1_3e036f44","line":112,"in_reply_to":"7a5de9d1_ad774501","updated":"2016-01-28 06:33:27.000000000","message":"Added docstring and more comments. \nBut there is no reason to split this test. It is readable and  uses private methods so adding new will be really redundant and will lead to code mess.","commit_id":"20e965dd51ae443040b86d8b084a116fe54897c8"},{"author":{"_account_id":13454,"name":"Alexander Gubanov","email":"ogubanov@mirantis.com","username":"hop"},"change_message_id":"b8d805302a9cd8b3e9304540d5720deb0602b98f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Cisco Systems, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":22,"id":"7a5de9d1_b5f9a782","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2016-01-28 14:19:42.000000000","message":"s/2015/2016/","commit_id":"b3624730e47dd5e9426117e2f4b68f381f501925"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"8db353708059725d4f48a03a028b9bb9497175cf","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Cisco Systems, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":22,"id":"7a5de9d1_eb5ade82","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"in_reply_to":"7a5de9d1_b5f9a782","updated":"2016-01-28 23:32:59.000000000","message":"Done, however this patch set from  2015","commit_id":"b3624730e47dd5e9426117e2f4b68f381f501925"},{"author":{"_account_id":13454,"name":"Alexander Gubanov","email":"ogubanov@mirantis.com","username":"hop"},"change_message_id":"b8d805302a9cd8b3e9304540d5720deb0602b98f","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"CONF \u003d config.CONF"},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class TestPortSecurityExtension(manager.NetworkScenarioTest):"}],"source_content_type":"text/x-python","patch_set":22,"id":"7a5de9d1_f512bf61","line":27,"range":{"start_line":27,"start_character":6,"end_line":27,"end_character":13},"updated":"2016-01-28 14:19:42.000000000","message":"it\u0027s redundant, you don\u0027t use it","commit_id":"b3624730e47dd5e9426117e2f4b68f381f501925"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"8db353708059725d4f48a03a028b9bb9497175cf","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"CONF \u003d config.CONF"},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class TestPortSecurityExtension(manager.NetworkScenarioTest):"}],"source_content_type":"text/x-python","patch_set":22,"id":"7a5de9d1_8b4a4aab","line":27,"range":{"start_line":27,"start_character":6,"end_line":27,"end_character":13},"in_reply_to":"7a5de9d1_f512bf61","updated":"2016-01-28 23:32:59.000000000","message":"Done","commit_id":"b3624730e47dd5e9426117e2f4b68f381f501925"},{"author":{"_account_id":13454,"name":"Alexander Gubanov","email":"ogubanov@mirantis.com","username":"hop"},"change_message_id":"b8d805302a9cd8b3e9304540d5720deb0602b98f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        super(TestPortSecurityExtension, cls).skip_checks()"},{"line_number":35,"context_line":"        if not test.is_extension_enabled(\u0027port-security\u0027, \u0027network\u0027) or \\"},{"line_number":36,"context_line":"                not test.is_extension_enabled(\u0027security-group\u0027, \u0027network\u0027):"},{"line_number":37,"context_line":"            msg \u003d \"port-security extension not enabled.\""},{"line_number":38,"context_line":"            raise cls.skipException(msg)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @test.idempotent_id(\u0027eaed2e09-7228-4e37-9286-7eeb0975ac01\u0027)"}],"source_content_type":"text/x-python","patch_set":22,"id":"7a5de9d1_f820769d","line":37,"range":{"start_line":37,"start_character":43,"end_line":37,"end_character":46},"updated":"2016-01-28 14:19:42.000000000","message":"s/not/is not/ ?","commit_id":"b3624730e47dd5e9426117e2f4b68f381f501925"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"8db353708059725d4f48a03a028b9bb9497175cf","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        super(TestPortSecurityExtension, cls).skip_checks()"},{"line_number":35,"context_line":"        if not test.is_extension_enabled(\u0027port-security\u0027, \u0027network\u0027) or \\"},{"line_number":36,"context_line":"                not test.is_extension_enabled(\u0027security-group\u0027, \u0027network\u0027):"},{"line_number":37,"context_line":"            msg \u003d \"port-security extension not enabled.\""},{"line_number":38,"context_line":"            raise cls.skipException(msg)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @test.idempotent_id(\u0027eaed2e09-7228-4e37-9286-7eeb0975ac01\u0027)"}],"source_content_type":"text/x-python","patch_set":22,"id":"7a5de9d1_ebd17ece","line":37,"range":{"start_line":37,"start_character":43,"end_line":37,"end_character":46},"in_reply_to":"7a5de9d1_f820769d","updated":"2016-01-28 23:32:59.000000000","message":"Done","commit_id":"b3624730e47dd5e9426117e2f4b68f381f501925"},{"author":{"_account_id":13454,"name":"Alexander Gubanov","email":"ogubanov@mirantis.com","username":"hop"},"change_message_id":"b8d805302a9cd8b3e9304540d5720deb0602b98f","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    @test.idempotent_id(\u0027eaed2e09-7228-4e37-9286-7eeb0975ac01\u0027)"},{"line_number":41,"context_line":"    @test.services(\u0027compute\u0027, \u0027network\u0027)"},{"line_number":42,"context_line":"    def test_attach_mix_ports_to_vm(self):"},{"line_number":43,"context_line":"        \"\"\"Create network with IpV4 subnet"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        Boot VM on this network"},{"line_number":46,"context_line":"        Create multiple ports both with port_security_enabled\u003dFalse"}],"source_content_type":"text/x-python","patch_set":22,"id":"7a5de9d1_1880f245","line":43,"range":{"start_line":43,"start_character":31,"end_line":43,"end_character":35},"updated":"2016-01-28 14:19:42.000000000","message":"s/IpV4/IPv4/ ?","commit_id":"b3624730e47dd5e9426117e2f4b68f381f501925"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"8db353708059725d4f48a03a028b9bb9497175cf","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    @test.idempotent_id(\u0027eaed2e09-7228-4e37-9286-7eeb0975ac01\u0027)"},{"line_number":41,"context_line":"    @test.services(\u0027compute\u0027, \u0027network\u0027)"},{"line_number":42,"context_line":"    def test_attach_mix_ports_to_vm(self):"},{"line_number":43,"context_line":"        \"\"\"Create network with IpV4 subnet"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        Boot VM on this network"},{"line_number":46,"context_line":"        Create multiple ports both with port_security_enabled\u003dFalse"}],"source_content_type":"text/x-python","patch_set":22,"id":"7a5de9d1_2bef9688","line":43,"range":{"start_line":43,"start_character":31,"end_line":43,"end_character":35},"in_reply_to":"7a5de9d1_1880f245","updated":"2016-01-28 23:32:59.000000000","message":"Done","commit_id":"b3624730e47dd5e9426117e2f4b68f381f501925"},{"author":{"_account_id":13454,"name":"Alexander Gubanov","email":"ogubanov@mirantis.com","username":"hop"},"change_message_id":"b8d805302a9cd8b3e9304540d5720deb0602b98f","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        add_route_cmd \u003d \"sudo ip route add {destination} via {router}\".format("},{"line_number":86,"context_line":"            destination\u003droute_to,"},{"line_number":87,"context_line":"            router\u003droute_via"},{"line_number":88,"context_line":"        )"},{"line_number":89,"context_line":"        ssh_client.exec_command(add_route_cmd)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _prepare_server(self, server_name, network, key_pair_name, private_key,"}],"source_content_type":"text/x-python","patch_set":22,"id":"7a5de9d1_98edc2f1","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":9},"updated":"2016-01-28 14:19:42.000000000","message":"I guess, it does not make sense to move \")\" to the next line. And below too...","commit_id":"b3624730e47dd5e9426117e2f4b68f381f501925"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"8db353708059725d4f48a03a028b9bb9497175cf","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        add_route_cmd \u003d \"sudo ip route add {destination} via {router}\".format("},{"line_number":86,"context_line":"            destination\u003droute_to,"},{"line_number":87,"context_line":"            router\u003droute_via"},{"line_number":88,"context_line":"        )"},{"line_number":89,"context_line":"        ssh_client.exec_command(add_route_cmd)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _prepare_server(self, server_name, network, key_pair_name, private_key,"}],"source_content_type":"text/x-python","patch_set":22,"id":"7a5de9d1_ab038641","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":9},"in_reply_to":"7a5de9d1_98edc2f1","updated":"2016-01-28 23:32:59.000000000","message":"Done","commit_id":"b3624730e47dd5e9426117e2f4b68f381f501925"},{"author":{"_account_id":13454,"name":"Alexander Gubanov","email":"ogubanov@mirantis.com","username":"hop"},"change_message_id":"b8d805302a9cd8b3e9304540d5720deb0602b98f","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        interface_cfg \u003d \"sudo sh -c \" \\"},{"line_number":167,"context_line":"                        \"\u0027cat \u003e\u003e /etc/network/interfaces\u0027 \u003c\u003c EOF \" \\"},{"line_number":168,"context_line":"                        \"\\nauto eth1\\niface eth1 inet dhcp\\nEOF\""},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        router_connection.exec_command(interface_cfg)"},{"line_number":171,"context_line":"        router_connection.exec_command(\"sudo ifup eth1\")"}],"source_content_type":"text/x-python","patch_set":22,"id":"7a5de9d1_d8501a61","line":168,"range":{"start_line":168,"start_character":32,"end_line":168,"end_character":36},"updated":"2016-01-28 14:19:42.000000000","message":"does the interface name always \"eth1\" ?","commit_id":"b3624730e47dd5e9426117e2f4b68f381f501925"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"8db353708059725d4f48a03a028b9bb9497175cf","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        interface_cfg \u003d \"sudo sh -c \" \\"},{"line_number":167,"context_line":"                        \"\u0027cat \u003e\u003e /etc/network/interfaces\u0027 \u003c\u003c EOF \" \\"},{"line_number":168,"context_line":"                        \"\\nauto eth1\\niface eth1 inet dhcp\\nEOF\""},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        router_connection.exec_command(interface_cfg)"},{"line_number":171,"context_line":"        router_connection.exec_command(\"sudo ifup eth1\")"}],"source_content_type":"text/x-python","patch_set":22,"id":"7a5de9d1_3cc7c246","line":168,"range":{"start_line":168,"start_character":32,"end_line":168,"end_character":36},"in_reply_to":"7a5de9d1_d8501a61","updated":"2016-01-28 23:32:59.000000000","message":"Done","commit_id":"b3624730e47dd5e9426117e2f4b68f381f501925"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"fbf49b3a53ee7cdb2d9042679b8a3fd571a6850e","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @test.idempotent_id(\u0027eaed2e09-7228-4e37-9286-7eeb0975ac01\u0027)"},{"line_number":39,"context_line":"    @test.services(\u0027compute\u0027, \u0027network\u0027)"},{"line_number":40,"context_line":"    def test_attach_mix_ports_to_vm(self):"},{"line_number":41,"context_line":"        \"\"\"Create network with IPv4 subnet."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        Boot VM on this network"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a5de9d1_118419d2","line":40,"updated":"2016-01-29 10:20:42.000000000","message":"This test is a duplicate of many tests. It tests \"create_interface\" which is already tested in test_hotplug_nic . It also tests port creation with  port_security_enabled\u003dFalse which is already tested in test_port_security_macspoofing_port and test_port_security_disable_security_group","commit_id":"12fa48c854bea30407f8b016a77c609289573e19"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"fbf49b3a53ee7cdb2d9042679b8a3fd571a6850e","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    @test.idempotent_id(\u0027f98df1d2-363b-47f1-a608-f89eab459ecc\u0027)"},{"line_number":109,"context_line":"    @test.services(\u0027compute\u0027, \u0027network\u0027)"},{"line_number":110,"context_line":"    def test_servers_connectivity_two_networks(self):"},{"line_number":111,"context_line":"        \"\"\"Test connectivity between servers on different networks."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        Destination server available for source server"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a5de9d1_917809f4","line":110,"updated":"2016-01-29 10:20:42.000000000","message":"This test is a duplicate of many tests. It tests \"create_interface\" which is already tested in test_hotplug_nic . It also tests port creation with  port_security_enabled\u003dFalse which is already tested in test_port_security_macspoofing_port and test_port_security_disable_security_group","commit_id":"12fa48c854bea30407f8b016a77c609289573e19"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"2025f7f06c21e19142116e6a630820669c94f680","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    @test.idempotent_id(\u0027f98df1d2-363b-47f1-a608-f89eab459ecc\u0027)"},{"line_number":109,"context_line":"    @test.services(\u0027compute\u0027, \u0027network\u0027)"},{"line_number":110,"context_line":"    def test_servers_connectivity_two_networks(self):"},{"line_number":111,"context_line":"        \"\"\"Test connectivity between servers on different networks."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        Destination server available for source server"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a5de9d1_4c619638","line":110,"in_reply_to":"7a5de9d1_917809f4","updated":"2016-01-29 10:37:12.000000000","message":"Nope, this one not testing iptables, whit one is testing port_security extension","commit_id":"12fa48c854bea30407f8b016a77c609289573e19"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"9de1dc139d78bcccb995d253560c982ee67c7ed4","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @test.idempotent_id(\u0027eaed2e09-7228-4e37-9286-7eeb0975ac01\u0027)"},{"line_number":39,"context_line":"    @test.services(\u0027compute\u0027, \u0027network\u0027)"},{"line_number":40,"context_line":"    def test_attach_mix_ports_to_vm(self):"},{"line_number":41,"context_line":"        \"\"\"Create network with IPv4 subnet."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        Boot VM on this network"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a5de9d1_d6dd14e1","line":40,"updated":"2016-01-29 11:00:52.000000000","message":"This test is a duplicate of many tests. It tests \"create_interface\" which is already tested in test_hotplug_nic . It also tests port creation with  port_security_enabled\u003dFalse which is already tested in test_port_security_macspoofing_port and test_port_security_disable_security_group","commit_id":"fd0c0c819477d91754facc729013be0d142058b9"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"e5ce61c2fddb9dca6eb1f1ce88f1f2045fc47efc","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @test.idempotent_id(\u0027eaed2e09-7228-4e37-9286-7eeb0975ac01\u0027)"},{"line_number":39,"context_line":"    @test.services(\u0027compute\u0027, \u0027network\u0027)"},{"line_number":40,"context_line":"    def test_attach_mix_ports_to_vm(self):"},{"line_number":41,"context_line":"        \"\"\"Create network with IPv4 subnet."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        Boot VM on this network"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a5de9d1_9e76bfa2","line":40,"in_reply_to":"7a5de9d1_d6dd14e1","updated":"2016-01-29 18:09:38.000000000","message":"If this duplicate of test, I can remove it","commit_id":"fd0c0c819477d91754facc729013be0d142058b9"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"9de1dc139d78bcccb995d253560c982ee67c7ed4","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    @test.idempotent_id(\u0027f98df1d2-363b-47f1-a608-f89eab459ecc\u0027)"},{"line_number":109,"context_line":"    @test.services(\u0027compute\u0027, \u0027network\u0027)"},{"line_number":110,"context_line":"    def test_servers_connectivity_two_networks(self):"},{"line_number":111,"context_line":"        \"\"\"Test connectivity between servers on different networks."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        Destination server available for source server"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a5de9d1_f6013039","line":110,"updated":"2016-01-29 11:00:52.000000000","message":"This test is a duplicate of many tests. It tests \"create_interface\" which is already tested in test_hotplug_nic . It also tests port creation with  port_security_enabled\u003dFalse which is already tested in test_port_security_macspoofing_port and test_port_security_disable_security_group","commit_id":"fd0c0c819477d91754facc729013be0d142058b9"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"e5ce61c2fddb9dca6eb1f1ce88f1f2045fc47efc","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    @test.idempotent_id(\u0027f98df1d2-363b-47f1-a608-f89eab459ecc\u0027)"},{"line_number":109,"context_line":"    @test.services(\u0027compute\u0027, \u0027network\u0027)"},{"line_number":110,"context_line":"    def test_servers_connectivity_two_networks(self):"},{"line_number":111,"context_line":"        \"\"\"Test connectivity between servers on different networks."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        Destination server available for source server"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a5de9d1_fe67b3b4","line":110,"in_reply_to":"7a5de9d1_f6013039","updated":"2016-01-29 18:09:38.000000000","message":"This test re-create \"user experience\" and validate that connectivity between servers will work without any artificial mac spoofing. \nI don\u0027t think this one is redundant.","commit_id":"fd0c0c819477d91754facc729013be0d142058b9"}]}
