)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2d1c508845c137262767c968e1cb49b5297b5be5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add scenario test of instance snapshot and boot"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This test is for snapshotting an instance and booting with it."},{"line_number":10,"context_line":" * boot a instance and create a timestamp file in it"},{"line_number":11,"context_line":" * snapshot a instance"},{"line_number":12,"context_line":" * boot a second instance with the snapshot"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAPn%2F%2F1f8%3D","line":9,"updated":"2013-06-20 05:39:03.000000000","message":"+ The scenario likes the following:","commit_id":"ac2898becf20f21e0c7744cb9d9da58bb88ab454"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"e747303ae503033355d4a4c4e76926124c80d685","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add scenario test of instance snapshot and boot"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This test is for snapshotting an instance and booting with it."},{"line_number":10,"context_line":" * boot a instance and create a timestamp file in it"},{"line_number":11,"context_line":" * snapshot a instance"},{"line_number":12,"context_line":" * boot a second instance with the snapshot"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAPn%2F%2F1b4%3D","line":9,"in_reply_to":"AAAAPn%2F%2F1f8%3D","updated":"2013-06-20 06:29:49.000000000","message":"will fix","commit_id":"ac2898becf20f21e0c7744cb9d9da58bb88ab454"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2d1c508845c137262767c968e1cb49b5297b5be5","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This test is for snapshotting an instance and booting with it."},{"line_number":10,"context_line":" * boot a instance and create a timestamp file in it"},{"line_number":11,"context_line":" * snapshot a instance"},{"line_number":12,"context_line":" * boot a second instance with the snapshot"},{"line_number":13,"context_line":" * check the timestamp file in the second instance"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAPn%2F%2F1f4%3D","line":11,"updated":"2013-06-20 05:39:03.000000000","message":"a instance -\u003e the instance","commit_id":"ac2898becf20f21e0c7744cb9d9da58bb88ab454"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"e747303ae503033355d4a4c4e76926124c80d685","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This test is for snapshotting an instance and booting with it."},{"line_number":10,"context_line":" * boot a instance and create a timestamp file in it"},{"line_number":11,"context_line":" * snapshot a instance"},{"line_number":12,"context_line":" * boot a second instance with the snapshot"},{"line_number":13,"context_line":" * check the timestamp file in the second instance"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAPn%2F%2F1b0%3D","line":11,"in_reply_to":"AAAAPn%2F%2F1f4%3D","updated":"2013-06-20 06:29:49.000000000","message":"will fix","commit_id":"ac2898becf20f21e0c7744cb9d9da58bb88ab454"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2d1c508845c137262767c968e1cb49b5297b5be5","unresolved":false,"context_lines":[{"line_number":10,"context_line":" * boot a instance and create a timestamp file in it"},{"line_number":11,"context_line":" * snapshot a instance"},{"line_number":12,"context_line":" * boot a second instance with the snapshot"},{"line_number":13,"context_line":" * check the timestamp file in the second instance"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements: blueprint add-instance-snapshot-scenario-tests"},{"line_number":16,"context_line":"Change-Id: Ia20eaaae08af50d716c435e10e02d19d70d3adb5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAPn%2F%2F1fo%3D","line":13,"updated":"2013-06-20 05:39:03.000000000","message":"check the existence of the timestamp file in the second instance","commit_id":"ac2898becf20f21e0c7744cb9d9da58bb88ab454"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"e747303ae503033355d4a4c4e76926124c80d685","unresolved":false,"context_lines":[{"line_number":10,"context_line":" * boot a instance and create a timestamp file in it"},{"line_number":11,"context_line":" * snapshot a instance"},{"line_number":12,"context_line":" * boot a second instance with the snapshot"},{"line_number":13,"context_line":" * check the timestamp file in the second instance"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements: blueprint add-instance-snapshot-scenario-tests"},{"line_number":16,"context_line":"Change-Id: Ia20eaaae08af50d716c435e10e02d19d70d3adb5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAPn%2F%2F1bk%3D","line":13,"in_reply_to":"AAAAPn%2F%2F1fo%3D","updated":"2013-06-20 06:29:49.000000000","message":"will fix","commit_id":"ac2898becf20f21e0c7744cb9d9da58bb88ab454"}],"tempest/scenario/test_snapshot_pattern.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2d1c508845c137262767c968e1cb49b5297b5be5","unresolved":false,"context_lines":[{"line_number":31,"context_line":"     * boot a instance and create a timestamp file in it"},{"line_number":32,"context_line":"     * snapshot a instance"},{"line_number":33,"context_line":"     * boot a second instance from the snapshot"},{"line_number":34,"context_line":"     * check the timestamp file in the second instance"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    \"\"\""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F1fQ%3D","line":34,"updated":"2013-06-20 05:39:03.000000000","message":"ditto of the commit log.","commit_id":"ac2898becf20f21e0c7744cb9d9da58bb88ab454"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"e747303ae503033355d4a4c4e76926124c80d685","unresolved":false,"context_lines":[{"line_number":31,"context_line":"     * boot a instance and create a timestamp file in it"},{"line_number":32,"context_line":"     * snapshot a instance"},{"line_number":33,"context_line":"     * boot a second instance from the snapshot"},{"line_number":34,"context_line":"     * check the timestamp file in the second instance"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    \"\"\""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F1bg%3D","line":34,"in_reply_to":"AAAAPn%2F%2F1fQ%3D","updated":"2013-06-20 06:29:49.000000000","message":"OK. will fix.","commit_id":"ac2898becf20f21e0c7744cb9d9da58bb88ab454"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2d1c508845c137262767c968e1cb49b5297b5be5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def _wait_for_server_status(self, status):"},{"line_number":39,"context_line":"        server_id \u003d self.server.id"},{"line_number":40,"context_line":"        self.status_timeout("},{"line_number":41,"context_line":"            self.compute_client.servers, server_id, status)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def _wait_for_image_status(self, status):"},{"line_number":44,"context_line":"        self.status_timeout("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F1e4%3D","line":41,"updated":"2013-06-20 05:39:03.000000000","message":"self.image_id is used in the following _wait_for_image_status().\nSo how about changing sever_id to self.server.id?","commit_id":"ac2898becf20f21e0c7744cb9d9da58bb88ab454"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"e747303ae503033355d4a4c4e76926124c80d685","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def _wait_for_server_status(self, status):"},{"line_number":39,"context_line":"        server_id \u003d self.server.id"},{"line_number":40,"context_line":"        self.status_timeout("},{"line_number":41,"context_line":"            self.compute_client.servers, server_id, status)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def _wait_for_image_status(self, status):"},{"line_number":44,"context_line":"        self.status_timeout("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F1ak%3D","line":41,"in_reply_to":"AAAAPn%2F%2F1e4%3D","updated":"2013-06-20 06:29:49.000000000","message":"I see. That\u0027s good.","commit_id":"ac2898becf20f21e0c7744cb9d9da58bb88ab454"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2d1c508845c137262767c968e1cb49b5297b5be5","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.status_timeout("},{"line_number":45,"context_line":"            self.image_client.images, self.image_id, status)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _nova_boot(self, name\u003drand_name(\u0027scenario-server-\u0027), image\u003dNone):"},{"line_number":48,"context_line":"        client \u003d self.compute_client"},{"line_number":49,"context_line":"        flavor_id \u003d self.config.compute.flavor_ref"},{"line_number":50,"context_line":"        LOG.debug(\"name:%s, image:%s\" % (name, image))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F1eo%3D","line":47,"updated":"2013-06-20 05:39:03.000000000","message":"Does \"image\u003dNone\" make sense?\nAll callers of _nova_boot() append the argument \"image\", so I cannot see this reason.\n\nAlso I feel the argument \"name\u003drand_name(\u0027scenario-server-\u0027)\" is a little difficult.\nSo how about moving it into nova_boot()?","commit_id":"ac2898becf20f21e0c7744cb9d9da58bb88ab454"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"e747303ae503033355d4a4c4e76926124c80d685","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.status_timeout("},{"line_number":45,"context_line":"            self.image_client.images, self.image_id, status)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _nova_boot(self, name\u003drand_name(\u0027scenario-server-\u0027), image\u003dNone):"},{"line_number":48,"context_line":"        client \u003d self.compute_client"},{"line_number":49,"context_line":"        flavor_id \u003d self.config.compute.flavor_ref"},{"line_number":50,"context_line":"        LOG.debug(\"name:%s, image:%s\" % (name, image))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F1Zk%3D","line":47,"in_reply_to":"AAAAPn%2F%2F1eo%3D","updated":"2013-06-20 06:29:49.000000000","message":"OK.I think you\u0027re right.\nI will fix this.","commit_id":"ac2898becf20f21e0c7744cb9d9da58bb88ab454"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2d1c508845c137262767c968e1cb49b5297b5be5","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        create_image_client \u003d self.compute_client.servers.create_image"},{"line_number":110,"context_line":"        self.image_id \u003d create_image_client(self.server, name)"},{"line_number":111,"context_line":"        self._wait_for_server_status(\u0027ACTIVE\u0027)"},{"line_number":112,"context_line":"        self._wait_for_image_status(\u0027active\u0027)"},{"line_number":113,"context_line":"        self.addCleanup(self.image_client.images.delete, self.image_id)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def glance_image_show(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F1eE%3D","line":112,"updated":"2013-06-20 05:39:03.000000000","message":"interesting. the key of server_status is different from image_status ;-)","commit_id":"ac2898becf20f21e0c7744cb9d9da58bb88ab454"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"46ada0392911ab699362f5b6c016e61d86f81970","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        create_image_client \u003d self.compute_client.servers.create_image"},{"line_number":110,"context_line":"        self.image_id \u003d create_image_client(self.server, name)"},{"line_number":111,"context_line":"        self._wait_for_server_status(\u0027ACTIVE\u0027)"},{"line_number":112,"context_line":"        self._wait_for_image_status(\u0027active\u0027)"},{"line_number":113,"context_line":"        self.addCleanup(self.image_client.images.delete, self.image_id)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def glance_image_show(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F1TM%3D","line":112,"in_reply_to":"AAAAPn%2F%2F1Vg%3D","updated":"2013-06-20 06:36:15.000000000","message":"also interesting.","commit_id":"ac2898becf20f21e0c7744cb9d9da58bb88ab454"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"e747303ae503033355d4a4c4e76926124c80d685","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        create_image_client \u003d self.compute_client.servers.create_image"},{"line_number":110,"context_line":"        self.image_id \u003d create_image_client(self.server, name)"},{"line_number":111,"context_line":"        self._wait_for_server_status(\u0027ACTIVE\u0027)"},{"line_number":112,"context_line":"        self._wait_for_image_status(\u0027active\u0027)"},{"line_number":113,"context_line":"        self.addCleanup(self.image_client.images.delete, self.image_id)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def glance_image_show(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F1Vg%3D","line":112,"in_reply_to":"AAAAPn%2F%2F1eE%3D","updated":"2013-06-20 06:29:49.000000000","message":"Yes. And, there is also difference between Horizon and CLI.\ne.g. CLI: nova list: Status\u003d\u0027ACTIVE\u0027, Horizon: Status\u003d\u0027Active\u0027.","commit_id":"ac2898becf20f21e0c7744cb9d9da58bb88ab454"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2d1c508845c137262767c968e1cb49b5297b5be5","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        self.addCleanup(self.image_client.images.delete, self.image_id)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def glance_image_show(self):"},{"line_number":116,"context_line":"        self.snapshot_image \u003d self.image_client.images.get(self.image_id)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def nova_boot_from_snapshot(self):"},{"line_number":119,"context_line":"        name \u003d rand_name(\u0027scenario-server-snapshot\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F1dk%3D","line":116,"updated":"2013-06-20 05:39:03.000000000","message":"Is this glance_image_show() necessary?\n\nself.snapshot_image is used only for getting its id, but I guess we have gotten it with \"self.image_id\".","commit_id":"ac2898becf20f21e0c7744cb9d9da58bb88ab454"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"46ada0392911ab699362f5b6c016e61d86f81970","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        self.addCleanup(self.image_client.images.delete, self.image_id)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def glance_image_show(self):"},{"line_number":116,"context_line":"        self.snapshot_image \u003d self.image_client.images.get(self.image_id)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def nova_boot_from_snapshot(self):"},{"line_number":119,"context_line":"        name \u003d rand_name(\u0027scenario-server-snapshot\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F1S4%3D","line":116,"in_reply_to":"AAAAPn%2F%2F1WQ%3D","updated":"2013-06-20 06:36:15.000000000","message":"I see, your opinion is reasonable.\nIt is good to use multiple services in scenario tests.","commit_id":"ac2898becf20f21e0c7744cb9d9da58bb88ab454"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"e747303ae503033355d4a4c4e76926124c80d685","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        self.addCleanup(self.image_client.images.delete, self.image_id)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def glance_image_show(self):"},{"line_number":116,"context_line":"        self.snapshot_image \u003d self.image_client.images.get(self.image_id)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def nova_boot_from_snapshot(self):"},{"line_number":119,"context_line":"        name \u003d rand_name(\u0027scenario-server-snapshot\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F1WQ%3D","line":116,"in_reply_to":"AAAAPn%2F%2F1dk%3D","updated":"2013-06-20 06:29:49.000000000","message":"I think this is necessary for this scenario test.\nBecause a scenario test should check the interaction of multiple services.\nSo I think we should test by using glance library explicitly.\nHowever, your point is interesting. I will use not only its id but also its name.","commit_id":"ac2898becf20f21e0c7744cb9d9da58bb88ab454"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"0ef897ca021bf1b089c938f0fb1b2a717e1468cb","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def _wait_for_image_status(self, status):"},{"line_number":45,"context_line":"        self.status_timeout(self.image_client.images, self.image_id, status)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _nova_boot(self, name, image):"},{"line_number":48,"context_line":"        client \u003d self.compute_client"},{"line_number":49,"context_line":"        flavor_id \u003d self.config.compute.flavor_ref"},{"line_number":50,"context_line":"        LOG.debug(\"name:%s, image:%s\" % (name, image))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2F01Q%3D","line":47,"updated":"2013-06-20 10:49:55.000000000","message":"I\u0027d just move these steps in nova_boot","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"288af4049a0f3287708a00e80daaf357023dc337","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def _wait_for_image_status(self, status):"},{"line_number":45,"context_line":"        self.status_timeout(self.image_client.images, self.image_id, status)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _nova_boot(self, name, image):"},{"line_number":48,"context_line":"        client \u003d self.compute_client"},{"line_number":49,"context_line":"        flavor_id \u003d self.config.compute.flavor_ref"},{"line_number":50,"context_line":"        LOG.debug(\"name:%s, image:%s\" % (name, image))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2Fyzo%3D","line":47,"in_reply_to":"AAAAPn%2F%2F01Q%3D","updated":"2013-06-21 05:20:38.000000000","message":"\u0027nova_boot_from_snapshot\u0027 also uses this function. So I think moving these steps make duplicate codes.\nBut I think the distance of \u0027nova_boot\u0027 and \u0027nova_boot_from_snapshot\u0027 cause the misunderstanding. I will rename the function names(_nova_boot -\u003e _server_create) and fix this.","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"0ef897ca021bf1b089c938f0fb1b2a717e1468cb","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        client \u003d self.compute_client"},{"line_number":49,"context_line":"        flavor_id \u003d self.config.compute.flavor_ref"},{"line_number":50,"context_line":"        LOG.debug(\"name:%s, image:%s\" % (name, image))"},{"line_number":51,"context_line":"        self.server \u003d client.servers.create(name\u003dname,"},{"line_number":52,"context_line":"                                            image\u003dimage,"},{"line_number":53,"context_line":"                                            flavor\u003dflavor_id,"},{"line_number":54,"context_line":"                                            key_name\u003dself.keypair.name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2F014%3D","line":51,"updated":"2013-06-20 10:49:55.000000000","message":"why not store the result tuple in resp, server ?","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"288af4049a0f3287708a00e80daaf357023dc337","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        client \u003d self.compute_client"},{"line_number":49,"context_line":"        flavor_id \u003d self.config.compute.flavor_ref"},{"line_number":50,"context_line":"        LOG.debug(\"name:%s, image:%s\" % (name, image))"},{"line_number":51,"context_line":"        self.server \u003d client.servers.create(name\u003dname,"},{"line_number":52,"context_line":"                                            image\u003dimage,"},{"line_number":53,"context_line":"                                            flavor\u003dflavor_id,"},{"line_number":54,"context_line":"                                            key_name\u003dself.keypair.name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FzBI%3D","line":51,"in_reply_to":"AAAAPn%2F%2F014%3D","updated":"2013-06-21 05:20:38.000000000","message":"AFAIK, novaclient.client.Client.servers.create() returns Server instance only, not tuple.\nSo I think we cannot get the result tuple here.","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"0ef897ca021bf1b089c938f0fb1b2a717e1468cb","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self._nova_boot(name\u003drand_name(\u0027scenario-server-\u0027),"},{"line_number":68,"context_line":"                        image\u003dself.config.compute.image_ref)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def nova_show(self):"},{"line_number":71,"context_line":"        got_server \u003d self.compute_client.servers.get(self.server)"},{"line_number":72,"context_line":"        LOG.debug(\"got server:%s\" % got_server)"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2F01k%3D","line":70,"updated":"2013-06-20 10:49:55.000000000","message":"shouldn\u0027t this start with _ ?","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"288af4049a0f3287708a00e80daaf357023dc337","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self._nova_boot(name\u003drand_name(\u0027scenario-server-\u0027),"},{"line_number":68,"context_line":"                        image\u003dself.config.compute.image_ref)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def nova_show(self):"},{"line_number":71,"context_line":"        got_server \u003d self.compute_client.servers.get(self.server)"},{"line_number":72,"context_line":"        LOG.debug(\"got server:%s\" % got_server)"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2Fy0c%3D","line":70,"in_reply_to":"AAAAPn%2F%2F01k%3D","updated":"2013-06-21 05:20:38.000000000","message":"I see. I will change all non test functions to \"private\"(_).","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"0ef897ca021bf1b089c938f0fb1b2a717e1468cb","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                        image\u003dself.config.compute.image_ref)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def nova_show(self):"},{"line_number":71,"context_line":"        got_server \u003d self.compute_client.servers.get(self.server)"},{"line_number":72,"context_line":"        LOG.debug(\"got server:%s\" % got_server)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        self.assertEqual(self.server, got_server)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2F00k%3D","line":71,"updated":"2013-06-20 10:49:55.000000000","message":"why not store the result tuple in resp, server ?","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"288af4049a0f3287708a00e80daaf357023dc337","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                        image\u003dself.config.compute.image_ref)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def nova_show(self):"},{"line_number":71,"context_line":"        got_server \u003d self.compute_client.servers.get(self.server)"},{"line_number":72,"context_line":"        LOG.debug(\"got server:%s\" % got_server)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        self.assertEqual(self.server, got_server)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2Fyyg%3D","line":71,"in_reply_to":"AAAAPn%2F%2F00k%3D","updated":"2013-06-21 05:20:38.000000000","message":"again. AFAIK, we cannot.","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"0ef897ca021bf1b089c938f0fb1b2a717e1468cb","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def nova_show(self):"},{"line_number":71,"context_line":"        got_server \u003d self.compute_client.servers.get(self.server)"},{"line_number":72,"context_line":"        LOG.debug(\"got server:%s\" % got_server)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        self.assertEqual(self.server, got_server)"},{"line_number":75,"context_line":"        self.server \u003d got_server"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2F010%3D","line":73,"updated":"2013-06-20 10:49:55.000000000","message":"unneeed blank line","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"288af4049a0f3287708a00e80daaf357023dc337","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def nova_show(self):"},{"line_number":71,"context_line":"        got_server \u003d self.compute_client.servers.get(self.server)"},{"line_number":72,"context_line":"        LOG.debug(\"got server:%s\" % got_server)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        self.assertEqual(self.server, got_server)"},{"line_number":75,"context_line":"        self.server \u003d got_server"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FzA8%3D","line":73,"in_reply_to":"AAAAPn%2F%2F010%3D","updated":"2013-06-21 05:20:38.000000000","message":"Yes. I will remove this blank line.","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"0ef897ca021bf1b089c938f0fb1b2a717e1468cb","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        got_server \u003d self.compute_client.servers.get(self.server)"},{"line_number":72,"context_line":"        LOG.debug(\"got server:%s\" % got_server)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        self.assertEqual(self.server, got_server)"},{"line_number":75,"context_line":"        self.server \u003d got_server"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def nova_security_group_rule_create(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2F01s%3D","line":74,"updated":"2013-06-20 10:49:55.000000000","message":"take care if you split on line 71 you\u0027ll have to review the assertion","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"288af4049a0f3287708a00e80daaf357023dc337","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        got_server \u003d self.compute_client.servers.get(self.server)"},{"line_number":72,"context_line":"        LOG.debug(\"got server:%s\" % got_server)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        self.assertEqual(self.server, got_server)"},{"line_number":75,"context_line":"        self.server \u003d got_server"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def nova_security_group_rule_create(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FyyY%3D","line":74,"in_reply_to":"AAAAPn%2F%2F01s%3D","updated":"2013-06-21 05:20:38.000000000","message":"Thank you. I will remove this function.","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"0ef897ca021bf1b089c938f0fb1b2a717e1468cb","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                                         pkey\u003dself.keypair.private_key)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def write_timestamp(self):"},{"line_number":104,"context_line":"        ssh_client \u003d self.linux_client.ssh_client"},{"line_number":105,"context_line":"        ssh_client.exec_command(\u0027date \u003e timestamp; sync\u0027)"},{"line_number":106,"context_line":"        self.timestamp \u003d ssh_client.exec_command(\u0027cat timestamp\u0027)"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2F000%3D","line":104,"updated":"2013-06-20 10:49:55.000000000","message":"I\u0027d use an absolute path (maybe /tmp) for the timestamp file","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"288af4049a0f3287708a00e80daaf357023dc337","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                                         pkey\u003dself.keypair.private_key)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def write_timestamp(self):"},{"line_number":104,"context_line":"        ssh_client \u003d self.linux_client.ssh_client"},{"line_number":105,"context_line":"        ssh_client.exec_command(\u0027date \u003e timestamp; sync\u0027)"},{"line_number":106,"context_line":"        self.timestamp \u003d ssh_client.exec_command(\u0027cat timestamp\u0027)"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FzAw%3D","line":104,"in_reply_to":"AAAAPn%2F%2F000%3D","updated":"2013-06-21 05:20:38.000000000","message":"Sounds good.\nI will fix.","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"0ef897ca021bf1b089c938f0fb1b2a717e1468cb","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        self.image_id \u003d create_image_client(self.server, self.snapshot_name)"},{"line_number":112,"context_line":"        self._wait_for_server_status(\u0027ACTIVE\u0027)"},{"line_number":113,"context_line":"        self._wait_for_image_status(\u0027active\u0027)"},{"line_number":114,"context_line":"        self.addCleanup(self.image_client.images.delete, self.image_id)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def glance_image_show(self):"},{"line_number":117,"context_line":"        self.snapshot_image \u003d self.image_client.images.get(self.image_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2F01A%3D","line":114,"updated":"2013-06-20 10:49:55.000000000","message":"you may want to move the cleanup step before the _wait conditions, cause we\u0027ll have to delete it anyway","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"288af4049a0f3287708a00e80daaf357023dc337","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        self.image_id \u003d create_image_client(self.server, self.snapshot_name)"},{"line_number":112,"context_line":"        self._wait_for_server_status(\u0027ACTIVE\u0027)"},{"line_number":113,"context_line":"        self._wait_for_image_status(\u0027active\u0027)"},{"line_number":114,"context_line":"        self.addCleanup(self.image_client.images.delete, self.image_id)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def glance_image_show(self):"},{"line_number":117,"context_line":"        self.snapshot_image \u003d self.image_client.images.get(self.image_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FzAk%3D","line":114,"in_reply_to":"AAAAPn%2F%2F01A%3D","updated":"2013-06-21 05:20:38.000000000","message":"You are right. I will fix.","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"0ef897ca021bf1b089c938f0fb1b2a717e1468cb","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        self.addCleanup(self.image_client.images.delete, self.image_id)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def glance_image_show(self):"},{"line_number":117,"context_line":"        self.snapshot_image \u003d self.image_client.images.get(self.image_id)"},{"line_number":118,"context_line":"        self.assertEquals(self.snapshot_name, self.snapshot_image.name)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def nova_boot_from_snapshot(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2F0zw%3D","line":117,"updated":"2013-06-20 10:49:55.000000000","message":"again I\u0027d split the result in resp and image","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"0ef897ca021bf1b089c938f0fb1b2a717e1468cb","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    def test_snapshot_pattern(self):"},{"line_number":130,"context_line":"        self.nova_keypair_add()"},{"line_number":131,"context_line":"        self.nova_boot()"},{"line_number":132,"context_line":"        self.nova_show()"},{"line_number":133,"context_line":"        self.nova_security_group_rule_create()"},{"line_number":134,"context_line":"        self.ssh_to_server()"},{"line_number":135,"context_line":"        self.write_timestamp()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2F0zo%3D","line":132,"updated":"2013-06-20 10:49:55.000000000","message":"do we really need the nova show at all in this test?","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"288af4049a0f3287708a00e80daaf357023dc337","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    def test_snapshot_pattern(self):"},{"line_number":130,"context_line":"        self.nova_keypair_add()"},{"line_number":131,"context_line":"        self.nova_boot()"},{"line_number":132,"context_line":"        self.nova_show()"},{"line_number":133,"context_line":"        self.nova_security_group_rule_create()"},{"line_number":134,"context_line":"        self.ssh_to_server()"},{"line_number":135,"context_line":"        self.write_timestamp()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2Fy0E%3D","line":132,"in_reply_to":"AAAAPn%2F%2F0zo%3D","updated":"2013-06-21 05:20:38.000000000","message":"I think this \u0027nova show\u0027 is normal user operation. So I write this.\nHowever, \u0027nova show\u0027 is not mandatory, indeed.\nI will remove \u0027nova_show()\u0027 function.","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"21c354b4e1f350d7ef6bb8ece6fbd4fe2576320a","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        self.glance_image_show()"},{"line_number":138,"context_line":"        self.nova_boot_from_snapshot()"},{"line_number":139,"context_line":"        self.nova_show()"},{"line_number":140,"context_line":"        self.ssh_to_server()"},{"line_number":141,"context_line":"        self.check_timestamp()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2F1Rs%3D","line":140,"updated":"2013-06-20 07:01:18.000000000","message":"This seems a little difficult to understand the behavior.\nI misunderstood here was for connecting the original server.\n\nHow about changing line138 to \"second_instance \u003d ...\" and here to \"self.ssh_to_server(second_instance)\"?","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"288af4049a0f3287708a00e80daaf357023dc337","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        self.glance_image_show()"},{"line_number":138,"context_line":"        self.nova_boot_from_snapshot()"},{"line_number":139,"context_line":"        self.nova_show()"},{"line_number":140,"context_line":"        self.ssh_to_server()"},{"line_number":141,"context_line":"        self.check_timestamp()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FzAU%3D","line":140,"in_reply_to":"AAAAPn%2F%2F1Rs%3D","updated":"2013-06-21 05:20:38.000000000","message":"Thank you for your suggestion. I will consider and fix it.","commit_id":"06d9f54614191a7b3f76da5a8e11f9e64c7207cd"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"464dc0eac610ae9adb1d70c424976d27fc00e5d5","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                                   image\u003dself.config.compute.image_ref)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _nova_boot_from_snapshot(self):"},{"line_number":67,"context_line":"        name \u003d rand_name(\u0027scenario-server-snapshot\u0027)"},{"line_number":68,"context_line":"        return self._server_create(name\u003dname, image\u003dself.snapshot_image.id)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def _nova_keypair_add(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2FypE%3D","line":67,"updated":"2013-06-21 06:54:16.000000000","message":"nit: should be \u0027scenario-snapshot-server-\u0027?","commit_id":"2dd8aa454cb56a9c59b8cac98a8e94cc26a479e4"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"56bf39f714b40f50778d80e3be5e96b54e77e54f","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                                   image\u003dself.config.compute.image_ref)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _nova_boot_from_snapshot(self):"},{"line_number":67,"context_line":"        name \u003d rand_name(\u0027scenario-server-snapshot\u0027)"},{"line_number":68,"context_line":"        return self._server_create(name\u003dname, image\u003dself.snapshot_image.id)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def _nova_keypair_add(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2Fym8%3D","line":67,"in_reply_to":"AAAAPn%2F%2FypE%3D","updated":"2013-06-21 07:12:29.000000000","message":"Indeed. I am using mixed style now... I will fix these. Thanks!","commit_id":"2dd8aa454cb56a9c59b8cac98a8e94cc26a479e4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"464dc0eac610ae9adb1d70c424976d27fc00e5d5","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        self.timestamp \u003d ssh_client.exec_command(\u0027cat /tmp/timestamp\u0027)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def _nova_image_create(self, server):"},{"line_number":109,"context_line":"        self.snapshot_name \u003d rand_name(\u0027scenario-snapshot\u0027)"},{"line_number":110,"context_line":"        create_image_client \u003d self.compute_client.servers.create_image"},{"line_number":111,"context_line":"        self.image_id \u003d create_image_client(server, self.snapshot_name)"},{"line_number":112,"context_line":"        self.addCleanup(self.image_client.images.delete, self.image_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2Fyo8%3D","line":109,"updated":"2013-06-21 06:54:16.000000000","message":"nit: should be \u0027scenario-snapshot-\u0027?","commit_id":"2dd8aa454cb56a9c59b8cac98a8e94cc26a479e4"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"56bf39f714b40f50778d80e3be5e96b54e77e54f","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        self.timestamp \u003d ssh_client.exec_command(\u0027cat /tmp/timestamp\u0027)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def _nova_image_create(self, server):"},{"line_number":109,"context_line":"        self.snapshot_name \u003d rand_name(\u0027scenario-snapshot\u0027)"},{"line_number":110,"context_line":"        create_image_client \u003d self.compute_client.servers.create_image"},{"line_number":111,"context_line":"        self.image_id \u003d create_image_client(server, self.snapshot_name)"},{"line_number":112,"context_line":"        self.addCleanup(self.image_client.images.delete, self.image_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2Fym0%3D","line":109,"in_reply_to":"AAAAPn%2F%2Fyo8%3D","updated":"2013-06-21 07:12:29.000000000","message":"will fix.","commit_id":"2dd8aa454cb56a9c59b8cac98a8e94cc26a479e4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"464dc0eac610ae9adb1d70c424976d27fc00e5d5","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    def test_snapshot_pattern(self):"},{"line_number":125,"context_line":"        self._nova_keypair_add()"},{"line_number":126,"context_line":"        server \u003d self._nova_boot()"},{"line_number":127,"context_line":"        self._nova_security_group_rule_create()"},{"line_number":128,"context_line":"        ssh_client \u003d self._ssh_to_server(server)"},{"line_number":129,"context_line":"        self._write_timestamp(ssh_client)"},{"line_number":130,"context_line":"        self._nova_image_create(server)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2Fyo4%3D","line":127,"updated":"2013-06-21 06:54:16.000000000","message":"For understanding this scenario easily, how about adding blank line to here, line130, and line133?","commit_id":"2dd8aa454cb56a9c59b8cac98a8e94cc26a479e4"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"56bf39f714b40f50778d80e3be5e96b54e77e54f","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    def test_snapshot_pattern(self):"},{"line_number":125,"context_line":"        self._nova_keypair_add()"},{"line_number":126,"context_line":"        server \u003d self._nova_boot()"},{"line_number":127,"context_line":"        self._nova_security_group_rule_create()"},{"line_number":128,"context_line":"        ssh_client \u003d self._ssh_to_server(server)"},{"line_number":129,"context_line":"        self._write_timestamp(ssh_client)"},{"line_number":130,"context_line":"        self._nova_image_create(server)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2Fyms%3D","line":127,"in_reply_to":"AAAAPn%2F%2Fyo4%3D","updated":"2013-06-21 07:12:29.000000000","message":"OK. I will try it. Thanks.","commit_id":"2dd8aa454cb56a9c59b8cac98a8e94cc26a479e4"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"bcdfcc48b763b397e549ba4a55970562bd9d905d","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def _ssh_to_server(self, server):"},{"line_number":89,"context_line":"        username \u003d self.config.scenario.ssh_user"},{"line_number":90,"context_line":"        ip \u003d server.networks[\u0027private\u0027][0]"},{"line_number":91,"context_line":"        linux_client \u003d RemoteClient(ip,"},{"line_number":92,"context_line":"                                    username,"},{"line_number":93,"context_line":"                                    pkey\u003dself.keypair.private_key)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2FwLU%3D","line":90,"updated":"2013-06-22 05:48:39.000000000","message":"Please use compute.network_for_ssh configuration variable here.\n\nThe \u0027private\u0027 named network does not necessary exist everywhere.","commit_id":"33e13d98e318b69915ff8839c6250e220cff7cc7"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"c8e32f82223cec3f72030cbe4ec8b3edc09475cb","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def _ssh_to_server(self, server):"},{"line_number":89,"context_line":"        username \u003d self.config.scenario.ssh_user"},{"line_number":90,"context_line":"        ip \u003d server.networks[\u0027private\u0027][0]"},{"line_number":91,"context_line":"        linux_client \u003d RemoteClient(ip,"},{"line_number":92,"context_line":"                                    username,"},{"line_number":93,"context_line":"                                    pkey\u003dself.keypair.private_key)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2Fvxg%3D","line":90,"in_reply_to":"AAAAPn%2F%2FwLU%3D","updated":"2013-06-22 22:31:43.000000000","message":"OK. I will fix in the next patch.","commit_id":"33e13d98e318b69915ff8839c6250e220cff7cc7"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"70e83dac8a798703660858e6884fcaa63bc8f0fc","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def _wait_for_image_status(self, image_id, status):"},{"line_number":45,"context_line":"        self.status_timeout(self.image_client.images, image_id, status)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _nova_boot(self, image_id):"},{"line_number":48,"context_line":"        name \u003d rand_name(\u0027scenario-server-\u0027)"},{"line_number":49,"context_line":"        client \u003d self.compute_client"},{"line_number":50,"context_line":"        flavor_id \u003d self.config.compute.flavor_ref"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2Fu3E%3D","line":47,"updated":"2013-06-24 08:06:43.000000000","message":"how about rename this into \"_boot_image\" ?","commit_id":"49cf58c6a588ab4335167434acae4e38aa9a3bb2"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"70e83dac8a798703660858e6884fcaa63bc8f0fc","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        LOG.debug(\"server:%s\" % server)"},{"line_number":61,"context_line":"        return server"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _nova_keypair_add(self):"},{"line_number":64,"context_line":"        name \u003d rand_name(\u0027scenario-keypair-\u0027)"},{"line_number":65,"context_line":"        self.keypair \u003d self.compute_client.keypairs.create(name\u003dname)"},{"line_number":66,"context_line":"        self.addCleanup(self.compute_client.keypairs.delete, self.keypair)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2Fu28%3D","line":63,"updated":"2013-06-24 08:06:43.000000000","message":"_add_keypair","commit_id":"49cf58c6a588ab4335167434acae4e38aa9a3bb2"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"70e83dac8a798703660858e6884fcaa63bc8f0fc","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        self.addCleanup(self.compute_client.keypairs.delete, self.keypair)"},{"line_number":67,"context_line":"        self.assertEqual(name, self.keypair.name)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def _nova_security_group_rule_create(self):"},{"line_number":70,"context_line":"        sgs \u003d self.compute_client.security_groups.list()"},{"line_number":71,"context_line":"        for sg in sgs:"},{"line_number":72,"context_line":"            if sg.name \u003d\u003d \u0027default\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2Fu20%3D","line":69,"updated":"2013-06-24 08:06:43.000000000","message":"_create_security_group_rule","commit_id":"49cf58c6a588ab4335167434acae4e38aa9a3bb2"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"70e83dac8a798703660858e6884fcaa63bc8f0fc","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        ssh_client.exec_command(\u0027date \u003e /tmp/timestamp; sync\u0027)"},{"line_number":100,"context_line":"        self.timestamp \u003d ssh_client.exec_command(\u0027cat /tmp/timestamp\u0027)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def _nova_image_create(self, server):"},{"line_number":103,"context_line":"        self.snapshot_name \u003d rand_name(\u0027scenario-snapshot\u0027)"},{"line_number":104,"context_line":"        create_image_client \u003d self.compute_client.servers.create_image"},{"line_number":105,"context_line":"        image_id \u003d create_image_client(server, self.snapshot_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2Fu2s%3D","line":102,"updated":"2013-06-24 08:06:43.000000000","message":"_create_image","commit_id":"49cf58c6a588ab4335167434acae4e38aa9a3bb2"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"70e83dac8a798703660858e6884fcaa63bc8f0fc","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        self._wait_for_image_status(image_id, \u0027active\u0027)"},{"line_number":109,"context_line":"        return image_id"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def _glance_image_show(self, image_id):"},{"line_number":112,"context_line":"        snapshot_image \u003d self.image_client.images.get(image_id)"},{"line_number":113,"context_line":"        self.assertEquals(self.snapshot_name, snapshot_image.name)"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2Fu2k%3D","line":111,"updated":"2013-06-24 08:06:43.000000000","message":"maybe you can merge this in _nova_image_create (or _create_image) and strip out the .image.get() (you don\u0027t get the servers either, just assert the return from .servers.create()","commit_id":"49cf58c6a588ab4335167434acae4e38aa9a3bb2"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"7ef299384dd05206aa68d6d5a0ffaf5addbd6d83","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        self._wait_for_image_status(image_id, \u0027active\u0027)"},{"line_number":109,"context_line":"        return image_id"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def _glance_image_show(self, image_id):"},{"line_number":112,"context_line":"        snapshot_image \u003d self.image_client.images.get(image_id)"},{"line_number":113,"context_line":"        self.assertEquals(self.snapshot_name, snapshot_image.name)"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2Fupw%3D","line":111,"in_reply_to":"AAAAPn%2F%2Fu2k%3D","updated":"2013-06-24 10:05:01.000000000","message":"Thank you for your suggestion. I will try it.","commit_id":"49cf58c6a588ab4335167434acae4e38aa9a3bb2"}]}
