)]}'
{"tempest/common/utils/linux/remote_client.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"bb629933bcc6afa102a8ac63c97d5e0648dd46f0","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def ping_host(self, host):"},{"line_number":94,"context_line":"        cmd \u003d \u0027ping -c1 -w1 \u0027 + host"},{"line_number":95,"context_line":"        return self.ssh_client.exec_command(cmd)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def get_mac_address(self):"},{"line_number":98,"context_line":"        cmd \u003d \"/sbin/ifconfig | awk \u0027/HWaddr/ {print $5}\u0027\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BJBs%3D","line":95,"updated":"2013-12-02 03:10:59.000000000","message":"This method is not used in this patchset.","commit_id":"1af1d43ea8cdf9ec91bb0ade4addaa8adc332cf7"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"be04f3c9557361a010d3ee0f9a3f3c27ed45f6d9","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def ping_host(self, host):"},{"line_number":94,"context_line":"        cmd \u003d \u0027ping -c1 -w1 \u0027 + host"},{"line_number":95,"context_line":"        return self.ssh_client.exec_command(cmd)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def get_mac_address(self):"},{"line_number":98,"context_line":"        cmd \u003d \"/sbin/ifconfig | awk \u0027/HWaddr/ {print $5}\u0027\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BIu4%3D","line":95,"in_reply_to":"AAAATn%2F%2BJBs%3D","updated":"2013-12-02 06:00:44.000000000","message":"you are right. It\u0027s a left over from mixing a few patches together. I will remove it","commit_id":"1af1d43ea8cdf9ec91bb0ade4addaa8adc332cf7"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"bb629933bcc6afa102a8ac63c97d5e0648dd46f0","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def get_mac_address(self):"},{"line_number":98,"context_line":"        cmd \u003d \"/sbin/ifconfig | awk \u0027/HWaddr/ {print $5}\u0027\""},{"line_number":99,"context_line":"        return self.ssh_client.exec_command(cmd)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BJBg%3D","line":99,"updated":"2013-12-02 03:10:59.000000000","message":"If a virtual machine has multiple NICs, this method returns multiple mac addresses.\n\nShouldn\u0027t we consider it for the test case?","commit_id":"1af1d43ea8cdf9ec91bb0ade4addaa8adc332cf7"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"be04f3c9557361a010d3ee0f9a3f3c27ed45f6d9","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def get_mac_address(self):"},{"line_number":98,"context_line":"        cmd \u003d \"/sbin/ifconfig | awk \u0027/HWaddr/ {print $5}\u0027\""},{"line_number":99,"context_line":"        return self.ssh_client.exec_command(cmd)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BIvQ%3D","line":99,"in_reply_to":"AAAATn%2F%2BJBg%3D","updated":"2013-12-02 06:00:44.000000000","message":"I thought about it, but this patch deals with a single VM on a single network, so it\u0027s \"good enough\".\nIt can be updated on later patches if deemed necessary.","commit_id":"1af1d43ea8cdf9ec91bb0ade4addaa8adc332cf7"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"63b2baa11634e8933e63628ff49f911c9dca016f","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        cmd \u003d \u0027sudo sh -c \"echo \\\\\"%s\\\\\" \u003e/dev/console\"\u0027 % message"},{"line_number":91,"context_line":"        return self.ssh_client.exec_command(cmd)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def ping_host(self, host):"},{"line_number":94,"context_line":"        cmd \u003d \u0027ping -c1 -w1 \u0027 + host"},{"line_number":95,"context_line":"        return self.ssh_client.exec_command(cmd)"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9qbY%3D","line":93,"updated":"2013-12-09 05:31:53.000000000","message":"(Suggestion only) This addition appearing in multiple changesets is going to complicate merging.  I would suggest factoring out common changes and submitting them first to make patch management easier.","commit_id":"ced2334867530a0f5146544d5bd73d702b6e21b9"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"cb917eaccac913703372c98fdc4afc056b60a3f5","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        cmd \u003d \u0027sudo sh -c \"echo \\\\\"%s\\\\\" \u003e/dev/console\"\u0027 % message"},{"line_number":91,"context_line":"        return self.ssh_client.exec_command(cmd)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def ping_host(self, host):"},{"line_number":94,"context_line":"        cmd \u003d \u0027ping -c1 -w1 \u0027 + host"},{"line_number":95,"context_line":"        return self.ssh_client.exec_command(cmd)"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9qEU%3D","line":93,"in_reply_to":"AAAATn%2F9qbY%3D","updated":"2013-12-15 15:36:09.000000000","message":"Done","commit_id":"ced2334867530a0f5146544d5bd73d702b6e21b9"}],"tempest/scenario/manager.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"466573f5cf6bd6161ebfd8a84ff39f4bdc94817e","unresolved":false,"context_lines":[{"line_number":595,"context_line":"        self.set_resource(name, port)"},{"line_number":596,"context_line":"        return port"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"    def _create_floating_ip(self, server, external_network_id):"},{"line_number":599,"context_line":"        port_id \u003d self._get_server_port_id(server)"},{"line_number":600,"context_line":"        body \u003d dict("},{"line_number":601,"context_line":"            floatingip\u003ddict("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2B8Ek%3D","line":598,"updated":"2013-11-18 11:14:00.000000000","message":"as noted in another patch, this method creates and associates a floating ip.\n\nnaming it _create_floating_ip makes things slightly confusing especially as you added a method name _associate_floating_ips.","commit_id":"1ba719e071c96368d2271b4807c7a22aa9613926"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"981765b7674cd5baabb1fe36a08f269663e59a25","unresolved":false,"context_lines":[{"line_number":595,"context_line":"        self.set_resource(name, port)"},{"line_number":596,"context_line":"        return port"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"    def _create_floating_ip(self, server, external_network_id):"},{"line_number":599,"context_line":"        port_id \u003d self._get_server_port_id(server)"},{"line_number":600,"context_line":"        body \u003d dict("},{"line_number":601,"context_line":"            floatingip\u003ddict("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2B71k%3D","line":598,"in_reply_to":"AAAATn%2F%2B8Ek%3D","updated":"2013-11-18 12:05:00.000000000","message":"Done","commit_id":"1ba719e071c96368d2271b4807c7a22aa9613926"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"63b2baa11634e8933e63628ff49f911c9dca016f","unresolved":false,"context_lines":[{"line_number":836,"context_line":""},{"line_number":837,"context_line":"        return rules"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    def _ssh_to_server(self, server, private_key):"},{"line_number":840,"context_line":"        ssh_login \u003d self.config.compute.image_ssh_user"},{"line_number":841,"context_line":"        return self.get_remote_client(server,"},{"line_number":842,"context_line":"                                      username\u003dssh_login,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9qbU%3D","line":839,"updated":"2013-12-09 05:31:53.000000000","message":"(Suggestion only) ssh_to_server -\u003e get_ssh_client\n\nThe method name \u0027ssh_to_server\u0027 implies performing that action alone, not in returning an ssh client.","commit_id":"ced2334867530a0f5146544d5bd73d702b6e21b9"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"cb917eaccac913703372c98fdc4afc056b60a3f5","unresolved":false,"context_lines":[{"line_number":836,"context_line":""},{"line_number":837,"context_line":"        return rules"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    def _ssh_to_server(self, server, private_key):"},{"line_number":840,"context_line":"        ssh_login \u003d self.config.compute.image_ssh_user"},{"line_number":841,"context_line":"        return self.get_remote_client(server,"},{"line_number":842,"context_line":"                                      username\u003dssh_login,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9qDI%3D","line":839,"in_reply_to":"AAAATn%2F9qbU%3D","updated":"2013-12-15 15:36:09.000000000","message":"Done","commit_id":"ced2334867530a0f5146544d5bd73d702b6e21b9"}],"tempest/scenario/test_network_basic_ops.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"466573f5cf6bd6161ebfd8a84ff39f4bdc94817e","unresolved":false,"context_lines":[{"line_number":286,"context_line":"            self.servers.append(server)"},{"line_number":287,"context_line":"            self._associate_floating_ip(floating_ip, server)"},{"line_number":288,"context_line":"            self.floating_ips.setdefault(server, [])"},{"line_number":289,"context_line":"            self.floating_ips[server].append(floating_ip)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        self.free_floating_ips \u003d list()"},{"line_number":292,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2B8Fc%3D","line":289,"updated":"2013-11-18 11:14:00.000000000","message":"Perhaps it might worth removing floating_ip from self.free_floating_ips","commit_id":"1ba719e071c96368d2271b4807c7a22aa9613926"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"b7149f5139768a1e6c3dcaf40f7611a15525eaff","unresolved":false,"context_lines":[{"line_number":286,"context_line":"            self.servers.append(server)"},{"line_number":287,"context_line":"            self._associate_floating_ip(floating_ip, server)"},{"line_number":288,"context_line":"            self.floating_ips.setdefault(server, [])"},{"line_number":289,"context_line":"            self.floating_ips[server].append(floating_ip)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        self.free_floating_ips \u003d list()"},{"line_number":292,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BsD0%3D","line":289,"in_reply_to":"AAAATn%2F%2B71E%3D","updated":"2013-11-21 14:35:12.000000000","message":"Yeah, it\u0027s better your way then iterating over a copy of the list and removing elements from the original one.","commit_id":"1ba719e071c96368d2271b4807c7a22aa9613926"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"981765b7674cd5baabb1fe36a08f269663e59a25","unresolved":false,"context_lines":[{"line_number":286,"context_line":"            self.servers.append(server)"},{"line_number":287,"context_line":"            self._associate_floating_ip(floating_ip, server)"},{"line_number":288,"context_line":"            self.floating_ips.setdefault(server, [])"},{"line_number":289,"context_line":"            self.floating_ips[server].append(floating_ip)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        self.free_floating_ips \u003d list()"},{"line_number":292,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2B71E%3D","line":289,"in_reply_to":"AAAATn%2F%2B8Fc%3D","updated":"2013-11-18 12:05:00.000000000","message":"AFAIK you should edit the list you are iterating upon. that\u0027s why I\u0027m \"deleting\" it as at the end.","commit_id":"1ba719e071c96368d2271b4807c7a22aa9613926"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"08accc92bb4cc9fcc66149d8b7a11489446aad5b","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        for floating_ip in self.free_floating_ips:"},{"line_number":282,"context_line":"            name \u003d rand_name(\u0027new_server-smoke-\u0027)"},{"line_number":283,"context_line":"            # create a new server for the floating ip"},{"line_number":284,"context_line":"            server \u003d self._create_server(name, network)"},{"line_number":285,"context_line":"            self.servers.append(server)"},{"line_number":286,"context_line":"            self._associate_floating_ip(floating_ip, server)"},{"line_number":287,"context_line":"            self.floating_ips.setdefault(server, [])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B2oo%3D","line":284,"updated":"2013-11-19 10:45:04.000000000","message":"Why is it necessary to create a new server?  test_network_basic_ops will ensure that re-association will only be attempted if disassociation has been successfully achieved, so reusing the old server should be fine.","commit_id":"85285732e891d3b2e19861e9f67122eb657c7d26"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"83b174934b85a57672397c0c596cd1982c2b1c16","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        for floating_ip in self.free_floating_ips:"},{"line_number":282,"context_line":"            name \u003d rand_name(\u0027new_server-smoke-\u0027)"},{"line_number":283,"context_line":"            # create a new server for the floating ip"},{"line_number":284,"context_line":"            server \u003d self._create_server(name, network)"},{"line_number":285,"context_line":"            self.servers.append(server)"},{"line_number":286,"context_line":"            self._associate_floating_ip(floating_ip, server)"},{"line_number":287,"context_line":"            self.floating_ips.setdefault(server, [])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1ho%3D","line":284,"in_reply_to":"AAAATn%2F%2B2oo%3D","updated":"2013-11-19 15:04:05.000000000","message":"That\u0027s an error on my part. I forgot to test the FIP is realy assigned to a new vm and not the old one because of some kind of cache Will ammend later","commit_id":"85285732e891d3b2e19861e9f67122eb657c7d26"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"4ec91e68354bb63adc8b82b075274a66df227602","unresolved":false,"context_lines":[{"line_number":298,"context_line":"        network_name \u003d self.networks[0].name"},{"line_number":299,"context_line":"        server_ip \u003d server.networks[network_name][0]"},{"line_number":300,"context_line":"        subnet_id \u003d self.subnets[0].id"},{"line_number":301,"context_line":"        self.assertIn((subnet_id, server_ip, mac_addr), port_detail_list)"},{"line_number":302,"context_line":"        return mac_addr"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def _collect_macs(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Br%2Fo%3D","line":301,"updated":"2013-11-21 14:53:25.000000000","message":"Would it be possible to make this check easier by:\n\n1) get port_id from floating_ip (the internal port_id)\n2) load port from neutron api\n3) verify the mac retrieved from ssh command is exactly the same mac as the one retrieve in step #2\n\nIn this way I think you probably won\u0027t need to include subnet_id and server_ip to the assert condition, and will have to query neutron API for a single port.\n\nWhen we\u0027ll enable parallel testing list_ports() might return a consistent number of ports.","commit_id":"eba4814af4d2c661e08600019cafbe57d91a899a"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"606baa6fe7973d97c03d7719a086b518c0ca1495","unresolved":false,"context_lines":[{"line_number":298,"context_line":"        network_name \u003d self.networks[0].name"},{"line_number":299,"context_line":"        server_ip \u003d server.networks[network_name][0]"},{"line_number":300,"context_line":"        subnet_id \u003d self.subnets[0].id"},{"line_number":301,"context_line":"        self.assertIn((subnet_id, server_ip, mac_addr), port_detail_list)"},{"line_number":302,"context_line":"        return mac_addr"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def _collect_macs(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BjNI%3D","line":301,"in_reply_to":"AAAATn%2F%2Br%2Fo%3D","updated":"2013-11-24 07:03:43.000000000","message":"Done","commit_id":"eba4814af4d2c661e08600019cafbe57d91a899a"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"4ec91e68354bb63adc8b82b075274a66df227602","unresolved":false,"context_lines":[{"line_number":306,"context_line":"            self.servers[server] \u003d self._verify_mac_addr(floating_ip, server)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    def _check_macs(self):"},{"line_number":309,"context_line":"        \"\"\"assert that floating ips not associated with old servers.\"\"\""},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"        for floating_ip, server in self.floating_ips.iteritems():"},{"line_number":312,"context_line":"            mac \u003d self._verify_mac_addr(floating_ip, server)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BsCI%3D","line":309,"updated":"2013-11-21 14:53:25.000000000","message":"Nice check.","commit_id":"eba4814af4d2c661e08600019cafbe57d91a899a"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"4ec91e68354bb63adc8b82b075274a66df227602","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        for floating_ip, server in self.floating_ips.iteritems():"},{"line_number":312,"context_line":"            mac \u003d self._verify_mac_addr(floating_ip, server)"},{"line_number":313,"context_line":"            self.assertNotIn(mac, self.servers.values())"},{"line_number":314,"context_line":"            self.servers[server] \u003d mac"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":317,"context_line":"    @services(\u0027compute\u0027, \u0027network\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2Br9o%3D","line":314,"updated":"2013-11-21 14:53:25.000000000","message":"This is pure pedantry - but I find not obvious the self.server is a dict mapping a server object to its mac.\n\nBeyond the fact that we might have soon tests for multi-nic instances and hence several macs per server, it might however make sense to have something like:\n\nself.servers[server]\u003d {\u0027mac\u0027: mac} or\nself.servers[server] \u003d {\u0027mac\u0027: [mac]}\n\nOr to echo a possible thought of someone I know, add a Server object somewhere with its relevant attributes and avoid using dicts as poor man\u0027s objects.\n\nBut this is just pedant me talking so take this comment as you wish.","commit_id":"eba4814af4d2c661e08600019cafbe57d91a899a"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"606baa6fe7973d97c03d7719a086b518c0ca1495","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        for floating_ip, server in self.floating_ips.iteritems():"},{"line_number":312,"context_line":"            mac \u003d self._verify_mac_addr(floating_ip, server)"},{"line_number":313,"context_line":"            self.assertNotIn(mac, self.servers.values())"},{"line_number":314,"context_line":"            self.servers[server] \u003d mac"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":317,"context_line":"    @services(\u0027compute\u0027, \u0027network\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BjK8%3D","line":314,"in_reply_to":"AAAATn%2F%2Br9o%3D","updated":"2013-11-24 07:03:43.000000000","message":"Done","commit_id":"eba4814af4d2c661e08600019cafbe57d91a899a"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"63b2baa11634e8933e63628ff49f911c9dca016f","unresolved":false,"context_lines":[{"line_number":258,"context_line":"                                            ssh_login,"},{"line_number":259,"context_line":"                                            private_key,"},{"line_number":260,"context_line":"                                            should_connect\u003dshould_connect)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        except Exception as exc:"},{"line_number":263,"context_line":"            LOG.exception(exc)"},{"line_number":264,"context_line":"            debug.log_ip_ns()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9qbM%3D","line":261,"updated":"2013-12-09 05:31:53.000000000","message":"Unrelated formatting change - please revert.","commit_id":"ced2334867530a0f5146544d5bd73d702b6e21b9"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"cb917eaccac913703372c98fdc4afc056b60a3f5","unresolved":false,"context_lines":[{"line_number":258,"context_line":"                                            ssh_login,"},{"line_number":259,"context_line":"                                            private_key,"},{"line_number":260,"context_line":"                                            should_connect\u003dshould_connect)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        except Exception as exc:"},{"line_number":263,"context_line":"            LOG.exception(exc)"},{"line_number":264,"context_line":"            debug.log_ip_ns()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9qC0%3D","line":261,"in_reply_to":"AAAATn%2F9qbM%3D","updated":"2013-12-15 15:36:09.000000000","message":"Done","commit_id":"ced2334867530a0f5146544d5bd73d702b6e21b9"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"63b2baa11634e8933e63628ff49f911c9dca016f","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def _verify_mac_addr(self, floating_ip, server):"},{"line_number":284,"context_line":"        \"\"\""},{"line_number":285,"context_line":"        verify that VM (tenant\u0027s access point) has the same ip,mac as listed in"},{"line_number":286,"context_line":"        port list"},{"line_number":287,"context_line":"        \"\"\""},{"line_number":288,"context_line":"        private_key \u003d self.keypairs[self.tenant_id].private_key"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9qaE%3D","line":285,"updated":"2013-12-09 05:31:53.000000000","message":"The method name is inaccurate.  Suggest \u0027_verify_port_details\u0027 and \"\"\"Verify that the ip and mac address configured for the VM nic match what is specified for the associated port.\"\"\"\n\nIt also isn\u0027t clear why the mac address for the port is being returned by this method, other than it might be convenient for the check_macs method.  Please fix so that the methods involved in this change have a clear intent, otherwise maintenance will prove difficult.","commit_id":"ced2334867530a0f5146544d5bd73d702b6e21b9"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"cb917eaccac913703372c98fdc4afc056b60a3f5","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def _verify_mac_addr(self, floating_ip, server):"},{"line_number":284,"context_line":"        \"\"\""},{"line_number":285,"context_line":"        verify that VM (tenant\u0027s access point) has the same ip,mac as listed in"},{"line_number":286,"context_line":"        port list"},{"line_number":287,"context_line":"        \"\"\""},{"line_number":288,"context_line":"        private_key \u003d self.keypairs[self.tenant_id].private_key"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9Lkg%3D","line":285,"in_reply_to":"AAAATn%2F9qaE%3D","updated":"2013-12-15 15:36:09.000000000","message":"Done","commit_id":"ced2334867530a0f5146544d5bd73d702b6e21b9"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"63b2baa11634e8933e63628ff49f911c9dca016f","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        ssh_client \u003d self._ssh_to_server(floating_ip.floating_ip_address,"},{"line_number":290,"context_line":"                                         private_key)"},{"line_number":291,"context_line":"        mac_addr \u003d ssh_client.get_mac_address()"},{"line_number":292,"context_line":"        mac_addr \u003d mac_addr.strip().lower()"},{"line_number":293,"context_line":"        network_name \u003d self.networks[0].name"},{"line_number":294,"context_line":"        server_ip, server_mac \u003d self._get_server_mac_and_ip(server,"},{"line_number":295,"context_line":"                                                            network_name)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9qao%3D","line":292,"updated":"2013-12-09 05:31:53.000000000","message":"(Suggestion only) Consider normalizing the mac address in the get_mac_address() method.","commit_id":"ced2334867530a0f5146544d5bd73d702b6e21b9"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"cb917eaccac913703372c98fdc4afc056b60a3f5","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        ssh_client \u003d self._ssh_to_server(floating_ip.floating_ip_address,"},{"line_number":290,"context_line":"                                         private_key)"},{"line_number":291,"context_line":"        mac_addr \u003d ssh_client.get_mac_address()"},{"line_number":292,"context_line":"        mac_addr \u003d mac_addr.strip().lower()"},{"line_number":293,"context_line":"        network_name \u003d self.networks[0].name"},{"line_number":294,"context_line":"        server_ip, server_mac \u003d self._get_server_mac_and_ip(server,"},{"line_number":295,"context_line":"                                                            network_name)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9Lkc%3D","line":292,"in_reply_to":"AAAATn%2F9qao%3D","updated":"2013-12-15 15:36:09.000000000","message":"Done","commit_id":"ced2334867530a0f5146544d5bd73d702b6e21b9"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"63b2baa11634e8933e63628ff49f911c9dca016f","unresolved":false,"context_lines":[{"line_number":300,"context_line":"        self.assertEqual((server_ip, mac_addr), port)"},{"line_number":301,"context_line":"        return mac_addr"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def _get_server_mac_and_ip(self, server, network_name):"},{"line_number":304,"context_line":"        server_ip \u003d server.networks[network_name][0]"},{"line_number":305,"context_line":"        macs \u003d [m[\u0027OS-EXT-IPS-MAC:mac_addr\u0027] for m in"},{"line_number":306,"context_line":"                server.addresses[network_name] if m[\u0027addr\u0027] \u003d\u003d server_ip]"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9qac%3D","line":303,"updated":"2013-12-09 05:31:53.000000000","message":"(Suggestion only) Why is this method returning both the mac and ip?  Consider making them separate calls.","commit_id":"ced2334867530a0f5146544d5bd73d702b6e21b9"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"cb917eaccac913703372c98fdc4afc056b60a3f5","unresolved":false,"context_lines":[{"line_number":300,"context_line":"        self.assertEqual((server_ip, mac_addr), port)"},{"line_number":301,"context_line":"        return mac_addr"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def _get_server_mac_and_ip(self, server, network_name):"},{"line_number":304,"context_line":"        server_ip \u003d server.networks[network_name][0]"},{"line_number":305,"context_line":"        macs \u003d [m[\u0027OS-EXT-IPS-MAC:mac_addr\u0027] for m in"},{"line_number":306,"context_line":"                server.addresses[network_name] if m[\u0027addr\u0027] \u003d\u003d server_ip]"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9LkY%3D","line":303,"in_reply_to":"AAAATn%2F9qac%3D","updated":"2013-12-15 15:36:09.000000000","message":"Done","commit_id":"ced2334867530a0f5146544d5bd73d702b6e21b9"}]}
