============= Usage Example ============= Resources in OpenStack (server, volume, image, network, etc) can be protected by Karbor. This example will show protecting volume. #. Before starting the karbor-protection service, the admin needs to configure a Provider in /etc/karbor/providers.d/openstack-infra.conf. The Swift plugin is the default bank plugin. The admin also needs to configure the basic Swift client account configuration:: [provider] name = OS Infra Provider description = This provider uses OpenStack's own services (swift, cinder) as storage id = cf56bd3e-97a7-4078-b6d5-f36246333fd9 plugin=karbor-volume-protection-plugin bank=karbor-swift-bank-plugin [swift_client] swift_auth_url=http://10.229.47.230/identity/ swift_user=admin swift_key=123456 swift_tenant_name=admin [swift_bank_plugin] lease_expire_window=120 lease_renew_window=100 lease_validity_window=100 #. To use cinder or karbor client, we should provide Keystone authentication variables:: export OS_USERNAME=admin export OS_PASSWORD=123456 export OS_TENANT_NAME=admin export OS_AUTH_URL=http://10.229.47.230/identity/ #. Show the provider information:: karbor provider-show cf56bd3e-97a7-4078-b6d5-f36246333fd9 +----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Property | Value | +----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | description | This provider uses OpenStack's own services (swift, cinder) as storage | | extended_info_schema | {u'options_schema': {u'OS::Cinder::Volume': {u'required': [u'backup_name', u'backup_mode', u'container', u'force'], u'type': u'object', u'properties': {u'force': {u'default': False, u'type': u'boolean', u'description': u'Whether to backup, even if the volumeis attached', u'title': u'Force'}, u'backup_name': {u'type': u'string', u'description': u'The name of the backup.', u'title': u'Backup Name'}, u'container': {u'type': u'string', u'description': u'The container which been chosen.', u'title': u'Container'}, u'description': {u'type': u'string', u'description': u'The description of the volume.', u'title': u'Description'}, u'backup_mode': {u'default': u'auto', u'enum': [u'full', u'incremental', u'auto'], u'type': u'string', u'description': u'The backup mode.', u'title': u'Backup Mode'}}, u'title': u'Cinder Protection Options'}}, u'saved_info_schema': {u'OS::Cinder::Volume': {u'required': [u'name', u'status', u'progress', u'fail_reason', u'size', u'volume_id'], u'type': u'object', u'properties': {u'status': {u'enum': [u'creating', u'available', u'deleting', u'error', u'restoring', u'error_restoring'], u'type': u'string', u'description': u'The backup status, such as available.', u'title': u'Status'}, u'fail_reason': {u'type': u'string', u'description': u'The reason for the failure status of the backup.', u'title': u'Fail Reason'}, u'name': {u'type': u'string', u'description': u'The name for this backup.', u'title': u'Name'}, u'volume_id': {u'type': u'string', u'description': u'The ID of the volume from which the backup was created.', u'title': u'Volume ID'}, u'progress': {u'constraint': {u'max': 1, u'min': 0}, u'type': u'number', u'description': u'The current operation progress for this backup.', u'title': u'Progress'}, u'is_incremental': {u'type': u'boolean', u'description': u'The type of the backup, True is incremental and False is full.', u'title': u'Is Incremental'}, u'size': {u'type': u'integer', u'description': u'The size of the backup, in GB.', u'title': u'Size'}}, u'title': u'Cinder Protection Saved Info'}}, u'restore_schema': {u'OS::Cinder::Volume': {u'type': u'object', u'properties': {u'restore_name': {u'default': None, u'type': u'string', u'description': u'The name of the restored volume.', u'title': u'Restore Name'}, u'restore_description': {u'default': None, u'type': u'string', u'description': u'The description of the restored volume.', u'title': u'Restore Name'}, u'volume_id': {u'type': u'string', u'description': u'The target volume ID to restore to.', u'title': u'Volume ID'}}, u'title': u'Cinder Protection Restore'}}} | | id | cf56bd3e-97a7-4078-b6d5-f36246333fd9 | | name | OS Infra Provider | +----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ #. Use cinder client to create volumes:: cinder create 1 --name volume1 cinder create 1 --name volume2 cinder list +--------------------------------------+-----------+--------------+------+-------------+----------+-------------+ | ID | Status | Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+-----------+--------------+------+-------------+----------+-------------+ | c468688b-dcb1-4bdf-b26b-62e989ac940e | available | volume1 | 1 | lvmdriver-1 | false | | | d107b234-e16d-4e1e-800d-86523c693e5c | available | volume2 | 1 | lvmdriver-1 | false | | +--------------------------------------+-----------+--------------+------+-------------+----------+-------------+ #. List the protectable resources:: karbor protectable-list +-----------------------+ | Protectable type | +-----------------------+ | OS::Cinder::Volume | | OS::Glance::Image | | OS::Keystone::Project | | OS::Nova::Server | +-----------------------+ karbor protectable-list-instances OS::Cinder::Volume +--------------------------------------+--------------------+---------------------+ | Id | Type | Dependent resources | +--------------------------------------+--------------------+---------------------+ | c468688b-dcb1-4bdf-b26b-62e989ac940e | OS::Cinder::Volume | [] | | d107b234-e16d-4e1e-800d-86523c693e5c | OS::Cinder::Volume | [] | +--------------------------------------+--------------------+---------------------+ #. Create a protection plan with a provider and resources:: karbor plan-create 'OS volumes protection plan.' 'cf56bd3e-97a7-4078-b6d5-f36246333fd9' 'd107b234-e16d-4e1e-800d-86523c693e5c'='OS::Cinder::Volume'='volume2','c468688b-dcb1-4bdf-b26b-62e989ac940e'='OS::Cinder::Volume'='volume1' +-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Property | Value | +-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | id | b5969bb9-c571-4538-b827-3746d11aa7a2 | | name | OS volumes protection plan. | | parameters | {u'user': {u'value': u'password'}} | | provider_id | cf56bd3e-97a7-4078-b6d5-f36246333fd9 | | resources | [{u'type': u'OS::Cinder::Volume', u'id': u'd107b234-e16d-4e1e-800d-86523c693e5c', u'name': u'volume2'}, {u'type': u'OS::Cinder::Volume', u'id': u'c468688b-dcb1-4bdf-b26b-62e989ac940e', u'name': u'volume1'}] | | status | suspended | +-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ #. Execute a protect operation manually with a plan:: karbor checkpoint-create cf56bd3e-97a7-4078-b6d5-f36246333fd9 b5969bb9-c571-4538-b827-3746d11aa7a2 +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Property | Value | +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | id | 503e12db-a815-4101-b526-6b687ba60080 | | project_id | 8ea0fc3673794f1492b875d349400181 | | protection_plan | {u'id': u'b5969bb9-c571-4538-b827-3746d11aa7a2', u'resources': [{u'type': u'OS::Cinder::Volume', u'id': u'd107b234-e16d-4e1e-800d-86523c693e5c', u'name': u'volume2'}, {u'type': u'OS::Cinder::Volume', u'id': u'c468688b-dcb1-4bdf-b26b-62e989ac940e', u'name': u'volume1'}], u'name': u'OS volumes protection plan.'} | | provider_id | cf56bd3e-97a7-4078-b6d5-f36246333fd9 | | resource_graph | None | | status | protecting | +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ # check the protect result cinder backup-list +--------------------------------------+--------------------------------------+-----------+--------------+------+--------------+---------------+ | ID | Volume ID | Status | Name | Size | Object Count | Container | +--------------------------------------+--------------------------------------+-----------+--------------+------+--------------+---------------+ | 58811e5a-d65f-4d1e-8e3d-2e7f1b688c32 | c468688b-dcb1-4bdf-b26b-62e989ac940e | available | test_protect | 1 | 22 | volumebackups | | de4bbdab-315b-40f3-b89a-25a23c387e04 | d107b234-e16d-4e1e-800d-86523c693e5c | available | test_protect | 1 | 22 | volumebackups | +--------------------------------------+--------------------------------------+-----------+--------------+------+--------------+---------------+ karbor checkpoint-show cf56bd3e-97a7-4078-b6d5-f36246333fd9 503e12db-a815-4101-b526-6b687ba60080 #. Execute a protect operation automatically with a scheduler:: karbor trigger-create 'My Trigger' 'time' "pattern"="0 20 * * 2":"format"="crontab" karbor scheduledoperation-create 'Protect with My Trigger' 'protect' "plan_id"="b5969bb9-c571-4538-b827-3746d11aa7a2":"provider_id"="cf56bd3e-97a7-4078-b6d5-f36246333fd9" #. Execute a restore operation manually with a checkpoint id:: karbor --debug restore-create cf56bd3e-97a7-4078-b6d5-f36246333fd9 2c14b9d6-529b-4308-bb17-7334eb351fd7 'http://10.229.47.230/identity/' --parameters 'username'='admin' 'password'='123456' +----------------+-------------------------------------------------+ | Property | Value | +----------------+-------------------------------------------------+ | checkpoint_id | 2c14b9d6-529b-4308-bb17-7334eb351fd7 | | id | 34a3418d-444e-4271-922e-e2e2c3fe89ec | | parameters | {u'username': u'admin', u'password': u'123456'} | | project_id | 8ea0fc3673794f1492b875d349400181 | | provider_id | cf56bd3e-97a7-4078-b6d5-f36246333fd9 | | restore_target | http://10.229.47.230/identity/ | | status | success | +----------------+-------------------------------------------------+ cinder list +--------------------------------------+-----------+--------------+------+-------------+----------+-------------+ | ID | Status | Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+-----------+--------------+------+-------------+----------+-------------+ | c468688b-dcb1-4bdf-b26b-62e989ac940e | available | volume1 | 1 | lvmdriver-1 | false | | | d107b234-e16d-4e1e-800d-86523c693e5c | available | volume2 | 1 | lvmdriver-1 | false | | | e03c8369-0177-4b2f-87ba-8139dc1c5eaf | available | test_restore | 1 | lvmdriver-1 | false | | | f208dacd-5a83-4b40-a22e-371c138bd97d | available | test_restore | 1 | lvmdriver-1 | false | | +--------------------------------------+-----------+--------------+------+-------------+----------+-------------+ #. Execute a delete operation manually with a checkpoint id:: cinder backup-list +--------------------------------------+--------------------------------------+-----------+--------------+------+--------------+---------------+ | ID | Volume ID | Status | Name | Size | Object Count | Container | +--------------------------------------+--------------------------------------+-----------+--------------+------+--------------+---------------+ | 58811e5a-d65f-4d1e-8e3d-2e7f1b688c32 | c468688b-dcb1-4bdf-b26b-62e989ac940e | available | test_protect | 1 | 22 | volumebackups | | de4bbdab-315b-40f3-b89a-25a23c387e04 | d107b234-e16d-4e1e-800d-86523c693e5c | available | test_protect | 1 | 22 | volumebackups | +--------------------------------------+--------------------------------------+-----------+--------------+------+--------------+---------------+ karbor checkpoint-delete cf56bd3e-97a7-4078-b6d5-f36246333fd9 2c14b9d6-529b-4308-bb17-7334eb351fd7 cinder backup-list +----+-----------+--------+------+------+--------------+-----------+ | ID | Volume ID | Status | Name | Size | Object Count | Container | +----+-----------+--------+------+------+--------------+-----------+ +----+-----------+--------+------+------+--------------+-----------+