)]}'
{"tempest/scenario/manager.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"bec9df8a7caf0d0b1f5c73f149526e8e9344ee80","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            # Tempest clients return dicts, so there is no common delete"},{"line_number":129,"context_line":"            # method available. Using a callable instead"},{"line_number":130,"context_line":"            delete_thing(thing_id)"},{"line_number":131,"context_line":"        except exceptions.NotFound:"},{"line_number":132,"context_line":"            # If the resource is already missing, mission accomplished."},{"line_number":133,"context_line":"            pass"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_377fdde0","line":131,"updated":"2014-07-25 03:55:32.000000000","message":"do not we need to handle HTTPNotFound also here as in previous delete_wrapper.\n\nactually current caller clients does not have any issue but Image client through HTTPNotFound instead NotFound. So in case new image tests we might need that.","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"27b4d30eeeb719f5574b69896f48de14b8158da8","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            # Tempest clients return dicts, so there is no common delete"},{"line_number":129,"context_line":"            # method available. Using a callable instead"},{"line_number":130,"context_line":"            delete_thing(thing_id)"},{"line_number":131,"context_line":"        except exceptions.NotFound:"},{"line_number":132,"context_line":"            # If the resource is already missing, mission accomplished."},{"line_number":133,"context_line":"            pass"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_4d867d66","line":131,"in_reply_to":"baada198_048b82c0","updated":"2014-07-25 09:49:01.000000000","message":"Well I didn\u0027t think about the tempest\u0027s glance client. The regular rest client will always catch the 404 and issue a NotFound.\nThanks for catching this. I didn\u0027t find any reference to HTTPNotFound in tempest\u0027s glance, where did you get that from?","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"28f70f7ae623ee8a898bb2ceb173f1a116365b99","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            # Tempest clients return dicts, so there is no common delete"},{"line_number":129,"context_line":"            # method available. Using a callable instead"},{"line_number":130,"context_line":"            delete_thing(thing_id)"},{"line_number":131,"context_line":"        except exceptions.NotFound:"},{"line_number":132,"context_line":"            # If the resource is already missing, mission accomplished."},{"line_number":133,"context_line":"            pass"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_048b82c0","line":131,"in_reply_to":"baada198_377fdde0","updated":"2014-07-25 08:27:25.000000000","message":"Yeah, I\u0027m also curious about here.\n\"not_found_exception(exception):(L.459)\" has\n\n  NOT_FOUND_LIST \u003d [\u0027NotFound\u0027, \u0027HTTPNotFound\u0027]\n\nWhy do you remove HTTPNotFound? Is this intentional?","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8f3762a2307085b9810842ecd0241767d841dc60","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            # Tempest clients return dicts, so there is no common delete"},{"line_number":129,"context_line":"            # method available. Using a callable instead"},{"line_number":130,"context_line":"            delete_thing(thing_id)"},{"line_number":131,"context_line":"        except exceptions.NotFound:"},{"line_number":132,"context_line":"            # If the resource is already missing, mission accomplished."},{"line_number":133,"context_line":"            pass"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_9e6d1906","line":131,"in_reply_to":"baada198_4d867d66","updated":"2014-07-25 11:36:28.000000000","message":"Actually while delete image, glance can raise HTTPNotFound (https://github.com/openstack/glance/blob/master/glance/api/v1/images.pyL1009)\n\nCurrently we delete image in addcleanup only (in _image_create), and there is no case of re deleting already deleted image in scenario tests.\n\nIn future if tests are extended to have case where it can end up deleting the already deleted image then, we required to catch HTTPNotFound also.","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"fd7f0979e0a08da3b237dff247037a817e4ea19a","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            # Tempest clients return dicts, so there is no common delete"},{"line_number":129,"context_line":"            # method available. Using a callable instead"},{"line_number":130,"context_line":"            delete_thing(thing_id)"},{"line_number":131,"context_line":"        except exceptions.NotFound:"},{"line_number":132,"context_line":"            # If the resource is already missing, mission accomplished."},{"line_number":133,"context_line":"            pass"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_eb149642","line":131,"in_reply_to":"baada198_9e6d1906","updated":"2014-07-25 12:05:47.000000000","message":"Well whatever glance raises internally, it is transported over HTTP as a return code - 404 - plus some test.\nSo what matters really is how the rest client / HTTP lib we use behaves.\nrest_client.py always triggers a tempest.exception.NotFound upon 404.\nThe glance client for delete relies on rest_client implementation, so NotFound is fine for glance as well.","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"508fbb7014aeaff2addfb234db2f0616e6239e3f","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            # Tempest clients return dicts, so there is no common delete"},{"line_number":129,"context_line":"            # method available. Using a callable instead"},{"line_number":130,"context_line":"            delete_thing(thing_id)"},{"line_number":131,"context_line":"        except exceptions.NotFound:"},{"line_number":132,"context_line":"            # If the resource is already missing, mission accomplished."},{"line_number":133,"context_line":"            pass"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_192cc392","line":131,"in_reply_to":"baada198_9e6d1906","updated":"2014-07-25 11:40:15.000000000","message":"but if you intentionally did not include that by considering current case then i am ok. No hard -1 for this :).","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a811efd1efc31fb9a02b27e0f27f4ceddb4c1794","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            # Tempest clients return dicts, so there is no common delete"},{"line_number":129,"context_line":"            # method available. Using a callable instead"},{"line_number":130,"context_line":"            delete_thing(thing_id)"},{"line_number":131,"context_line":"        except exceptions.NotFound:"},{"line_number":132,"context_line":"            # If the resource is already missing, mission accomplished."},{"line_number":133,"context_line":"            pass"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_2be12ed0","line":131,"in_reply_to":"baada198_eb149642","updated":"2014-07-25 12:21:21.000000000","message":"I see. Thanks Andrea for clarification.","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"5f28f220e1e22582252792330ef8b4f6d434447b","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def create_server(self, name\u003dNone, image\u003dNone, flavor\u003dNone,"},{"line_number":180,"context_line":"                      wait_on_boot\u003dTrue, wait_on_delete\u003dTrue,"},{"line_number":181,"context_line":"                      create_kwargs\u003d{}):"},{"line_number":182,"context_line":"        \"\"\"Creates VM instance."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        @param image: image from which to create the instance"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_2b2f4af7","line":181,"updated":"2014-07-27 11:16:32.000000000","message":"s/create_kwargs\u003d{}/**create_kwargs","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"a4c01d7a1df3e2c371c3bbf1a66737921d121397","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def create_server(self, name\u003dNone, image\u003dNone, flavor\u003dNone,"},{"line_number":180,"context_line":"                      wait_on_boot\u003dTrue, wait_on_delete\u003dTrue,"},{"line_number":181,"context_line":"                      create_kwargs\u003d{}):"},{"line_number":182,"context_line":"        \"\"\"Creates VM instance."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        @param image: image from which to create the instance"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_7f2d3145","line":181,"in_reply_to":"baada198_2b2f4af7","updated":"2014-07-29 19:24:55.000000000","message":"The original function used a single dict parameter - I\u0027d rather not change the signature here.","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"c82538355c526ed278c14543b2fe2caa9c0fcf06","unresolved":false,"context_lines":[{"line_number":384,"context_line":"            servers \u003d servers[\u0027servers\u0027]"},{"line_number":385,"context_line":"        for server in servers:"},{"line_number":386,"context_line":"            LOG.debug(\u0027Console output for %s\u0027, server[\u0027id\u0027])"},{"line_number":387,"context_line":"            LOG.debug(self.servers_client.get_console_output(server[\u0027id\u0027]))"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"class OfficialClientTest(tempest.test.BaseTestCase):"}],"source_content_type":"text/x-python","patch_set":24,"id":"baada198_e424c3c4","line":387,"updated":"2014-08-10 11:05:59.000000000","message":"servers_client.get_console_output() takes exactly 3 arguments (2 given)\n\nmethod has argument \"length\". native client has \"length\u003dNone\". tempest client doesn\u0027t have default value to length.\nEither add default value to tempest native client (preferable, IMO) or add here \"self.servers_client.get_console_output(server[\u0027id\u0027], length\u003dNone)\" (easier, but less robust)\n\nhttp://logs.openstack.org/24/113124/2/check/check-tempest-dsvm-neutron-icehouse/4b5c4ea/console.html","commit_id":"6b7048c01d6de6f47630e15fe9eb1d81d8411135"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"34f56fbbc17018cdca75dd81f855d1069c6bef87","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            # If the resource is already missing, mission accomplished."},{"line_number":133,"context_line":"            pass"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def addCleanup_with_wait(self, waiter_callable, thing_id, thing_id_param,"},{"line_number":136,"context_line":"                             cleanup_callable, cleanup_args\u003d[],"},{"line_number":137,"context_line":"                             cleanup_kwargs\u003d{}, ignore_error\u003dTrue):"},{"line_number":138,"context_line":"        \"\"\"Adds wait for ansyc resource deletion at the end of cleanups"}],"source_content_type":"text/x-python","patch_set":28,"id":"1abeadc6_8d47b976","line":135,"updated":"2014-08-21 08:32:34.000000000","message":"to have just one style: add_cleanup_with_wait?","commit_id":"247058fb4e4defa27c3d5d99410de3d0490e5165"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"34f56fbbc17018cdca75dd81f855d1069c6bef87","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        return image[\u0027id\u0027]"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"    def glance_image_create(self):"},{"line_number":356,"context_line":"        qcow2_img_path \u003d (CONF.scenario.img_dir + \"/\" +"},{"line_number":357,"context_line":"                          CONF.scenario.qcow2_img_file)"},{"line_number":358,"context_line":"        aki_img_path \u003d CONF.scenario.img_dir + \"/\" + CONF.scenario.aki_img_file"},{"line_number":359,"context_line":"        ari_img_path \u003d CONF.scenario.img_dir + \"/\" + CONF.scenario.ari_img_file"}],"source_content_type":"text/x-python","patch_set":28,"id":"1abeadc6_70a31200","line":356,"updated":"2014-08-21 08:32:34.000000000","message":"Please use os.path.join for that","commit_id":"247058fb4e4defa27c3d5d99410de3d0490e5165"}],"tempest/scenario/test_minimum_basic.py":[{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"5f28f220e1e22582252792330ef8b4f6d434447b","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        server_id \u003d self.server[\u0027id\u0027]"},{"line_number":42,"context_line":"        # Raise on error defaults to True, which is consistent with the"},{"line_number":43,"context_line":"        # original function from scenario tests here"},{"line_number":44,"context_line":"        self.servers_client.wait_for_server_status(server_id, status)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def nova_keypair_add(self):"},{"line_number":47,"context_line":"        self.keypair \u003d self.create_keypair()"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_ebe9d2ab","line":44,"updated":"2014-07-27 11:16:32.000000000","message":"this seems like giving up the generic status_timeout in favor of resource-specific wait (wait_for_server)\n\nIs this the best way to go?\n\nAlso - IMO this method is redundant. Just use the self.servers_client.wait_for_server_status(self.server[\u0027id\u0027], status) instead.","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"a4c01d7a1df3e2c371c3bbf1a66737921d121397","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        server_id \u003d self.server[\u0027id\u0027]"},{"line_number":42,"context_line":"        # Raise on error defaults to True, which is consistent with the"},{"line_number":43,"context_line":"        # original function from scenario tests here"},{"line_number":44,"context_line":"        self.servers_client.wait_for_server_status(server_id, status)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def nova_keypair_add(self):"},{"line_number":47,"context_line":"        self.keypair \u003d self.create_keypair()"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_fdc69f9b","line":44,"in_reply_to":"baada198_ebe9d2ab","updated":"2014-07-29 19:24:55.000000000","message":"The status_timeout has been designed around official clients, and it was needed because official clients do not provide waiter functions. \nI did not see any value added in maintaining status_timeout and thus porting it to use tempest client, but I may have missed something. If so please let me know, I will reconsider.\n\nRe L41, I agree, but I would not do that kind of modification in this change. We can have an additional patch to clean-up unnecessary code, this change is large enough as it is.","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8c36bbd89c6ec7ecd382d7b96cefcf370d2a08d0","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        server_id \u003d self.server[\u0027id\u0027]"},{"line_number":42,"context_line":"        # Raise on error defaults to True, which is consistent with the"},{"line_number":43,"context_line":"        # original function from scenario tests here"},{"line_number":44,"context_line":"        self.servers_client.wait_for_server_status(server_id, status)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def nova_keypair_add(self):"},{"line_number":47,"context_line":"        self.keypair \u003d self.create_keypair()"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_3cb80075","line":44,"in_reply_to":"baada198_fdc69f9b","updated":"2014-07-30 10:49:48.000000000","message":"Giving up on status_timeout would mean creating waiter methods per resource (wait_server, wait_snapshot, wait_volume, wait_vip, wait_floatingip, wait_port). maybe we could implement a generic waiter to replace status_timeout in waiters module instead of scenario manager, but the alternative (dropping it completely) is, IMO, terribly wasteful.\nWe didn\u0027t need a generic waiter for tempest clients because each was self contained, but now that we are going to use them for integration, I believe it\u0027s going to be an issue","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"5f28f220e1e22582252792330ef8b4f6d434447b","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.servers_client.wait_for_server_status(server_id, status)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def nova_keypair_add(self):"},{"line_number":47,"context_line":"        self.keypair \u003d self.create_keypair()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def nova_boot(self):"},{"line_number":50,"context_line":"        create_kwargs \u003d {\u0027key_name\u0027: self.keypair[\u0027name\u0027]}"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_2b166aa7","line":47,"updated":"2014-07-27 11:16:32.000000000","message":"another 1-line method. can be dicarded","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"a4c01d7a1df3e2c371c3bbf1a66737921d121397","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.servers_client.wait_for_server_status(server_id, status)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def nova_keypair_add(self):"},{"line_number":47,"context_line":"        self.keypair \u003d self.create_keypair()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def nova_boot(self):"},{"line_number":50,"context_line":"        create_kwargs \u003d {\u0027key_name\u0027: self.keypair[\u0027name\u0027]}"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_5dbdcb02","line":47,"in_reply_to":"baada198_2b166aa7","updated":"2014-07-29 19:24:55.000000000","message":"ditto - unrelated change","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"5f28f220e1e22582252792330ef8b4f6d434447b","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def nova_boot(self):"},{"line_number":50,"context_line":"        create_kwargs \u003d {\u0027key_name\u0027: self.keypair[\u0027name\u0027]}"},{"line_number":51,"context_line":"        self.server \u003d self.create_server(image\u003dself.image,"},{"line_number":52,"context_line":"                                         create_kwargs\u003dcreate_kwargs)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def nova_list(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_4b09de82","line":51,"updated":"2014-07-27 11:16:32.000000000","message":"same here. especially if you edit \"create_kwargs\" as I suggested in previous module","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"a4c01d7a1df3e2c371c3bbf1a66737921d121397","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def nova_boot(self):"},{"line_number":50,"context_line":"        create_kwargs \u003d {\u0027key_name\u0027: self.keypair[\u0027name\u0027]}"},{"line_number":51,"context_line":"        self.server \u003d self.create_server(image\u003dself.image,"},{"line_number":52,"context_line":"                                         create_kwargs\u003dcreate_kwargs)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def nova_list(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_9db76321","line":51,"in_reply_to":"baada198_4b09de82","updated":"2014-07-29 19:24:55.000000000","message":"ditto - unrelated change","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"5f28f220e1e22582252792330ef8b4f6d434447b","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        _, got_server \u003d self.servers_client.get_server(self.server[\u0027id\u0027])"},{"line_number":62,"context_line":"        self.assertEqual(self.server, got_server)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def cinder_create(self):"},{"line_number":65,"context_line":"        self.volume \u003d self.create_volume()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def cinder_list(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_cb1c0ec5","line":64,"updated":"2014-07-27 11:16:32.000000000","message":"another 1-line method. can be dicarded","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"a4c01d7a1df3e2c371c3bbf1a66737921d121397","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        _, got_server \u003d self.servers_client.get_server(self.server[\u0027id\u0027])"},{"line_number":62,"context_line":"        self.assertEqual(self.server, got_server)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def cinder_create(self):"},{"line_number":65,"context_line":"        self.volume \u003d self.create_volume()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def cinder_list(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_bd5a67f3","line":64,"in_reply_to":"baada198_cb1c0ec5","updated":"2014-07-29 19:24:55.000000000","message":"ditto","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"5f28f220e1e22582252792330ef8b4f6d434447b","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            self.server[\u0027id\u0027], self.volume[\u0027id\u0027], \u0027/dev/vdb\u0027)"},{"line_number":79,"context_line":"        volume \u003d volume_attachment[\u0027volumeAttachment\u0027]"},{"line_number":80,"context_line":"        self.assertEqual(self.volume[\u0027id\u0027], volume[\u0027id\u0027])"},{"line_number":81,"context_line":"        self.volumes_client.wait_for_volume_status(volume[\u0027id\u0027], \u0027in-use\u0027)"},{"line_number":82,"context_line":"        # Refresh the volume after the attachment"},{"line_number":83,"context_line":"        _, self.volume \u003d self.volumes_client.get_volume(volume[\u0027id\u0027])"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_4b80febe","line":81,"updated":"2014-07-27 11:16:32.000000000","message":"another resource-specific waiter","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"a4c01d7a1df3e2c371c3bbf1a66737921d121397","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            self.server[\u0027id\u0027], self.volume[\u0027id\u0027], \u0027/dev/vdb\u0027)"},{"line_number":79,"context_line":"        volume \u003d volume_attachment[\u0027volumeAttachment\u0027]"},{"line_number":80,"context_line":"        self.assertEqual(self.volume[\u0027id\u0027], volume[\u0027id\u0027])"},{"line_number":81,"context_line":"        self.volumes_client.wait_for_volume_status(volume[\u0027id\u0027], \u0027in-use\u0027)"},{"line_number":82,"context_line":"        # Refresh the volume after the attachment"},{"line_number":83,"context_line":"        _, self.volume \u003d self.volumes_client.get_volume(volume[\u0027id\u0027])"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_3d6e5798","line":81,"in_reply_to":"baada198_4b80febe","updated":"2014-07-29 19:24:55.000000000","message":"ditto (l44)","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"5f28f220e1e22582252792330ef8b4f6d434447b","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                        self.floating_ips_client.delete_floating_ip,"},{"line_number":93,"context_line":"                        self.floating_ip[\u0027id\u0027])"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def nova_floating_ip_add(self):"},{"line_number":96,"context_line":"        self.floating_ips_client.associate_floating_ip_to_server("},{"line_number":97,"context_line":"            self.floating_ip[\u0027ip\u0027], self.server[\u0027id\u0027])"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_8b6db634","line":95,"updated":"2014-07-27 11:16:32.000000000","message":"another 1-line method. can be dicarded","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"a4c01d7a1df3e2c371c3bbf1a66737921d121397","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                        self.floating_ips_client.delete_floating_ip,"},{"line_number":93,"context_line":"                        self.floating_ip[\u0027id\u0027])"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def nova_floating_ip_add(self):"},{"line_number":96,"context_line":"        self.floating_ips_client.associate_floating_ip_to_server("},{"line_number":97,"context_line":"            self.floating_ip[\u0027ip\u0027], self.server[\u0027id\u0027])"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_7d68cf88","line":95,"in_reply_to":"baada198_8b6db634","updated":"2014-07-29 19:24:55.000000000","message":"ditto","commit_id":"f47dd31fb9dd3a4b64085c6a3a7d5ec8ba5f789a"}]}
