)]}'
{"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e9c21d5357c9a3d073f7e0dc09d33c639840a26c","unresolved":false,"context_lines":[{"line_number":9072,"context_line":""},{"line_number":9073,"context_line":"        params \u003d {\u0027vm_state\u0027: vm_states.RESCUED}"},{"line_number":9074,"context_line":"        instance \u003d self._create_fake_instance_obj(params\u003dparams)"},{"line_number":9075,"context_line":""},{"line_number":9076,"context_line":"        volume \u003d {\u0027id\u0027: 1, \u0027attach_status\u0027: \u0027in-use\u0027,"},{"line_number":9077,"context_line":"                  \u0027instance_uuid\u0027: instance[\u0027uuid\u0027]}"},{"line_number":9078,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_5bf3a09e","line":9075,"updated":"2015-08-28 02:03:45.000000000","message":"And here.","commit_id":"18802180be7ab27d762406785c076f40b6e41972"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"605cb7471b4896d5061d4be32731ddfe4b088725","unresolved":false,"context_lines":[{"line_number":9072,"context_line":""},{"line_number":9073,"context_line":"        params \u003d {\u0027vm_state\u0027: vm_states.RESCUED}"},{"line_number":9074,"context_line":"        instance \u003d self._create_fake_instance_obj(params\u003dparams)"},{"line_number":9075,"context_line":""},{"line_number":9076,"context_line":"        volume \u003d {\u0027id\u0027: 1, \u0027attach_status\u0027: \u0027in-use\u0027,"},{"line_number":9077,"context_line":"                  \u0027instance_uuid\u0027: instance[\u0027uuid\u0027]}"},{"line_number":9078,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_584ba659","line":9075,"in_reply_to":"da20952f_5bf3a09e","updated":"2015-09-03 03:50:10.000000000","message":"Done","commit_id":"18802180be7ab27d762406785c076f40b6e41972"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e9c21d5357c9a3d073f7e0dc09d33c639840a26c","unresolved":false,"context_lines":[{"line_number":9514,"context_line":"    def test_detach_volume(self):"},{"line_number":9515,"context_line":"        # Ensure volume can be detached from instance"},{"line_number":9516,"context_line":"        called \u003d {}"},{"line_number":9517,"context_line":"        instance \u003d self._create_fake_instance_obj()"},{"line_number":9518,"context_line":"        volume \u003d {\u0027id\u0027: 1, \u0027attach_status\u0027: \u0027in-use\u0027,"},{"line_number":9519,"context_line":"                  \u0027instance_uuid\u0027: instance[\u0027uuid\u0027]}"},{"line_number":9520,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_db41f00c","line":9517,"updated":"2015-08-28 02:03:45.000000000","message":"What about this one?","commit_id":"18802180be7ab27d762406785c076f40b6e41972"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"605cb7471b4896d5061d4be32731ddfe4b088725","unresolved":false,"context_lines":[{"line_number":9514,"context_line":"    def test_detach_volume(self):"},{"line_number":9515,"context_line":"        # Ensure volume can be detached from instance"},{"line_number":9516,"context_line":"        called \u003d {}"},{"line_number":9517,"context_line":"        instance \u003d self._create_fake_instance_obj()"},{"line_number":9518,"context_line":"        volume \u003d {\u0027id\u0027: 1, \u0027attach_status\u0027: \u0027in-use\u0027,"},{"line_number":9519,"context_line":"                  \u0027instance_uuid\u0027: instance[\u0027uuid\u0027]}"},{"line_number":9520,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_b83c42c0","line":9517,"in_reply_to":"da20952f_db41f00c","updated":"2015-09-03 03:50:10.000000000","message":"Done","commit_id":"18802180be7ab27d762406785c076f40b6e41972"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e9c21d5357c9a3d073f7e0dc09d33c639840a26c","unresolved":false,"context_lines":[{"line_number":9517,"context_line":"        instance \u003d self._create_fake_instance_obj()"},{"line_number":9518,"context_line":"        volume \u003d {\u0027id\u0027: 1, \u0027attach_status\u0027: \u0027in-use\u0027,"},{"line_number":9519,"context_line":"                  \u0027instance_uuid\u0027: instance[\u0027uuid\u0027]}"},{"line_number":9520,"context_line":""},{"line_number":9521,"context_line":"        def fake_check_detach(*args, **kwargs):"},{"line_number":9522,"context_line":"            called[\u0027fake_check_detach\u0027] \u003d True"},{"line_number":9523,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_1b5f68e6","line":9520,"updated":"2015-08-28 02:03:45.000000000","message":"You\u0027d probably be better of asserting the volume status and attach_status in here.","commit_id":"18802180be7ab27d762406785c076f40b6e41972"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"605cb7471b4896d5061d4be32731ddfe4b088725","unresolved":false,"context_lines":[{"line_number":9517,"context_line":"        instance \u003d self._create_fake_instance_obj()"},{"line_number":9518,"context_line":"        volume \u003d {\u0027id\u0027: 1, \u0027attach_status\u0027: \u0027in-use\u0027,"},{"line_number":9519,"context_line":"                  \u0027instance_uuid\u0027: instance[\u0027uuid\u0027]}"},{"line_number":9520,"context_line":""},{"line_number":9521,"context_line":"        def fake_check_detach(*args, **kwargs):"},{"line_number":9522,"context_line":"            called[\u0027fake_check_detach\u0027] \u003d True"},{"line_number":9523,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_98413e3c","line":9520,"in_reply_to":"da20952f_1b5f68e6","updated":"2015-09-03 03:50:10.000000000","message":"I couldn\u0027t really see a way to to this that was helpful.","commit_id":"18802180be7ab27d762406785c076f40b6e41972"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e9c21d5357c9a3d073f7e0dc09d33c639840a26c","unresolved":false,"context_lines":[{"line_number":9526,"context_line":""},{"line_number":9527,"context_line":"        def fake_rpc_detach_volume(self, context, **kwargs):"},{"line_number":9528,"context_line":"            called[\u0027fake_rpc_detach_volume\u0027] \u003d True"},{"line_number":9529,"context_line":""},{"line_number":9530,"context_line":"        self.stubs.Set(cinder.API, \u0027check_detach\u0027, fake_check_detach)"},{"line_number":9531,"context_line":"        self.stubs.Set(cinder.API, \u0027begin_detaching\u0027, fake_begin_detaching)"},{"line_number":9532,"context_line":"        self.stubs.Set(compute_rpcapi.ComputeAPI, \u0027detach_volume\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_7b51c4d7","line":9529,"updated":"2015-08-28 02:03:45.000000000","message":"The reason this doesn\u0027t even matter is because check_detach is stubbed out.  So while fixing the attach_status is a bit more correct, you could set the status to \u0027fake\u0027 in the fake volume and it wouldn\u0027t matter.","commit_id":"18802180be7ab27d762406785c076f40b6e41972"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"605cb7471b4896d5061d4be32731ddfe4b088725","unresolved":false,"context_lines":[{"line_number":9526,"context_line":""},{"line_number":9527,"context_line":"        def fake_rpc_detach_volume(self, context, **kwargs):"},{"line_number":9528,"context_line":"            called[\u0027fake_rpc_detach_volume\u0027] \u003d True"},{"line_number":9529,"context_line":""},{"line_number":9530,"context_line":"        self.stubs.Set(cinder.API, \u0027check_detach\u0027, fake_check_detach)"},{"line_number":9531,"context_line":"        self.stubs.Set(cinder.API, \u0027begin_detaching\u0027, fake_begin_detaching)"},{"line_number":9532,"context_line":"        self.stubs.Set(compute_rpcapi.ComputeAPI, \u0027detach_volume\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_7818ea75","line":9529,"in_reply_to":"da20952f_7b51c4d7","updated":"2015-09-03 03:50:10.000000000","message":"Done","commit_id":"18802180be7ab27d762406785c076f40b6e41972"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"605cb7471b4896d5061d4be32731ddfe4b088725","unresolved":false,"context_lines":[{"line_number":9560,"context_line":"                    \u0027vm_state\u0027: vm_states.ACTIVE,"},{"line_number":9561,"context_line":"                    \u0027task_state\u0027: None})"},{"line_number":9562,"context_line":"        volume \u003d {\u0027id\u0027: 1, \u0027attach_status\u0027: \u0027attached\u0027,"},{"line_number":9563,"context_line":"                  \u0027instance_uuid\u0027: \u0027uuid2\u0027, \u0027status\u0027: \u0027in-use\u0027}"},{"line_number":9564,"context_line":""},{"line_number":9565,"context_line":"        self.assertRaises(exception.VolumeUnattached,"},{"line_number":9566,"context_line":"                          self.compute_api.detach_volume, self.context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_f8ccfabc","line":9563,"updated":"2015-09-03 03:50:10.000000000","message":"Adding \u0027status\u0027 here isn\u0027t helpful as the there isn\u0027t any code before the raise VolumeUnattached that looks at it.","commit_id":"18802180be7ab27d762406785c076f40b6e41972"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"605cb7471b4896d5061d4be32731ddfe4b088725","unresolved":false,"context_lines":[{"line_number":9566,"context_line":"                          self.compute_api.detach_volume, self.context,"},{"line_number":9567,"context_line":"                          fake_instance, volume)"},{"line_number":9568,"context_line":""},{"line_number":9569,"context_line":"    def test_detach_suspended_instance_fails(self):"},{"line_number":9570,"context_line":"        fake_instance \u003d self._fake_instance({\u0027uuid\u0027: \u0027uuid1\u0027,"},{"line_number":9571,"context_line":"                    \u0027locked\u0027: False,"},{"line_number":9572,"context_line":"                    \u0027launched_at\u0027: timeutils.utcnow(),"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_b89e8252","line":9569,"updated":"2015-09-03 03:50:10.000000000","message":"Actually I\u0027m not certain this test is needed.  It\u0027s really checking that API.detach_volume() is decorated with check_instance_lock and check_instance_state.  If we\u0027re going to leave the tests there we should make that more obvious.","commit_id":"18802180be7ab27d762406785c076f40b6e41972"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e9c21d5357c9a3d073f7e0dc09d33c639840a26c","unresolved":false,"context_lines":[{"line_number":9573,"context_line":"                    \u0027vm_state\u0027: vm_states.SUSPENDED,"},{"line_number":9574,"context_line":"                    \u0027task_state\u0027: None})"},{"line_number":9575,"context_line":"        volume \u003d {\u0027id\u0027: 1, \u0027attach_status\u0027: \u0027attached\u0027,"},{"line_number":9576,"context_line":"                  \u0027instance_uuid\u0027: \u0027uuid2\u0027}"},{"line_number":9577,"context_line":""},{"line_number":9578,"context_line":"        self.assertRaises(exception.InstanceInvalidState,"},{"line_number":9579,"context_line":"                          self.compute_api.detach_volume, self.context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_db7c9074","line":9576,"updated":"2015-08-28 02:03:45.000000000","message":"Don\u0027t you want to add \u0027status\u0027: \u0027in-use\u0027 here also like you did above?  I guess it doesn\u0027t matter since you don\u0027t even get that far because the instance.vm_state is invalid.","commit_id":"18802180be7ab27d762406785c076f40b6e41972"}]}
