)]}'
{"shade/__init__.py":[{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"6321d77aca2701a38700b9f7416889349ad149cf","unresolved":false,"context_lines":[{"line_number":1038,"context_line":"                    msg\u003dstr(e)))"},{"line_number":1039,"context_line":""},{"line_number":1040,"context_line":"    def list_floating_ips(self):"},{"line_number":1041,"context_line":"        if self.has_service(\u0027network\u0027):"},{"line_number":1042,"context_line":"            return self._neutron_list_floating_ips()"},{"line_number":1043,"context_line":""},{"line_number":1044,"context_line":"        floating_ips \u003d self._nova_list_floating_ips()"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_49ccacba","line":1041,"updated":"2015-05-22 15:08:33.000000000","message":"This isn\u0027t going to work with Rackspace, which has a network endpoint but you can\u0027t actually use it.","commit_id":"34eb03eb17199d4ca0a3099933dd53ec6c458df7"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"f0d6224a84322e01be9f9024f6cc1aad72343305","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                 cache_arguments\u003dNone,"},{"line_number":260,"context_line":"                 manager\u003dNone,"},{"line_number":261,"context_line":"                 image_api_use_tasks\u003dFalse,"},{"line_number":262,"context_line":"                 floating_ip_source\u003d\u0027neutron\u0027,"},{"line_number":263,"context_line":"                 **kwargs):"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        self.name \u003d cloud"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_11b6afdc","line":262,"updated":"2015-06-01 19:25:01.000000000","message":"Is there an advantage to adding a new argument for this vs. just getting it from kwargs?  I ask because I do it differently in https://review.openstack.org/179945 which gets secgroup_source and we should probably coordinate on how we want to do this.","commit_id":"ca79cdae3d4fd8ba9cc7ae4598696a57110b649f"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"2e91cf267462da7fd42f955caef3b3ae0d069bb8","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                 cache_arguments\u003dNone,"},{"line_number":260,"context_line":"                 manager\u003dNone,"},{"line_number":261,"context_line":"                 image_api_use_tasks\u003dFalse,"},{"line_number":262,"context_line":"                 floating_ip_source\u003d\u0027neutron\u0027,"},{"line_number":263,"context_line":"                 **kwargs):"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        self.name \u003d cloud"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_a213075c","line":262,"in_reply_to":"5afe65bd_11b6afdc","updated":"2015-06-01 20:44:29.000000000","message":"I wondered the same. But then, looking at existing code, it turned out we are not using kwargs at all in init.\nI am fine with both solutions, tho.","commit_id":"ca79cdae3d4fd8ba9cc7ae4598696a57110b649f"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"9ccb9d280ec373474d497acb86a73f999315ac84","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                 cache_arguments\u003dNone,"},{"line_number":260,"context_line":"                 manager\u003dNone,"},{"line_number":261,"context_line":"                 image_api_use_tasks\u003dFalse,"},{"line_number":262,"context_line":"                 floating_ip_source\u003d\u0027neutron\u0027,"},{"line_number":263,"context_line":"                 **kwargs):"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        self.name \u003d cloud"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_1730ba00","line":262,"in_reply_to":"5afe65bd_17a43b55","updated":"2015-06-02 16:01:48.000000000","message":"@greghaynes... Monty and I discussed this a bit in IRC. Adding an explicit argument means keeping the defaults for the argument and those from os_client_config in sync. Seems like we could easily mix those up, so it would be better to just pull it from kwargs.","commit_id":"ca79cdae3d4fd8ba9cc7ae4598696a57110b649f"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"8e1700df671cc96076eeefb7c3fba1a817a329ce","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                 cache_arguments\u003dNone,"},{"line_number":260,"context_line":"                 manager\u003dNone,"},{"line_number":261,"context_line":"                 image_api_use_tasks\u003dFalse,"},{"line_number":262,"context_line":"                 floating_ip_source\u003d\u0027neutron\u0027,"},{"line_number":263,"context_line":"                 **kwargs):"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        self.name \u003d cloud"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_17a43b55","line":262,"in_reply_to":"5afe65bd_75ffef01","updated":"2015-06-02 15:42:58.000000000","message":"Ill add my 2c. We should use kwargs only when using a real argument doesnt work for some reason - using a real arg makes it much easier for doc readers and is less code to DTRT.\n\n(also, pink is the best shed color.)","commit_id":"ca79cdae3d4fd8ba9cc7ae4598696a57110b649f"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"7375d7c0b524229cf24a2398b35417ac921b5b2a","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                 cache_arguments\u003dNone,"},{"line_number":260,"context_line":"                 manager\u003dNone,"},{"line_number":261,"context_line":"                 image_api_use_tasks\u003dFalse,"},{"line_number":262,"context_line":"                 floating_ip_source\u003d\u0027neutron\u0027,"},{"line_number":263,"context_line":"                 **kwargs):"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        self.name \u003d cloud"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_75ffef01","line":262,"in_reply_to":"5afe65bd_a213075c","updated":"2015-06-02 13:56:02.000000000","message":"To clarify: we are not using kwargs to convey parameters used in __init__. We are using it for _get_service_value() of course!","commit_id":"ca79cdae3d4fd8ba9cc7ae4598696a57110b649f"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"ad120d97f1dcb2f65d3fa8df2bd43d5798f68564","unresolved":false,"context_lines":[{"line_number":994,"context_line":"                    msg\u003dstr(e)))"},{"line_number":995,"context_line":""},{"line_number":996,"context_line":"    def list_floating_ips(self):"},{"line_number":997,"context_line":"        if self.floating_ip_source \u003d\u003d \u0027neutron\u0027:"},{"line_number":998,"context_line":"            return self._neutron_list_floating_ips()"},{"line_number":999,"context_line":"        # Else, use nova-network"},{"line_number":1000,"context_line":"        floating_ips \u003d self._nova_list_floating_ips()"}],"source_content_type":"text/x-python","patch_set":9,"id":"3afb71cf_9e13cd0d","line":997,"updated":"2015-06-04 22:02:19.000000000","message":"floating_ip_source can be anything. I\u0027d be better to check if it is None or an unknown value and raise 2 different exceptions.","commit_id":"5dfdaf33c3c4b7fe667888cf282e2dfc897d4c9a"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"4c3cbf756af0439336217b407124102f4b158ec1","unresolved":false,"context_lines":[{"line_number":1005,"context_line":"        else:"},{"line_number":1006,"context_line":"            raise OpenStackCloudUnavailableFeature("},{"line_number":1007,"context_line":"                \"floating IP source \u0027{src}\u0027 is not supported\".format("},{"line_number":1008,"context_line":"                    src\u003dself.floating_ip_source))"},{"line_number":1009,"context_line":""},{"line_number":1010,"context_line":"    def _neutron_list_floating_ips(self):"},{"line_number":1011,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3afb71cf_ac1d2e11","line":1008,"updated":"2015-06-05 12:53:32.000000000","message":"This is confusing. If floating_ip_source is None, then that feature is unsupported and should raise UnavailableFeature. UnavailableService should be raised if, say, Neutron was not available, IMO.","commit_id":"fa669866a3b06109a1c3014224da2fc6a0d99a76"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"e7d12b1cdfebe199b34e05b1678fd15070aa7995","unresolved":false,"context_lines":[{"line_number":1005,"context_line":"        else:"},{"line_number":1006,"context_line":"            raise OpenStackCloudUnavailableFeature("},{"line_number":1007,"context_line":"                \"floating IP source \u0027{src}\u0027 is not supported\".format("},{"line_number":1008,"context_line":"                    src\u003dself.floating_ip_source))"},{"line_number":1009,"context_line":""},{"line_number":1010,"context_line":"    def _neutron_list_floating_ips(self):"},{"line_number":1011,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3afb71cf_cccaaa4f","line":1008,"in_reply_to":"3afb71cf_ac1d2e11","updated":"2015-06-05 12:58:14.000000000","message":"I think floating_ip_source being something other than nova, neutron or None should raise a config errror. Honestly, it should happen before here - and should probably happen in os-client-config. Which is to say I don\u0027t think this is the right place to validate that.","commit_id":"fa669866a3b06109a1c3014224da2fc6a0d99a76"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"bf2cf4376c96aec16c69327a876d6fbaabe86e27","unresolved":false,"context_lines":[{"line_number":1036,"context_line":"                self.log.debug("},{"line_number":1037,"context_line":"                    \"Something went wrong talking to neutron API: \""},{"line_number":1038,"context_line":"                    \"\u0027{msg}\u0027. Trying with Nova.\".format(msg\u003dstr(e)))"},{"line_number":1039,"context_line":"                # Fall-through, trying with Nova"},{"line_number":1040,"context_line":""},{"line_number":1041,"context_line":"        floating_ips \u003d self._nova_list_floating_ips()"},{"line_number":1042,"context_line":"        return _utils.normalize_nova_floating_ips(floating_ips)"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa32b979_2639f341","line":1039,"updated":"2015-06-16 01:29:44.000000000","message":"hm. I don\u0027t think this is appropriate. Interimittent failures shouldn\u0027t produce intermittent behaviors. Perhaps we should only fall through on permanent errors from neutronclient, and not rate limit or other such things? Also you\u0027ll never get that NeutronClient Exception because Exception is swallowed and turned into OpenStackCloudException in _neutron_list_floating_ips.","commit_id":"a55b5a8732916097bd7f2dfd1495dbcb8d03cfff"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"f8ccbb4d0e7925c8f5254bb085678f65e4507d2e","unresolved":false,"context_lines":[{"line_number":1036,"context_line":"                self.log.debug("},{"line_number":1037,"context_line":"                    \"Something went wrong talking to neutron API: \""},{"line_number":1038,"context_line":"                    \"\u0027{msg}\u0027. Trying with Nova.\".format(msg\u003dstr(e)))"},{"line_number":1039,"context_line":"                # Fall-through, trying with Nova"},{"line_number":1040,"context_line":""},{"line_number":1041,"context_line":"        floating_ips \u003d self._nova_list_floating_ips()"},{"line_number":1042,"context_line":"        return _utils.normalize_nova_floating_ips(floating_ips)"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa32b979_f9ee428a","line":1039,"in_reply_to":"fa32b979_2639f341","updated":"2015-06-16 09:48:15.000000000","message":"you are perfectly right. I had that handled with a specific \"except\" in _neutron_ method below, but I don\u0027t know what that disappeared :P\n\nWe need to add this \"special\" handling also to meta!","commit_id":"a55b5a8732916097bd7f2dfd1495dbcb8d03cfff"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"eb59644ced5d9fc5f36b442e1eadab25a46bd5b3","unresolved":false,"context_lines":[{"line_number":1036,"context_line":"                self.log.debug("},{"line_number":1037,"context_line":"                    \"Something went wrong talking to neutron API: \""},{"line_number":1038,"context_line":"                    \"\u0027{msg}\u0027. Trying with Nova.\".format(msg\u003dstr(e)))"},{"line_number":1039,"context_line":"                # Fall-through, trying with Nova"},{"line_number":1040,"context_line":""},{"line_number":1041,"context_line":"        floating_ips \u003d self._nova_list_floating_ips()"},{"line_number":1042,"context_line":"        return _utils.normalize_nova_floating_ips(floating_ips)"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa32b979_d2a2d7fb","line":1039,"in_reply_to":"fa32b979_f9ee428a","updated":"2015-06-17 22:28:08.000000000","message":"Done","commit_id":"a55b5a8732916097bd7f2dfd1495dbcb8d03cfff"}],"shade/tests/unit/test_floating_ip_neutron.py":[{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"ee705fee7bb5ff81d09d41e4660d2244954df6b9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":9,"id":"3afb71cf_f3c67a15","line":1,"updated":"2015-06-04 21:45:21.000000000","message":"nit: if you\u0027re not doing work for hire for HP, and you just cargo culted this, it\u0027s a good idea to drop this line since I\u0027m pretty sure it is inaccurate.","commit_id":"5dfdaf33c3c4b7fe667888cf282e2dfc897d4c9a"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"2dfbb96c4b43c8d9d767a42ad64638e7c2c85e82","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":9,"id":"3afb71cf_e0dd6d71","line":1,"in_reply_to":"3afb71cf_f3c67a15","updated":"2015-06-05 10:44:00.000000000","message":"I am! Position/tasks not yet formalised, tho.","commit_id":"5dfdaf33c3c4b7fe667888cf282e2dfc897d4c9a"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"ee705fee7bb5ff81d09d41e4660d2244954df6b9","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                \u0027router_id\u0027: \u0027d23abc8d-2991-4a55-ba98-2aaea84cc72f\u0027,"},{"line_number":32,"context_line":"                \u0027tenant_id\u0027: \u00274969c491a3c74ee4af974e6d800c62de\u0027,"},{"line_number":33,"context_line":"                \u0027floating_network_id\u0027: \u0027376da547-b977-4cfe-9cba-275c80debf57\u0027,"},{"line_number":34,"context_line":"                \u0027fixed_ip_address\u0027: \u002710.0.0.3\u0027,"},{"line_number":35,"context_line":"                \u0027floating_ip_address\u0027: \u0027172.24.4.228\u0027,"},{"line_number":36,"context_line":"                \u0027port_id\u0027: \u0027ce705c24-c1ef-408a-bda3-7bbd946164ab\u0027,"},{"line_number":37,"context_line":"                \u0027id\u0027: \u00272f245a7b-796b-4f26-9cf9-9e82d248fda7\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3afb71cf_d3cb7e1d","line":34,"updated":"2015-06-04 21:45:21.000000000","message":"In tests, please use RFC5737 TEST-NET-(1,2,3) and not RFC1918 addresses. TEST-NET-1 is 192.0.2.0/24, TEST-NET-2 is 198.51.100.0/24, and TEST-NET-3 is 203.0.113.0/24. This will ensure that the tests can run anywhere without interfering or implying anything that is supposed to work.","commit_id":"5dfdaf33c3c4b7fe667888cf282e2dfc897d4c9a"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"2dfbb96c4b43c8d9d767a42ad64638e7c2c85e82","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                \u0027router_id\u0027: \u0027d23abc8d-2991-4a55-ba98-2aaea84cc72f\u0027,"},{"line_number":32,"context_line":"                \u0027tenant_id\u0027: \u00274969c491a3c74ee4af974e6d800c62de\u0027,"},{"line_number":33,"context_line":"                \u0027floating_network_id\u0027: \u0027376da547-b977-4cfe-9cba-275c80debf57\u0027,"},{"line_number":34,"context_line":"                \u0027fixed_ip_address\u0027: \u002710.0.0.3\u0027,"},{"line_number":35,"context_line":"                \u0027floating_ip_address\u0027: \u0027172.24.4.228\u0027,"},{"line_number":36,"context_line":"                \u0027port_id\u0027: \u0027ce705c24-c1ef-408a-bda3-7bbd946164ab\u0027,"},{"line_number":37,"context_line":"                \u0027id\u0027: \u00272f245a7b-796b-4f26-9cf9-9e82d248fda7\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3afb71cf_4baa2772","line":34,"in_reply_to":"3afb71cf_d3cb7e1d","updated":"2015-06-05 10:44:00.000000000","message":"Done","commit_id":"5dfdaf33c3c4b7fe667888cf282e2dfc897d4c9a"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"ee705fee7bb5ff81d09d41e4660d2244954df6b9","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        floating_ips \u003d self.client.list_floating_ips()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        mock_neutron_client.list_floatingipsassert_called_with()"},{"line_number":65,"context_line":"        self.assertIsInstance(floating_ips, list)"},{"line_number":66,"context_line":"        self.assertEqual(2, len(floating_ips))"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3afb71cf_b3d002cb","line":64,"updated":"2015-06-04 21:45:21.000000000","message":"Oops, missed a ., those pesky mocks will pass anything. ;)","commit_id":"5dfdaf33c3c4b7fe667888cf282e2dfc897d4c9a"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"2dfbb96c4b43c8d9d767a42ad64638e7c2c85e82","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        floating_ips \u003d self.client.list_floating_ips()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        mock_neutron_client.list_floatingipsassert_called_with()"},{"line_number":65,"context_line":"        self.assertIsInstance(floating_ips, list)"},{"line_number":66,"context_line":"        self.assertEqual(2, len(floating_ips))"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3afb71cf_2bb6cbdc","line":64,"in_reply_to":"3afb71cf_b3d002cb","updated":"2015-06-05 10:44:00.000000000","message":"Done","commit_id":"5dfdaf33c3c4b7fe667888cf282e2dfc897d4c9a"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"ee705fee7bb5ff81d09d41e4660d2244954df6b9","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        mock_neutron_client.list_floatingipsassert_called_with()"},{"line_number":65,"context_line":"        self.assertIsInstance(floating_ips, list)"},{"line_number":66,"context_line":"        self.assertEqual(2, len(floating_ips))"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @patch.object(OpenStackCloud, \u0027neutron_client\u0027)"},{"line_number":69,"context_line":"    def test_search_floating_ips(self, mock_neutron_client):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3afb71cf_93d506bb","line":66,"updated":"2015-06-04 21:45:21.000000000","message":"Probably also want to assert that the list items are dicts.","commit_id":"5dfdaf33c3c4b7fe667888cf282e2dfc897d4c9a"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"2dfbb96c4b43c8d9d767a42ad64638e7c2c85e82","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        mock_neutron_client.list_floatingipsassert_called_with()"},{"line_number":65,"context_line":"        self.assertIsInstance(floating_ips, list)"},{"line_number":66,"context_line":"        self.assertEqual(2, len(floating_ips))"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @patch.object(OpenStackCloud, \u0027neutron_client\u0027)"},{"line_number":69,"context_line":"    def test_search_floating_ips(self, mock_neutron_client):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3afb71cf_6bdba31c","line":66,"in_reply_to":"3afb71cf_93d506bb","updated":"2015-06-05 10:44:00.000000000","message":"Done","commit_id":"5dfdaf33c3c4b7fe667888cf282e2dfc897d4c9a"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"ee705fee7bb5ff81d09d41e4660d2244954df6b9","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        floating_ips \u003d self.client.search_floating_ips("},{"line_number":74,"context_line":"            filters\u003d{\u0027port_id\u0027: None})"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        mock_neutron_client.list_floatingip.sassert_called_with()"},{"line_number":77,"context_line":"        self.assertIsInstance(floating_ips, list)"},{"line_number":78,"context_line":"        self.assertEqual(1, len(floating_ips))"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3afb71cf_73dbaaee","line":76,"updated":"2015-06-04 21:45:21.000000000","message":"Another mock fail, s/ip\\.sassert/ips.assert/","commit_id":"5dfdaf33c3c4b7fe667888cf282e2dfc897d4c9a"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"2dfbb96c4b43c8d9d767a42ad64638e7c2c85e82","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        floating_ips \u003d self.client.search_floating_ips("},{"line_number":74,"context_line":"            filters\u003d{\u0027port_id\u0027: None})"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        mock_neutron_client.list_floatingip.sassert_called_with()"},{"line_number":77,"context_line":"        self.assertIsInstance(floating_ips, list)"},{"line_number":78,"context_line":"        self.assertEqual(1, len(floating_ips))"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3afb71cf_abcabb4d","line":76,"in_reply_to":"3afb71cf_73dbaaee","updated":"2015-06-05 10:44:00.000000000","message":"Done","commit_id":"5dfdaf33c3c4b7fe667888cf282e2dfc897d4c9a"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"ee705fee7bb5ff81d09d41e4660d2244954df6b9","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        floating_ip \u003d self.client.get_floating_ip("},{"line_number":86,"context_line":"            id\u003d\u00272f245a7b-796b-4f26-9cf9-9e82d248fda7\u0027)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        mock_neutron_client.list_floatingip.sassert_called_with()"},{"line_number":89,"context_line":"        self.assertEqual(\u0027172.24.4.228\u0027, floating_ip[\u0027floating_ip_address\u0027])"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @patch.object(OpenStackCloud, \u0027neutron_client\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3afb71cf_53d8aeef","line":88,"updated":"2015-06-04 21:45:21.000000000","message":"cargo cult of the problem above","commit_id":"5dfdaf33c3c4b7fe667888cf282e2dfc897d4c9a"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"2dfbb96c4b43c8d9d767a42ad64638e7c2c85e82","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        floating_ip \u003d self.client.get_floating_ip("},{"line_number":86,"context_line":"            id\u003d\u00272f245a7b-796b-4f26-9cf9-9e82d248fda7\u0027)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        mock_neutron_client.list_floatingip.sassert_called_with()"},{"line_number":89,"context_line":"        self.assertEqual(\u0027172.24.4.228\u0027, floating_ip[\u0027floating_ip_address\u0027])"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @patch.object(OpenStackCloud, \u0027neutron_client\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3afb71cf_cbb4d7d2","line":88,"in_reply_to":"3afb71cf_53d8aeef","updated":"2015-06-05 10:44:00.000000000","message":"Done","commit_id":"5dfdaf33c3c4b7fe667888cf282e2dfc897d4c9a"}],"shade/tests/unit/test_floating_ip_nova.py":[{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"ee705fee7bb5ff81d09d41e4660d2244954df6b9","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            \u0027fixed_ip\u0027: \u002710.0.0.3\u0027,"},{"line_number":46,"context_line":"            \u0027id\u0027: 29,"},{"line_number":47,"context_line":"            \u0027instance_id\u0027: \u0027myself\u0027,"},{"line_number":48,"context_line":"            \u0027ip\u0027: \u002729.29.29.29\u0027,"},{"line_number":49,"context_line":"            \u0027pool\u0027: \u0027black_hole\u0027"},{"line_number":50,"context_line":"        }"},{"line_number":51,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":9,"id":"3afb71cf_33e532a8","line":48,"updated":"2015-06-04 21:45:21.000000000","message":"same here, TEST-NET\u0027s please","commit_id":"5dfdaf33c3c4b7fe667888cf282e2dfc897d4c9a"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"2dfbb96c4b43c8d9d767a42ad64638e7c2c85e82","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            \u0027fixed_ip\u0027: \u002710.0.0.3\u0027,"},{"line_number":46,"context_line":"            \u0027id\u0027: 29,"},{"line_number":47,"context_line":"            \u0027instance_id\u0027: \u0027myself\u0027,"},{"line_number":48,"context_line":"            \u0027ip\u0027: \u002729.29.29.29\u0027,"},{"line_number":49,"context_line":"            \u0027pool\u0027: \u0027black_hole\u0027"},{"line_number":50,"context_line":"        }"},{"line_number":51,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":9,"id":"3afb71cf_40d56141","line":48,"in_reply_to":"3afb71cf_33e532a8","updated":"2015-06-05 10:44:00.000000000","message":"Done","commit_id":"5dfdaf33c3c4b7fe667888cf282e2dfc897d4c9a"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"ee705fee7bb5ff81d09d41e4660d2244954df6b9","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        mock_nova_client.floating_ips.list.assert_called_with()"},{"line_number":66,"context_line":"        self.assertIsInstance(floating_ips, list)"},{"line_number":67,"context_line":"        self.assertEqual(3, len(floating_ips))"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    @patch.object(OpenStackCloud, \u0027nova_client\u0027)"},{"line_number":70,"context_line":"    def test_search_floating_ips(self, mock_nova_client):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3afb71cf_13e236a0","line":67,"updated":"2015-06-04 21:45:21.000000000","message":"And asserting dicts?","commit_id":"5dfdaf33c3c4b7fe667888cf282e2dfc897d4c9a"},{"author":{"_account_id":6550,"name":"Davide Guerri","email":"davide.guerri@gmail.com","username":"davide-guerri"},"change_message_id":"2dfbb96c4b43c8d9d767a42ad64638e7c2c85e82","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        mock_nova_client.floating_ips.list.assert_called_with()"},{"line_number":66,"context_line":"        self.assertIsInstance(floating_ips, list)"},{"line_number":67,"context_line":"        self.assertEqual(3, len(floating_ips))"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    @patch.object(OpenStackCloud, \u0027nova_client\u0027)"},{"line_number":70,"context_line":"    def test_search_floating_ips(self, mock_nova_client):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3afb71cf_20ca65a2","line":67,"in_reply_to":"3afb71cf_13e236a0","updated":"2015-06-05 10:44:00.000000000","message":"Done","commit_id":"5dfdaf33c3c4b7fe667888cf282e2dfc897d4c9a"}]}
