)]}'
{"neutron/tests/fullstack/resources/config.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6b371fc06487409f3b3e799d37f1504a412c6bd7","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        self.config[\u0027DEFAULT\u0027].update({"},{"line_number":310,"context_line":"            \u0027debug\u0027: \u0027True\u0027,"},{"line_number":311,"context_line":"            \u0027dhcp_confs\u0027: self._generate_dhcp_path(),"},{"line_number":312,"context_line":"            \u0027dhcp_driver\u0027: \u0027neutron.agent.linux.dhcp.Dnsmasq\u0027"},{"line_number":313,"context_line":"        })"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def _setUp(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_a5cefcb1","line":312,"range":{"start_line":312,"start_character":12,"end_line":312,"end_character":61},"updated":"2016-12-14 15:28:17.000000000","message":"nit: I think you shouldn\u0027t overwrite the value. The default one is dnsmasq","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a319d480680112bee93cc8a815a37001140370c7","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        self.config[\u0027DEFAULT\u0027].update({"},{"line_number":310,"context_line":"            \u0027debug\u0027: \u0027True\u0027,"},{"line_number":311,"context_line":"            \u0027dhcp_confs\u0027: self._generate_dhcp_path(),"},{"line_number":312,"context_line":"            \u0027dhcp_driver\u0027: \u0027neutron.agent.linux.dhcp.Dnsmasq\u0027"},{"line_number":313,"context_line":"        })"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def _setUp(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_ba42923c","line":312,"range":{"start_line":312,"start_character":12,"end_line":312,"end_character":61},"in_reply_to":"1a6eadb0_a5cefcb1","updated":"2016-12-14 17:02:36.000000000","message":"Removed","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c78c33f0747ec802f55324c6f20bd0190d0135dd","unresolved":false,"context_lines":[{"line_number":319,"context_line":"    def _prepare_config_with_ovs_agent(self, integration_bridge):"},{"line_number":320,"context_line":"        self.config.update({"},{"line_number":321,"context_line":"            \u0027DEFAULT\u0027: {"},{"line_number":322,"context_line":"                \u0027interface_driver\u0027: (\u0027neutron.agent.linux.interface.\u0027"},{"line_number":323,"context_line":"                                     \u0027OVSInterfaceDriver\u0027),"},{"line_number":324,"context_line":"                \u0027ovs_integration_bridge\u0027: integration_bridge,"},{"line_number":325,"context_line":"            }"},{"line_number":326,"context_line":"        })"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_4e08f72c","line":323,"range":{"start_line":322,"start_character":36,"end_line":323,"end_character":58},"updated":"2016-12-14 11:15:51.000000000","message":"You could use stevedore alias \u0027openvswitch\u0027 here.","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a319d480680112bee93cc8a815a37001140370c7","unresolved":false,"context_lines":[{"line_number":319,"context_line":"    def _prepare_config_with_ovs_agent(self, integration_bridge):"},{"line_number":320,"context_line":"        self.config.update({"},{"line_number":321,"context_line":"            \u0027DEFAULT\u0027: {"},{"line_number":322,"context_line":"                \u0027interface_driver\u0027: (\u0027neutron.agent.linux.interface.\u0027"},{"line_number":323,"context_line":"                                     \u0027OVSInterfaceDriver\u0027),"},{"line_number":324,"context_line":"                \u0027ovs_integration_bridge\u0027: integration_bridge,"},{"line_number":325,"context_line":"            }"},{"line_number":326,"context_line":"        })"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_9a13160d","line":323,"range":{"start_line":322,"start_character":36,"end_line":323,"end_character":58},"in_reply_to":"1a6eadb0_4e08f72c","updated":"2016-12-14 17:02:36.000000000","message":"Done","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"98a2f4f022d74a7b487a67de1af4feb93e8e54a7","unresolved":false,"context_lines":[{"line_number":319,"context_line":"    def _prepare_config_with_ovs_agent(self, integration_bridge):"},{"line_number":320,"context_line":"        self.config.update({"},{"line_number":321,"context_line":"            \u0027DEFAULT\u0027: {"},{"line_number":322,"context_line":"                \u0027interface_driver\u0027: (\u0027neutron.agent.linux.interface.\u0027"},{"line_number":323,"context_line":"                                     \u0027OVSInterfaceDriver\u0027),"},{"line_number":324,"context_line":"                \u0027ovs_integration_bridge\u0027: integration_bridge,"},{"line_number":325,"context_line":"            }"},{"line_number":326,"context_line":"        })"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_b02633cc","line":323,"range":{"start_line":322,"start_character":36,"end_line":323,"end_character":58},"in_reply_to":"1a6eadb0_9a13160d","updated":"2016-12-14 17:09:15.000000000","message":"You sure? :) You fixed the existing code.","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c78c33f0747ec802f55324c6f20bd0190d0135dd","unresolved":false,"context_lines":[{"line_number":328,"context_line":"    def _prepare_config_with_linuxbridge_agent(self):"},{"line_number":329,"context_line":"        self.config.update({"},{"line_number":330,"context_line":"            \u0027DEFAULT\u0027: {"},{"line_number":331,"context_line":"                \u0027interface_driver\u0027: (\u0027neutron.agent.linux.interface.\u0027"},{"line_number":332,"context_line":"                                     \u0027BridgeInterfaceDriver\u0027),"},{"line_number":333,"context_line":"            }"},{"line_number":334,"context_line":"        })"},{"line_number":335,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_591fdf5e","line":332,"range":{"start_line":331,"start_character":36,"end_line":332,"end_character":61},"updated":"2016-12-14 11:15:51.000000000","message":"You could use stevedore alias \u0027linuxbridge\u0027 here","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a319d480680112bee93cc8a815a37001140370c7","unresolved":false,"context_lines":[{"line_number":328,"context_line":"    def _prepare_config_with_linuxbridge_agent(self):"},{"line_number":329,"context_line":"        self.config.update({"},{"line_number":330,"context_line":"            \u0027DEFAULT\u0027: {"},{"line_number":331,"context_line":"                \u0027interface_driver\u0027: (\u0027neutron.agent.linux.interface.\u0027"},{"line_number":332,"context_line":"                                     \u0027BridgeInterfaceDriver\u0027),"},{"line_number":333,"context_line":"            }"},{"line_number":334,"context_line":"        })"},{"line_number":335,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_bafa92bb","line":332,"range":{"start_line":331,"start_character":36,"end_line":332,"end_character":61},"in_reply_to":"1a6eadb0_591fdf5e","updated":"2016-12-14 17:02:36.000000000","message":"Done","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6b371fc06487409f3b3e799d37f1504a412c6bd7","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        # to read his configs"},{"line_number":340,"context_line":"        self.dhcp_path \u003d tempfile.mkdtemp(prefix\u003d\"dhcp_configs_\", dir\u003d\"/tmp/\")"},{"line_number":341,"context_line":"        os.chmod(self.dhcp_path, 0o755)"},{"line_number":342,"context_line":"        return self.dhcp_path"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    def _clean_dhcp_path(self):"},{"line_number":345,"context_line":"        shutil.rmtree(self.dhcp_path, ignore_errors\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_baba976c","line":342,"range":{"start_line":342,"start_character":8,"end_line":342,"end_character":29},"updated":"2016-12-14 15:28:17.000000000","message":"nit: return a local variable, don\u0027t make it a class variable","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae257cf6ddf77966e9281ced0bd1b777277ec5b3","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        # to read his configs"},{"line_number":340,"context_line":"        self.dhcp_path \u003d tempfile.mkdtemp(prefix\u003d\"dhcp_configs_\", dir\u003d\"/tmp/\")"},{"line_number":341,"context_line":"        os.chmod(self.dhcp_path, 0o755)"},{"line_number":342,"context_line":"        return self.dhcp_path"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    def _clean_dhcp_path(self):"},{"line_number":345,"context_line":"        shutil.rmtree(self.dhcp_path, ignore_errors\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_26bbd20f","line":342,"range":{"start_line":342,"start_character":8,"end_line":342,"end_character":29},"in_reply_to":"1a6eadb0_4561a838","updated":"2016-12-14 16:12:39.000000000","message":"My fault, sorry","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"66f2a7e9599d9ea9fcd6d76f66129f0f4360a785","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        # to read his configs"},{"line_number":340,"context_line":"        self.dhcp_path \u003d tempfile.mkdtemp(prefix\u003d\"dhcp_configs_\", dir\u003d\"/tmp/\")"},{"line_number":341,"context_line":"        os.chmod(self.dhcp_path, 0o755)"},{"line_number":342,"context_line":"        return self.dhcp_path"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    def _clean_dhcp_path(self):"},{"line_number":345,"context_line":"        shutil.rmtree(self.dhcp_path, ignore_errors\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_4561a838","line":342,"range":{"start_line":342,"start_character":8,"end_line":342,"end_character":29},"in_reply_to":"1a6eadb0_baba976c","updated":"2016-12-14 15:33:43.000000000","message":"He needs the instance attribute on L345","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f15f254cb1aa713064dc655bd8fab04391b18bc8","unresolved":false,"context_lines":[{"line_number":271,"context_line":"    def _prepare_config_with_ovs_agent(self, integration_bridge):"},{"line_number":272,"context_line":"        self.config.update({"},{"line_number":273,"context_line":"            \u0027DEFAULT\u0027: {"},{"line_number":274,"context_line":"                \u0027interface_driver\u0027: \u0027openvswitch\u0027,"},{"line_number":275,"context_line":"                \u0027ovs_integration_bridge\u0027: integration_bridge,"},{"line_number":276,"context_line":"                \u0027external_network_bridge\u0027: self._generate_external_bridge(),"},{"line_number":277,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_f31ef561","line":274,"range":{"start_line":274,"start_character":36,"end_line":274,"end_character":49},"updated":"2016-12-14 17:10:49.000000000","message":"I know you wanted to change this in the code you wrote :) This improvement becomes unrelated to this patch. You can send a separate patch for that though ;) - such changes make sometimes backporting a bit harder","commit_id":"d3fcd3ff84516c0b630efd34209b12bfc744f70d"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"b063c8ae94a9200ece4deeba9e4a24fdc61101d0","unresolved":false,"context_lines":[{"line_number":271,"context_line":"    def _prepare_config_with_ovs_agent(self, integration_bridge):"},{"line_number":272,"context_line":"        self.config.update({"},{"line_number":273,"context_line":"            \u0027DEFAULT\u0027: {"},{"line_number":274,"context_line":"                \u0027interface_driver\u0027: \u0027openvswitch\u0027,"},{"line_number":275,"context_line":"                \u0027ovs_integration_bridge\u0027: integration_bridge,"},{"line_number":276,"context_line":"                \u0027external_network_bridge\u0027: self._generate_external_bridge(),"},{"line_number":277,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_f8716545","line":274,"range":{"start_line":274,"start_character":36,"end_line":274,"end_character":49},"in_reply_to":"1a6eadb0_f31ef561","updated":"2016-12-15 11:37:53.000000000","message":"I know. It was made by mistake and I have no idea why I changed it here :)\nFixed now. Sorry.","commit_id":"d3fcd3ff84516c0b630efd34209b12bfc744f70d"}],"neutron/tests/fullstack/resources/machine.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c78c33f0747ec802f55324c6f20bd0190d0135dd","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class FakeFullstackMachine(machine_fixtures.FakeMachineBase):"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    dhclient_async \u003d None"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def __init__(self, host, network_id, tenant_id, safe_client,"},{"line_number":49,"context_line":"                 neutron_port\u003dNone, bridge_name\u003dNone, use_dhcp\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_79173bed","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":25},"updated":"2016-12-14 11:15:51.000000000","message":"This should be an instance attribute, not class attribute. If you spawn two FakeFullstackMachines, they would share this reference.","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a319d480680112bee93cc8a815a37001140370c7","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class FakeFullstackMachine(machine_fixtures.FakeMachineBase):"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    dhclient_async \u003d None"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def __init__(self, host, network_id, tenant_id, safe_client,"},{"line_number":49,"context_line":"                 neutron_port\u003dNone, bridge_name\u003dNone, use_dhcp\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_90805748","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":25},"in_reply_to":"1a6eadb0_79173bed","updated":"2016-12-14 17:02:36.000000000","message":"Done","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c78c33f0747ec802f55324c6f20bd0190d0135dd","unresolved":false,"context_lines":[{"line_number":113,"context_line":"            self._ip \u003d fixed_ip[\u0027ip_address\u0027]"},{"line_number":114,"context_line":"            prefixlen \u003d netaddr.IPNetwork(subnet[\u0027subnet\u0027][\u0027cidr\u0027]).prefixlen"},{"line_number":115,"context_line":"            self._ip_cidr \u003d \u0027%s/%s\u0027 % (self._ip, prefixlen)"},{"line_number":116,"context_line":"            self.gateway_ip \u003d subnet[\u0027subnet\u0027][\u0027gateway_ip\u0027]"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"            if self.use_dhcp:"},{"line_number":119,"context_line":"                self._configure_ipaddress_via_dhcp()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_19b1e747","line":116,"range":{"start_line":116,"start_character":12,"end_line":116,"end_character":60},"updated":"2016-12-14 11:15:51.000000000","message":"This should be part of static configuration. Otherwise gateway is set by dhcp and should be set on L180.","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a319d480680112bee93cc8a815a37001140370c7","unresolved":false,"context_lines":[{"line_number":113,"context_line":"            self._ip \u003d fixed_ip[\u0027ip_address\u0027]"},{"line_number":114,"context_line":"            prefixlen \u003d netaddr.IPNetwork(subnet[\u0027subnet\u0027][\u0027cidr\u0027]).prefixlen"},{"line_number":115,"context_line":"            self._ip_cidr \u003d \u0027%s/%s\u0027 % (self._ip, prefixlen)"},{"line_number":116,"context_line":"            self.gateway_ip \u003d subnet[\u0027subnet\u0027][\u0027gateway_ip\u0027]"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"            if self.use_dhcp:"},{"line_number":119,"context_line":"                self._configure_ipaddress_via_dhcp()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_3d4bdc88","line":116,"range":{"start_line":116,"start_character":12,"end_line":116,"end_character":60},"in_reply_to":"1a6eadb0_19b1e747","updated":"2016-12-14 17:02:36.000000000","message":"As we discussed on IRC, I added check if gateway is configured with dhcp in same way as assert for IP address is done.","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6b371fc06487409f3b3e799d37f1504a412c6bd7","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def block_until_ip_configured(self):"},{"line_number":166,"context_line":"        def ip_configured():"},{"line_number":167,"context_line":"            port_ips \u003d self.port.addr.list()"},{"line_number":168,"context_line":"            for port_ip in port_ips:"},{"line_number":169,"context_line":"                if port_ip.get(\u0027cidr\u0027) \u003d\u003d self.ip_cidr:"},{"line_number":170,"context_line":"                    return True"},{"line_number":171,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_0505f0ba","line":168,"range":{"start_line":167,"start_character":12,"end_line":168,"end_character":35},"updated":"2016-12-14 15:28:17.000000000","message":"nit:\njust write\n    for port_ip in self.port.addr.list()","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a319d480680112bee93cc8a815a37001140370c7","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def block_until_ip_configured(self):"},{"line_number":166,"context_line":"        def ip_configured():"},{"line_number":167,"context_line":"            port_ips \u003d self.port.addr.list()"},{"line_number":168,"context_line":"            for port_ip in port_ips:"},{"line_number":169,"context_line":"                if port_ip.get(\u0027cidr\u0027) \u003d\u003d self.ip_cidr:"},{"line_number":170,"context_line":"                    return True"},{"line_number":171,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_7d3c74e2","line":168,"range":{"start_line":167,"start_character":12,"end_line":168,"end_character":35},"in_reply_to":"1a6eadb0_0505f0ba","updated":"2016-12-14 17:02:36.000000000","message":"Done","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c78c33f0747ec802f55324c6f20bd0190d0135dd","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        utils.wait_until_true("},{"line_number":174,"context_line":"            ip_configured,"},{"line_number":175,"context_line":"            exception\u003dmachine_fixtures.FakeMachineException("},{"line_number":176,"context_line":"                \"Address %s not configured properly on port %s\" % ("},{"line_number":177,"context_line":"                    self.ip_cidr, self.port.name)"},{"line_number":178,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_995fb7e4","line":175,"range":{"start_line":175,"start_character":12,"end_line":175,"end_character":59},"updated":"2016-12-14 11:15:51.000000000","message":"Nice :)","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a319d480680112bee93cc8a815a37001140370c7","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        utils.wait_until_true("},{"line_number":174,"context_line":"            ip_configured,"},{"line_number":175,"context_line":"            exception\u003dmachine_fixtures.FakeMachineException("},{"line_number":176,"context_line":"                \"Address %s not configured properly on port %s\" % ("},{"line_number":177,"context_line":"                    self.ip_cidr, self.port.name)"},{"line_number":178,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_fd308403","line":175,"range":{"start_line":175,"start_character":12,"end_line":175,"end_character":59},"in_reply_to":"1a6eadb0_995fb7e4","updated":"2016-12-14 17:02:36.000000000","message":"thx :)","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"47b8d26844191b1476c19f2b6c4764437d041dc0","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            sleep\u003d3)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def block_until_dhcp_config_done(self):"},{"line_number":165,"context_line":"        def ip_configured():"},{"line_number":166,"context_line":"            for port_ip in self.port.addr.list():"},{"line_number":167,"context_line":"                if port_ip.get(\u0027cidr\u0027) \u003d\u003d self.ip_cidr:"},{"line_number":168,"context_line":"                    return True"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_93806148","line":165,"range":{"start_line":165,"start_character":0,"end_line":165,"end_character":25},"updated":"2016-12-14 17:15:57.000000000","message":"Suggestion only: You can move this function to instance method. Otherwise block_until_dhcp_config_done becomes a closure - not a big deal though.","commit_id":"d3fcd3ff84516c0b630efd34209b12bfc744f70d"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"b063c8ae94a9200ece4deeba9e4a24fdc61101d0","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            sleep\u003d3)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def block_until_dhcp_config_done(self):"},{"line_number":165,"context_line":"        def ip_configured():"},{"line_number":166,"context_line":"            for port_ip in self.port.addr.list():"},{"line_number":167,"context_line":"                if port_ip.get(\u0027cidr\u0027) \u003d\u003d self.ip_cidr:"},{"line_number":168,"context_line":"                    return True"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_984151ac","line":165,"range":{"start_line":165,"start_character":0,"end_line":165,"end_character":25},"in_reply_to":"1a6eadb0_93806148","updated":"2016-12-15 11:37:53.000000000","message":"Done","commit_id":"d3fcd3ff84516c0b630efd34209b12bfc744f70d"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"47b8d26844191b1476c19f2b6c4764437d041dc0","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            return gateway_info.get(\u0027gateway\u0027) \u003d\u003d self.gateway_ip"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        utils.wait_until_true("},{"line_number":178,"context_line":"            ip_configured and gateway_configured,"},{"line_number":179,"context_line":"            exception\u003dmachine_fixtures.FakeMachineException("},{"line_number":180,"context_line":"                \"Address %s or gateway %s not configured properly on \""},{"line_number":181,"context_line":"                \"port %s\" % (self.ip_cidr, self.gateway_ip, self.port.name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_b369ddc0","line":178,"range":{"start_line":178,"start_character":12,"end_line":178,"end_character":48},"updated":"2016-12-14 17:15:57.000000000","message":"This would become a gateway_configured only\n\n func1 and func2 -\u003e func2\n\nIt should be fine to just assert gateway_configured() after the wait_until_true loop as dhcp pack contains both ip and gateway.","commit_id":"d3fcd3ff84516c0b630efd34209b12bfc744f70d"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"b063c8ae94a9200ece4deeba9e4a24fdc61101d0","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            return gateway_info.get(\u0027gateway\u0027) \u003d\u003d self.gateway_ip"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        utils.wait_until_true("},{"line_number":178,"context_line":"            ip_configured and gateway_configured,"},{"line_number":179,"context_line":"            exception\u003dmachine_fixtures.FakeMachineException("},{"line_number":180,"context_line":"                \"Address %s or gateway %s not configured properly on \""},{"line_number":181,"context_line":"                \"port %s\" % (self.ip_cidr, self.gateway_ip, self.port.name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_38191dd8","line":178,"range":{"start_line":178,"start_character":12,"end_line":178,"end_character":48},"in_reply_to":"1a6eadb0_b369ddc0","updated":"2016-12-15 11:37:53.000000000","message":"changed, thx","commit_id":"d3fcd3ff84516c0b630efd34209b12bfc744f70d"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"dd75e44513fb752594c9f57bf40c23bfebd48fc0","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        # if IP address is configured properly, check if gateway is also"},{"line_number":185,"context_line":"        # configured (if it was set in subnet)"},{"line_number":186,"context_line":"        if self.gateway_ip:"},{"line_number":187,"context_line":"            assert self.gateway_configured()"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def destroy(self):"},{"line_number":190,"context_line":"        \"\"\"Destroy this fake machine."}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_e71d2e63","line":187,"range":{"start_line":187,"start_character":12,"end_line":187,"end_character":19},"updated":"2016-12-15 10:46:21.000000000","message":"I probably confused you by my comment about assert, I meant to use self.assertTrue. We don\u0027t use assert itself.","commit_id":"38b97aafa89400713480a657839193501e1a98a2"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"de21150c52064701488646a7ed3df7c960fcaa2c","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        # if IP address is configured properly, check if gateway is also"},{"line_number":185,"context_line":"        # configured (if it was set in subnet)"},{"line_number":186,"context_line":"        if self.gateway_ip:"},{"line_number":187,"context_line":"            assert self.gateway_configured()"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def destroy(self):"},{"line_number":190,"context_line":"        \"\"\"Destroy this fake machine."}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_07b78af5","line":187,"range":{"start_line":187,"start_character":12,"end_line":187,"end_character":19},"in_reply_to":"1a6eadb0_e71d2e63","updated":"2016-12-15 11:37:45.000000000","message":"Done","commit_id":"38b97aafa89400713480a657839193501e1a98a2"}],"neutron/tests/fullstack/test_dhcp_agent.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c78c33f0747ec802f55324c6f20bd0190d0135dd","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                use_dhcp\u003dTrue))"},{"line_number":68,"context_line":"        self.vm.block_until_boot()"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def test_network_assigned_to_agent(self):"},{"line_number":71,"context_line":"        dhcp_agents \u003d self.client.list_dhcp_agent_hosting_networks("},{"line_number":72,"context_line":"            self.network[\u0027id\u0027])"},{"line_number":73,"context_line":"        self.assertEqual(1, len(dhcp_agents[\u0027agents\u0027]))"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_f99d0b5a","line":70,"range":{"start_line":70,"start_character":0,"end_line":70,"end_character":45},"updated":"2016-12-14 11:15:51.000000000","message":"It kinda takes a while to build the whole environment. Do you think these two tests can be squashed together? Testing that number of agents is expected value and that VM got an IP?","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a319d480680112bee93cc8a815a37001140370c7","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                use_dhcp\u003dTrue))"},{"line_number":68,"context_line":"        self.vm.block_until_boot()"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def test_network_assigned_to_agent(self):"},{"line_number":71,"context_line":"        dhcp_agents \u003d self.client.list_dhcp_agent_hosting_networks("},{"line_number":72,"context_line":"            self.network[\u0027id\u0027])"},{"line_number":73,"context_line":"        self.assertEqual(1, len(dhcp_agents[\u0027agents\u0027]))"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_304ea36f","line":70,"range":{"start_line":70,"start_character":0,"end_line":70,"end_character":45},"in_reply_to":"1a6eadb0_f99d0b5a","updated":"2016-12-14 17:02:36.000000000","message":"Yep, it can be together ofcourse :)","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c78c33f0747ec802f55324c6f20bd0190d0135dd","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            self.network[\u0027id\u0027])"},{"line_number":73,"context_line":"        self.assertEqual(1, len(dhcp_agents[\u0027agents\u0027]))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def test_ip_address_assignation(self):"},{"line_number":76,"context_line":"        self.vm.block_until_ip_configured()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_39922358","line":75,"range":{"start_line":75,"start_character":24,"end_line":75,"end_character":35},"updated":"2016-12-14 11:15:51.000000000","message":"assignment","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a319d480680112bee93cc8a815a37001140370c7","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            self.network[\u0027id\u0027])"},{"line_number":73,"context_line":"        self.assertEqual(1, len(dhcp_agents[\u0027agents\u0027]))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def test_ip_address_assignation(self):"},{"line_number":76,"context_line":"        self.vm.block_until_ip_configured()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_509f9fb3","line":75,"range":{"start_line":75,"start_character":24,"end_line":75,"end_character":35},"in_reply_to":"1a6eadb0_39922358","updated":"2016-12-14 17:02:36.000000000","message":"changed","commit_id":"1dc048b4135f31f0ae9e317bc9f41d11891a525a"}]}
