)]}'
{"tempest/scenario/manager.py":[{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"42877bbe574ba3511d86f0ac15c26fdf0f93d027","unresolved":false,"context_lines":[{"line_number":726,"context_line":"        LOG.info(\"FloatingIP: {fp} is at status: {st}\""},{"line_number":727,"context_line":"                 .format(fp\u003dfloating_ip, st\u003dstatus))"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    def connect_to_address(self, ip_address, connect_timeout\u003dNone,"},{"line_number":730,"context_line":"                           **test_dict):"},{"line_number":731,"context_line":"        \"\"\""},{"line_number":732,"context_line":"        connect_address ip_address via the methods described in **test_dict"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_99bf63aa","line":729,"updated":"2014-12-29 08:00:35.000000000","message":"this is replacing \"ping\" method.\nIt should go in ScenarioTest where \"ping\" was","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":12944,"name":"Roey Dekel","email":"rdekel@redhat.com","username":"rdekel1"},"change_message_id":"8a91ec61c078a2f3cad969e1c300704399bf6f69","unresolved":false,"context_lines":[{"line_number":726,"context_line":"        LOG.info(\"FloatingIP: {fp} is at status: {st}\""},{"line_number":727,"context_line":"                 .format(fp\u003dfloating_ip, st\u003dstatus))"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    def connect_to_address(self, ip_address, connect_timeout\u003dNone,"},{"line_number":730,"context_line":"                           **test_dict):"},{"line_number":731,"context_line":"        \"\"\""},{"line_number":732,"context_line":"        connect_address ip_address via the methods described in **test_dict"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_3f380fd4","line":729,"in_reply_to":"3a961159_99bf63aa","updated":"2014-12-29 10:04:32.000000000","message":"This is replacing ping_ip_address which mentioned as deleted above.","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"42877bbe574ba3511d86f0ac15c26fdf0f93d027","unresolved":false,"context_lines":[{"line_number":729,"context_line":"    def connect_to_address(self, ip_address, connect_timeout\u003dNone,"},{"line_number":730,"context_line":"                           **test_dict):"},{"line_number":731,"context_line":"        \"\"\""},{"line_number":732,"context_line":"        connect_address ip_address via the methods described in **test_dict"},{"line_number":733,"context_line":"        and compare it to whether it should_succeed"},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"        :param ip_address: to check against"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_f9e5c7dc","line":732,"updated":"2014-12-29 08:00:35.000000000","message":"replace \"connect_address\" with \"test connectivity to..\"","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":12944,"name":"Roey Dekel","email":"rdekel@redhat.com","username":"rdekel1"},"change_message_id":"8a91ec61c078a2f3cad969e1c300704399bf6f69","unresolved":false,"context_lines":[{"line_number":729,"context_line":"    def connect_to_address(self, ip_address, connect_timeout\u003dNone,"},{"line_number":730,"context_line":"                           **test_dict):"},{"line_number":731,"context_line":"        \"\"\""},{"line_number":732,"context_line":"        connect_address ip_address via the methods described in **test_dict"},{"line_number":733,"context_line":"        and compare it to whether it should_succeed"},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"        :param ip_address: to check against"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_ff55a7fa","line":732,"in_reply_to":"3a961159_f9e5c7dc","updated":"2014-12-29 10:04:32.000000000","message":"Done","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"42877bbe574ba3511d86f0ac15c26fdf0f93d027","unresolved":false,"context_lines":[{"line_number":733,"context_line":"        and compare it to whether it should_succeed"},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"        :param ip_address: to check against"},{"line_number":736,"context_line":"        :param connect_timeout: MAX time for trying to connect"},{"line_number":737,"context_line":"                                default: CONF.compute.ping_timeout"},{"line_number":738,"context_line":"        :param test_dict: dictionary for methods and their expected results"},{"line_number":739,"context_line":"        example:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_59cc1b62","line":736,"updated":"2014-12-29 08:00:35.000000000","message":"nit: just call it \"timeout\"","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":12944,"name":"Roey Dekel","email":"rdekel@redhat.com","username":"rdekel1"},"change_message_id":"8a91ec61c078a2f3cad969e1c300704399bf6f69","unresolved":false,"context_lines":[{"line_number":733,"context_line":"        and compare it to whether it should_succeed"},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"        :param ip_address: to check against"},{"line_number":736,"context_line":"        :param connect_timeout: MAX time for trying to connect"},{"line_number":737,"context_line":"                                default: CONF.compute.ping_timeout"},{"line_number":738,"context_line":"        :param test_dict: dictionary for methods and their expected results"},{"line_number":739,"context_line":"        example:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_9f46634e","line":736,"in_reply_to":"3a961159_59cc1b62","updated":"2014-12-29 10:04:32.000000000","message":"it\u0027s name is timeout - tried to explain it\u0027s name without using the name itself.","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"42877bbe574ba3511d86f0ac15c26fdf0f93d027","unresolved":false,"context_lines":[{"line_number":740,"context_line":"        test_dict \u003d {"},{"line_number":741,"context_line":"            icmp\u003dTrue, tcp\u003dFalse"},{"line_number":742,"context_line":"            }"},{"line_number":743,"context_line":"        currently supports: icmp, tcp, udp"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"        :return bool: whether all of the methods matched their result\u0027s"},{"line_number":746,"context_line":"        expectation"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_d9072b80","line":743,"updated":"2014-12-29 08:00:35.000000000","message":"should make it clear that only explicitly listed methods will be tested","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":12944,"name":"Roey Dekel","email":"rdekel@redhat.com","username":"rdekel1"},"change_message_id":"8a91ec61c078a2f3cad969e1c300704399bf6f69","unresolved":false,"context_lines":[{"line_number":740,"context_line":"        test_dict \u003d {"},{"line_number":741,"context_line":"            icmp\u003dTrue, tcp\u003dFalse"},{"line_number":742,"context_line":"            }"},{"line_number":743,"context_line":"        currently supports: icmp, tcp, udp"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"        :return bool: whether all of the methods matched their result\u0027s"},{"line_number":746,"context_line":"        expectation"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_9f5d8318","line":743,"in_reply_to":"3a961159_d9072b80","updated":"2014-12-29 10:04:32.000000000","message":"Done","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"42877bbe574ba3511d86f0ac15c26fdf0f93d027","unresolved":false,"context_lines":[{"line_number":749,"context_line":""},{"line_number":750,"context_line":"        def try_connect():"},{"line_number":751,"context_line":"            \"\"\""},{"line_number":752,"context_line":"            try to connect to ip_address with cmd, check_output and compare"},{"line_number":753,"context_line":"            it to should_succeed"},{"line_number":754,"context_line":""},{"line_number":755,"context_line":"            :return: bool: whether the try_connect worked as expected"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_1902936f","line":752,"updated":"2014-12-29 08:00:35.000000000","message":"s/check_output/check output/","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":12944,"name":"Roey Dekel","email":"rdekel@redhat.com","username":"rdekel1"},"change_message_id":"8a91ec61c078a2f3cad969e1c300704399bf6f69","unresolved":false,"context_lines":[{"line_number":749,"context_line":""},{"line_number":750,"context_line":"        def try_connect():"},{"line_number":751,"context_line":"            \"\"\""},{"line_number":752,"context_line":"            try to connect to ip_address with cmd, check_output and compare"},{"line_number":753,"context_line":"            it to should_succeed"},{"line_number":754,"context_line":""},{"line_number":755,"context_line":"            :return: bool: whether the try_connect worked as expected"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_5faa3bd3","line":752,"in_reply_to":"3a961159_1902936f","updated":"2014-12-29 10:04:32.000000000","message":"check_output is also the name of the method which check output. Hence, simpler to leave it as it is.","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"1e3492c69f763c521e8c0ffabf50b18e40fa56ae","unresolved":false,"context_lines":[{"line_number":720,"context_line":"        LOG.info(\"FloatingIP: {fp} is at status: {st}\""},{"line_number":721,"context_line":"                 .format(fp\u003dfloating_ip, st\u003dstatus))"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":"    def connect_to_address(self, ip_address, connect_timeout\u003dNone,"},{"line_number":724,"context_line":"                           **test_dict):"},{"line_number":725,"context_line":"        \"\"\""},{"line_number":726,"context_line":"        test connectivity to ip_address via the methods described in"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_3eccf834","line":723,"updated":"2015-02-19 09:38:22.000000000","message":"this is replacing \"ping\" method, but ping method was in ScenarioTest and this method is in NetworkScenarioTest.\nPlease move this code to L451","commit_id":"7419fcb64d11b385a88fc1e59f143f9364354658"},{"author":{"_account_id":12944,"name":"Roey Dekel","email":"rdekel@redhat.com","username":"rdekel1"},"change_message_id":"644900a82cf6fe91bd41456f46f2561e20dccf57","unresolved":false,"context_lines":[{"line_number":720,"context_line":"        LOG.info(\"FloatingIP: {fp} is at status: {st}\""},{"line_number":721,"context_line":"                 .format(fp\u003dfloating_ip, st\u003dstatus))"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":"    def connect_to_address(self, ip_address, connect_timeout\u003dNone,"},{"line_number":724,"context_line":"                           **test_dict):"},{"line_number":725,"context_line":"        \"\"\""},{"line_number":726,"context_line":"        test connectivity to ip_address via the methods described in"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_398df231","line":723,"in_reply_to":"da86d52c_3eccf834","updated":"2015-02-22 15:08:43.000000000","message":"This is replacing ping_ip_address, which was in manager.py (diff with base to check).","commit_id":"7419fcb64d11b385a88fc1e59f143f9364354658"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"1e3492c69f763c521e8c0ffabf50b18e40fa56ae","unresolved":false,"context_lines":[{"line_number":927,"context_line":"    def create_secgroup_rules(self, protocols, client\u003dNone, secgroup\u003dNone):"},{"line_number":928,"context_line":"        \"\"\""},{"line_number":929,"context_line":"        Create ingress and egress security group rules for each protocol at"},{"line_number":930,"context_line":"        protocols (create permissions) for client and secgroup"},{"line_number":931,"context_line":""},{"line_number":932,"context_line":"        :param protocols: list of connection protocols to create ingress"},{"line_number":933,"context_line":"            security group rules"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_9eb16491","line":930,"updated":"2015-02-19 09:38:22.000000000","message":"this line is unclear","commit_id":"7419fcb64d11b385a88fc1e59f143f9364354658"},{"author":{"_account_id":12944,"name":"Roey Dekel","email":"rdekel@redhat.com","username":"rdekel1"},"change_message_id":"644900a82cf6fe91bd41456f46f2561e20dccf57","unresolved":false,"context_lines":[{"line_number":927,"context_line":"    def create_secgroup_rules(self, protocols, client\u003dNone, secgroup\u003dNone):"},{"line_number":928,"context_line":"        \"\"\""},{"line_number":929,"context_line":"        Create ingress and egress security group rules for each protocol at"},{"line_number":930,"context_line":"        protocols (create permissions) for client and secgroup"},{"line_number":931,"context_line":""},{"line_number":932,"context_line":"        :param protocols: list of connection protocols to create ingress"},{"line_number":933,"context_line":"            security group rules"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_93580634","line":930,"in_reply_to":"da86d52c_9eb16491","updated":"2015-02-22 15:08:43.000000000","message":"Done","commit_id":"7419fcb64d11b385a88fc1e59f143f9364354658"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"1e3492c69f763c521e8c0ffabf50b18e40fa56ae","unresolved":false,"context_lines":[{"line_number":941,"context_line":"        rulesets \u003d ["},{"line_number":942,"context_line":"            dict("},{"line_number":943,"context_line":"                # ssh"},{"line_number":944,"context_line":"                protocol\u003d\u0027tcp\u0027,"},{"line_number":945,"context_line":"                port_range_min\u003d22,"},{"line_number":946,"context_line":"                port_range_max\u003d22,"},{"line_number":947,"context_line":"            ),"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_f9151a3d","line":944,"updated":"2015-02-19 09:38:22.000000000","message":"this is extremely non-intuitive.\nUDP, adn ICMP rules are created without port limitations, while TCP is actually for SSH.\nI\u0027m not sure if this change is best.\nYou might have to settle for using the \"_create_security_group_rule\" with explicit rule dicts as input, unless you have a better way","commit_id":"7419fcb64d11b385a88fc1e59f143f9364354658"},{"author":{"_account_id":12944,"name":"Roey Dekel","email":"rdekel@redhat.com","username":"rdekel1"},"change_message_id":"644900a82cf6fe91bd41456f46f2561e20dccf57","unresolved":false,"context_lines":[{"line_number":941,"context_line":"        rulesets \u003d ["},{"line_number":942,"context_line":"            dict("},{"line_number":943,"context_line":"                # ssh"},{"line_number":944,"context_line":"                protocol\u003d\u0027tcp\u0027,"},{"line_number":945,"context_line":"                port_range_min\u003d22,"},{"line_number":946,"context_line":"                port_range_max\u003d22,"},{"line_number":947,"context_line":"            ),"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_b35b4a2d","line":944,"in_reply_to":"da86d52c_f9151a3d","updated":"2015-02-22 15:08:43.000000000","message":"Change to service context","commit_id":"7419fcb64d11b385a88fc1e59f143f9364354658"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"1e3492c69f763c521e8c0ffabf50b18e40fa56ae","unresolved":false,"context_lines":[{"line_number":962,"context_line":"                    sg_rule \u003d self._create_security_group_rule("},{"line_number":963,"context_line":"                        client\u003dclient, secgroup\u003dsecgroup,"},{"line_number":964,"context_line":"                        **next(ruleset for ruleset in rulesets"},{"line_number":965,"context_line":"                               if ruleset[\u0027protocol\u0027] \u003d\u003d protocol))"},{"line_number":966,"context_line":"                except lib_exc.Conflict as ex:"},{"line_number":967,"context_line":"                    # if rule already exist - skip rule and continue"},{"line_number":968,"context_line":"                    msg \u003d \u0027Security group rule already exists\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_b992c29c","line":965,"updated":"2015-02-19 09:38:22.000000000","message":"IMO it\u0027s better to redefine \"rulesets\" as dict (keys\u003dprotocol) and call rulesets[protocol] instead.","commit_id":"7419fcb64d11b385a88fc1e59f143f9364354658"},{"author":{"_account_id":12944,"name":"Roey Dekel","email":"rdekel@redhat.com","username":"rdekel1"},"change_message_id":"644900a82cf6fe91bd41456f46f2561e20dccf57","unresolved":false,"context_lines":[{"line_number":962,"context_line":"                    sg_rule \u003d self._create_security_group_rule("},{"line_number":963,"context_line":"                        client\u003dclient, secgroup\u003dsecgroup,"},{"line_number":964,"context_line":"                        **next(ruleset for ruleset in rulesets"},{"line_number":965,"context_line":"                               if ruleset[\u0027protocol\u0027] \u003d\u003d protocol))"},{"line_number":966,"context_line":"                except lib_exc.Conflict as ex:"},{"line_number":967,"context_line":"                    # if rule already exist - skip rule and continue"},{"line_number":968,"context_line":"                    msg \u003d \u0027Security group rule already exists\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_d3419e3a","line":965,"in_reply_to":"da86d52c_b992c29c","updated":"2015-02-22 15:08:43.000000000","message":"Done","commit_id":"7419fcb64d11b385a88fc1e59f143f9364354658"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8d3e058666698554595a13e93266810df0a22579","unresolved":false,"context_lines":[{"line_number":720,"context_line":"        LOG.info(\"FloatingIP: {fp} is at status: {st}\""},{"line_number":721,"context_line":"                 .format(fp\u003dfloating_ip, st\u003dstatus))"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":"    def connect_to_address(self, ip_address, connect_timeout\u003dNone,"},{"line_number":724,"context_line":"                           **test_dict):"},{"line_number":725,"context_line":"        \"\"\""},{"line_number":726,"context_line":"        test connectivity to ip_address via the methods described in"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_4c7253e6","line":723,"updated":"2015-02-23 19:17:47.000000000","message":"Move to L451","commit_id":"b07c693bb26f7e83b06b1bbe9b12608cb8f054e7"}],"tempest/scenario/test_network_basic_ops.py":[{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"42877bbe574ba3511d86f0ac15c26fdf0f93d027","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        self.keypairs \u003d {}"},{"line_number":101,"context_line":"        self.servers \u003d []"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def _setup_network_and_servers(self, create_loginable_secgroup_rule\u003dTrue):"},{"line_number":104,"context_line":"        if create_loginable_secgroup_rule:"},{"line_number":105,"context_line":"            self.security_group \u003d \\"},{"line_number":106,"context_line":"                self._create_security_group(tenant_id\u003dself.tenant_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_9944c3b8","line":103,"updated":"2014-12-29 08:00:35.000000000","message":"nit: I\u0027m sure you could find a shorter argument name.\nHow about \"enable_login\"?","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":12944,"name":"Roey Dekel","email":"rdekel@redhat.com","username":"rdekel1"},"change_message_id":"8a91ec61c078a2f3cad969e1c300704399bf6f69","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        self.keypairs \u003d {}"},{"line_number":101,"context_line":"        self.servers \u003d []"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def _setup_network_and_servers(self, create_loginable_secgroup_rule\u003dTrue):"},{"line_number":104,"context_line":"        if create_loginable_secgroup_rule:"},{"line_number":105,"context_line":"            self.security_group \u003d \\"},{"line_number":106,"context_line":"                self._create_security_group(tenant_id\u003dself.tenant_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_5fc5db3b","line":103,"in_reply_to":"3a961159_9944c3b8","updated":"2014-12-29 10:04:32.000000000","message":"This long name represents the used method for creating the security group. Hence, long but simpler.","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"42877bbe574ba3511d86f0ac15c26fdf0f93d027","unresolved":false,"context_lines":[{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":434,"context_line":"    @test.services(\u0027compute\u0027, \u0027network\u0027)"},{"line_number":435,"context_line":"    def test_network_protocols(self):"},{"line_number":436,"context_line":"        self._setup_network_and_servers(create_loginable_secgroup_rule\u003dFalse)"},{"line_number":437,"context_line":"        connection_methods \u003d [\u0027icmp\u0027, \u0027tcp\u0027, \u0027udp\u0027]"},{"line_number":438,"context_line":"        floating_ip, server \u003d self.floating_ip_tuple"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_f90a2778","line":435,"updated":"2014-12-29 08:00:35.000000000","message":"this test needs a docstring","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":12944,"name":"Roey Dekel","email":"rdekel@redhat.com","username":"rdekel1"},"change_message_id":"8a91ec61c078a2f3cad969e1c300704399bf6f69","unresolved":false,"context_lines":[{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":434,"context_line":"    @test.services(\u0027compute\u0027, \u0027network\u0027)"},{"line_number":435,"context_line":"    def test_network_protocols(self):"},{"line_number":436,"context_line":"        self._setup_network_and_servers(create_loginable_secgroup_rule\u003dFalse)"},{"line_number":437,"context_line":"        connection_methods \u003d [\u0027icmp\u0027, \u0027tcp\u0027, \u0027udp\u0027]"},{"line_number":438,"context_line":"        floating_ip, server \u003d self.floating_ip_tuple"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_df154b9c","line":435,"in_reply_to":"3a961159_f90a2778","updated":"2014-12-29 10:04:32.000000000","message":"Will do a docstring for the whole test instead of answer each comment here. If more unclear issues appeared please comment in the next commit.","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"42877bbe574ba3511d86f0ac15c26fdf0f93d027","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        ip_address \u003d floating_ip.floating_ip_address"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"        for method in connection_methods:"},{"line_number":442,"context_line":"            rules \u003d self._create_secgroup_rules(protocols\u003d[method],"},{"line_number":443,"context_line":"                                                client\u003dself.network_client,"},{"line_number":444,"context_line":"                                                secgroup\u003dself.security_group)"},{"line_number":445,"context_line":"            current_method \u003d {method: True}"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_b977bf07","line":442,"updated":"2014-12-29 08:00:35.000000000","message":"does this line create more that 1 rule?\nthis is a little unclear","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"42877bbe574ba3511d86f0ac15c26fdf0f93d027","unresolved":false,"context_lines":[{"line_number":440,"context_line":""},{"line_number":441,"context_line":"        for method in connection_methods:"},{"line_number":442,"context_line":"            rules \u003d self._create_secgroup_rules(protocols\u003d[method],"},{"line_number":443,"context_line":"                                                client\u003dself.network_client,"},{"line_number":444,"context_line":"                                                secgroup\u003dself.security_group)"},{"line_number":445,"context_line":"            current_method \u003d {method: True}"},{"line_number":446,"context_line":"            self.check_connectivity_method(ip_address\u003dip_address,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_991be3c9","line":443,"updated":"2014-12-29 08:00:35.000000000","message":"I think client is not required, since your are using default","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"42877bbe574ba3511d86f0ac15c26fdf0f93d027","unresolved":false,"context_lines":[{"line_number":445,"context_line":"            current_method \u003d {method: True}"},{"line_number":446,"context_line":"            self.check_connectivity_method(ip_address\u003dip_address,"},{"line_number":447,"context_line":"                                           **current_method)"},{"line_number":448,"context_line":"            for rule in rules:"},{"line_number":449,"context_line":"                rule.delete()"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"    def check_connectivity_method(self, ip_address\u003dNone,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_d97c8bee","line":448,"updated":"2014-12-29 08:00:35.000000000","message":"do you have more that 1 rule in rules?","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"42877bbe574ba3511d86f0ac15c26fdf0f93d027","unresolved":false,"context_lines":[{"line_number":449,"context_line":"                rule.delete()"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"    def check_connectivity_method(self, ip_address\u003dNone,"},{"line_number":452,"context_line":"                                  icmp\u003dFalse, tcp\u003dFalse, udp\u003dFalse):"},{"line_number":453,"context_line":"        self.connect_to_address(ip_address, icmp\u003dicmp, tcp\u003dtcp, udp\u003dudp)"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"    def _create_secgroup_rules(self, protocols, client\u003dNone, secgroup\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_f98147c4","line":452,"updated":"2014-12-29 08:00:35.000000000","message":"this needs a docstring","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"42877bbe574ba3511d86f0ac15c26fdf0f93d027","unresolved":false,"context_lines":[{"line_number":452,"context_line":"                                  icmp\u003dFalse, tcp\u003dFalse, udp\u003dFalse):"},{"line_number":453,"context_line":"        self.connect_to_address(ip_address, icmp\u003dicmp, tcp\u003dtcp, udp\u003dudp)"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"    def _create_secgroup_rules(self, protocols, client\u003dNone, secgroup\u003dNone):"},{"line_number":456,"context_line":"        rulesets \u003d ["},{"line_number":457,"context_line":"            dict("},{"line_number":458,"context_line":"                # nc"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_19d533b9","line":455,"updated":"2014-12-29 08:00:35.000000000","message":"I\u0027m not sure I understand why you need these 2 methods.\nThey are used in a single test in a single module, and they are wrapping already existing wrappers for clients from manager.py.\nPlease try and consolidate both into a single method that answers the needs of this module. I you could just use this logic directly in the test method it would make the test even clearer\n\nMore specifically, IIUC, each time the test calls this method, it needs only a single rule, so please avoid iterations logic required to create multiple rules","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"42877bbe574ba3511d86f0ac15c26fdf0f93d027","unresolved":false,"context_lines":[{"line_number":479,"context_line":"                             if ruleset[\u0027protocol\u0027] \u003d\u003d protocol)))"},{"line_number":480,"context_line":"        return rules"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    def _create_secgroup_rule(self, client\u003dNone, secgroup\u003dNone, ruleset\u003dNone):"},{"line_number":483,"context_line":"        if ruleset is None:"},{"line_number":484,"context_line":"            return"},{"line_number":485,"context_line":"        if client is None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_59d6dbc4","line":482,"updated":"2014-12-29 08:00:35.000000000","message":"see above","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"42877bbe574ba3511d86f0ac15c26fdf0f93d027","unresolved":false,"context_lines":[{"line_number":488,"context_line":"        try:"},{"line_number":489,"context_line":"            sg_rule \u003d self._create_security_group_rule("},{"line_number":490,"context_line":"                client\u003dclient, secgroup\u003dsecgroup, **ruleset)"},{"line_number":491,"context_line":"        except exceptions.Conflict as ex:"},{"line_number":492,"context_line":"            # if rule already exist - skip rule and continue"},{"line_number":493,"context_line":"            msg \u003d \u0027Security group rule already exists\u0027"},{"line_number":494,"context_line":"            if msg not in ex._error_string:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_39d90ff5","line":491,"updated":"2014-12-29 08:00:35.000000000","message":"You have full control over the secgroup used in the test. don\u0027t create conflicting rules instead of catching the exception","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"1e3492c69f763c521e8c0ffabf50b18e40fa56ae","unresolved":false,"context_lines":[{"line_number":530,"context_line":"    def test_network_protocols(self):"},{"line_number":531,"context_line":"        \"\"\""},{"line_number":532,"context_line":"        Tests security rules protocols enforcement."},{"line_number":533,"context_line":"        For each method described at connection_methods, it creates relevant"},{"line_number":534,"context_line":"        security group rule and verifies:"},{"line_number":535,"context_line":"        1. Connection via method."},{"line_number":536,"context_line":"        2. Failed connection via other methods (current methods are:"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_5e97ec39","line":533,"updated":"2015-02-19 09:38:22.000000000","message":"nit: s/at/\"in dict\"","commit_id":"7419fcb64d11b385a88fc1e59f143f9364354658"},{"author":{"_account_id":12944,"name":"Roey Dekel","email":"rdekel@redhat.com","username":"rdekel1"},"change_message_id":"644900a82cf6fe91bd41456f46f2561e20dccf57","unresolved":false,"context_lines":[{"line_number":530,"context_line":"    def test_network_protocols(self):"},{"line_number":531,"context_line":"        \"\"\""},{"line_number":532,"context_line":"        Tests security rules protocols enforcement."},{"line_number":533,"context_line":"        For each method described at connection_methods, it creates relevant"},{"line_number":534,"context_line":"        security group rule and verifies:"},{"line_number":535,"context_line":"        1. Connection via method."},{"line_number":536,"context_line":"        2. Failed connection via other methods (current methods are:"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_f4b1a144","line":533,"in_reply_to":"da86d52c_5e97ec39","updated":"2015-02-22 15:08:43.000000000","message":"Done","commit_id":"7419fcb64d11b385a88fc1e59f143f9364354658"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"1e3492c69f763c521e8c0ffabf50b18e40fa56ae","unresolved":false,"context_lines":[{"line_number":567,"context_line":"        :return: bool: whether all of the methods matched their result\u0027s"},{"line_number":568,"context_line":"        expectation"},{"line_number":569,"context_line":"        \"\"\""},{"line_number":570,"context_line":"        self.connect_to_address(ip_address, icmp\u003dicmp, tcp\u003dtcp, udp\u003dudp)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_3ebf98d1","line":570,"updated":"2015-02-19 09:38:22.000000000","message":"I fail to see this 1-line method is required.\n\ncould be replaced with\nself.check_connectivity_method\u003dself.connect_to_address\nwhich means that it\u0027s not doing anything, as far as I can tell\n\njust add the docstring to the actual method in manager","commit_id":"7419fcb64d11b385a88fc1e59f143f9364354658"},{"author":{"_account_id":12944,"name":"Roey Dekel","email":"rdekel@redhat.com","username":"rdekel1"},"change_message_id":"644900a82cf6fe91bd41456f46f2561e20dccf57","unresolved":false,"context_lines":[{"line_number":567,"context_line":"        :return: bool: whether all of the methods matched their result\u0027s"},{"line_number":568,"context_line":"        expectation"},{"line_number":569,"context_line":"        \"\"\""},{"line_number":570,"context_line":"        self.connect_to_address(ip_address, icmp\u003dicmp, tcp\u003dtcp, udp\u003dudp)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_b422c9fe","line":570,"in_reply_to":"da86d52c_3ebf98d1","updated":"2015-02-22 15:08:43.000000000","message":"This generic method allows me to add all of the negative connection\u0027s protocol\u0027s tests which I didn\u0027t gave permissions to.\nIt can be removed but it will require me (or any other who choose to use it) to explicitly request negative connection protocol request which will be uglier and require to know all supported connection\u0027s protocol.","commit_id":"7419fcb64d11b385a88fc1e59f143f9364354658"}],"tempest/scenario/utils.py":[{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"42877bbe574ba3511d86f0ac15c26fdf0f93d027","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            scenario_image,"},{"line_number":164,"context_line":"            scenario_flavor))"},{"line_number":165,"context_line":"    return testscenarios.load_tests_apply_scenarios(*args)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"def bash_cmds(cmd, ip, port\u003dNone):"},{"line_number":169,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_39874fb8","line":166,"updated":"2014-12-29 08:00:35.000000000","message":"You are creating various methods that get \"_\" as input. I guess this is because you are loading the appropriate method on runtime and you need a unified interface.\nIf this is the case then please:\n1 - document this\n2 - consider creating a class for this (seems like the obvious case of an abstract method)\n3 - instead of accepting \"_\" as input, consider having all methods accept a container (list or tupple).","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":12944,"name":"Roey Dekel","email":"rdekel@redhat.com","username":"rdekel1"},"change_message_id":"8a91ec61c078a2f3cad969e1c300704399bf6f69","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            scenario_image,"},{"line_number":164,"context_line":"            scenario_flavor))"},{"line_number":165,"context_line":"    return testscenarios.load_tests_apply_scenarios(*args)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"def bash_cmds(cmd, ip, port\u003dNone):"},{"line_number":169,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_5f1b1b1c","line":166,"in_reply_to":"3a961159_39874fb8","updated":"2014-12-29 10:04:32.000000000","message":"Each check_output method is getting both stdout and returncode because of the running environment (bash), and as you noticed, some of the check_output method needs only one of the arguments in order to check the used bash function results.\n1 - Will do.\n2 - A class can be created - but in my opinion should be more generic - like os/environment based.\n3 - I don\u0027t think this is the appropriate approach here.\nWill be happy to hear your comment about it and other opinions as well.","commit_id":"12178c565e3272b6281293a6f8a4969091f86537"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"1e3492c69f763c521e8c0ffabf50b18e40fa56ae","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    return cmds_dict[cmd]"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"def ping_check_output_bash(_, returncode):"},{"line_number":187,"context_line":"    \"\"\""},{"line_number":188,"context_line":"    validation of ping (bash) output"},{"line_number":189,"context_line":"    check if returncode is 0"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_7e103000","line":186,"updated":"2015-02-19 09:38:22.000000000","message":"see my previous comment on \"_\" as an argument.\nIMO you should use **kwargs and pull the required arguments from it.","commit_id":"7419fcb64d11b385a88fc1e59f143f9364354658"},{"author":{"_account_id":12944,"name":"Roey Dekel","email":"rdekel@redhat.com","username":"rdekel1"},"change_message_id":"644900a82cf6fe91bd41456f46f2561e20dccf57","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    return cmds_dict[cmd]"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"def ping_check_output_bash(_, returncode):"},{"line_number":187,"context_line":"    \"\"\""},{"line_number":188,"context_line":"    validation of ping (bash) output"},{"line_number":189,"context_line":"    check if returncode is 0"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_74b77185","line":186,"in_reply_to":"da86d52c_7e103000","updated":"2015-02-22 15:08:43.000000000","message":"I think that the right way of handling CLI (bash currently) is knowing you have both stdout and returncode and response accordingly (hence, using the relevant and ignoring the other).","commit_id":"7419fcb64d11b385a88fc1e59f143f9364354658"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8d3e058666698554595a13e93266810df0a22579","unresolved":false,"context_lines":[{"line_number":189,"context_line":"    return cmds_dict[cmd]"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"def ping_check_output_bash(_, returncode):"},{"line_number":193,"context_line":"    \"\"\""},{"line_number":194,"context_line":"    validation of ping (bash) output"},{"line_number":195,"context_line":"    check if returncode is 0"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_2f435115","line":192,"updated":"2015-02-23 19:17:47.000000000","message":"please if you are determined to use unnecessary arguments, please avoid \"_\" as it is used by oslo.\nplease use \"_stdout\" it has the same convention of being ignored but the name is unique.\n\nPlease consider again defining a single object/dict with stdout and returncode as its attributes","commit_id":"b07c693bb26f7e83b06b1bbe9b12608cb8f054e7"}]}
