)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"70eb1e7de7d9fc6b8dc6ae457dfbb14cffdf3bb1","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add a test case for instance boot from volume"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There is not any test case for instance boot from volume in Tempest."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This patch adds the test case."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAARH%2F%2F7r4%3D","line":9,"updated":"2013-08-15 00:52:50.000000000","message":"I can see Giulio\u0027s comment because this commit log does not show the reason of this scenario and its behavior.\n\nWhy don\u0027t you add them to the commit log?","commit_id":"ff2df77dc2741f755c847130c87447270160658a"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"625bd6c21bb95f19a563f2221f002020539477e0","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add a test case for instance boot from volume"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There is not any test case for instance boot from volume in Tempest."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This patch adds the test case."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAARH%2F%2F6Yc%3D","line":9,"in_reply_to":"AAAARH%2F%2F7r4%3D","updated":"2013-08-15 10:31:59.000000000","message":"I will fix it in next patch.","commit_id":"ff2df77dc2741f755c847130c87447270160658a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f4337c2f70dafcc5db2b6731382ced5ebb5d9d16","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     fujioka yuuichi \u003cfujioka-yuuichi@zx.mxh.nes.nec.co.jp\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-08-15 14:54:19 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add a test case for instance boot from volume"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a test scenario of the following flow:"},{"line_number":10,"context_line":"* create a volume from image"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAARH%2F%2F2U8%3D","line":7,"updated":"2013-08-16 09:25:59.000000000","message":"I feel it is better to change the title for explaining the feature of this test case.\nHow about [Add \"instance boot again from same volume\" case]?","commit_id":"8f0d561778df893be2420db3c433866d4a2fe1c4"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"b828962a0445edc882f96600c7da9885b7d69e57","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     fujioka yuuichi \u003cfujioka-yuuichi@zx.mxh.nes.nec.co.jp\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-08-15 14:54:19 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add a test case for instance boot from volume"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a test scenario of the following flow:"},{"line_number":10,"context_line":"* create a volume from image"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAARn%2F%2F%2Fmw%3D","line":7,"in_reply_to":"AAAARH%2F%2F2U8%3D","updated":"2013-08-20 08:30:31.000000000","message":"Thank you.\nI will amend it.","commit_id":"8f0d561778df893be2420db3c433866d4a2fe1c4"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"418b196a4fcc725a7bfbd6ea61e9dcbe3d27cbbd","unresolved":false,"context_lines":[{"line_number":10,"context_line":"* Write content to a volume and check written content"},{"line_number":11,"context_line":"* Boot a instance twice from a single volume"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"In order to avoid unnecessary confusion, this patch will make the following changes:"},{"line_number":14,"context_line":"* The class name will be renamed from VolumeSnapshotPattern to VolumeBootPattern."},{"line_number":15,"context_line":"* The file name will be renamed from test_snapshot_pattern.py to test_volume_boot_pattern.py."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAASX%2F%2F9jA%3D","line":13,"updated":"2013-08-23 06:32:54.000000000","message":"I think this line is a little bit long for commit message.\nIt should be wrapped at 72 characters.","commit_id":"4f6719910e0d9e8683c9cc4dd284cb410249f17c"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"33d1285b66f7a77e9ba3c59e7c9321774b6f2426","unresolved":false,"context_lines":[{"line_number":10,"context_line":"* Write content to a volume and check written content"},{"line_number":11,"context_line":"* Boot a instance twice from a single volume"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"In order to avoid unnecessary confusion, this patch will make the following changes:"},{"line_number":14,"context_line":"* The class name will be renamed from VolumeSnapshotPattern to VolumeBootPattern."},{"line_number":15,"context_line":"* The file name will be renamed from test_snapshot_pattern.py to test_volume_boot_pattern.py."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAASX%2F%2F9Zs%3D","line":13,"in_reply_to":"AAAASX%2F%2F9jA%3D","updated":"2013-08-23 06:49:23.000000000","message":"I\u0027m bad.\nI will amend it in next patch.","commit_id":"4f6719910e0d9e8683c9cc4dd284cb410249f17c"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"418b196a4fcc725a7bfbd6ea61e9dcbe3d27cbbd","unresolved":false,"context_lines":[{"line_number":13,"context_line":"In order to avoid unnecessary confusion, this patch will make the following changes:"},{"line_number":14,"context_line":"* The class name will be renamed from VolumeSnapshotPattern to VolumeBootPattern."},{"line_number":15,"context_line":"* The file name will be renamed from test_snapshot_pattern.py to test_volume_boot_pattern.py."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I549934c4cd412ac88961f113d037235cc177d3fd"},{"line_number":18,"context_line":"Related-bug #1210437"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAASX%2F%2F9f0%3D","line":16,"updated":"2013-08-23 06:32:54.000000000","message":"I feel the above 2 lines are not necessary.\nWe want to know the reason why we need this change.","commit_id":"4f6719910e0d9e8683c9cc4dd284cb410249f17c"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"33d1285b66f7a77e9ba3c59e7c9321774b6f2426","unresolved":false,"context_lines":[{"line_number":13,"context_line":"In order to avoid unnecessary confusion, this patch will make the following changes:"},{"line_number":14,"context_line":"* The class name will be renamed from VolumeSnapshotPattern to VolumeBootPattern."},{"line_number":15,"context_line":"* The file name will be renamed from test_snapshot_pattern.py to test_volume_boot_pattern.py."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I549934c4cd412ac88961f113d037235cc177d3fd"},{"line_number":18,"context_line":"Related-bug #1210437"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAASX%2F%2F9ZM%3D","line":16,"in_reply_to":"AAAASX%2F%2F9f0%3D","updated":"2013-08-23 06:49:23.000000000","message":"All right.\nI will write the reason to this change.","commit_id":"4f6719910e0d9e8683c9cc4dd284cb410249f17c"}],"tempest/scenario/manager.py":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"4a6988905df7fcc7b39545dedb04cf6d6045a95a","unresolved":false,"context_lines":[{"line_number":328,"context_line":"            check_status,"},{"line_number":329,"context_line":"            self.config.compute.build_timeout,"},{"line_number":330,"context_line":"            self.config.compute.build_interval):"},{"line_number":331,"context_line":"            self.fail(\"Timed out waiting for thing %s to become deleted\""},{"line_number":332,"context_line":"                      % (thing_id))"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def create_loginable_secgroup_rule(self, client\u003dNone, secgroup_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2F%2Bpg%3D","line":331,"updated":"2013-08-27 09:15:37.000000000","message":"You should avoid using the `self.fail`. Please read HACKING.rst.","commit_id":"45a8993a56fa9d4ad1d114265bb34dbd20539991"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"206ccb14bcaa9e1795b23e953127553c24de314e","unresolved":false,"context_lines":[{"line_number":328,"context_line":"            check_status,"},{"line_number":329,"context_line":"            self.config.compute.build_timeout,"},{"line_number":330,"context_line":"            self.config.compute.build_interval):"},{"line_number":331,"context_line":"            self.fail(\"Timed out waiting for thing %s to become deleted\""},{"line_number":332,"context_line":"                      % (thing_id))"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def create_loginable_secgroup_rule(self, client\u003dNone, secgroup_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2F6Yo%3D","line":331,"in_reply_to":"AAAASn%2F%2F%2Bpg%3D","updated":"2013-08-28 23:40:05.000000000","message":"I will fix it in the next patch.","commit_id":"45a8993a56fa9d4ad1d114265bb34dbd20539991"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2bad85526293c78592e5b0dacd9b2605d9f23f40","unresolved":false,"context_lines":[{"line_number":323,"context_line":"                raise exceptions.BuildErrorException(message)"},{"line_number":324,"context_line":"            LOG.debug(\"Waiting for %s to get to deleted status. \""},{"line_number":325,"context_line":"                      \"Currently in %s status\","},{"line_number":326,"context_line":"                      thing, new_status)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        if not tempest.test.call_until_true("},{"line_number":329,"context_line":"            check_status,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FwXQ%3D","line":326,"updated":"2013-08-30 00:39:35.000000000","message":"This method is almost the same as the method in status_timeout(). so this will make duplicated code.\nWhy don\u0027t you change the method to the external, and use it from both delete_timeout() and status_timeout()?","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"bb1def487e7c33087d71b1f52348c854c6564080","unresolved":false,"context_lines":[{"line_number":323,"context_line":"                raise exceptions.BuildErrorException(message)"},{"line_number":324,"context_line":"            LOG.debug(\"Waiting for %s to get to deleted status. \""},{"line_number":325,"context_line":"                      \"Currently in %s status\","},{"line_number":326,"context_line":"                      thing, new_status)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        if not tempest.test.call_until_true("},{"line_number":329,"context_line":"            check_status,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FvA0%3D","line":326,"in_reply_to":"AAAASn%2F%2FwEc%3D","updated":"2013-08-30 08:59:00.000000000","message":"that sounds great to me","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"4b83a57c86e4a264ffcee946e1dc3da81e74b12c","unresolved":false,"context_lines":[{"line_number":323,"context_line":"                raise exceptions.BuildErrorException(message)"},{"line_number":324,"context_line":"            LOG.debug(\"Waiting for %s to get to deleted status. \""},{"line_number":325,"context_line":"                      \"Currently in %s status\","},{"line_number":326,"context_line":"                      thing, new_status)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        if not tempest.test.call_until_true("},{"line_number":329,"context_line":"            check_status,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FwEc%3D","line":326,"in_reply_to":"AAAASn%2F%2FwXQ%3D","updated":"2013-08-30 01:56:34.000000000","message":"Your are right.\nI will make new method. I will fix to using the method in both delete_timeout() and status_timeout().","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2bad85526293c78592e5b0dacd9b2605d9f23f40","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        if not tempest.test.call_until_true("},{"line_number":329,"context_line":"            check_status,"},{"line_number":330,"context_line":"            self.config.compute.build_timeout,"},{"line_number":331,"context_line":"            self.config.compute.build_interval):"},{"line_number":332,"context_line":"            message \u003d \"Timed out waiting for thing %s \\"},{"line_number":333,"context_line":"                      to become delete\" % (thing_id)"},{"line_number":334,"context_line":"            raise exceptions.BuildErrorException(message)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FwW8%3D","line":331,"updated":"2013-08-30 00:39:35.000000000","message":"This is not build_timeout. How about adding delete_timeout and delete_interval?","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5ac38f2dd0c6946ed0fc11893866966eae46e550","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        if not tempest.test.call_until_true("},{"line_number":329,"context_line":"            check_status,"},{"line_number":330,"context_line":"            self.config.compute.build_timeout,"},{"line_number":331,"context_line":"            self.config.compute.build_interval):"},{"line_number":332,"context_line":"            message \u003d \"Timed out waiting for thing %s \\"},{"line_number":333,"context_line":"                      to become delete\" % (thing_id)"},{"line_number":334,"context_line":"            raise exceptions.BuildErrorException(message)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FvEY%3D","line":331,"in_reply_to":"AAAASn%2F%2FwBs%3D","updated":"2013-08-30 07:54:46.000000000","message":"uhh, thanks for the explanation.\nI feel the name is not good now, the names should be status_timeout/status_interval.\nbut that is out of scope on this patch.","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"4b83a57c86e4a264ffcee946e1dc3da81e74b12c","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        if not tempest.test.call_until_true("},{"line_number":329,"context_line":"            check_status,"},{"line_number":330,"context_line":"            self.config.compute.build_timeout,"},{"line_number":331,"context_line":"            self.config.compute.build_interval):"},{"line_number":332,"context_line":"            message \u003d \"Timed out waiting for thing %s \\"},{"line_number":333,"context_line":"                      to become delete\" % (thing_id)"},{"line_number":334,"context_line":"            raise exceptions.BuildErrorException(message)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FwBs%3D","line":331,"in_reply_to":"AAAASn%2F%2FwW8%3D","updated":"2013-08-30 01:56:34.000000000","message":"build_timeout used in other status(stop, suspend, pause, resize), so I think using build_timeout for delete is no problem.\nAnd, this code will be moved to the new method.","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2bad85526293c78592e5b0dacd9b2605d9f23f40","unresolved":false,"context_lines":[{"line_number":332,"context_line":"            message \u003d \"Timed out waiting for thing %s \\"},{"line_number":333,"context_line":"                      to become delete\" % (thing_id)"},{"line_number":334,"context_line":"            raise exceptions.BuildErrorException(message)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def create_loginable_secgroup_rule(self, client\u003dNone, secgroup_id\u003dNone):"},{"line_number":337,"context_line":"        if client is None:"},{"line_number":338,"context_line":"            client \u003d self.compute_client"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FwUY%3D","line":335,"updated":"2013-08-30 00:39:35.000000000","message":"This is not BuildErrorException. DeleteErrorException would be necessary.","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5ac38f2dd0c6946ed0fc11893866966eae46e550","unresolved":false,"context_lines":[{"line_number":332,"context_line":"            message \u003d \"Timed out waiting for thing %s \\"},{"line_number":333,"context_line":"                      to become delete\" % (thing_id)"},{"line_number":334,"context_line":"            raise exceptions.BuildErrorException(message)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def create_loginable_secgroup_rule(self, client\u003dNone, secgroup_id\u003dNone):"},{"line_number":337,"context_line":"        if client is None:"},{"line_number":338,"context_line":"            client \u003d self.compute_client"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FvEQ%3D","line":335,"in_reply_to":"AAAASn%2F%2FwBk%3D","updated":"2013-08-30 07:54:46.000000000","message":"I see.","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"4b83a57c86e4a264ffcee946e1dc3da81e74b12c","unresolved":false,"context_lines":[{"line_number":332,"context_line":"            message \u003d \"Timed out waiting for thing %s \\"},{"line_number":333,"context_line":"                      to become delete\" % (thing_id)"},{"line_number":334,"context_line":"            raise exceptions.BuildErrorException(message)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def create_loginable_secgroup_rule(self, client\u003dNone, secgroup_id\u003dNone):"},{"line_number":337,"context_line":"        if client is None:"},{"line_number":338,"context_line":"            client \u003d self.compute_client"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FwBk%3D","line":335,"in_reply_to":"AAAASn%2F%2FwUY%3D","updated":"2013-08-30 01:56:34.000000000","message":"ditto","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ee0109b1d156a7e0b2f11d3b132e11f4a371a181","unresolved":false,"context_lines":[{"line_number":294,"context_line":"    def _status_timeout(self,"},{"line_number":295,"context_line":"                        things,"},{"line_number":296,"context_line":"                        thing_id,"},{"line_number":297,"context_line":"                        expected_status\u003dNone,"},{"line_number":298,"context_line":"                        allow_notfound\u003dFalse):"},{"line_number":299,"context_line":"        def check_status():"},{"line_number":300,"context_line":"            # python-novaclient has resources available to its client"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAASn%2F%2FjzU%3D","line":297,"updated":"2013-09-03 14:21:20.000000000","message":"I guess expected_status is not optional argument and \"\u003dNone\" is not necessary. also \"expected_status\u003d\" at line280 and line291 are unnecessary.","commit_id":"6f6fe216f531d51f599b6f7a1652e9c755112ff2"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"66e16ad39dbf468b62411b8ccb32913e13cb3e29","unresolved":false,"context_lines":[{"line_number":294,"context_line":"    def _status_timeout(self,"},{"line_number":295,"context_line":"                        things,"},{"line_number":296,"context_line":"                        thing_id,"},{"line_number":297,"context_line":"                        expected_status\u003dNone,"},{"line_number":298,"context_line":"                        allow_notfound\u003dFalse):"},{"line_number":299,"context_line":"        def check_status():"},{"line_number":300,"context_line":"            # python-novaclient has resources available to its client"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAASn%2F%2FgYA%3D","line":297,"in_reply_to":"AAAASn%2F%2FjzU%3D","updated":"2013-09-04 07:23:45.000000000","message":"I will investigate better way.","commit_id":"6f6fe216f531d51f599b6f7a1652e9c755112ff2"}],"tempest/scenario/test_volume_boot.py":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"6670ccfe8096a88102e7682b7aabd0d30e1f84b5","unresolved":false,"context_lines":[{"line_number":30,"context_line":"class TestVolumeBootPattern(manager.OfficialClientTest):"},{"line_number":31,"context_line":"    \"\"\""},{"line_number":32,"context_line":"   This test is for volume boot an instance."},{"line_number":33,"context_line":"   The following is the scenario outline:"},{"line_number":34,"context_line":"    * create volume from image"},{"line_number":35,"context_line":"    * boot a instance from the volume"},{"line_number":36,"context_line":"    * write text to file on the volume"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2B9iY%3D","line":33,"updated":"2013-08-15 06:52:08.000000000","message":"Invalid indents.\nYou should put 4 white spaces.","commit_id":"ff2df77dc2741f755c847130c87447270160658a"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"625bd6c21bb95f19a563f2221f002020539477e0","unresolved":false,"context_lines":[{"line_number":30,"context_line":"class TestVolumeBootPattern(manager.OfficialClientTest):"},{"line_number":31,"context_line":"    \"\"\""},{"line_number":32,"context_line":"   This test is for volume boot an instance."},{"line_number":33,"context_line":"   The following is the scenario outline:"},{"line_number":34,"context_line":"    * create volume from image"},{"line_number":35,"context_line":"    * boot a instance from the volume"},{"line_number":36,"context_line":"    * write text to file on the volume"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAARH%2F%2F6YQ%3D","line":33,"in_reply_to":"AAAAQn%2F%2B9iY%3D","updated":"2013-08-15 10:31:59.000000000","message":"I will fix it in next patch.","commit_id":"ff2df77dc2741f755c847130c87447270160658a"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"6670ccfe8096a88102e7682b7aabd0d30e1f84b5","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    \"\"\""},{"line_number":32,"context_line":"   This test is for volume boot an instance."},{"line_number":33,"context_line":"   The following is the scenario outline:"},{"line_number":34,"context_line":"    * create volume from image"},{"line_number":35,"context_line":"    * boot a instance from the volume"},{"line_number":36,"context_line":"    * write text to file on the volume"},{"line_number":37,"context_line":"    * delete a instance"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2B9iM%3D","line":34,"updated":"2013-08-15 06:52:08.000000000","message":"s/create volume/create a volume ?","commit_id":"ff2df77dc2741f755c847130c87447270160658a"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"625bd6c21bb95f19a563f2221f002020539477e0","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    \"\"\""},{"line_number":32,"context_line":"   This test is for volume boot an instance."},{"line_number":33,"context_line":"   The following is the scenario outline:"},{"line_number":34,"context_line":"    * create volume from image"},{"line_number":35,"context_line":"    * boot a instance from the volume"},{"line_number":36,"context_line":"    * write text to file on the volume"},{"line_number":37,"context_line":"    * delete a instance"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAARH%2F%2F6YI%3D","line":34,"in_reply_to":"AAAAQn%2F%2B9iM%3D","updated":"2013-08-15 10:31:59.000000000","message":"yes.\nI will fix it in next patch.","commit_id":"ff2df77dc2741f755c847130c87447270160658a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"32c8e5bdeb4f198bcffad1a2d5ae1ee00761ee40","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _wait_for_volume_status(self, volume, status):"},{"line_number":48,"context_line":"        self.status_timeout("},{"line_number":49,"context_line":"            self.volume_client.volumes, volume.id, status)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _create_volume_from_image(self):"},{"line_number":52,"context_line":"        name \u003d rand_name(\u0027scenario-volume-\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2B9cg%3D","line":49,"updated":"2013-08-09 09:38:17.000000000","message":"The coding style is different from the above code(line 43-45).\nIt is better to change here like the above.","commit_id":"ff2df77dc2741f755c847130c87447270160658a"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"e2b0e7006be4079ad9a51fc91dcd44063052d953","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _wait_for_volume_status(self, volume, status):"},{"line_number":48,"context_line":"        self.status_timeout("},{"line_number":49,"context_line":"            self.volume_client.volumes, volume.id, status)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _create_volume_from_image(self):"},{"line_number":52,"context_line":"        name \u003d rand_name(\u0027scenario-volume-\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2B5xU%3D","line":49,"in_reply_to":"AAAAQn%2F%2B9cg%3D","updated":"2013-08-13 11:23:07.000000000","message":"I will fix it next patch.","commit_id":"ff2df77dc2741f755c847130c87447270160658a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"32c8e5bdeb4f198bcffad1a2d5ae1ee00761ee40","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def _write_text(self, ssh_client):"},{"line_number":97,"context_line":"        text \u003d rand_name(\u0027text-\u0027)"},{"line_number":98,"context_line":"        ssh_client.exec_command(\u0027echo \"%s\"\u003e /tmp/text; sync\u0027 % (text))"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        return text"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2B9bQ%3D","line":98,"updated":"2013-08-09 09:38:17.000000000","message":"I concern if this scenario runs at same time the above /tmp/text would be changed by each other.\nso I feel it is better that the file name of /tmp/text also is random.","commit_id":"ff2df77dc2741f755c847130c87447270160658a"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"e2b0e7006be4079ad9a51fc91dcd44063052d953","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def _write_text(self, ssh_client):"},{"line_number":97,"context_line":"        text \u003d rand_name(\u0027text-\u0027)"},{"line_number":98,"context_line":"        ssh_client.exec_command(\u0027echo \"%s\"\u003e /tmp/text; sync\u0027 % (text))"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        return text"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2B5xE%3D","line":98,"in_reply_to":"AAAAQn%2F%2B9bQ%3D","updated":"2013-08-13 11:23:07.000000000","message":"There is no problem. the volume and the server is made for each run.","commit_id":"ff2df77dc2741f755c847130c87447270160658a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"32c8e5bdeb4f198bcffad1a2d5ae1ee00761ee40","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            ip \u003d server.networks[network_name_for_ssh][0]"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        username \u003d self.config.scenario.ssh_user"},{"line_number":125,"context_line":"        linux_client \u003d RemoteClient(ip,"},{"line_number":126,"context_line":"                                    username,"},{"line_number":127,"context_line":"                                    pkey\u003dkeypair.private_key)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2B9c4%3D","line":125,"updated":"2013-08-09 09:38:17.000000000","message":"From viewpoint of scenario test, I feel \"linux\" client does not matter. so simple \"client\" is better here.","commit_id":"ff2df77dc2741f755c847130c87447270160658a"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"e2b0e7006be4079ad9a51fc91dcd44063052d953","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            ip \u003d server.networks[network_name_for_ssh][0]"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        username \u003d self.config.scenario.ssh_user"},{"line_number":125,"context_line":"        linux_client \u003d RemoteClient(ip,"},{"line_number":126,"context_line":"                                    username,"},{"line_number":127,"context_line":"                                    pkey\u003dkeypair.private_key)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2B5xA%3D","line":125,"in_reply_to":"AAAAQn%2F%2B9c4%3D","updated":"2013-08-13 11:23:07.000000000","message":"I will fix it next patch.","commit_id":"ff2df77dc2741f755c847130c87447270160658a"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"6670ccfe8096a88102e7682b7aabd0d30e1f84b5","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        return keypair"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def test_volume_boot_pattern(self):"},{"line_number":160,"context_line":"        # create security group rule"},{"line_number":161,"context_line":"        self._create_security_group_rule()"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        # add keypair"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAARH%2F%2F65I%3D","line":160,"updated":"2013-08-15 06:52:08.000000000","message":"Are these comments necessary?\nThe comments and method names are almost same.","commit_id":"ff2df77dc2741f755c847130c87447270160658a"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"625bd6c21bb95f19a563f2221f002020539477e0","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        return keypair"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def test_volume_boot_pattern(self):"},{"line_number":160,"context_line":"        # create security group rule"},{"line_number":161,"context_line":"        self._create_security_group_rule()"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        # add keypair"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAARH%2F%2F6V8%3D","line":160,"in_reply_to":"AAAARH%2F%2F65I%3D","updated":"2013-08-15 10:31:59.000000000","message":"I think this comment enhances readability.","commit_id":"ff2df77dc2741f755c847130c87447270160658a"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"6670ccfe8096a88102e7682b7aabd0d30e1f84b5","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        # delete VM"},{"line_number":177,"context_line":"        self._delete_server(server)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        # boot from volume 2"},{"line_number":180,"context_line":"        server2 \u003d self._boot_from_volume(volume, keypair)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        # check"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAARH%2F%2F64Q%3D","line":179,"updated":"2013-08-15 06:52:08.000000000","message":"I misunderstood this comment.\nHow about \u0027boot a 2nd instance from volume\u0027 or just deleting this comment?","commit_id":"ff2df77dc2741f755c847130c87447270160658a"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"625bd6c21bb95f19a563f2221f002020539477e0","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        # delete VM"},{"line_number":177,"context_line":"        self._delete_server(server)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        # boot from volume 2"},{"line_number":180,"context_line":"        server2 \u003d self._boot_from_volume(volume, keypair)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        # check"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAARH%2F%2F6Ws%3D","line":179,"in_reply_to":"AAAARH%2F%2F64Q%3D","updated":"2013-08-15 10:31:59.000000000","message":"I think the former is better.\nI will fix it in next patch.","commit_id":"ff2df77dc2741f755c847130c87447270160658a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"32c8e5bdeb4f198bcffad1a2d5ae1ee00761ee40","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        # boot from volume 2"},{"line_number":180,"context_line":"        server2 \u003d self._boot_from_volume(volume, keypair)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        # check"},{"line_number":183,"context_line":"        ssh_client2 \u003d self._ssh_to_server(server2, keypair)"},{"line_number":184,"context_line":"        self._check(ssh_client2, text)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2B9dY%3D","line":182,"updated":"2013-08-09 09:38:17.000000000","message":"seems necessary to show the behaivor.\nHow about \"check the contents of written file\"?","commit_id":"ff2df77dc2741f755c847130c87447270160658a"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"e2b0e7006be4079ad9a51fc91dcd44063052d953","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        # boot from volume 2"},{"line_number":180,"context_line":"        server2 \u003d self._boot_from_volume(volume, keypair)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        # check"},{"line_number":183,"context_line":"        ssh_client2 \u003d self._ssh_to_server(server2, keypair)"},{"line_number":184,"context_line":"        self._check(ssh_client2, text)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2B5w4%3D","line":182,"in_reply_to":"AAAAQn%2F%2B9dY%3D","updated":"2013-08-13 11:23:07.000000000","message":"I will fix it next patch.","commit_id":"ff2df77dc2741f755c847130c87447270160658a"}],"tempest/scenario/test_volume_boot_pattern.py":[{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"8e5f30fb69cddf82de59456cf50b8347b14ae983","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"from novaclient import exceptions"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from tempest.common.utils.data_utils import rand_name"},{"line_number":17,"context_line":"from tempest.common.utils.linux.remote_client import RemoteClient"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F8%2Fw%3D","line":14,"updated":"2013-08-23 09:18:47.000000000","message":"I think you shoould have only a single newline before and after the import statement","commit_id":"4f6719910e0d9e8683c9cc4dd284cb410249f17c"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"a5fe30c3d1e4ac4383d597cc3fed1a39997fc474","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"from novaclient import exceptions"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from tempest.common.utils.data_utils import rand_name"},{"line_number":17,"context_line":"from tempest.common.utils.linux.remote_client import RemoteClient"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F3oc%3D","line":14,"in_reply_to":"AAAASX%2F%2F8%2Fw%3D","updated":"2013-08-26 23:40:12.000000000","message":"I will fix it in the next patch.","commit_id":"4f6719910e0d9e8683c9cc4dd284cb410249f17c"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"8e5f30fb69cddf82de59456cf50b8347b14ae983","unresolved":false,"context_lines":[{"line_number":31,"context_line":"     * Create in Cinder some bootable volume importing a Glance image"},{"line_number":32,"context_line":"     * Boot an instance from the bootable volume"},{"line_number":33,"context_line":"     * Write content to the volume"},{"line_number":34,"context_line":"     * Delete an instance and Boot an instance from the volume"},{"line_number":35,"context_line":"     * Check written content in the instance"},{"line_number":36,"context_line":"     * Create a volume snapshot while the instance is running"},{"line_number":37,"context_line":"     * Boot an additional instance from the new snapshot based volume"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F8%2Fk%3D","line":34,"updated":"2013-08-23 09:18:47.000000000","message":"maybe replace \"and Boot an instance from the volume\" with \"and Boot a new instance from the volume\"","commit_id":"4f6719910e0d9e8683c9cc4dd284cb410249f17c"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"a5fe30c3d1e4ac4383d597cc3fed1a39997fc474","unresolved":false,"context_lines":[{"line_number":31,"context_line":"     * Create in Cinder some bootable volume importing a Glance image"},{"line_number":32,"context_line":"     * Boot an instance from the bootable volume"},{"line_number":33,"context_line":"     * Write content to the volume"},{"line_number":34,"context_line":"     * Delete an instance and Boot an instance from the volume"},{"line_number":35,"context_line":"     * Check written content in the instance"},{"line_number":36,"context_line":"     * Create a volume snapshot while the instance is running"},{"line_number":37,"context_line":"     * Boot an additional instance from the new snapshot based volume"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F3oY%3D","line":34,"in_reply_to":"AAAASX%2F%2F8%2Fk%3D","updated":"2013-08-26 23:40:12.000000000","message":"I will fix it in the next patch.","commit_id":"4f6719910e0d9e8683c9cc4dd284cb410249f17c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7f7e1305ace478fc6ed9ca17ae2cd01807a50522","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            while self.compute_client.servers.get(server):"},{"line_number":136,"context_line":"                time.sleep(5)"},{"line_number":137,"context_line":"        except exceptions.NotFound:"},{"line_number":138,"context_line":"            pass"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def _check(self, ssh_client, expected):"},{"line_number":141,"context_line":"        actual \u003d ssh_client.exec_command(\u0027cat /tmp/text\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F9iQ%3D","line":138,"updated":"2013-08-23 06:21:44.000000000","message":"How about using wait_for_server_termination() instead?","commit_id":"4f6719910e0d9e8683c9cc4dd284cb410249f17c"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"a5fe30c3d1e4ac4383d597cc3fed1a39997fc474","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            while self.compute_client.servers.get(server):"},{"line_number":136,"context_line":"                time.sleep(5)"},{"line_number":137,"context_line":"        except exceptions.NotFound:"},{"line_number":138,"context_line":"            pass"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def _check(self, ssh_client, expected):"},{"line_number":141,"context_line":"        actual \u003d ssh_client.exec_command(\u0027cat /tmp/text\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F264%3D","line":138,"in_reply_to":"AAAASX%2F%2F9ZI%3D","updated":"2013-08-26 23:40:12.000000000","message":"Hi, Ken\u0027ichi.\nwait_for_server_termination belong only to tempest.services.compute.xml.servers_client.ServersClientXML or tempest.services.compute.json.servers_client.ServersClientJSON.\nUnfortunately it doesn\u0027t work in here.\n\nI will create a method similar to wait_for_server_termination.","commit_id":"4f6719910e0d9e8683c9cc4dd284cb410249f17c"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"33d1285b66f7a77e9ba3c59e7c9321774b6f2426","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            while self.compute_client.servers.get(server):"},{"line_number":136,"context_line":"                time.sleep(5)"},{"line_number":137,"context_line":"        except exceptions.NotFound:"},{"line_number":138,"context_line":"            pass"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def _check(self, ssh_client, expected):"},{"line_number":141,"context_line":"        actual \u003d ssh_client.exec_command(\u0027cat /tmp/text\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F9ZI%3D","line":138,"in_reply_to":"AAAASX%2F%2F9iQ%3D","updated":"2013-08-23 06:49:23.000000000","message":"Thank you!\nI will fix it in the next patch.","commit_id":"4f6719910e0d9e8683c9cc4dd284cb410249f17c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5d233258d3081ebf39d78c0c7b53fbd9a50f1463","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        except exceptions.NotFound:"},{"line_number":138,"context_line":"            pass"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def _check(self, ssh_client, expected):"},{"line_number":141,"context_line":"        actual \u003d ssh_client.exec_command(\u0027cat /tmp/text\u0027)"},{"line_number":142,"context_line":"        self.assertEqual(expected + \u0027\\n\u0027, actual)"},{"line_number":143,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F9U4%3D","line":140,"updated":"2013-08-23 07:19:19.000000000","message":"The method name is too short.\nCould you rename this for readability.","commit_id":"4f6719910e0d9e8683c9cc4dd284cb410249f17c"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"a5fe30c3d1e4ac4383d597cc3fed1a39997fc474","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        except exceptions.NotFound:"},{"line_number":138,"context_line":"            pass"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def _check(self, ssh_client, expected):"},{"line_number":141,"context_line":"        actual \u003d ssh_client.exec_command(\u0027cat /tmp/text\u0027)"},{"line_number":142,"context_line":"        self.assertEqual(expected + \u0027\\n\u0027, actual)"},{"line_number":143,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F3mE%3D","line":140,"in_reply_to":"AAAASX%2F%2F9U4%3D","updated":"2013-08-26 23:40:12.000000000","message":"I will fix it in the next patch.","commit_id":"4f6719910e0d9e8683c9cc4dd284cb410249f17c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5d233258d3081ebf39d78c0c7b53fbd9a50f1463","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def _check(self, ssh_client, expected):"},{"line_number":141,"context_line":"        actual \u003d ssh_client.exec_command(\u0027cat /tmp/text\u0027)"},{"line_number":142,"context_line":"        self.assertEqual(expected + \u0027\\n\u0027, actual)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def test_volume_snapshot_pattern(self):"},{"line_number":145,"context_line":"        keypair \u003d self.create_keypair()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F9Tc%3D","line":142,"updated":"2013-08-23 07:19:19.000000000","message":"A little difficult code.\n\nHow about adding \"cat /tmp/text\" command to _write_text() and the method returns its contents?\nAlso remove \"+ \u0027\\\u0027\" from here.\n\nCould you please check other scenario such as test_stamp_pattern.py?\nThe behavior is similar to this, I feel.","commit_id":"4f6719910e0d9e8683c9cc4dd284cb410249f17c"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"a5fe30c3d1e4ac4383d597cc3fed1a39997fc474","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def _check(self, ssh_client, expected):"},{"line_number":141,"context_line":"        actual \u003d ssh_client.exec_command(\u0027cat /tmp/text\u0027)"},{"line_number":142,"context_line":"        self.assertEqual(expected + \u0027\\n\u0027, actual)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def test_volume_snapshot_pattern(self):"},{"line_number":145,"context_line":"        keypair \u003d self.create_keypair()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F22M%3D","line":142,"in_reply_to":"AAAASX%2F%2F9Tc%3D","updated":"2013-08-26 23:40:12.000000000","message":"Sure.\nI will amend it.","commit_id":"4f6719910e0d9e8683c9cc4dd284cb410249f17c"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"418b196a4fcc725a7bfbd6ea61e9dcbe3d27cbbd","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        self._delete_server(i_origin)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        # create a 2nd instance from volume"},{"line_number":160,"context_line":"        i_origin2 \u003d self._boot_instance_from_volume(volume_origin.id, keypair)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        # check the content of written file"},{"line_number":163,"context_line":"        ssh_client2 \u003d self._ssh_to_server(i_origin2, keypair)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F9cw%3D","line":160,"updated":"2013-08-23 06:32:54.000000000","message":"I do not like the suffix of 1,2,3..etc. Because \nI feel the names of instances should show their role or characteristic.","commit_id":"4f6719910e0d9e8683c9cc4dd284cb410249f17c"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"33d1285b66f7a77e9ba3c59e7c9321774b6f2426","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        self._delete_server(i_origin)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        # create a 2nd instance from volume"},{"line_number":160,"context_line":"        i_origin2 \u003d self._boot_instance_from_volume(volume_origin.id, keypair)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        # check the content of written file"},{"line_number":163,"context_line":"        ssh_client2 \u003d self._ssh_to_server(i_origin2, keypair)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F9Ys%3D","line":160,"in_reply_to":"AAAASX%2F%2F9cw%3D","updated":"2013-08-23 06:49:23.000000000","message":"All right.\nI will rename it.","commit_id":"4f6719910e0d9e8683c9cc4dd284cb410249f17c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e7847632988a68a8785bb43d2e092b752df4b275","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        # create an instance from volume"},{"line_number":128,"context_line":"        volume_origin \u003d self._create_volume_from_image()"},{"line_number":129,"context_line":"        i_origin \u003d self._boot_instance_from_volume(volume_origin.id, keypair)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        # write content to volume on instance"},{"line_number":132,"context_line":"        ssh_client_for_origin \u003d self._ssh_to_server(i_origin, keypair)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2F%2FFI%3D","line":129,"updated":"2013-08-27 07:11:48.000000000","message":"a little difficult to know the meaning of \"i_\", does it means \"instance\"?\nIf so, how about changing\n* \"i_origin\" to \"instance_1st\"?\n* \"i_for_confirm\" to \"instance_2nd\".\n\nI know their names are not changed by your patch, but this is a good chance for changing them to easy-understanding names.","commit_id":"45a8993a56fa9d4ad1d114265bb34dbd20539991"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"206ccb14bcaa9e1795b23e953127553c24de314e","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        # create an instance from volume"},{"line_number":128,"context_line":"        volume_origin \u003d self._create_volume_from_image()"},{"line_number":129,"context_line":"        i_origin \u003d self._boot_instance_from_volume(volume_origin.id, keypair)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        # write content to volume on instance"},{"line_number":132,"context_line":"        ssh_client_for_origin \u003d self._ssh_to_server(i_origin, keypair)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2F1kI%3D","line":129,"in_reply_to":"AAAASn%2F%2F%2FFI%3D","updated":"2013-08-28 23:40:05.000000000","message":"Agree.\nI will fix it.","commit_id":"45a8993a56fa9d4ad1d114265bb34dbd20539991"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2bad85526293c78592e5b0dacd9b2605d9f23f40","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _create_volume_from_image(self):"},{"line_number":38,"context_line":"        img_uuid \u003d self.config.compute.image_ref"},{"line_number":39,"context_line":"        vol_name \u003d rand_name(\u0027volume-origin\u0027)"},{"line_number":40,"context_line":"        return self.create_volume(name\u003dvol_name, imageRef\u003dimg_uuid)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def _boot_instance_from_volume(self, vol_id, keypair):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FwUE%3D","line":39,"updated":"2013-08-30 00:39:35.000000000","message":"How about not specifying its volume name?\ncreate_volume() method creates a volume with \"scenario-volume-\" name if not specifying a name.\n\nWe can remove it easily when a failure happens in a scenario test and some volumes remains, because the remaining volume is with \"scenario-volume-\".","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"bb1def487e7c33087d71b1f52348c854c6564080","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _create_volume_from_image(self):"},{"line_number":38,"context_line":"        img_uuid \u003d self.config.compute.image_ref"},{"line_number":39,"context_line":"        vol_name \u003d rand_name(\u0027volume-origin\u0027)"},{"line_number":40,"context_line":"        return self.create_volume(name\u003dvol_name, imageRef\u003dimg_uuid)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def _boot_instance_from_volume(self, vol_id, keypair):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FvBw%3D","line":39,"in_reply_to":"AAAASn%2F%2Fv9E%3D","updated":"2013-08-30 08:59:00.000000000","message":"indeed for some reason the old file appears as Deleted and this one as a New file so that makes difficult to compare the two :(","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"0f0169e3fcefed81e6005cf452ebcdf256c21e44","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _create_volume_from_image(self):"},{"line_number":38,"context_line":"        img_uuid \u003d self.config.compute.image_ref"},{"line_number":39,"context_line":"        vol_name \u003d rand_name(\u0027volume-origin\u0027)"},{"line_number":40,"context_line":"        return self.create_volume(name\u003dvol_name, imageRef\u003dimg_uuid)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def _boot_instance_from_volume(self, vol_id, keypair):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2Fv9E%3D","line":39,"in_reply_to":"AAAASn%2F%2FwA8%3D","updated":"2013-08-30 02:20:40.000000000","message":"You two are right. I did not notice this change is the same as the former.","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"83eaa5cab85cd857bd30cce3ff69366c516732fe","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _create_volume_from_image(self):"},{"line_number":38,"context_line":"        img_uuid \u003d self.config.compute.image_ref"},{"line_number":39,"context_line":"        vol_name \u003d rand_name(\u0027volume-origin\u0027)"},{"line_number":40,"context_line":"        return self.create_volume(name\u003dvol_name, imageRef\u003dimg_uuid)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def _boot_instance_from_volume(self, vol_id, keypair):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FwA8%3D","line":39,"in_reply_to":"AAAASn%2F%2FwUE%3D","updated":"2013-08-30 01:59:14.000000000","message":"I think that here and below comments are for the cleanup.\nI prefer to divide it into 2 commits(cleanup and appending a test case).","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"4b83a57c86e4a264ffcee946e1dc3da81e74b12c","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _create_volume_from_image(self):"},{"line_number":38,"context_line":"        img_uuid \u003d self.config.compute.image_ref"},{"line_number":39,"context_line":"        vol_name \u003d rand_name(\u0027volume-origin\u0027)"},{"line_number":40,"context_line":"        return self.create_volume(name\u003dvol_name, imageRef\u003dimg_uuid)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def _boot_instance_from_volume(self, vol_id, keypair):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FwJs%3D","line":39,"in_reply_to":"AAAASn%2F%2FwUE%3D","updated":"2013-08-30 01:56:34.000000000","message":"hmm, I think I should not performed unnecessary optimization and cleanup for this patch.\nwe should minimize change.","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2bad85526293c78592e5b0dacd9b2605d9f23f40","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _create_snapshot_from_volume(self, vol_id):"},{"line_number":58,"context_line":"        volume_snapshots \u003d self.volume_client.volume_snapshots"},{"line_number":59,"context_line":"        snap_name \u003d rand_name(\u0027snapshot\u0027)"},{"line_number":60,"context_line":"        snap \u003d volume_snapshots.create(volume_id\u003dvol_id,"},{"line_number":61,"context_line":"                                       force\u003dTrue,"},{"line_number":62,"context_line":"                                       display_name\u003dsnap_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FwT0%3D","line":59,"updated":"2013-08-30 00:39:35.000000000","message":"nit: also like \"volume-snapshot-\".","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"4b83a57c86e4a264ffcee946e1dc3da81e74b12c","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _create_snapshot_from_volume(self, vol_id):"},{"line_number":58,"context_line":"        volume_snapshots \u003d self.volume_client.volume_snapshots"},{"line_number":59,"context_line":"        snap_name \u003d rand_name(\u0027snapshot\u0027)"},{"line_number":60,"context_line":"        snap \u003d volume_snapshots.create(volume_id\u003dvol_id,"},{"line_number":61,"context_line":"                                       force\u003dTrue,"},{"line_number":62,"context_line":"                                       display_name\u003dsnap_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FwJg%3D","line":59,"in_reply_to":"AAAASn%2F%2FwT0%3D","updated":"2013-08-30 01:56:34.000000000","message":"ditto","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2bad85526293c78592e5b0dacd9b2605d9f23f40","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def _create_volume_from_snapshot(self, snap_id):"},{"line_number":70,"context_line":"        vol_name \u003d rand_name(\u0027volume\u0027)"},{"line_number":71,"context_line":"        return self.create_volume(name\u003dvol_name, snapshot_id\u003dsnap_id)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def _stop_instances(self, instances):"},{"line_number":74,"context_line":"        # NOTE(gfidente): two loops so we do not wait for the status twice"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FwRo%3D","line":71,"updated":"2013-08-30 00:39:35.000000000","message":"If the first comment is acceptable, this method is unnecessary. and create_volume() is called directly in test_volume_snapshot_pattern().","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"4b83a57c86e4a264ffcee946e1dc3da81e74b12c","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def _create_volume_from_snapshot(self, snap_id):"},{"line_number":70,"context_line":"        vol_name \u003d rand_name(\u0027volume\u0027)"},{"line_number":71,"context_line":"        return self.create_volume(name\u003dvol_name, snapshot_id\u003dsnap_id)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def _stop_instances(self, instances):"},{"line_number":74,"context_line":"        # NOTE(gfidente): two loops so we do not wait for the status twice"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FwJY%3D","line":71,"in_reply_to":"AAAASn%2F%2FwRo%3D","updated":"2013-08-30 01:56:34.000000000","message":"ditto","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"bb1def487e7c33087d71b1f52348c854c6564080","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        actual \u003d self._get_content(ssh_client)"},{"line_number":121,"context_line":"        self.assertEqual(expected, actual)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def test_volume_snapshot_pattern(self):"},{"line_number":124,"context_line":"        keypair \u003d self.create_keypair()"},{"line_number":125,"context_line":"        self.create_loginable_secgroup_rule()"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2Fu6M%3D","line":123,"updated":"2013-08-30 08:59:00.000000000","message":"maybe you want to rename the test name too?","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"3dbb13e0b186152b088e5b704c2fbedc644a996d","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        actual \u003d self._get_content(ssh_client)"},{"line_number":121,"context_line":"        self.assertEqual(expected, actual)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def test_volume_snapshot_pattern(self):"},{"line_number":124,"context_line":"        keypair \u003d self.create_keypair()"},{"line_number":125,"context_line":"        self.create_loginable_secgroup_rule()"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FpCI%3D","line":123,"in_reply_to":"AAAASn%2F%2Fu6M%3D","updated":"2013-09-01 23:41:15.000000000","message":"Yes.\nThank you. :)","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"bb1def487e7c33087d71b1f52348c854c6564080","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                                                       keypair)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        # write content to volume on instance"},{"line_number":133,"context_line":"        ssh_client_for_origin \u003d self._ssh_to_server(instance_1st, keypair)"},{"line_number":134,"context_line":"        text \u003d self._write_text(ssh_client_for_origin)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        # delete instance"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2Fu6I%3D","line":133,"updated":"2013-08-30 08:59:00.000000000","message":"I\u0027d say ssh_client_for_instance_1st","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"3dbb13e0b186152b088e5b704c2fbedc644a996d","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                                                       keypair)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        # write content to volume on instance"},{"line_number":133,"context_line":"        ssh_client_for_origin \u003d self._ssh_to_server(instance_1st, keypair)"},{"line_number":134,"context_line":"        text \u003d self._write_text(ssh_client_for_origin)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        # delete instance"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FpB0%3D","line":133,"in_reply_to":"AAAASn%2F%2Fu6I%3D","updated":"2013-09-01 23:41:15.000000000","message":"I will fix it in the next patch.","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"bb1def487e7c33087d71b1f52348c854c6564080","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                                                       keypair)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        # check the content of written file"},{"line_number":144,"context_line":"        ssh_client_for_confirm \u003d self._ssh_to_server(instance_2nd, keypair)"},{"line_number":145,"context_line":"        self._check_content_of_written_file(ssh_client_for_confirm, text)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        # snapshot a volume"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2Fu6E%3D","line":144,"updated":"2013-08-30 08:59:00.000000000","message":"ssh_client_for_instance_2nd","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"3dbb13e0b186152b088e5b704c2fbedc644a996d","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                                                       keypair)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        # check the content of written file"},{"line_number":144,"context_line":"        ssh_client_for_confirm \u003d self._ssh_to_server(instance_2nd, keypair)"},{"line_number":145,"context_line":"        self._check_content_of_written_file(ssh_client_for_confirm, text)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        # snapshot a volume"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2FpBw%3D","line":144,"in_reply_to":"AAAASn%2F%2Fu6E%3D","updated":"2013-09-01 23:41:15.000000000","message":"I will fix it in the next patch.","commit_id":"2964773d8210aeaf48a6df1f40354404e30d0cf0"}]}
