)]}'
{"tempest/api/volume/admin/test_volumes_actions.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"5e30cb1fe4abecb2c7a6d44efd74be7d57066d34","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        server_id \u003d self.create_server(wait_until\u003d\u0027ACTIVE\u0027)[\u0027id\u0027]"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        # Attach volume"},{"line_number":68,"context_line":"        self.volumes_client.attach_volume("},{"line_number":69,"context_line":"            volume_id,"},{"line_number":70,"context_line":"            instance_uuid\u003dserver_id,"},{"line_number":71,"context_line":"            mountpoint\u003d\u0027/dev/%s\u0027 % CONF.compute.volume_device_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_de5460ff","line":68,"updated":"2017-02-23 16:29:32.000000000","message":"Please use attach_volume() in volume/base.py","commit_id":"3644533f9da8ca562bec0e9b9f6cafe2c0a40a60"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"5ebad300f56625894fd931a4361ab24975c87b0e","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        server_id \u003d self.create_server(wait_until\u003d\u0027ACTIVE\u0027)[\u0027id\u0027]"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        # Attach volume"},{"line_number":68,"context_line":"        self.volumes_client.attach_volume("},{"line_number":69,"context_line":"            volume_id,"},{"line_number":70,"context_line":"            instance_uuid\u003dserver_id,"},{"line_number":71,"context_line":"            mountpoint\u003d\u0027/dev/%s\u0027 % CONF.compute.volume_device_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_1b0d14e8","line":68,"in_reply_to":"da36d5c6_de5460ff","updated":"2017-02-24 03:00:11.000000000","message":"Done","commit_id":"3644533f9da8ca562bec0e9b9f6cafe2c0a40a60"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"5e30cb1fe4abecb2c7a6d44efd74be7d57066d34","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        attachment \u003d vol_info[\u0027attachments\u0027][0]"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # Force detach volume"},{"line_number":79,"context_line":"        self.admin_volume_client.force_detach_volume("},{"line_number":80,"context_line":"            volume_id,"},{"line_number":81,"context_line":"            connector\u003dNone,"},{"line_number":82,"context_line":"            attachment_id\u003dattachment[\u0027attachment_id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_3ec3bc8a","line":79,"updated":"2017-02-23 16:29:32.000000000","message":"This doesn\u0027t actually test force-detach because at that point the volume is in \u0027in-used\u0027 state not error, or error_X states.","commit_id":"3644533f9da8ca562bec0e9b9f6cafe2c0a40a60"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"5ebad300f56625894fd931a4361ab24975c87b0e","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        attachment \u003d vol_info[\u0027attachments\u0027][0]"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # Force detach volume"},{"line_number":79,"context_line":"        self.admin_volume_client.force_detach_volume("},{"line_number":80,"context_line":"            volume_id,"},{"line_number":81,"context_line":"            connector\u003dNone,"},{"line_number":82,"context_line":"            attachment_id\u003dattachment[\u0027attachment_id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_7b3e1029","line":79,"in_reply_to":"da36d5c6_3ec3bc8a","updated":"2017-02-24 03:00:11.000000000","message":"Yes, the volume status can be set to \u0027error\u0027 or \u0027error_X\u0027.\nBut I wonder if we can add more scenarios: force detach volume with different status (error, in-use, etc)","commit_id":"3644533f9da8ca562bec0e9b9f6cafe2c0a40a60"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"5dcf28e6f3f7f09cf11e05631c288305699f9f48","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        volume_id \u003d self.create_volume()[\u0027id\u0027]"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        # Attach volume"},{"line_number":77,"context_line":"        self.volumes_client.attach_volume("},{"line_number":78,"context_line":"            volume_id,"},{"line_number":79,"context_line":"            instance_uuid\u003dserver_id,"},{"line_number":80,"context_line":"            mountpoint\u003d\u0027/dev/%s\u0027 % CONF.compute.volume_device_name)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7ffa3b31_6cc963aa","line":77,"updated":"2017-04-20 14:01:14.000000000","message":"Would it work to use self.attach_volume(...) defined in volume/base.py ?","commit_id":"81b7c7018f86e81901e4178394eb1ba84e0c03bd"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"28220a9abf80895b31563480f1c8845d3c9aff92","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        volume_id \u003d self.create_volume()[\u0027id\u0027]"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        # Attach volume"},{"line_number":77,"context_line":"        self.volumes_client.attach_volume("},{"line_number":78,"context_line":"            volume_id,"},{"line_number":79,"context_line":"            instance_uuid\u003dserver_id,"},{"line_number":80,"context_line":"            mountpoint\u003d\u0027/dev/%s\u0027 % CONF.compute.volume_device_name)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5ff73747_8ef2f905","line":77,"updated":"2017-04-24 06:07:30.000000000","message":"yeah, I agree with Jordan here. I think self.addCleanup()s are needed at least if you use this attach_volume method.","commit_id":"81b7c7018f86e81901e4178394eb1ba84e0c03bd"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"f0530947a6e898b7a8d9beadc7826fba2d1b8461","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        volume_id \u003d self.create_volume()[\u0027id\u0027]"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        # Attach volume"},{"line_number":77,"context_line":"        self.volumes_client.attach_volume("},{"line_number":78,"context_line":"            volume_id,"},{"line_number":79,"context_line":"            instance_uuid\u003dserver_id,"},{"line_number":80,"context_line":"            mountpoint\u003d\u0027/dev/%s\u0027 % CONF.compute.volume_device_name)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5ff73747_a7ab6fd4","line":77,"in_reply_to":"5ff73747_8ef2f905","updated":"2017-04-25 09:34:54.000000000","message":"@Jordan, @Masayuki.\nself.attach_volume(...) in base.py has been used in patch 5, but it doesn\u0027t work.\nIMO, the force detach action is only an DB operation in Cinder (Updating the table volume and volume_attachment in DB), with no effect in Nova. I think use the volumes_client.attach_volume (Also an DB operation in Cinder) will be enough. My opinion maybe not correct, looking forward your opinions, thank you, :)","commit_id":"81b7c7018f86e81901e4178394eb1ba84e0c03bd"}],"tempest/api/volume/admin/v2/test_volumes_actions.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"775febbde526c4c51e7b8ccc868127e765c90553","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        vol_info \u003d self.volumes_client.show_volume(volume_id)[\u0027volume\u0027]"},{"line_number":40,"context_line":"        self.assertIn(\u0027attachments\u0027, vol_info)"},{"line_number":41,"context_line":"        attachment \u003d vol_info[\u0027attachments\u0027][0]"},{"line_number":42,"context_line":"        self.assertEqual(volume_id, attachment[\u0027id\u0027])"},{"line_number":43,"context_line":"        self.assertEqual(volume_id, attachment[\u0027volume_id\u0027])"},{"line_number":44,"context_line":"        self.assertEqual(server_id, attachment[\u0027server_id\u0027])"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        # force detach volume"},{"line_number":47,"context_line":"        self.admin_volume_client.force_detach_volume("}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_93786891","line":44,"range":{"start_line":42,"start_character":0,"end_line":44,"end_character":60},"updated":"2017-02-22 01:34:24.000000000","message":"These seem not necessary, test_get_volume_attachment already covers them","commit_id":"b7a98aeb4efe21c89bf6a30eabed0a9af4924243"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"4f18656252a747cfc98d4280e9d1815f8b64a132","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        vol_info \u003d self.volumes_client.show_volume(volume_id)[\u0027volume\u0027]"},{"line_number":40,"context_line":"        self.assertIn(\u0027attachments\u0027, vol_info)"},{"line_number":41,"context_line":"        attachment \u003d vol_info[\u0027attachments\u0027][0]"},{"line_number":42,"context_line":"        self.assertEqual(volume_id, attachment[\u0027id\u0027])"},{"line_number":43,"context_line":"        self.assertEqual(volume_id, attachment[\u0027volume_id\u0027])"},{"line_number":44,"context_line":"        self.assertEqual(server_id, attachment[\u0027server_id\u0027])"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        # force detach volume"},{"line_number":47,"context_line":"        self.admin_volume_client.force_detach_volume("}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_169386a4","line":44,"range":{"start_line":42,"start_character":0,"end_line":44,"end_character":60},"in_reply_to":"da36d5c6_93786891","updated":"2017-02-22 02:50:20.000000000","message":"Right, these codes will be removed.\nAnd this test will be moved to /tempest/api/volume/admin/test_volumes_actions.py, thank you for advice, :)","commit_id":"b7a98aeb4efe21c89bf6a30eabed0a9af4924243"}],"tempest/lib/services/volume/v2/volumes_client.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"775febbde526c4c51e7b8ccc868127e765c90553","unresolved":false,"context_lines":[{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        For a full list of available parameters, please refer to the official"},{"line_number":359,"context_line":"        API reference:"},{"line_number":360,"context_line":"        https://developer.openstack.org/api-ref/block-storage/v2/?expanded\u003dforce-detach-a-volume-detail#force-detach-volume"},{"line_number":361,"context_line":"        \"\"\""},{"line_number":362,"context_line":"        post_body \u003d json.dumps({\u0027os-force_detach\u0027: kwargs})"},{"line_number":363,"context_line":"        url \u003d \u0027volumes/%s/action\u0027 % volume_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_d039f642","line":360,"range":{"start_line":360,"start_character":8,"end_line":360,"end_character":86},"updated":"2017-02-22 01:34:24.000000000","message":"This can be shorter, \nhttps://developer.openstack.org/api-ref/block-storage/v2/#force-detach-volume","commit_id":"b7a98aeb4efe21c89bf6a30eabed0a9af4924243"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"4f18656252a747cfc98d4280e9d1815f8b64a132","unresolved":false,"context_lines":[{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        For a full list of available parameters, please refer to the official"},{"line_number":359,"context_line":"        API reference:"},{"line_number":360,"context_line":"        https://developer.openstack.org/api-ref/block-storage/v2/?expanded\u003dforce-detach-a-volume-detail#force-detach-volume"},{"line_number":361,"context_line":"        \"\"\""},{"line_number":362,"context_line":"        post_body \u003d json.dumps({\u0027os-force_detach\u0027: kwargs})"},{"line_number":363,"context_line":"        url \u003d \u0027volumes/%s/action\u0027 % volume_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_36924a9f","line":360,"range":{"start_line":360,"start_character":8,"end_line":360,"end_character":86},"in_reply_to":"da36d5c6_d039f642","updated":"2017-02-22 02:50:20.000000000","message":"Done","commit_id":"b7a98aeb4efe21c89bf6a30eabed0a9af4924243"}]}
