)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"1155f52e0ea7ea365298804eddd42dbe8206f958","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"helper:"},{"line_number":16,"context_line":"api/network/common.py"},{"line_number":17,"context_line":"\toverride update() method for DeletableFloatingIp - handels"},{"line_number":18,"context_line":"\tneutron-update and updates self with result"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"manager:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"AAAATn%2F%2B2yM%3D","line":17,"updated":"2013-11-19 10:40:13.000000000","message":"Please convert tabs to spaces.\n\nAlso, as per a comment in a previous commit, I\u0027m not sure of the value of summarizing the \u0027what\u0027 implementation details rather than the \u0027why\u0027 in the commit message.  I\u0027m not sure of what the tempest core reviewers expect, though, so I\u0027d recommend confirming with them.\n\nAlso, I\u0027d suggest adding a bug and/or blueprint for this test addition so that non-reviewers have visibility into your efforts.","commit_id":"ad50eb6bf5e6be94365c9f559f13fe370139ff2f"}],"tempest/api/network/common.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fe900fb0815a24eabf61c9bb151f550b21c6debb","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class DeletableNetwork(DeletableResource):"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def delete(self):"},{"line_number":54,"context_line":"        self.client.delete_network(self.id)"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B8HQ%3D","side":"PARENT","line":52,"updated":"2013-11-18 11:09:12.000000000","message":"Idk if you intentionally removed this lines or not.","commit_id":"2fbf15212e37ff71496e41d281192d7791b718ea"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"183b89cc4d0ef3f58b802397a4fa2f8d8d83e153","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class DeletableNetwork(DeletableResource):"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def delete(self):"},{"line_number":54,"context_line":"        self.client.delete_network(self.id)"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B8Bk%3D","side":"PARENT","line":52,"in_reply_to":"AAAATn%2F%2B8HQ%3D","updated":"2013-11-18 11:55:05.000000000","message":"Done","commit_id":"2fbf15212e37ff71496e41d281192d7791b718ea"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"1155f52e0ea7ea365298804eddd42dbe8206f958","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class AttributeDict(dict):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    \"\"\""},{"line_number":22,"context_line":"    Provide attribute access (dict.key) to dictionary values."},{"line_number":23,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2B2xs%3D","side":"PARENT","line":20,"updated":"2013-11-19 10:40:13.000000000","message":"Please avoid unrelated formatting changes.","commit_id":"2fbf15212e37ff71496e41d281192d7791b718ea"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"1155f52e0ea7ea365298804eddd42dbe8206f958","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class DeletableResource(AttributeDict):"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    \"\"\""},{"line_number":35,"context_line":"    Support deletion of neutron resources (networks, subnets) via a"},{"line_number":36,"context_line":"    delete() method, as is supported by keystone and nova resources."}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2B2xo%3D","side":"PARENT","line":33,"updated":"2013-11-19 10:40:13.000000000","message":"Please avoid unrelated formatting changes.","commit_id":"2fbf15212e37ff71496e41d281192d7791b718ea"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"6a6d5051e35d15760b62774384896260073e5778","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class AttributeDict(dict):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    \"\"\""},{"line_number":22,"context_line":"    Provide attribute access (dict.key) to dictionary values."},{"line_number":23,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BPcA%3D","side":"PARENT","line":20,"updated":"2013-11-28 12:42:25.000000000","message":"please don\u0027t remove unrelated whitespace in this patch","commit_id":"879cc996d5003f48c8fe8957608d44acb93f87dd"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"6a6d5051e35d15760b62774384896260073e5778","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    def delete(self):"},{"line_number":46,"context_line":"        raise NotImplemented()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def __hash__(self):"},{"line_number":49,"context_line":"        return id(self)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BPbc%3D","line":48,"updated":"2013-11-28 12:42:25.000000000","message":"why did this need to be added?","commit_id":"03be07e4a42b3981c93e4a19146c051be8eb3e60"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"a8ee48b74876bebd82fd82bdecda9368eda11705","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    def delete(self):"},{"line_number":46,"context_line":"        raise NotImplemented()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def __hash__(self):"},{"line_number":49,"context_line":"        return id(self)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BPaU%3D","line":48,"in_reply_to":"AAAATn%2F%2BPbc%3D","updated":"2013-11-28 12:44:20.000000000","message":"I\u0027m using DeletableFloatingIp as a dict key.","commit_id":"03be07e4a42b3981c93e4a19146c051be8eb3e60"}],"tempest/scenario/manager.py":[{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"a262bf81d7291844d73561eef93eac07c63b93fe","unresolved":false,"context_lines":[{"line_number":620,"context_line":"            floating_ip_id \u003d floating_ip.id"},{"line_number":621,"context_line":"        else:"},{"line_number":622,"context_line":"            floating_ip_id \u003d floating_ip"},{"line_number":623,"context_line":"        body \u003d dict("},{"line_number":624,"context_line":"            floatingip\u003ddict("},{"line_number":625,"context_line":"                port_id\u003dNone,"},{"line_number":626,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FICY%3D","line":623,"updated":"2013-11-14 05:00:43.000000000","message":"please put it in one line as I think it really is hard to read","commit_id":"99137e31c6c51dbaab42ce7b353553cb698df180"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"04b078a4a477e1d033775253dcced4284b2caa4f","unresolved":false,"context_lines":[{"line_number":620,"context_line":"            floating_ip_id \u003d floating_ip.id"},{"line_number":621,"context_line":"        else:"},{"line_number":622,"context_line":"            floating_ip_id \u003d floating_ip"},{"line_number":623,"context_line":"        body \u003d dict("},{"line_number":624,"context_line":"            floatingip\u003ddict("},{"line_number":625,"context_line":"                port_id\u003dNone,"},{"line_number":626,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2B%2Beo%3D","line":623,"in_reply_to":"AAAATn%2F%2FICY%3D","updated":"2013-11-17 09:05:41.000000000","message":"Done","commit_id":"99137e31c6c51dbaab42ce7b353553cb698df180"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fe900fb0815a24eabf61c9bb151f550b21c6debb","unresolved":false,"context_lines":[{"line_number":636,"context_line":"                                    stdout\u003dsubprocess.PIPE,"},{"line_number":637,"context_line":"                                    stderr\u003dsubprocess.PIPE)"},{"line_number":638,"context_line":"            proc.wait()"},{"line_number":639,"context_line":"            return (proc.returncode \u003d\u003d 0) \u003d\u003d should_succeed"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        return tempest.test.call_until_true("},{"line_number":642,"context_line":"            ping, self.config.compute.ping_timeout, 1)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B8H0%3D","line":639,"updated":"2013-11-18 11:09:12.000000000","message":"I find should_succed and proc.returncode \u003d\u003d 0 a bit more readable","commit_id":"de04dd5ae3386a6affef99aa134989305c3203f8"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"183b89cc4d0ef3f58b802397a4fa2f8d8d83e153","unresolved":false,"context_lines":[{"line_number":636,"context_line":"                                    stdout\u003dsubprocess.PIPE,"},{"line_number":637,"context_line":"                                    stderr\u003dsubprocess.PIPE)"},{"line_number":638,"context_line":"            proc.wait()"},{"line_number":639,"context_line":"            return (proc.returncode \u003d\u003d 0) \u003d\u003d should_succeed"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        return tempest.test.call_until_true("},{"line_number":642,"context_line":"            ping, self.config.compute.ping_timeout, 1)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B7%2FQ%3D","line":639,"in_reply_to":"AAAATn%2F%2B8H0%3D","updated":"2013-11-18 11:55:05.000000000","message":"should_succed \u0026\u0026 (proc.returncode \u003d\u003d 0)\nisn\u0027t the correct condition","commit_id":"de04dd5ae3386a6affef99aa134989305c3203f8"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fe900fb0815a24eabf61c9bb151f550b21c6debb","unresolved":false,"context_lines":[{"line_number":656,"context_line":"        \"\"\""},{"line_number":657,"context_line":"        parameter should_connect\u003dTrue indicates positive/negative test"},{"line_number":658,"context_line":"            positive - attempt ping and ssh"},{"line_number":659,"context_line":"            negative - attempt ping and fail if succeed"},{"line_number":660,"context_line":"        \"\"\""},{"line_number":661,"context_line":"        if should_connect:"},{"line_number":662,"context_line":"            msg \u003d \"Timed out waiting for %s to become reachable\" % ip_address"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B8Is%3D","line":659,"updated":"2013-11-18 11:09:12.000000000","message":"Thanks for adding docstrings.\nmight it be worth then documenting all the parameters?","commit_id":"de04dd5ae3386a6affef99aa134989305c3203f8"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"183b89cc4d0ef3f58b802397a4fa2f8d8d83e153","unresolved":false,"context_lines":[{"line_number":656,"context_line":"        \"\"\""},{"line_number":657,"context_line":"        parameter should_connect\u003dTrue indicates positive/negative test"},{"line_number":658,"context_line":"            positive - attempt ping and ssh"},{"line_number":659,"context_line":"            negative - attempt ping and fail if succeed"},{"line_number":660,"context_line":"        \"\"\""},{"line_number":661,"context_line":"        if should_connect:"},{"line_number":662,"context_line":"            msg \u003d \"Timed out waiting for %s to become reachable\" % ip_address"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B7%2FA%3D","line":659,"in_reply_to":"AAAATn%2F%2B8Is%3D","updated":"2013-11-18 11:55:05.000000000","message":"Done","commit_id":"de04dd5ae3386a6affef99aa134989305c3203f8"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"1155f52e0ea7ea365298804eddd42dbe8206f958","unresolved":false,"context_lines":[{"line_number":616,"context_line":"        return floating_ip"},{"line_number":617,"context_line":""},{"line_number":618,"context_line":"    def _disassociate_floating_ip(self, floating_ip):"},{"line_number":619,"context_line":"        if not isinstance(floating_ip, net_common.DeletableFloatingIp):"},{"line_number":620,"context_line":"            floating_ip_id \u003d floating_ip"},{"line_number":621,"context_line":"            result \u003d self.network_client.show_floatingip("},{"line_number":622,"context_line":"                floatingip\u003dfloating_ip_id)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2B2wM%3D","line":619,"updated":"2013-11-19 10:40:13.000000000","message":"Are you sure this block necessary?  All floating ips need to be made deletable on creation so they can be compatible with set_resource registration for cleanup on teardown.","commit_id":"ad50eb6bf5e6be94365c9f559f13fe370139ff2f"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"1155f52e0ea7ea365298804eddd42dbe8206f958","unresolved":false,"context_lines":[{"line_number":653,"context_line":"                               private_key\u003dNone,"},{"line_number":654,"context_line":"                               should_connect\u003dTrue):"},{"line_number":655,"context_line":"        \"\"\""},{"line_number":656,"context_line":"        parameter ip_address - server to test against"},{"line_number":657,"context_line":"        parameters username, private_key - server\u0027s ssh credentials"},{"line_number":658,"context_line":"        parameter should_connect\u003dTrue indicates positive/negative test"},{"line_number":659,"context_line":"            positive - attempt ping and ssh"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2B2t0%3D","line":656,"updated":"2013-11-19 10:40:13.000000000","message":"As per a comment on another review of yours, please use sphinx-compatible formatting when documenting parameters in docstrings:\n\nhttp://pythonhosted.org/an_example_pypi_project/sphinx.html\n\nThere are multiple formats in the sphinx page, but the format used by openstack can be seen in the docstring for tempest.test.call_until_true().","commit_id":"ad50eb6bf5e6be94365c9f559f13fe370139ff2f"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"4e36fbfb3607024007e80eef3f4b4437b3a0ea6e","unresolved":false,"context_lines":[{"line_number":653,"context_line":"                               private_key\u003dNone,"},{"line_number":654,"context_line":"                               should_connect\u003dTrue):"},{"line_number":655,"context_line":"        \"\"\""},{"line_number":656,"context_line":"        parameter ip_address - server to test against"},{"line_number":657,"context_line":"        parameters username, private_key - server\u0027s ssh credentials"},{"line_number":658,"context_line":"        parameter should_connect\u003dTrue indicates positive/negative test"},{"line_number":659,"context_line":"            positive - attempt ping and ssh"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2BxBE%3D","line":656,"in_reply_to":"AAAATn%2F%2B2t0%3D","updated":"2013-11-20 15:04:58.000000000","message":"Done","commit_id":"ad50eb6bf5e6be94365c9f559f13fe370139ff2f"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"1155f52e0ea7ea365298804eddd42dbe8206f958","unresolved":false,"context_lines":[{"line_number":667,"context_line":"                                              should_succeed\u003dshould_connect),"},{"line_number":668,"context_line":"                        msg\u003dmsg)"},{"line_number":669,"context_line":"        if should_connect:"},{"line_number":670,"context_line":"            # no need to check for ssh for negative connectivity"},{"line_number":671,"context_line":"            self.assertTrue(self._is_reachable_via_ssh("},{"line_number":672,"context_line":"                ip_address,"},{"line_number":673,"context_line":"                username,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2B2tg%3D","line":670,"updated":"2013-11-19 10:40:13.000000000","message":"for ssh -\u003e ssh","commit_id":"ad50eb6bf5e6be94365c9f559f13fe370139ff2f"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"4e36fbfb3607024007e80eef3f4b4437b3a0ea6e","unresolved":false,"context_lines":[{"line_number":667,"context_line":"                                              should_succeed\u003dshould_connect),"},{"line_number":668,"context_line":"                        msg\u003dmsg)"},{"line_number":669,"context_line":"        if should_connect:"},{"line_number":670,"context_line":"            # no need to check for ssh for negative connectivity"},{"line_number":671,"context_line":"            self.assertTrue(self._is_reachable_via_ssh("},{"line_number":672,"context_line":"                ip_address,"},{"line_number":673,"context_line":"                username,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2BxBA%3D","line":670,"in_reply_to":"AAAATn%2F%2B2tg%3D","updated":"2013-11-20 15:04:58.000000000","message":"Done","commit_id":"ad50eb6bf5e6be94365c9f559f13fe370139ff2f"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"f78da7a8894353541e91c939502c29927b50b898","unresolved":false,"context_lines":[{"line_number":643,"context_line":"            positive - attempt ping and ssh"},{"line_number":644,"context_line":"            negative - attempt ping and fail if succeed"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        :returns: boolean: test success according to should_connect param"},{"line_number":647,"context_line":"        \"\"\""},{"line_number":648,"context_line":"        if should_connect:"},{"line_number":649,"context_line":"            msg \u003d \"Timed out waiting for %s to become reachable\" % ip_address"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F9qlM%3D","line":646,"updated":"2013-12-09 03:16:26.000000000","message":"This method does not return a value, so this line is not necessary.  If you want to document the intended behavior, consider using the following instead:\n\n:raises: AssertError if the result of the connectivity check does not match the value of the should_connect param \n\nFYI the normal convention for a method prefixed with \u0027check\u0027 is to raise an exception if some condition is not met and to not return a value even if the conditions are met.","commit_id":"560889017645b443fdd8671cfa19fc8c67b0b278"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"f9bf231426e51b3a0627558103ca3c84fa57a9d6","unresolved":false,"context_lines":[{"line_number":643,"context_line":"            positive - attempt ping and ssh"},{"line_number":644,"context_line":"            negative - attempt ping and fail if succeed"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        :returns: boolean: test success according to should_connect param"},{"line_number":647,"context_line":"        \"\"\""},{"line_number":648,"context_line":"        if should_connect:"},{"line_number":649,"context_line":"            msg \u003d \"Timed out waiting for %s to become reachable\" % ip_address"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F9qIU%3D","line":646,"in_reply_to":"AAAATn%2F9qlM%3D","updated":"2013-12-09 07:23:01.000000000","message":"Done","commit_id":"560889017645b443fdd8671cfa19fc8c67b0b278"}],"tempest/scenario/test_network_basic_ops.py":[{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"a262bf81d7291844d73561eef93eac07c63b93fe","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":17,"context_line":"#    under the License."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import tempest"},{"line_number":20,"context_line":"from tempest.api.network import common as net_common"},{"line_number":21,"context_line":"from tempest.common import debug"},{"line_number":22,"context_line":"from tempest.common.utils.data_utils import rand_name"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FIFs%3D","line":19,"updated":"2013-11-14 05:00:43.000000000","message":"I\u0027d import only the function you need, call_until_true","commit_id":"99137e31c6c51dbaab42ce7b353553cb698df180"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"a262bf81d7291844d73561eef93eac07c63b93fe","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        call ping until false"},{"line_number":267,"context_line":"        \"\"\""},{"line_number":268,"context_line":"        def disconnected():"},{"line_number":269,"context_line":"            return not self._ping_ip_address(ip_address)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        return tempest.test.call_until_true(disconnected,"},{"line_number":272,"context_line":"                                            self.config.compute.ping_timeout,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FID4%3D","line":269,"updated":"2013-11-14 05:00:43.000000000","message":"I think _ping_ip_address will wait for the full duration of ping_timeout before returning False (translated into True in your case)\n\nMaybe you can move the ping() function out of _ping_ip_address and make it return both True and False so it can be better \"consumed\" by call_unti_true?","commit_id":"99137e31c6c51dbaab42ce7b353553cb698df180"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"04b078a4a477e1d033775253dcced4284b2caa4f","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        call ping until false"},{"line_number":267,"context_line":"        \"\"\""},{"line_number":268,"context_line":"        def disconnected():"},{"line_number":269,"context_line":"            return not self._ping_ip_address(ip_address)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        return tempest.test.call_until_true(disconnected,"},{"line_number":272,"context_line":"                                            self.config.compute.ping_timeout,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2B%2Bd8%3D","line":269,"in_reply_to":"AAAATn%2F%2FID4%3D","updated":"2013-11-17 09:05:41.000000000","message":"Done","commit_id":"99137e31c6c51dbaab42ce7b353553cb698df180"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"7ae7aea50450f884eb71944a2d6d5a74e92a3a0d","unresolved":false,"context_lines":[{"line_number":272,"context_line":"                                            self.config.compute.ping_timeout,"},{"line_number":273,"context_line":"                                            1)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def _detach_floating_ip(self):"},{"line_number":276,"context_line":"        \"\"\""},{"line_number":277,"context_line":"        check that FIP is detached successfully and server is unreachable"},{"line_number":278,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FBKk%3D","line":275,"updated":"2013-11-15 16:32:31.000000000","message":"I think this should be symmetric to _assign_floating_ips. So I\u0027d rename it to _deassign_floating_ips()","commit_id":"99137e31c6c51dbaab42ce7b353553cb698df180"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"04b078a4a477e1d033775253dcced4284b2caa4f","unresolved":false,"context_lines":[{"line_number":272,"context_line":"                                            self.config.compute.ping_timeout,"},{"line_number":273,"context_line":"                                            1)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def _detach_floating_ip(self):"},{"line_number":276,"context_line":"        \"\"\""},{"line_number":277,"context_line":"        check that FIP is detached successfully and server is unreachable"},{"line_number":278,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2B%2BeA%3D","line":275,"in_reply_to":"AAAATn%2F%2B%2Bjg%3D","updated":"2013-11-17 09:05:41.000000000","message":"Done","commit_id":"99137e31c6c51dbaab42ce7b353553cb698df180"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"339d81120b9d13751af8d60406772d38e87b5f7a","unresolved":false,"context_lines":[{"line_number":272,"context_line":"                                            self.config.compute.ping_timeout,"},{"line_number":273,"context_line":"                                            1)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def _detach_floating_ip(self):"},{"line_number":276,"context_line":"        \"\"\""},{"line_number":277,"context_line":"        check that FIP is detached successfully and server is unreachable"},{"line_number":278,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2B%2Bjg%3D","line":275,"in_reply_to":"AAAATn%2F%2FBKk%3D","updated":"2013-11-17 06:00:53.000000000","message":"Symmetric is good, but I\u0027m afraid that \u0027deassign\u0027 is not a word.   Why not _disassociate_floating_ips?","commit_id":"99137e31c6c51dbaab42ce7b353553cb698df180"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"7ae7aea50450f884eb71944a2d6d5a74e92a3a0d","unresolved":false,"context_lines":[{"line_number":280,"context_line":"            for floating_ip in floating_ips:"},{"line_number":281,"context_line":"                self._disassociate_floating_ip(floating_ip)"},{"line_number":282,"context_line":"                ip_address \u003d floating_ip.floating_ip_address"},{"line_number":283,"context_line":"                self.assertTrue(self._check_disconnected(ip_address))"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":286,"context_line":"    @services(\u0027compute\u0027, \u0027network\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FBKQ%3D","line":283,"updated":"2013-11-15 16:32:31.000000000","message":"I wouldn\u0027t do the connectivity check here. This method should be about removing the floating ips from the server. If you took the assert out of this method then you could verify that connectivity has gone by doing:\n\nself._deassign_floating_ips()\nself.assertRaises(whatever_exception_a_failed_ping_raises, self._check_public_network_connectivity)\n\nin test_network_basic_ops down below.\n\nThis has the benefit of reusing quite a bit of code and saves you to write duplicate one","commit_id":"99137e31c6c51dbaab42ce7b353553cb698df180"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"04b078a4a477e1d033775253dcced4284b2caa4f","unresolved":false,"context_lines":[{"line_number":280,"context_line":"            for floating_ip in floating_ips:"},{"line_number":281,"context_line":"                self._disassociate_floating_ip(floating_ip)"},{"line_number":282,"context_line":"                ip_address \u003d floating_ip.floating_ip_address"},{"line_number":283,"context_line":"                self.assertTrue(self._check_disconnected(ip_address))"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":286,"context_line":"    @services(\u0027compute\u0027, \u0027network\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2B%2Bd4%3D","line":283,"in_reply_to":"AAAATn%2F%2FBKQ%3D","updated":"2013-11-17 09:05:41.000000000","message":"Done","commit_id":"99137e31c6c51dbaab42ce7b353553cb698df180"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"3aff026f6ed7e61ad52912dc652207237cbc3f0b","unresolved":false,"context_lines":[{"line_number":268,"context_line":"            for floating_ip in floating_ips:"},{"line_number":269,"context_line":"                self._disassociate_floating_ip(floating_ip)"},{"line_number":270,"context_line":"                ip_address \u003d floating_ip.floating_ip_address"},{"line_number":271,"context_line":"                self._check_vm_connectivity(ip_address, should_connect\u003dFalse)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":274,"context_line":"    @services(\u0027compute\u0027, \u0027network\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2B%2BcA%3D","line":271,"updated":"2013-11-17 09:15:23.000000000","message":"As per Armando\u0027s previous comment, connectivity should be checked in test_network_basic_ops rather than being done here.  That would also render the docstring unnecessary, since the purpose would then be clear from the method name.","commit_id":"08019f8cc93a4c5e27d4a24d5263da6c9c61c238"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"3aff026f6ed7e61ad52912dc652207237cbc3f0b","unresolved":false,"context_lines":[{"line_number":278,"context_line":"        self._create_networks()"},{"line_number":279,"context_line":"        self._check_networks()"},{"line_number":280,"context_line":"        self._create_servers()"},{"line_number":281,"context_line":"        self._assign_floating_ips()"},{"line_number":282,"context_line":"        self._check_public_network_connectivity()"},{"line_number":283,"context_line":"        self._disassociate_floating_ips()"},{"line_number":284,"context_line":"        self._check_tenant_network_connectivity()"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2B%2BcI%3D","line":281,"updated":"2013-11-17 09:15:23.000000000","message":"This method should be renamed (assign \u003d\u003e associate) as per Armando\u0027s comment about symmetric naming.","commit_id":"08019f8cc93a4c5e27d4a24d5263da6c9c61c238"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fe900fb0815a24eabf61c9bb151f550b21c6debb","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                    self._check_vm_connectivity(ip_address, ssh_login,"},{"line_number":237,"context_line":"                                                private_key)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def _associate_floating_ips(self):"},{"line_number":240,"context_line":"        public_network_id \u003d self.config.network.public_network_id"},{"line_number":241,"context_line":"        for server in self.servers:"},{"line_number":242,"context_line":"            floating_ip \u003d self._create_floating_ip(server, public_network_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B8J8%3D","line":239,"updated":"2013-11-18 11:09:12.000000000","message":"I don\u0027t see a rename paramount, but if you want to do it, call the method _create_and_associate_floating_ips","commit_id":"de04dd5ae3386a6affef99aa134989305c3203f8"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"183b89cc4d0ef3f58b802397a4fa2f8d8d83e153","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                    self._check_vm_connectivity(ip_address, ssh_login,"},{"line_number":237,"context_line":"                                                private_key)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def _associate_floating_ips(self):"},{"line_number":240,"context_line":"        public_network_id \u003d self.config.network.public_network_id"},{"line_number":241,"context_line":"        for server in self.servers:"},{"line_number":242,"context_line":"            floating_ip \u003d self._create_floating_ip(server, public_network_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B78A%3D","line":239,"in_reply_to":"AAAATn%2F%2B8J8%3D","updated":"2013-11-18 11:55:05.000000000","message":"Done","commit_id":"de04dd5ae3386a6affef99aa134989305c3203f8"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fe900fb0815a24eabf61c9bb151f550b21c6debb","unresolved":false,"context_lines":[{"line_number":243,"context_line":"            self.floating_ips.setdefault(server, [])"},{"line_number":244,"context_line":"            self.floating_ips[server].append(floating_ip)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def _check_public_network_connectivity(self, should_succeed\u003dTrue):"},{"line_number":247,"context_line":"        # The target login is assumed to have been configured for"},{"line_number":248,"context_line":"        # key-based authentication by cloud-init."},{"line_number":249,"context_line":"        ssh_login \u003d self.config.compute.image_ssh_user"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B8Lk%3D","line":246,"updated":"2013-11-18 11:09:12.000000000","message":"I understand why should_succeed is useful, but it appears to not be used here.","commit_id":"de04dd5ae3386a6affef99aa134989305c3203f8"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"183b89cc4d0ef3f58b802397a4fa2f8d8d83e153","unresolved":false,"context_lines":[{"line_number":243,"context_line":"            self.floating_ips.setdefault(server, [])"},{"line_number":244,"context_line":"            self.floating_ips[server].append(floating_ip)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def _check_public_network_connectivity(self, should_succeed\u003dTrue):"},{"line_number":247,"context_line":"        # The target login is assumed to have been configured for"},{"line_number":248,"context_line":"        # key-based authentication by cloud-init."},{"line_number":249,"context_line":"        ssh_login \u003d self.config.compute.image_ssh_user"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B770%3D","line":246,"in_reply_to":"AAAATn%2F%2B8Lk%3D","updated":"2013-11-18 11:55:05.000000000","message":"Done","commit_id":"de04dd5ae3386a6affef99aa134989305c3203f8"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fe900fb0815a24eabf61c9bb151f550b21c6debb","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                    ip_address \u003d floating_ip.floating_ip_address"},{"line_number":255,"context_line":"                    self._check_vm_connectivity(ip_address,"},{"line_number":256,"context_line":"                                                ssh_login,"},{"line_number":257,"context_line":"                                                private_key)"},{"line_number":258,"context_line":"        except Exception as exc:"},{"line_number":259,"context_line":"            LOG.exception(exc)"},{"line_number":260,"context_line":"            debug.log_ip_ns()"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B8Jw%3D","line":257,"updated":"2013-11-18 11:09:12.000000000","message":"perhaps you wanted to pass should_succeed to _check_vm_connectivity?","commit_id":"de04dd5ae3386a6affef99aa134989305c3203f8"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fe900fb0815a24eabf61c9bb151f550b21c6debb","unresolved":false,"context_lines":[{"line_number":263,"context_line":"    def _disassociate_floating_ips(self):"},{"line_number":264,"context_line":"        for server, floating_ips in self.floating_ips.iteritems():"},{"line_number":265,"context_line":"            for floating_ip in floating_ips:"},{"line_number":266,"context_line":"                self._disassociate_floating_ip(floating_ip)"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def _check_floating_ips_disconnected(self):"},{"line_number":269,"context_line":"        self.free_floating_ips \u003d list()"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B8JE%3D","line":266,"updated":"2013-11-18 11:09:12.000000000","message":"I would say that perhaps it makes sligthly more sense to move disassociated floating_ips into free_floating_ips here and then checking all the free_floating_ips have no connectivity in the next method","commit_id":"de04dd5ae3386a6affef99aa134989305c3203f8"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"183b89cc4d0ef3f58b802397a4fa2f8d8d83e153","unresolved":false,"context_lines":[{"line_number":263,"context_line":"    def _disassociate_floating_ips(self):"},{"line_number":264,"context_line":"        for server, floating_ips in self.floating_ips.iteritems():"},{"line_number":265,"context_line":"            for floating_ip in floating_ips:"},{"line_number":266,"context_line":"                self._disassociate_floating_ip(floating_ip)"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def _check_floating_ips_disconnected(self):"},{"line_number":269,"context_line":"        self.free_floating_ips \u003d list()"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B768%3D","line":266,"in_reply_to":"AAAATn%2F%2B8JE%3D","updated":"2013-11-18 11:55:05.000000000","message":"Done","commit_id":"de04dd5ae3386a6affef99aa134989305c3203f8"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fe900fb0815a24eabf61c9bb151f550b21c6debb","unresolved":false,"context_lines":[{"line_number":271,"context_line":"            for floating_ip in floating_ips:"},{"line_number":272,"context_line":"                ip_address \u003d floating_ip.floating_ip_address"},{"line_number":273,"context_line":"                self._check_vm_connectivity(ip_address, should_connect\u003dFalse)"},{"line_number":274,"context_line":"                # TODO(yfried): reassocisate those floating-ips to new servers"},{"line_number":275,"context_line":"                self.free_floating_ips.append(floating_ip)"},{"line_number":276,"context_line":"                self.floating_ips[server] \u003d []"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B8K4%3D","line":274,"updated":"2013-11-18 11:09:12.000000000","message":"typo in todo (reassocisate -\u003e reassociate)\n\nalso - that todo is probably calling for another test in the scenario, which you\u0027ve added in a patch dependent on this one","commit_id":"de04dd5ae3386a6affef99aa134989305c3203f8"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"8693c238713599018c63f1231f0c993fb65f3afa","unresolved":false,"context_lines":[{"line_number":271,"context_line":"            for floating_ip in floating_ips:"},{"line_number":272,"context_line":"                ip_address \u003d floating_ip.floating_ip_address"},{"line_number":273,"context_line":"                self._check_vm_connectivity(ip_address, should_connect\u003dFalse)"},{"line_number":274,"context_line":"                # TODO(yfried): reassocisate those floating-ips to new servers"},{"line_number":275,"context_line":"                self.free_floating_ips.append(floating_ip)"},{"line_number":276,"context_line":"                self.floating_ips[server] \u003d []"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B7wA%3D","line":274,"in_reply_to":"AAAATn%2F%2B77A%3D","updated":"2013-11-18 12:25:46.000000000","message":"not at all.\nsorry if that felt arrogant.\n\nYou might just want to ensure you remove it in the subsequent patch.","commit_id":"de04dd5ae3386a6affef99aa134989305c3203f8"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"08f31d3f0f9abaf4702c5db6c3412652e871dcb1","unresolved":false,"context_lines":[{"line_number":271,"context_line":"            for floating_ip in floating_ips:"},{"line_number":272,"context_line":"                ip_address \u003d floating_ip.floating_ip_address"},{"line_number":273,"context_line":"                self._check_vm_connectivity(ip_address, should_connect\u003dFalse)"},{"line_number":274,"context_line":"                # TODO(yfried): reassocisate those floating-ips to new servers"},{"line_number":275,"context_line":"                self.free_floating_ips.append(floating_ip)"},{"line_number":276,"context_line":"                self.floating_ips[server] \u003d []"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B7S8%3D","line":274,"in_reply_to":"AAAATn%2F%2B7wA%3D","updated":"2013-11-18 14:09:08.000000000","message":"Done","commit_id":"de04dd5ae3386a6affef99aa134989305c3203f8"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"183b89cc4d0ef3f58b802397a4fa2f8d8d83e153","unresolved":false,"context_lines":[{"line_number":271,"context_line":"            for floating_ip in floating_ips:"},{"line_number":272,"context_line":"                ip_address \u003d floating_ip.floating_ip_address"},{"line_number":273,"context_line":"                self._check_vm_connectivity(ip_address, should_connect\u003dFalse)"},{"line_number":274,"context_line":"                # TODO(yfried): reassocisate those floating-ips to new servers"},{"line_number":275,"context_line":"                self.free_floating_ips.append(floating_ip)"},{"line_number":276,"context_line":"                self.floating_ips[server] \u003d []"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B77A%3D","line":274,"in_reply_to":"AAAATn%2F%2B8K4%3D","updated":"2013-11-18 11:55:05.000000000","message":"it is. is that a problem?","commit_id":"de04dd5ae3386a6affef99aa134989305c3203f8"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"1155f52e0ea7ea365298804eddd42dbe8206f958","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            debug.log_ip_ns()"},{"line_number":261,"context_line":"            raise exc"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def _disassociate_floating_ips(self):"},{"line_number":264,"context_line":"        self.free_floating_ips \u003d list()"},{"line_number":265,"context_line":"        for server, floating_ips in self.floating_ips.iteritems():"},{"line_number":266,"context_line":"            for floating_ip in floating_ips:"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2B2sM%3D","line":263,"updated":"2013-11-19 10:40:13.000000000","message":"Please simplify things here by switching to tracking floating ips in a map of floating ip -\u003e server instead of the reverse.  This will allow the same map to track floating ips regardless of their association state.\n\nself.floating_ips[floating_ip] \u003d server\nand \nself.floating_ips[floating_ip] \u003d None\n\nIf the current mapping ends up required in the future, it is easy enough to convert to server -\u003e floating_ip from floating_ip -\u003e server.","commit_id":"ad50eb6bf5e6be94365c9f559f13fe370139ff2f"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"4e36fbfb3607024007e80eef3f4b4437b3a0ea6e","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            debug.log_ip_ns()"},{"line_number":261,"context_line":"            raise exc"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def _disassociate_floating_ips(self):"},{"line_number":264,"context_line":"        self.free_floating_ips \u003d list()"},{"line_number":265,"context_line":"        for server, floating_ips in self.floating_ips.iteritems():"},{"line_number":266,"context_line":"            for floating_ip in floating_ips:"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2Bwvs%3D","line":263,"in_reply_to":"AAAATn%2F%2B2sM%3D","updated":"2013-11-20 15:04:58.000000000","message":"Done","commit_id":"ad50eb6bf5e6be94365c9f559f13fe370139ff2f"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"1155f52e0ea7ea365298804eddd42dbe8206f958","unresolved":false,"context_lines":[{"line_number":268,"context_line":"                self.free_floating_ips.append(floating_ip)"},{"line_number":269,"context_line":"                self.floating_ips[server] \u003d []"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def _check_floating_ips_disconnected(self):"},{"line_number":272,"context_line":"        for floating_ip in self.free_floating_ips:"},{"line_number":273,"context_line":"            ip_address \u003d floating_ip.floating_ip_address"},{"line_number":274,"context_line":"            self._check_vm_connectivity(ip_address, should_connect\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2B2q4%3D","line":271,"updated":"2013-11-19 10:40:13.000000000","message":"Since all floating ips are being disassociated, please reuse _check_public_network_connectivity (accepting a should_succeed) instead of duplicating the same functionality here.","commit_id":"ad50eb6bf5e6be94365c9f559f13fe370139ff2f"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"4e36fbfb3607024007e80eef3f4b4437b3a0ea6e","unresolved":false,"context_lines":[{"line_number":268,"context_line":"                self.free_floating_ips.append(floating_ip)"},{"line_number":269,"context_line":"                self.floating_ips[server] \u003d []"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def _check_floating_ips_disconnected(self):"},{"line_number":272,"context_line":"        for floating_ip in self.free_floating_ips:"},{"line_number":273,"context_line":"            ip_address \u003d floating_ip.floating_ip_address"},{"line_number":274,"context_line":"            self._check_vm_connectivity(ip_address, should_connect\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2Bw%2BA%3D","line":271,"in_reply_to":"AAAATn%2F%2B2q4%3D","updated":"2013-11-20 15:04:58.000000000","message":"Done","commit_id":"ad50eb6bf5e6be94365c9f559f13fe370139ff2f"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"f78da7a8894353541e91c939502c29927b50b898","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        public_network_id \u003d self.config.network.public_network_id"},{"line_number":242,"context_line":"        for server in self.servers:"},{"line_number":243,"context_line":"            floating_ip \u003d self._create_floating_ip(server, public_network_id)"},{"line_number":244,"context_line":"            self.floating_ips.setdefault(floating_ip, None)"},{"line_number":245,"context_line":"            self.floating_ips[floating_ip] \u003d server"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def _check_public_network_connectivity(self, should_connect\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F9qm8%3D","line":244,"updated":"2013-12-09 03:16:26.000000000","message":"The call to setdefault() was only necessary to ensure that the floating ip was associated to a list that could be appended to on the next line.  Since the association between floating ip and server no longer requires a list, this line can be removed.","commit_id":"560889017645b443fdd8671cfa19fc8c67b0b278"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"f9bf231426e51b3a0627558103ca3c84fa57a9d6","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        public_network_id \u003d self.config.network.public_network_id"},{"line_number":242,"context_line":"        for server in self.servers:"},{"line_number":243,"context_line":"            floating_ip \u003d self._create_floating_ip(server, public_network_id)"},{"line_number":244,"context_line":"            self.floating_ips.setdefault(floating_ip, None)"},{"line_number":245,"context_line":"            self.floating_ips[floating_ip] \u003d server"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def _check_public_network_connectivity(self, should_connect\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F9qIE%3D","line":244,"in_reply_to":"AAAATn%2F9qm8%3D","updated":"2013-12-09 07:23:01.000000000","message":"Done","commit_id":"560889017645b443fdd8671cfa19fc8c67b0b278"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"f78da7a8894353541e91c939502c29927b50b898","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    def _disassociate_floating_ips(self):"},{"line_number":265,"context_line":"        for floating_ip, server in self.floating_ips.iteritems():"},{"line_number":266,"context_line":"            self._disassociate_floating_ip(floating_ip)"},{"line_number":267,"context_line":"            self.floating_ips.setdefault(floating_ip, None)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":270,"context_line":"    @services(\u0027compute\u0027, \u0027network\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F9qm4%3D","line":267,"updated":"2013-12-09 03:16:26.000000000","message":"setdefault() is not required in this instance - just set the value to None e.g.\n\nself.floating_ips[floating_ip] \u003d None","commit_id":"560889017645b443fdd8671cfa19fc8c67b0b278"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"f9bf231426e51b3a0627558103ca3c84fa57a9d6","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    def _disassociate_floating_ips(self):"},{"line_number":265,"context_line":"        for floating_ip, server in self.floating_ips.iteritems():"},{"line_number":266,"context_line":"            self._disassociate_floating_ip(floating_ip)"},{"line_number":267,"context_line":"            self.floating_ips.setdefault(floating_ip, None)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":270,"context_line":"    @services(\u0027compute\u0027, \u0027network\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F9qH8%3D","line":267,"in_reply_to":"AAAATn%2F9qm4%3D","updated":"2013-12-09 07:23:01.000000000","message":"Done","commit_id":"560889017645b443fdd8671cfa19fc8c67b0b278"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"88d0ff2c57e77e904e41be844369bb7c46af8cc5","unresolved":false,"context_lines":[{"line_number":263,"context_line":"    def _disassociate_floating_ips(self):"},{"line_number":264,"context_line":"        for floating_ip, server in self.floating_ips.iteritems():"},{"line_number":265,"context_line":"            self._disassociate_floating_ip(floating_ip)"},{"line_number":266,"context_line":"            self.floating_ips.[floating_ip] \u003d None"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":269,"context_line":"    @services(\u0027compute\u0027, \u0027network\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9lis%3D","line":266,"updated":"2013-12-09 22:43:30.000000000","message":"Oops, I\u0027m guessing this stray period is causing the jenkins failures.","commit_id":"ea8d59f6a00ef307ce31a9834d5bbc6e4d4d90c7"}]}
