Storage snapshot-policies endpoint overview
Overview
In ONTAP, scheduled snapshot creation works based on snapshot policies. ONTAP provides three cluster-wide snapshot policies: "default", "default-1weekly" and "none". A snapshot policy can have more than one schedule associated with it. A snapshot policy can be linked to a storage object and based on the schedule in the policy, snapshots will be created on the object at that interval. Each schedule in a snapshot policy has a snapshot name prefix attached to it. Every snapshot created using this policy will have this prefix in its name. There is also a retention count associated with every schedule. This count indicates the maximum number of snapshots that can exist for a given schedule. Once the snapshot count reaches the retention count, on the next create operation, the oldest snapshot is deleted. A retention period can be associated with every schedule. During snapshot creation, this period is set as SnapLock expiry time on snapshot locking enabled volumes.
Snapshot policy APIs
The following APIs are used to perform operations related to snapshot policy information:
– POST /api/storage/snapshot-policies
– GET /api/storage/snapshot-policies
– GET /api/storage/snapshot-policies/{uuid}
– PATCH /api/storage/snapshot-policies/{uuid}
– DELETE /api/storage/snapshot-policies/{uuid}
Examples
Creating a snapshot policy
The POST operation is used to create a snapshot policy with the specified attributes.
# The API: /api/storage/snapshot-policies # The call: curl -X POST "https://<mgmt-ip>/api/storage/snapshot-policies" -H "accept: application/hal+json" -d '{"name": "new_policy", "enabled": "true", "comment": "policy comment", "copies": [{ "schedule": { "name": "5min" }, "count": "5", "prefix": "xyz" , "retention_period": "PT20M" }], "svm": { "name": "vs0"}}' # The response: HTTP/1.1 201 Created Date: Tue, 12 Mar 2019 21:20:24 GMT Server: libzapid-httpd X-Content-Type-Options: nosniff Cache-Control: no-cache,no-store,must-revalidate Location: /api/storage/snapshot-policies/a69d8173-450c-11e9-aa44-005056bbc848 Content-Length: 369 Content-Type: application/json { "num_records": 1, "records": [ { "uuid": "a69d8173-450c-11e9-aa44-005056bbc848", "svm": { "name": "vs0" }, "name": "new_policy", "comment": "This is a 5min schedule policy", "enabled": true, "copies": [ { "count": 5, "snapmirror_label": "-", "retention_period": "PT20M", "schedule": { "name": "5min" } } ] } ] }
Retrieving snapshot policy attributes
The GET operation is used to retrieve snapshot policy attributes.
# The API: /api/storage/snapshot-policies # The call: curl -X GET "https://<mgmt-ip>/api/storage/snapshot-policies/" -H "accept: application/hal+json" # The response: HTTP/1.1 200 OK Date: Tue, 12 Mar 2019 21:17:17 GMT Server: libzapid-http X-Content-Type-Options: nosniff Cache-Control: no-cache,no-store,must-revalidate Content-Length: 686 Content-Type: application/json { "records": [ { "uuid": "0fa7a554-348d-11e9-b55e-005056bbf1c8", "name": "spsv0", "_links": { "self": { "href": "/api/storage/snapshot-policies/0fa7a554-348d-11e9-b55e-005056bbf1c8" } } }, { "uuid": "3c112527-2fe8-11e9-b55e-005056bbf1c8", "name": "default", "_links": { "self": { "href": "/api/storage/snapshot-policies/3c112527-2fe8-11e9-b55e-005056bbf1c8" } } }, { "uuid": "3c1c1656-2fe8-11e9-b55e-005056bbf1c8", "name": "default-1weekly", "_links": { "self": { "href": "/api/storage/snapshot-policies/3c1c1656-2fe8-11e9-b55e-005056bbf1c8" } } }, { "uuid": "3c228b82-2fe8-11e9-b55e-005056bbf1c8", "name": "none", "_links": { "self": { "href": "/api/storage/snapshot-policies/3c228b82-2fe8-11e9-b55e-005056bbf1c8" } } } ], "num_records": 4, "_links": { "self": { "href": "/api/storage/snapshot-policies/" } } }
Retrieving the attributes of a specific snapshot policy
The GET operation is used to retrieve the attributes of a specific snapshot policy.
# The API: /api/storage/snapshot-policies/{uuid} # The call: curl -X GET "https://<mgmt-ip>/api/storage/snapshot-policies/3c112527-2fe8-11e9-b55e-005056bbf1c8" -H "accept: application/hal+json" # The response: HTTP/1.1 200 OK Date: Tue, 12 Mar 2019 21:24:48 GMT Server: libzapid-httpd X-Content-Type-Options: nosniff Cache-Control: no-cache,no-store,must-revalidate Content-Length: 381 Content-Type: application/json { "uuid": "3c112527-2fe8-11e9-b55e-005056bbf1c8", "name": "default", "comment": "Default policy with hourly, daily & weekly schedules.", "enabled": true, "scope": "cluster", "copies": [ { "count": 6, "prefix": "hourly", "schedule": { "name": "hourly" } }, { "count": 2, "prefix": "daily", "schedule": { "name": "daily" } }, { "count": 2, "prefix": "weekly", "schedule": { "name": "weekly" } } ], "_links": { "self": { "href": "/api/storage/snapshot-policies/3c112527-2fe8-11e9-b55e-005056bbf1c8" } } }
Updating a snapshot policy
The PATCH operation is used to update the specific attributes of a snapshot policy.
# The API: /api/storage/snapshot-policies/{uuid} # The call: curl -X PATCH "https://<mgmt-ip>/api/storage/snapshot-policies/ae9e65c4-4506-11e9-aa44-005056bbc848" -d '{"enabled": "false" }' -H "accept: application/hal+json" # The response: HTTP/1.1 200 OK Date: Tue, 12 Mar 2019 21:27:04 GMT Server: libzapid-httpd X-Content-Type-Options: nosniff Cache-Control: no-cache,no-store,must-revalidate Content-Length: 3 Content-Type: application/json
Deleting a snapshot policy
The DELETE operation is used to delete a snapshot policy.
# The API: /api/storage/snapshot-policies/{uuid} # The call: curl -X DELETE "https://<mgmt-ip>/api/storage/snapshot-policies/ae9e65c4-4506-11e9-aa44-005056bbc848" -H "accept: application/hal+json" # The response: HTTP/1.1 200 OK Date: Tue, 12 Mar 2019 21:19:04 GMT Server: libzapid-httpd X-Content-Type-Options: nosniff Cache-Control: no-cache,no-store,must-revalidate Content-Length: 3 Content-Type: application/json