The owner_is_tenant option was deprecated in R-1. The pending-delete revert was merged for R-2. This patch moves the specs to 'implemented' and sets up redirects from 'approved' so links won't be broken. Change-Id: I6482178dfbd4be00d997b80c068f465875103cff
5.3 KiB
Support revert pending delete image
https://blueprints.launchpad.net/glance/+spec/pending-delete-rollback
Glance support soft delete images. If this feature is enabled, when
users delete an image, the image and its locations will first be in a
special pending_delete status that is not
displayed in the API response. Then the image will be deleted by
glance-scrubber
process in period. But now, there is no way
to revert/rollback the pending_delete
images to active.
Problem description
Delayed_delete feature is usually used when the image is too large to
delete at once. With this feature, then the image data will not be
deleted at once and will be cleaned by glance-scrubber
process. The problem is that there is no way to revert the delete action
if the image is deleted by mistake. The only way admin operator can do
is to wait until the image data is deleted and then reupload image data
again.
Proposed change
This proposal aims to recover an image which is in pending_delete state so as to provide the revert capability for the purposes of allowing emergency operational action to recover an accidental delete. It is important to keep in mind, however, that whether the recovery of a particular image will be possible or not depends upon Glance configuration option settings and quick operator action.
Since the pending_delete image will be
only deleted by glance-scrubber
and it's an admin action,
there is no need to expose a new API. A better way is to enhance
glance-scrubber
to support restoring the image from pending_delete status to active.
A new parameter called --restore will
be added to glance-scrubber
command. The usage is like:
glance-scrubber --restore
<image_id>. glance-scrubber
first checks to
see if the scrubber process is running, if so, an error message that
there is a scrubber currently running and you must kill it first &
scrubber terminates will be raised to admin. If not, scrubber will
switch image status from pending_delete
to active.
Please be sure that the glance-scrubber
daemon is killed
before restore the pending_delete image
to avoid image data inconsistency. After restoring the image,
glance-scrubber
daemon can be restarted.
Limitations
This is intended as an emergency operation for the use case where an
operator inadvertently deletes an important image and immediately
realizes the mistake and takes action within the scrub_time
seconds set in the glance-api.conf file. The pending-delete status is a purely internal
Glance status and the image still shows as being in deleted status in API responses. Thus there is
no way to tell via the API whether an image may be restorable or
not.
Further, when the image is restored, some of its metadata is irrecoverable. Any additional properties, tags, or members will not be restored. In other words, this is purely a possible data recovery operation, not a full image restore.
Alternatives
The alternative way which is not recommend is to create a new API to revert the pending_delete images::
POST /v2/images/{images_id}/actions/revert
The response body could be like::
Response: 200 OK
{
"status":"active",
"name":"cirros-0.3.1-x86_64-uec",
"tags":[
],
"kernel_id":"be50418b-a03c-4947-9122-b80a57f47ac4",
"container_format":"ami",
"created_at":"2017-09-11T08:42:14Z",
"ramdisk_id":"e1256074-9f7b-4067-8356-4a5759c1db11",
"disk_format":"ami",
"updated_at":"2017-09-11T08:42:16Z",
"visibility":"public",
"self":"/v2/images/26c16e07-24ca-4abc-a523-bec068012363",
"protected":false,
"id":"26c16e07-24ca-4abc-a523-bec068012363",
"file":"/v2/images/26c16e07-24ca-4abc-a523-bec068012363/file",
"checksum":"f8a2eeee2dc65b3d9b6e63678955bd83",
"min_disk":0,
"size":25165824,
"min_ram":0,
"schema":"/v2/schemas/image"
}
Data model impact
Allow image status changing from pending_delete to active.
REST API impact
None.
Security impact
This is an administrator action. No security impact at all.
Notifications impact
None.
Other end user impact
There is no impact for non-admin users. For administrators, they'll
have the ability to rollback the image's status from pending_delete to active by glance-scrubber
tool.
Performance Impact
None
Other deployer impact
None
Developer impact
None
Implementation
Assignee(s)
wangxiyuan(wangxiyuan@huawei.com)
Work Items
- change
glance-scrubber
to include the --restore <image_id> option. - change the image status transition to allow: pending_delete -> active
- Update the related documentation and test.
- Release note should be added.
Dependencies
None
Testing
Related unit test should be added.
Documentation Impact
Related doc should be updated.
References
None.