https://blueprints.launchpad.net/karbor/+spec/manila-share-proection-plugin
The shares managed by Manila can not be protected by Karbor now. Currently, Manila allows the user to create snapshots of the share. So the protection feature of share can be introduced to karbor by making a snapshot of the share.
User creates the share in Manila, and mounts it to the server. Then the share is used for saving lots of files data by user. To avoid the loss of files data,the user want to protect the shares by making periodic snapshots of this share. If the user want to restore the share, he can create a new share from a snapshot.
A new protectable plugin about Manila share need be implemented. The type of resource share is “OS::Manila::Share”. It will be added to the constant RESOURCE_TYPES in karbor.
1. The parent resource types: PROJECT_RESOURCE_TYPE.
2. list the resources: This interface of plugin will call the ‘list’ method of ShareManager in manilaclient.
3. show the resource: This interface of plugin will call the ‘get’ method of ShareManager in manilaclient. The parameter is a share id.
4. get dependent resources: The parameter parent_resource is a project, this interface of plugin will return the shares in this project.
A new protection plugin about Manila share need be implemented.
1. Protect Operation: The ‘create’ method of ShareSnapshotManager will be called in the main hook of this operation to make a snapshot of the share.
2. Restore Operation: The ‘create’ method of ShareManager will be called in the main hook of this operation to create a new share from the giving snapshot.
3. Delete Operation: The share snapshot will be deleted. The ‘delete’ method of ShareSnapshotManager will be called in the main hook of this operation to delete the share snapshot.
OPTIONS_SCHEMA = {
"title": "Share Protection Options",
"type": "object",
"properties": {
"snapshot_name": {
"type": "string",
"title": "Snapshot Name",
"description": "The name of the snapshot."
},
"description": {
"type": "string",
"title": "Description",
"description": "The description of the share snapshot."
},
"force": {
"type": "boolean",
"title": "Force",
"description": "Optional flag to indicate whether to snapshot a share even if it's busy.",
"default": False
}
},
"required": ["snapshot_name", "description", "force"]
}
RESTORE_SCHEMA = {
"title": "Share Protection Restore",
"type": "object",
"properties": {
"share_id": {
"type": "string",
"title": "Share ID",
"description": "The target share ID to restore to."
},
"restore_name": {
"type": "string",
"title": "Restore Name",
"description": "The name of the restored share.",
"default": None
},
"restore_description": {
"type": "string",
"title": "Restore Description",
"description": "The description of the restored share.",
"default": None
}
}
}
None
None
None
None
None
None
None
Add the share protection plugin endpoint to setup.cfg. Add the share protection plugin configuration to provider file.
None
None
Unit tests in Karbor.
Add a usage example about share protection.
None
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.